From af2678a3a0626a4b9a66d1559b9794cd2a616c7e Mon Sep 17 00:00:00 2001 From: deepend Date: Fri, 30 Jan 2026 17:13:44 -0700 Subject: [PATCH] Updated the DCC transfer view and notify dialog to use GtkGrid with GTK3 spacing and attachment equivalents while keeping GTK2 table behavior intact. Switched GTK3 layout helpers and table sections in the server list and setup UI to grid-based attachments and spacing for consistent GTK3 behavior. --- src/fe-gtk/dccgui.c | 26 +++++++++++++++++++------- src/fe-gtk/notifygui.c | 27 +++++++++++++++++++++++++++ src/fe-gtk/servlistgui.c | 29 +++++++++++++++++++++++++++-- src/fe-gtk/setup.c | 39 +++++++++++++++++++++++++++++++++------ 4 files changed, 106 insertions(+), 15 deletions(-) diff --git a/src/fe-gtk/dccgui.c b/src/fe-gtk/dccgui.c index ce135f68..810221a7 100644 --- a/src/fe-gtk/dccgui.c +++ b/src/fe-gtk/dccgui.c @@ -768,7 +768,7 @@ dcc_detail_label (char *text, GtkWidget *box, int num) gtk_widget_set_vexpand (label, FALSE); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_START); - gtk_table_attach (GTK_TABLE (box), label, 0, 1, 0 + num, 1 + num, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (box), label, 0, 0 + num, 1, 1); #elif !HAVE_GTK3 gtk_misc_set_alignment (GTK_MISC (label), 0, 0); gtk_table_attach (GTK_TABLE (box), label, 0, 1, 0 + num, 1 + num, @@ -782,7 +782,7 @@ dcc_detail_label (char *text, GtkWidget *box, int num) gtk_widget_set_vexpand (label, FALSE); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_START); - gtk_table_attach (GTK_TABLE (box), label, 1, 2, 0 + num, 1 + num, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (box), label, 1, 0 + num, 1, 1); #elif !HAVE_GTK3 gtk_misc_set_alignment (GTK_MISC (label), 0, 0); gtk_table_attach (GTK_TABLE (box), label, 1, 2, 0 + num, 1 + num, @@ -881,8 +881,13 @@ fe_dcc_open_recv_win (int passive) g_signal_connect (G_OBJECT (view), "row-activated", G_CALLBACK (dcc_dclick_cb), NULL); +#if HAVE_GTK3 + table = gtk_grid_new (); + gtk_grid_set_column_spacing (GTK_GRID (table), 16); +#else table = gtk_table_new (1, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 16); +#endif gtk_box_pack_start (GTK_BOX (vbox), table, 0, 0, 0); radio = gtk_radio_button_new_with_mnemonic (NULL, _("Both")); @@ -893,7 +898,7 @@ fe_dcc_open_recv_win (int passive) gtk_widget_set_vexpand (radio, FALSE); gtk_widget_set_halign (radio, GTK_ALIGN_FILL); gtk_widget_set_valign (radio, GTK_ALIGN_FILL); - gtk_table_attach (GTK_TABLE (table), radio, 3, 4, 0, 1, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (table), radio, 3, 0, 1, 1); #else gtk_table_attach (GTK_TABLE (table), radio, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0); #endif @@ -907,7 +912,7 @@ fe_dcc_open_recv_win (int passive) gtk_widget_set_vexpand (radio, FALSE); gtk_widget_set_halign (radio, GTK_ALIGN_FILL); gtk_widget_set_valign (radio, GTK_ALIGN_FILL); - gtk_table_attach (GTK_TABLE (table), radio, 1, 2, 0, 1, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (table), radio, 1, 0, 1, 1); #else gtk_table_attach (GTK_TABLE (table), radio, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); #endif @@ -921,7 +926,7 @@ fe_dcc_open_recv_win (int passive) gtk_widget_set_vexpand (radio, FALSE); gtk_widget_set_halign (radio, GTK_ALIGN_FILL); gtk_widget_set_valign (radio, GTK_ALIGN_FILL); - gtk_table_attach (GTK_TABLE (table), radio, 2, 3, 0, 1, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (table), radio, 2, 0, 1, 1); #else gtk_table_attach (GTK_TABLE (table), radio, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0); #endif @@ -932,15 +937,22 @@ fe_dcc_open_recv_win (int passive) gtk_widget_set_vexpand (exp, FALSE); gtk_widget_set_halign (exp, GTK_ALIGN_FILL); gtk_widget_set_valign (exp, GTK_ALIGN_FILL); - gtk_table_attach (GTK_TABLE (table), exp, 0, 1, 0, 1, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (table), exp, 0, 0, 1, 1); #else gtk_table_attach (GTK_TABLE (table), exp, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); #endif +#if HAVE_GTK3 + detailbox = gtk_grid_new (); + gtk_grid_set_column_spacing (GTK_GRID (detailbox), 6); + gtk_grid_set_row_spacing (GTK_GRID (detailbox), 2); + gtk_container_set_border_width (GTK_CONTAINER (detailbox), 6); +#else detailbox = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (detailbox), 6); gtk_table_set_row_spacings (GTK_TABLE (detailbox), 2); gtk_container_set_border_width (GTK_CONTAINER (detailbox), 6); +#endif g_signal_connect (G_OBJECT (exp), "activate", G_CALLBACK (dcc_exp_cb), detailbox); #if HAVE_GTK3 @@ -948,7 +960,7 @@ fe_dcc_open_recv_win (int passive) gtk_widget_set_vexpand (detailbox, FALSE); gtk_widget_set_halign (detailbox, GTK_ALIGN_FILL); gtk_widget_set_valign (detailbox, GTK_ALIGN_FILL); - gtk_table_attach (GTK_TABLE (table), detailbox, 0, 4, 1, 2, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (table), detailbox, 0, 1, 4, 1); #else gtk_table_attach (GTK_TABLE (table), detailbox, 0, 4, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); #endif diff --git a/src/fe-gtk/notifygui.c b/src/fe-gtk/notifygui.c index 3c42fb57..1d9de1d9 100644 --- a/src/fe-gtk/notifygui.c +++ b/src/fe-gtk/notifygui.c @@ -393,38 +393,65 @@ fe_notify_ask (char *nick, char *networks) gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); +#if HAVE_GTK3 + table = gtk_grid_new (); + gtk_container_set_border_width (GTK_CONTAINER (table), 12); + gtk_grid_set_row_spacing (GTK_GRID (table), 3); + gtk_grid_set_column_spacing (GTK_GRID (table), 8); +#else table = gtk_table_new (2, 3, FALSE); gtk_container_set_border_width (GTK_CONTAINER (table), 12); gtk_table_set_row_spacings (GTK_TABLE (table), 3); gtk_table_set_col_spacings (GTK_TABLE (table), 8); +#endif gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), table); label = gtk_label_new (msg); +#if HAVE_GTK3 + gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); +#else gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); +#endif entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry), nick); g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (notifygui_add_enter), dialog); +#if HAVE_GTK3 + gtk_grid_attach (GTK_GRID (table), entry, 1, 0, 1, 1); +#else gtk_table_attach_defaults (GTK_TABLE (table), entry, 1, 2, 0, 1); +#endif g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (notifygui_add_cb), entry); label = gtk_label_new (_("Notify on these networks:")); +#if HAVE_GTK3 + gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1); +#else gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); +#endif wid = gtk_entry_new (); g_object_set_data (G_OBJECT (entry), "net", wid); g_signal_connect (G_OBJECT (wid), "activate", G_CALLBACK (notifygui_add_enter), dialog); gtk_entry_set_text (GTK_ENTRY (wid), networks ? networks : "ALL"); +#if HAVE_GTK3 + gtk_grid_attach (GTK_GRID (table), wid, 1, 2, 1, 1); +#else gtk_table_attach_defaults (GTK_TABLE (table), wid, 1, 2, 2, 3); +#endif label = gtk_label_new (NULL); g_snprintf (buf, sizeof (buf), "%s", _("Comma separated list of networks is accepted.")); gtk_label_set_markup (GTK_LABEL (label), buf); +#if HAVE_GTK3 + gtk_grid_attach (GTK_GRID (table), label, 1, 3, 1, 1); +#else gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4); +#endif gtk_widget_show_all (dialog); } diff --git a/src/fe-gtk/servlistgui.c b/src/fe-gtk/servlistgui.c index 5eee8710..adc7d69b 100644 --- a/src/fe-gtk/servlistgui.c +++ b/src/fe-gtk/servlistgui.c @@ -1323,8 +1323,8 @@ servlist_table_attach (GtkWidget *table, GtkWidget *child, gtk_widget_set_margin_end (child, xpad); gtk_widget_set_margin_top (child, ypad); gtk_widget_set_margin_bottom (child, ypad); - gtk_table_attach (GTK_TABLE (table), child, left_attach, right_attach, - top_attach, bottom_attach, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (table), child, left_attach, top_attach, + right_attach - left_attach, bottom_attach - top_attach); #else GtkAttachOptions xoptions = 0; GtkAttachOptions yoptions = 0; @@ -2031,10 +2031,17 @@ servlist_open_edit (GtkWidget *parent, ircnet *net) /* Checkboxes and entries */ +#if HAVE_GTK3 + table3 = gtk_grid_new (); + gtk_box_pack_start (GTK_BOX (vbox5), table3, FALSE, FALSE, 0); + gtk_grid_set_row_spacing (GTK_GRID (table3), 2); + gtk_grid_set_column_spacing (GTK_GRID (table3), 8); +#else table3 = gtk_table_new (13, 2, FALSE); gtk_box_pack_start (GTK_BOX (vbox5), table3, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (table3), 2); gtk_table_set_col_spacings (GTK_TABLE (table3), 8); +#endif check = servlist_create_check (0, !(net->flags & FLAG_CYCLE), table3, 0, 0, _("Connect to selected server only")); gtk_widget_set_tooltip_text (check, _("Don't cycle through all the servers when the connection fails.")); @@ -2198,12 +2205,21 @@ servlist_open_networks (void) label2 = bold_label (_("User Information")); gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 0); +#if HAVE_GTK3 + table1 = gtk_grid_new (); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox1), table1, FALSE, FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table1), 8); + gtk_grid_set_row_spacing (GTK_GRID (table1), 2); + gtk_grid_set_column_spacing (GTK_GRID (table1), 4); +#else table1 = gtk_table_new (5, 2, FALSE); gtk_widget_show (table1); gtk_box_pack_start (GTK_BOX (vbox1), table1, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (table1), 8); gtk_table_set_row_spacings (GTK_TABLE (table1), 2); gtk_table_set_col_spacings (GTK_TABLE (table1), 4); +#endif label3 = gtk_label_new_with_mnemonic (_("_Nick name:")); gtk_widget_show (label3); @@ -2314,12 +2330,21 @@ servlist_open_networks (void) label1 = bold_label (_("Networks")); gtk_box_pack_start (GTK_BOX (vbox2), label1, FALSE, FALSE, 0); +#if HAVE_GTK3 + table4 = gtk_grid_new (); + gtk_widget_show (table4); + gtk_box_pack_start (GTK_BOX (vbox2), table4, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table4), 8); + gtk_grid_set_row_spacing (GTK_GRID (table4), 2); + gtk_grid_set_column_spacing (GTK_GRID (table4), 3); +#else table4 = gtk_table_new (2, 2, FALSE); gtk_widget_show (table4); gtk_box_pack_start (GTK_BOX (vbox2), table4, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table4), 8); gtk_table_set_row_spacings (GTK_TABLE (table4), 2); gtk_table_set_col_spacings (GTK_TABLE (table4), 3); +#endif scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow3); diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c index c8d861a8..0bec6390 100644 --- a/src/fe-gtk/setup.c +++ b/src/fe-gtk/setup.c @@ -748,8 +748,8 @@ setup_table_attach (GtkWidget *table, GtkWidget *child, gtk_widget_set_margin_top (child, ypad); gtk_widget_set_margin_bottom (child, ypad); - gtk_table_attach (GTK_TABLE (table), child, left_attach, right_attach, - top_attach, bottom_attach, 0, 0, 0, 0); + gtk_grid_attach (GTK_GRID (table), child, left_attach, top_attach, + right_attach - left_attach, bottom_attach - top_attach); #else GtkAttachOptions xoptions = 0; GtkAttachOptions yoptions = 0; @@ -801,7 +801,8 @@ setup_headlabel (GtkWidget *tab, int row, int col, char *text) #elif !HAVE_GTK3 gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); #endif - gtk_table_attach (GTK_TABLE (tab), label, col, col + 1, row, row + 1, 0, 0, 4, 0); + setup_table_attach (tab, label, col, col + 1, row, row + 1, FALSE, FALSE, + SETUP_ALIGN_START, SETUP_ALIGN_CENTER, 4, 0); } static void @@ -840,21 +841,24 @@ setup_create_3oggle (GtkWidget *tab, int row, const setting *set) setup_get_int3 (&setup_prefs, offsets[0])); g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[0]); - gtk_table_attach (GTK_TABLE (tab), wid, 3, 4, row, row + 1, 0, 0, 0, 0); + setup_table_attach (tab, wid, 3, 4, row, row + 1, FALSE, FALSE, + SETUP_ALIGN_CENTER, SETUP_ALIGN_CENTER, 0, 0); wid = gtk_check_button_new (); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), setup_get_int3 (&setup_prefs, offsets[1])); g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[1]); - gtk_table_attach (GTK_TABLE (tab), wid, 4, 5, row, row + 1, 0, 0, 0, 0); + setup_table_attach (tab, wid, 4, 5, row, row + 1, FALSE, FALSE, + SETUP_ALIGN_CENTER, SETUP_ALIGN_CENTER, 0, 0); wid = gtk_check_button_new (); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), setup_get_int3 (&setup_prefs, offsets[2])); g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[2]); - gtk_table_attach (GTK_TABLE (tab), wid, 5, 6, row, row + 1, 0, 0, 0, 0); + setup_table_attach (tab, wid, 5, 6, row, row + 1, FALSE, FALSE, + SETUP_ALIGN_CENTER, SETUP_ALIGN_CENTER, 0, 0); } static void @@ -1474,10 +1478,17 @@ setup_create_frame (void) { GtkWidget *tab; +#if HAVE_GTK3 + tab = gtk_grid_new (); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_grid_set_row_spacing (GTK_GRID (tab), 2); + gtk_grid_set_column_spacing (GTK_GRID (tab), 3); +#else tab = gtk_table_new (3, 2, FALSE); gtk_container_set_border_width (GTK_CONTAINER (tab), 6); gtk_table_set_row_spacings (GTK_TABLE (tab), 2); gtk_table_set_col_spacings (GTK_TABLE (tab), 3); +#endif return tab; } @@ -1908,11 +1919,19 @@ setup_create_color_page (void) #endif gtk_container_set_border_width (GTK_CONTAINER (box), 6); +#if HAVE_GTK3 + tab = gtk_grid_new (); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_grid_set_row_spacing (GTK_GRID (tab), 2); + gtk_grid_set_column_spacing (GTK_GRID (tab), 3); + gtk_container_add (GTK_CONTAINER (box), tab); +#else tab = gtk_table_new (9, 2, FALSE); gtk_container_set_border_width (GTK_CONTAINER (tab), 6); gtk_table_set_row_spacings (GTK_TABLE (tab), 2); gtk_table_set_col_spacings (GTK_TABLE (tab), 3); gtk_container_add (GTK_CONTAINER (box), tab); +#endif setup_create_header (tab, 0, N_("Text Colors")); @@ -2463,11 +2482,19 @@ setup_create_sound_page (void) gtk_container_add (GTK_CONTAINER (scrolledwindow1), sound_tree); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (sound_tree), TRUE); +#if HAVE_GTK3 + table1 = gtk_grid_new (); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox2), table1, FALSE, TRUE, 8); + gtk_grid_set_row_spacing (GTK_GRID (table1), 2); + gtk_grid_set_column_spacing (GTK_GRID (table1), 4); +#else table1 = gtk_table_new (2, 3, FALSE); gtk_widget_show (table1); gtk_box_pack_start (GTK_BOX (vbox2), table1, FALSE, TRUE, 8); gtk_table_set_row_spacings (GTK_TABLE (table1), 2); gtk_table_set_col_spacings (GTK_TABLE (table1), 4); +#endif sound_label = gtk_label_new_with_mnemonic (_("Sound file:")); gtk_widget_show (sound_label);