From 3923bd915c24270a90c711d0a6661467e7020531 Mon Sep 17 00:00:00 2001 From: deepend Date: Fri, 23 Jan 2026 17:26:59 -0700 Subject: [PATCH] Updated GTK3 menu quick items to build a GtkMenuItem with a box, icon-name image, and mnemonic label before packing into the menu item. Ensured chanlist GTK3 icon menu items always create images from icon names before packing with the mnemonic label. Adjusted spell entry GTK3 icon menu items to create icon-name images for the boxed menu item layout. --- src/fe-gtk/chanlist.c | 3 +- src/fe-gtk/menu.c | 59 +++++++++-------------------------- src/fe-gtk/sexy-spell-entry.c | 3 +- 3 files changed, 16 insertions(+), 49 deletions(-) diff --git a/src/fe-gtk/chanlist.c b/src/fe-gtk/chanlist.c index 6880e1d6..79e94c54 100644 --- a/src/fe-gtk/chanlist.c +++ b/src/fe-gtk/chanlist.c @@ -136,8 +136,7 @@ chanlist_icon_menu_item (const char *label, const char *icon_name, item = gtk_menu_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - if (icon_name) - image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); + image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); label_widget = gtk_label_new_with_mnemonic (label); if (image) gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0); diff --git a/src/fe-gtk/menu.c b/src/fe-gtk/menu.c index 3bb0a973..3e7a1838 100644 --- a/src/fe-gtk/menu.c +++ b/src/fe-gtk/menu.c @@ -261,47 +261,6 @@ menu_toggle_item (char *label, GtkWidget *menu, void *callback, void *userdata, return item; } -#if HAVE_GTK3 -static GtkWidget * -menu_item_new_with_image_and_label (GtkWidget *image, const char *label) -{ - GtkWidget *item; - GtkWidget *box; - GtkWidget *label_widget; - - item = gtk_menu_item_new (); - box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - label_widget = gtk_label_new_with_mnemonic (label); - if (image) - gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (box), label_widget, FALSE, FALSE, 0); - gtk_container_add (GTK_CONTAINER (item), box); - - return item; -} - -static GtkWidget * -menu_item_new_with_icon_name_and_label (const char *icon_name, const char *label) -{ - GtkWidget *item; - GtkWidget *box; - GtkWidget *image = NULL; - GtkWidget *label_widget; - - item = gtk_menu_item_new (); - box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - if (icon_name) - image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); - label_widget = gtk_label_new_with_mnemonic (label); - if (image) - gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (box), label_widget, FALSE, FALSE, 0); - gtk_container_add (GTK_CONTAINER (item), box); - - return item; -} -#endif - GtkWidget * menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, gpointer userdata, char *icon) @@ -310,6 +269,9 @@ menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, char *path; #if HAVE_GTK3 const char *icon_name = NULL; + GtkWidget *box; + GtkWidget *image = NULL; + GtkWidget *label_widget; #endif if (!label) @@ -343,10 +305,17 @@ menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, } #if HAVE_GTK3 - if (img) - item = menu_item_new_with_image_and_label (img, label); - else - item = menu_item_new_with_icon_name_and_label (icon_name, label); + item = gtk_menu_item_new (); + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + if (icon_name) + image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); + else if (img) + image = img; + label_widget = gtk_label_new_with_mnemonic (label); + if (image) + gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), label_widget, FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (item), box); #endif #if !HAVE_GTK3 item = gtk_image_menu_item_new_with_mnemonic (label); diff --git a/src/fe-gtk/sexy-spell-entry.c b/src/fe-gtk/sexy-spell-entry.c index 3a74ff35..5d67fd2f 100644 --- a/src/fe-gtk/sexy-spell-entry.c +++ b/src/fe-gtk/sexy-spell-entry.c @@ -642,8 +642,7 @@ sexy_spell_entry_icon_menu_item (const char *label, const char *stock_name) icon_name = gtkutil_icon_name_from_stock (stock_name); item = gtk_menu_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - if (icon_name) - image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); + image = icon_name ? gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU) : NULL; label_widget = gtk_label_new_with_mnemonic (label); if (image) gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);