From 9311528eda6cdc207800d670b63cb99eef0f8e8a Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Sun, 23 Aug 2026 00:59:57 +0300
Subject: [PATCH 34/34] gtk4: Fix reopening Messages tab closed as window

If Messages were windowed and then closed, it was
impossible to reopen afterwards.

See RM #2160

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 client/gui-gtk-4.0/gui_stuff.c  | 5 ++++-
 client/gui-gtk-4.0/messagewin.c | 4 +++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/client/gui-gtk-4.0/gui_stuff.c b/client/gui-gtk-4.0/gui_stuff.c
index 31ee468f5b..a562f8b524 100644
--- a/client/gui-gtk-4.0/gui_stuff.c
+++ b/client/gui-gtk-4.0/gui_stuff.c
@@ -883,7 +883,10 @@ void gui_dialog_destroy(struct gui_dialog *dlg)
 {
   switch (dlg->type) {
   case GUI_DIALOG_WINDOW:
-    gtk_window_destroy(GTK_WINDOW(dlg->v.window));
+    if (dlg->v.window != NULL) {
+      gtk_window_destroy(GTK_WINDOW(dlg->v.window));
+      dlg->v.window = NULL;
+    }
     break;
   case GUI_DIALOG_TAB:
     {
diff --git a/client/gui-gtk-4.0/messagewin.c b/client/gui-gtk-4.0/messagewin.c
index 31bb202306..619a8319d8 100644
--- a/client/gui-gtk-4.0/messagewin.c
+++ b/client/gui-gtk-4.0/messagewin.c
@@ -420,7 +420,9 @@ static void meswin_dialog_free(struct meswin_dialog *pdialog)
 ****************************************************************************/
 void meswin_dialog_popup(bool raise)
 {
-  if (NULL == meswin.shell) {
+  if (meswin.shell == NULL
+      || (meswin.shell->type == GUI_DIALOG_WINDOW
+          && meswin.shell->v.window == NULL)) {
     meswin_dialog_init(&meswin);
   }
 
-- 
2.53.0

