summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client.cpp9
-rw-r--r--src/client.h2
-rw-r--r--src/gui/widgets/window.cpp2
3 files changed, 13 insertions, 0 deletions
diff --git a/src/client.cpp b/src/client.cpp
index e281ddced..3a2a5f493 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -777,6 +777,9 @@ void Client::gameClear()
if (logger)
logger->log1("Quitting2");
+ delete mCurrentDialog;
+ mCurrentDialog = nullptr;
+
delete gui;
gui = nullptr;
@@ -2873,3 +2876,9 @@ void Client::logEvent(const SDL_Event &event)
break;
};
}
+
+void Client::windowRemoved(const Window *const window)
+{
+ if (instance()->mCurrentDialog == window)
+ instance()->mCurrentDialog = nullptr;
+}
diff --git a/src/client.h b/src/client.h
index bdf62ae0b..a448678d0 100644
--- a/src/client.h
+++ b/src/client.h
@@ -319,6 +319,8 @@ public:
PacketLimit mPacketLimits[PACKET_SIZE + 1];
+ static void windowRemoved(const Window *const window);
+
private:
void initRootDir();
diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp
index af753be2d..bb9e12320 100644
--- a/src/gui/widgets/window.cpp
+++ b/src/gui/widgets/window.cpp
@@ -151,6 +151,8 @@ Window::~Window()
{
logger->log("Window::~Window(\"%s\")", getCaption().c_str());
+ Client::windowRemoved(this);
+
saveWindowState();
delete mLayout;