fix: shutdown moved to standard functionality

This commit is contained in:
2026-05-01 22:00:30 +02:00
parent e4db1d6d62
commit c25720bf6e
4 changed files with 102 additions and 54 deletions

View File

@@ -4,8 +4,6 @@ defmodule BDS.Desktop.Shutdown do
alias BDS.Desktop.MainWindow
alias Desktop.Window
@stop_delay_ms 100
@spec install_handlers(term()) :: :ok
def install_handlers(frame) do
:wx.set_env(Desktop.Env.wx_env())
@@ -17,13 +15,6 @@ defmodule BDS.Desktop.Shutdown do
userData: self()
)
_ = :wxFrame.disconnect(frame, :command_menu_selected, id: Desktop.Wx.wxID_EXIT())
:wxFrame.connect(frame, :command_menu_selected,
id: Desktop.Wx.wxID_EXIT(),
callback: &__MODULE__.command_menu_selected/2
)
:ok
rescue
_error -> :ok
@@ -51,42 +42,16 @@ defmodule BDS.Desktop.Shutdown do
request_quit()
end
@spec command_menu_selected(tuple(), term()) :: :ok
def command_menu_selected(_event, _command_event) do
request_quit()
end
defp start_shutdown_task do
Task.start(fn ->
close_main_window()
Process.sleep(@stop_delay_ms)
System.stop(0)
MainWindow.persist_now()
quit_module().quit()
end)
:ok
end
defp close_main_window do
with frame when not is_nil(frame) <- main_frame() do
:wx.set_env(Desktop.Env.wx_env())
if :wxWindow.isShown(frame) do
:wxWindow.hide(frame)
end
:wxWindow.destroy(frame)
else
_other -> :ok
end
rescue
_error -> :ok
catch
:exit, _reason -> :ok
end
defp main_frame do
Window.frame(MainWindow.window_id())
catch
:exit, _reason -> nil
defp quit_module do
Application.get_env(:bds, :desktop_window_quit_module, Window)
end
end