1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:38:11 +00:00

LibGUI: Added window creation callback to GApplication/GWindow

Added a window creation callback to GApplication that gets called
by GWindow which will reset any pending exit request in the
CEventLoop.

This is to prevent a bug which prevents your application from
starting up if you had a message box or other dialog before
showing your main application form. The bug was triggered by
there being no more visible windows which was triggering a
premature quit().
This commit is contained in:
Brandon Scott 2019-10-25 00:23:35 -05:00 committed by Andreas Kling
parent 5311f8fae1
commit 51e655f903
3 changed files with 8 additions and 0 deletions

View file

@ -119,6 +119,12 @@ void GApplication::hide_tooltip()
} }
} }
void GApplication::did_create_window(Badge<GWindow>)
{
if (m_event_loop->was_exit_requested())
m_event_loop->unquit();
}
void GApplication::did_delete_last_window(Badge<GWindow>) void GApplication::did_delete_last_window(Badge<GWindow>)
{ {
if (m_quit_when_last_window_deleted) if (m_quit_when_last_window_deleted)

View file

@ -33,6 +33,7 @@ public:
bool quit_when_last_window_deleted() const { return m_quit_when_last_window_deleted; } bool quit_when_last_window_deleted() const { return m_quit_when_last_window_deleted; }
void set_quit_when_last_window_deleted(bool b) { m_quit_when_last_window_deleted = b; } void set_quit_when_last_window_deleted(bool b) { m_quit_when_last_window_deleted = b; }
void did_create_window(Badge<GWindow>);
void did_delete_last_window(Badge<GWindow>); void did_delete_last_window(Badge<GWindow>);
const String& invoked_as() const { return m_invoked_as; } const String& invoked_as() const { return m_invoked_as; }

View file

@ -84,6 +84,7 @@ void GWindow::show()
apply_icon(); apply_icon();
reified_windows.set(m_window_id, this); reified_windows.set(m_window_id, this);
GApplication::the().did_create_window({});
update(); update();
} }