diff options
-rw-r--r-- | src/gui/widgets/window.cpp | 5 | ||||
-rw-r--r-- | src/gui/windows/setupwindow.cpp | 12 | ||||
-rw-r--r-- | src/gui/windows/setupwindow.h | 2 |
3 files changed, 19 insertions, 0 deletions
diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp index caf7dae91..f2f7c1dd1 100644 --- a/src/gui/widgets/window.cpp +++ b/src/gui/widgets/window.cpp @@ -79,6 +79,8 @@ #include "gui/fonts/font.h" +#include "gui/windows/setupwindow.h" + #include "gui/widgets/containerplacer.h" #include "gui/widgets/layout.h" @@ -219,6 +221,9 @@ Window::~Window() if (gui) gui->removeDragged(this); + if (setupWindow) + setupWindow->unregisterWindowForReset(this); + client->windowRemoved(this); saveWindowState(); diff --git a/src/gui/windows/setupwindow.cpp b/src/gui/windows/setupwindow.cpp index 7239061ff..93556ab08 100644 --- a/src/gui/windows/setupwindow.cpp +++ b/src/gui/windows/setupwindow.cpp @@ -243,6 +243,18 @@ void SetupWindow::registerWindowForReset(Window *const window) mWindowsToReset.push_back(window); } +void SetupWindow::unregisterWindowForReset(Window *const window) +{ + FOR_EACH (std::list<Window*>::const_iterator, it, mWindowsToReset) + { + if (*it == window) + { + mWindowsToReset.erase(it); + return; + } + } +} + void SetupWindow::doCancel() { setVisible(false); diff --git a/src/gui/windows/setupwindow.h b/src/gui/windows/setupwindow.h index e604bf0de..40e820fcf 100644 --- a/src/gui/windows/setupwindow.h +++ b/src/gui/windows/setupwindow.h @@ -62,6 +62,8 @@ class SetupWindow final : public Window, void registerWindowForReset(Window *const window); + void unregisterWindowForReset(Window *const window); + void clearWindowsForReset() { mWindowsToReset.clear(); } |