LibGUI: GDialog should close its nested event loop on window close.

Make GWindow::close() so we can override it in GDialog and quit from the
internal event loop when the window manager tells us to close ourselves.

The dialog will return GDialog::ExecCancel in these situations.
This commit is contained in:
Andreas Kling 2019-07-26 16:13:59 +02:00
parent 7da5a04131
commit d7ff2c5b86
Notes: sideshowbarker 2024-07-19 13:02:50 +09:00
3 changed files with 10 additions and 1 deletions

View file

@ -40,3 +40,10 @@ void GDialog::done(int result)
dbgprintf("%s: quit event loop with result %d\n", class_name(), result);
m_event_loop->quit(result);
}
void GDialog::close()
{
GWindow::close();
m_event_loop->quit(ExecCancel);
}

View file

@ -19,6 +19,8 @@ public:
int result() const { return m_result; }
void done(int result);
virtual void close() override;
protected:
explicit GDialog(CObject* parent);

View file

@ -82,7 +82,7 @@ public:
void show();
void hide();
void close();
virtual void close();
void move_to_front();
void start_wm_resize();