From c1e742e443f2fcde531b9ca902cc1996778774cd Mon Sep 17 00:00:00 2001 From: Marko Lindqvist Date: Tue, 16 Nov 2021 17:46:30 +0200 Subject: [PATCH 36/36] gtk3x: Make gui_dialog_add_(action_)widget() to work without gtk_container_add() gtk_container_add() is going away in gtk-3.98.4 - Rename gui_dialog_add_widget() as gui_dialog_add_action_widget() for consistency with gui_dialog_add_content_widget() - Always use gui_dialog_add_action_widget() when applicable See osdn #43227 Signed-off-by: Marko Lindqvist --- client/gui-gtk-4.0/cityrep.c | 6 +++--- client/gui-gtk-4.0/gui_stuff.c | 27 ++++++++++++++++++--------- client/gui-gtk-4.0/gui_stuff.h | 7 ++++--- client/gui-gtk-4.0/plrdlg.c | 2 +- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/client/gui-gtk-4.0/cityrep.c b/client/gui-gtk-4.0/cityrep.c index 509764ce8d..629f7d03ac 100644 --- a/client/gui-gtk-4.0/cityrep.c +++ b/client/gui-gtk-4.0/cityrep.c @@ -1171,15 +1171,15 @@ static void create_city_report_dialog(bool make_modal) /* menubar */ menubar = create_city_report_menubar(); - gui_dialog_add_widget(city_dialog_shell, menubar); + gui_dialog_add_action_widget(city_dialog_shell, menubar); /* buttons */ city_total_buy_cost_label = gtk_label_new(NULL); gtk_widget_set_hexpand(city_total_buy_cost_label, TRUE); gtk_label_set_ellipsize(GTK_LABEL(city_total_buy_cost_label), PANGO_ELLIPSIZE_START); - gtk_container_add(GTK_CONTAINER(city_dialog_shell->action_area), - city_total_buy_cost_label); + gui_dialog_add_action_widget(city_dialog_shell, + city_total_buy_cost_label); w = gui_dialog_add_button(city_dialog_shell, NULL, _("_Buy"), CITY_BUY); diff --git a/client/gui-gtk-4.0/gui_stuff.c b/client/gui-gtk-4.0/gui_stuff.c index aff2e4890d..b3fb69cb39 100644 --- a/client/gui-gtk-4.0/gui_stuff.c +++ b/client/gui-gtk-4.0/gui_stuff.c @@ -637,7 +637,8 @@ void gui_dialog_new(struct gui_dialog **pdlg, GtkNotebook *notebook, break; } - dlg->action_area = action_area; + dlg->actions = action_area; + dlg->actions_counter = 0; dlg->response_callback = gui_dialog_destroyed; @@ -687,8 +688,7 @@ static void gui_dialog_pack_button(struct gui_dialog *dlg, GtkWidget *button, g_signal_connect_closure_by_id(button, signal_id, 0, closure, FALSE); } - gtk_container_add(GTK_CONTAINER(dlg->action_area), button); - gtk_size_group_add_widget(gui_action, button); + gui_dialog_add_action_widget(dlg, button); gtk_size_group_add_widget(dlg->gui_button, button); } @@ -710,10 +710,19 @@ GtkWidget *gui_dialog_add_button(struct gui_dialog *dlg, /**********************************************************************//** Adds a widget to a dialog. **************************************************************************/ -GtkWidget *gui_dialog_add_widget(struct gui_dialog *dlg, - GtkWidget *widget) +GtkWidget *gui_dialog_add_action_widget(struct gui_dialog *dlg, + GtkWidget *widget) { - gtk_container_add(GTK_CONTAINER(dlg->action_area), widget); + /* When content area is vertical, action area is horizontal, + * and vice versa. */ + if (dlg->vertical_content) { + gtk_grid_attach(GTK_GRID(dlg->actions), widget, + dlg->actions_counter++, 0, 1, 1); + } else { + gtk_grid_attach(GTK_GRID(dlg->grid), widget, + 0, dlg->actions_counter++, 1, 1); + } + gtk_size_group_add_widget(gui_action, widget); return widget; @@ -728,7 +737,7 @@ void gui_dialog_set_response_sensitive(struct gui_dialog *dlg, GList *children; GList *list; - children = gtk_container_get_children(GTK_CONTAINER(dlg->action_area)); + children = gtk_container_get_children(GTK_CONTAINER(dlg->actions)); for (list = children; list; list = g_list_next(list)) { GtkWidget *button = list->data; @@ -766,7 +775,7 @@ void gui_dialog_show_all(struct gui_dialog *dlg) GList *list; gint num_visible = 0; - children = gtk_container_get_children(GTK_CONTAINER(dlg->action_area)); + children = gtk_container_get_children(GTK_CONTAINER(dlg->actions)); for (list = children; list; list = g_list_next(list)) { GtkWidget *button = list->data; @@ -789,7 +798,7 @@ void gui_dialog_show_all(struct gui_dialog *dlg) g_list_free(children); if (num_visible == 0) { - gtk_widget_hide(dlg->action_area); + gtk_widget_hide(dlg->actions); } } } diff --git a/client/gui-gtk-4.0/gui_stuff.h b/client/gui-gtk-4.0/gui_stuff.h index f2e2fddf98..396d7c1418 100644 --- a/client/gui-gtk-4.0/gui_stuff.h +++ b/client/gui-gtk-4.0/gui_stuff.h @@ -69,7 +69,7 @@ struct gui_dialog { /* public. */ GtkWidget *grid; - GtkWidget *action_area; + GtkWidget *actions; /* private. */ char *title; @@ -82,6 +82,7 @@ struct gui_dialog bool vertical_content; int content_counter; + int actions_counter; union { GtkWidget *window; @@ -108,8 +109,8 @@ void gui_dialog_new(struct gui_dialog **pdlg, GtkNotebook *notebook, GtkWidget *gui_dialog_add_button(struct gui_dialog *dlg, const char *icon_name, const char *text, int response); -GtkWidget *gui_dialog_add_widget(struct gui_dialog *dlg, - GtkWidget *widget); +GtkWidget *gui_dialog_add_action_widget(struct gui_dialog *dlg, + GtkWidget *widget); void gui_dialog_add_content_widget(struct gui_dialog *dlg, GtkWidget *wdg); void gui_dialog_set_default_size(struct gui_dialog *dlg, diff --git a/client/gui-gtk-4.0/plrdlg.c b/client/gui-gtk-4.0/plrdlg.c index 901326b7a1..770919f016 100644 --- a/client/gui-gtk-4.0/plrdlg.c +++ b/client/gui-gtk-4.0/plrdlg.c @@ -584,7 +584,7 @@ void create_players_dialog(void) menubar = gtk_aux_menu_bar_new(); gtk_container_add(GTK_CONTAINER(vbox), menubar); - gui_dialog_add_widget(players_dialog_shell, vbox); + gui_dialog_add_action_widget(players_dialog_shell, vbox); #ifdef MENUS_GTK3 item = gtk_menu_item_new_with_mnemonic(_("Di_plomacy")); -- 2.33.0