From a8545d85dc5964559bc7b66279d727585ba1c9fd Mon Sep 17 00:00:00 2001 From: Dino Date: Fri, 9 May 2025 20:38:49 -0400 Subject: [PATCH] RM #1289 gtk: Fix saving and restoring city dlog size --- client/gui-gtk-3.22/citydlg.c | 18 ++++++++++++------ client/gui-gtk-4.0/citydlg.c | 16 ++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/client/gui-gtk-3.22/citydlg.c b/client/gui-gtk-3.22/citydlg.c index 04af9b6f28..0150392b51 100644 --- a/client/gui-gtk-3.22/citydlg.c +++ b/client/gui-gtk-3.22/citydlg.c @@ -3446,7 +3446,7 @@ static void set_cityopt_values(struct city_dialog *pdialog) /******************** Callbacks for: Close, Prev, Next. ******************/ /**********************************************************************//** - User has clicked rename city-button + User has closed city dialog **************************************************************************/ static void close_callback(GtkWidget *w, gpointer data) { @@ -3454,14 +3454,20 @@ static void close_callback(GtkWidget *w, gpointer data) } /**********************************************************************//** - User has closed rename city dialog + User has closed city dialog **************************************************************************/ static void city_destroy_callback(GtkWidget *w, gpointer data) { struct city_dialog *pdialog; + int width, height; + GtkWidget *cont_area; pdialog = (struct city_dialog *) data; + cont_area = gtk_dialog_get_content_area(GTK_DIALOG(pdialog->shell)); + width = gtk_widget_get_allocated_width(GTK_WIDGET(cont_area)); + height = gtk_widget_get_allocated_height(GTK_WIDGET(cont_area)); + gtk_widget_hide(pdialog->shell); if (game.info.citizen_nationality) { @@ -3473,12 +3479,12 @@ static void city_destroy_callback(GtkWidget *w, gpointer data) /* Save size of the city dialog. */ GUI_GTK_OPTION(citydlg_xsize) = CLIP(GUI_GTK3_22_CITYDLG_MIN_XSIZE, - gtk_widget_get_allocated_width(pdialog->shell), + width, GUI_GTK3_22_CITYDLG_MAX_XSIZE); GUI_GTK_OPTION(citydlg_ysize) - = CLIP(GUI_GTK3_22_CITYDLG_MIN_XSIZE, - gtk_widget_get_allocated_height(pdialog->shell), - GUI_GTK3_22_CITYDLG_MAX_XSIZE); + = CLIP(GUI_GTK3_22_CITYDLG_MIN_YSIZE, + height, + GUI_GTK3_22_CITYDLG_MAX_YSIZE); last_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(pdialog->notebook)); diff --git a/client/gui-gtk-4.0/citydlg.c b/client/gui-gtk-4.0/citydlg.c index 197bb53d7e..6a84af7a3c 100644 --- a/client/gui-gtk-4.0/citydlg.c +++ b/client/gui-gtk-4.0/citydlg.c @@ -3562,7 +3562,7 @@ static void set_cityopt_values(struct city_dialog *pdialog) /******************** Callbacks for: Close, Prev, Next. *******************/ /***********************************************************************//** - User has clicked rename city-button + User has closed city dialog ***************************************************************************/ static void close_callback(GtkWidget *w, gpointer data) { @@ -3570,11 +3570,15 @@ static void close_callback(GtkWidget *w, gpointer data) } /***********************************************************************//** - User has closed rename city dialog + User has closed city dialog ***************************************************************************/ static void city_destroy_callback(GtkWidget *w, gpointer data) { struct city_dialog *pdialog; + int width, height; + + /* Save size of the city dialog. */ + gtk_window_get_default_size(GTK_WINDOW(w), &width, &height); pdialog = (struct city_dialog *) data; @@ -3589,12 +3593,12 @@ static void city_destroy_callback(GtkWidget *w, gpointer data) /* Save size of the city dialog. */ GUI_GTK_OPTION(citydlg_xsize) = CLIP(GUI_GTK4_CITYDLG_MIN_XSIZE, - gtk_widget_get_allocated_width(pdialog->shell), + width, GUI_GTK4_CITYDLG_MAX_XSIZE); GUI_GTK_OPTION(citydlg_ysize) - = CLIP(GUI_GTK4_CITYDLG_MIN_XSIZE, - gtk_widget_get_allocated_height(pdialog->shell), - GUI_GTK4_CITYDLG_MAX_XSIZE); + = CLIP(GUI_GTK4_CITYDLG_MIN_YSIZE, + height, + GUI_GTK4_CITYDLG_MAX_YSIZE); last_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(pdialog->notebook)); -- 2.31.0