]> git.sur5r.net Git - glabels/commitdiff
Always show images for object menuitems
authorJim Evins <evins@snaught.com>
Sat, 12 Dec 2009 15:07:08 +0000 (10:07 -0500)
committerJim Evins <evins@snaught.com>
Sat, 12 Dec 2009 15:07:08 +0000 (10:07 -0500)
Because of the visual nature of the actions of these menuitems, the visual
cues provided by these icons should help improve the ability to find the
correct menuitem -- I know it does for me ( I don't always know my left
from my right :-))

src/ui.c

index f62231c31ea92ead533813bb920a902155e4989e..a76b45ce21291d1325ef704b8d6434d8df6e2f86 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -61,6 +61,11 @@ static void set_app_drawing_toolbar_style  (GtkUIManager    *ui);
 
 static void set_view_style                 (GtkUIManager    *ui);
 
+static void descend_menu_set_always_show_image (GtkMenu *menu);
+
+static void set_additional_properties      (GtkUIManager    *ui);
+
+
 static void connect_proxy_cb               (GtkUIManager    *ui,
                                            GtkAction       *action,
                                            GtkWidget       *proxy,
@@ -774,6 +779,8 @@ gl_ui_new (glWindow *window)
                                   recent_menu);
 
 
+        set_additional_properties (ui);
+
        gl_ui_util_set_verb_list_sensitive (ui, doc_verbs, FALSE);
        gl_ui_util_set_verb_list_sensitive (ui, paste_verbs, FALSE);
 
@@ -1055,6 +1062,74 @@ set_view_style (GtkUIManager *ui)
 }
 
 
+/*---------------------------------------------------------------------------*/
+/** PRIVATE.  Descend menu, set "always-show-image" for all image menu items.*/
+/*---------------------------------------------------------------------------*/
+static void
+descend_menu_set_always_show_image (GtkMenu *menu)
+{
+        GList       *children, *p;
+        GtkWidget   *submenu;
+        GtkWidget   *menu_item;
+
+        children = gtk_container_get_children (GTK_CONTAINER (menu));
+
+        for ( p = children; p != NULL; p = p->next )
+        {
+                menu_item = GTK_WIDGET (p->data);
+
+                submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
+                if ( submenu )
+                {
+                        descend_menu_set_always_show_image (GTK_MENU (submenu));
+                }
+                else if ( GTK_IS_IMAGE_MENU_ITEM (menu_item) )
+                {
+                        g_object_set (menu_item, "always-show-image", TRUE, NULL);
+                }
+        }
+}
+
+
+/*---------------------------------------------------------------------------*/
+/** PRIVATE.  Set additional properties.                                     */
+/*---------------------------------------------------------------------------*/
+static void
+set_additional_properties (GtkUIManager *ui)
+{
+        GtkWidget  *menu;
+        GtkWidget  *menu_item;
+
+        /*
+         * Set "always-show-image" property for all Object menuitems.  This is
+         * necessary because, as of Gtk-2.18, images are not shown by default
+         * and you really need these visual cues for these menu items.
+         */
+        menu_item = gtk_ui_manager_get_widget (ui, "/MenuBar/ObjectsMenu/");
+        menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
+        descend_menu_set_always_show_image (GTK_MENU (menu));
+
+        menu_item = gtk_ui_manager_get_widget (ui, "/MenuBar/ObjectsMenu/ObjectsMergeProperties");
+        g_object_set (menu_item, "always-show-image", FALSE, NULL); /* Leave this one out. */
+
+        menu_item = gtk_ui_manager_get_widget (ui, "/ContextMenu/ObjectsOrderMenu/");
+        menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
+        descend_menu_set_always_show_image (GTK_MENU (menu));
+
+        menu_item = gtk_ui_manager_get_widget (ui, "/ContextMenu/ObjectsRotateFlipMenu/");
+        menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
+        descend_menu_set_always_show_image (GTK_MENU (menu));
+
+        menu_item = gtk_ui_manager_get_widget (ui, "/ContextMenu/ObjectsAlignHorizMenu/");
+        menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
+        descend_menu_set_always_show_image (GTK_MENU (menu));
+
+        menu_item = gtk_ui_manager_get_widget (ui, "/ContextMenu/ObjectsAlignVertMenu/");
+        menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
+        descend_menu_set_always_show_image (GTK_MENU (menu));
+}
+
+
 /*---------------------------------------------------------------------------*/
 /** PRIVATE.  Connect proxy callback.                                        */
 /*---------------------------------------------------------------------------*/