[balsa/gtk4: 24/248] Various: Be more systematic when making GMenu s




commit 12361faebd3ac4fb50b6f0836eee3eb0792c83dc
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Tue May 19 14:43:42 2020 -0400

    Various: Be more systematic when making GMenu s
    
    Put all items in sections when there are any sections.

 libbalsa/libbalsa-vfs.c |  1 +
 src/ab-main.c           |  7 +++----
 src/balsa-index.c       | 19 ++++++++++++-------
 src/balsa-mblist.c      | 28 +++++++++++++++++-----------
 4 files changed, 33 insertions(+), 22 deletions(-)
---
diff --git a/libbalsa/libbalsa-vfs.c b/libbalsa/libbalsa-vfs.c
index ddcb74be7..06dd87e58 100644
--- a/libbalsa/libbalsa-vfs.c
+++ b/libbalsa/libbalsa-vfs.c
@@ -636,6 +636,7 @@ gio_add_vfs_menu_item(GMenu       *menu,
     g_menu_item_set_action_and_target(menu_item, action, "s", name);
 
     g_menu_append_item(menu, menu_item);
+    g_object_unref(menu_item);
 }
 
 
diff --git a/src/ab-main.c b/src/ab-main.c
index 725291c5f..31647c8e2 100644
--- a/src/ab-main.c
+++ b/src/ab-main.c
@@ -274,7 +274,6 @@ set_address_book_menu_items(void)
         LibBalsaAddressBook *address_book = l->data;
         const gchar *name;
         gchar *label;
-        gchar *detailed_action;
         gchar *accel;
         GMenuItem *item;
 
@@ -284,11 +283,11 @@ set_address_book_menu_items(void)
         name = libbalsa_address_book_get_name(address_book);
 
         label = g_strdup_printf("_%d:%s", ++pos, name);
-        detailed_action = g_strdup_printf("win.address-book::%s", name);
-        item = g_menu_item_new(label, detailed_action);
-        g_free(detailed_action);
+        item = g_menu_item_new(label, NULL);
         g_free(label);
 
+        g_menu_item_set_action_and_target(item, "win.address-book", "s", name);
+
         accel = g_strdup_printf("<Primary>%d", pos);
         g_menu_item_set_attribute(item, "accel", "s", accel);
         g_free(accel);
diff --git a/src/balsa-index.c b/src/balsa-index.c
index 2efbfef6a..f6f2b5cc7 100644
--- a/src/balsa-index.c
+++ b/src/balsa-index.c
@@ -2091,13 +2091,18 @@ bndx_popup_menu_create(BalsaIndex * bindex)
     menu = g_menu_new();
 
     /* this is an invariable part of the context message menu. */
-    g_menu_append(menu, _("_Reply…"),            "popup.reply");
-    g_menu_append(menu, _("Reply To _All…"),     "popup.reply-to-all");
-    g_menu_append(menu, _("Reply To _Group…"),   "popup.reply-to-group");
-    g_menu_append(menu, _("_Forward Attached…"), "popup.forward-attached");
-    g_menu_append(menu, _("Forward _Inline…"),   "popup.forward-inline");
-    g_menu_append(menu, _("_Pipe through…"),     "popup.pipe");
-    g_menu_append(menu, _("_Store Address…"),    "popup.store-address");
+    section = g_menu_new();
+
+    g_menu_append(section, _("_Reply…"),            "popup.reply");
+    g_menu_append(section, _("Reply To _All…"),     "popup.reply-to-all");
+    g_menu_append(section, _("Reply To _Group…"),   "popup.reply-to-group");
+    g_menu_append(section, _("_Forward Attached…"), "popup.forward-attached");
+    g_menu_append(section, _("Forward _Inline…"),   "popup.forward-inline");
+    g_menu_append(section, _("_Pipe through…"),     "popup.pipe");
+    g_menu_append(section, _("_Store Address…"),    "popup.store-address");
+
+    g_menu_append_section(menu, NULL, G_MENU_MODEL(section));
+    g_object_unref(section);
 
     /* items that are insensitive for a read-only mailbox */
     section = g_menu_new();
diff --git a/src/balsa-mblist.c b/src/balsa-mblist.c
index 8252bb9e4..424e2c2a9 100644
--- a/src/balsa-mblist.c
+++ b/src/balsa-mblist.c
@@ -1705,37 +1705,43 @@ balsa_mblist_mru_menu(GList ** url_list,
                       const gchar *action)
 {
     GMenu *menu;
-    GMenu *other_menu;
+    GMenu *section;
     GList *list;
-    GMenuItem *other_item;
+    GMenuItem *item;
 
     g_return_val_if_fail(url_list != NULL, NULL);
     g_return_val_if_fail(action != NULL, NULL);
 
     menu = g_menu_new();
+
+    section = g_menu_new();
+
     for (list = *url_list; list != NULL; list = list->next) {
         gchar *url = list->data;
         LibBalsaMailbox *mailbox = balsa_find_mailbox_by_url(url);
 
         if (mailbox != NULL) {
             const gchar *name = libbalsa_mailbox_get_name(mailbox);
-            GMenuItem *item;
 
             item = g_menu_item_new(name, NULL);
             g_menu_item_set_action_and_target(item, action, "s", url);
-            g_menu_append_item(menu, item);
+            g_menu_append_item(section, item);
             g_object_unref(item);
         }
     }
 
-    other_item = g_menu_item_new(_("_Other…"), NULL);
-    g_menu_item_set_action_and_target(other_item, action, "s", "");
-    other_menu = g_menu_new();
-    g_menu_append_item(other_menu, other_item);
-    g_object_unref(other_item);
+    g_menu_append_section(menu, NULL, G_MENU_MODEL(section));
+    g_object_unref(section);
+
+    section = g_menu_new();
+
+    item = g_menu_item_new(_("_Other…"), NULL);
+    g_menu_item_set_action_and_target(item, action, "s", "");
+    g_menu_append_item(section, item);
+    g_object_unref(item);
 
-    g_menu_append_section(menu, NULL, G_MENU_MODEL(other_menu));
-    g_object_unref(other_menu);
+    g_menu_append_section(menu, NULL, G_MENU_MODEL(section));
+    g_object_unref(section);
 
     return menu;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]