]> Pileus Git - ~andy/gtk/commitdiff
Make it possible to overrule the gtk-menu-images setting.
authorMatthias Clasen <mclasen@redhat.com>
Sun, 2 Nov 2008 05:01:23 +0000 (05:01 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 2 Nov 2008 05:01:23 +0000 (05:01 +0000)
2008-11-02  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkimagemenuitem.c: Make it possible to overrule the
        gtk-menu-images setting.

        * gtk/gtkaction.c (connect_proxy): Show the image before adding
it to the image menu item.

svn path=/trunk/; revision=21751

ChangeLog
gtk/gtkaction.c
gtk/gtkimagemenuitem.c

index d4a1650a710fd17df53cb4ba6092df3579955a59..09085d50dcb980704483a72f55727f574bf1a08c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-11-02  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkimagemenuitem.c: Make it possible to overrule the
+       gtk-menu-images setting.
+
+       * gtk/gtkaction.c (connect_proxy): Show the image before adding
+       it to the image menu item.
+
 2008-11-01  Tor Lillqvist  <tml@novell.com>
 
        Bug 558278 - Crash when calling a callback set by
index 1f7a2feef024c5de1a88a63068823a2fca345ecf..7907606d934cfaae9b024f20515ceed91771be84 100644 (file)
@@ -749,9 +749,9 @@ connect_proxy (GtkAction     *action,
          if (!image)
            {
              image = gtk_image_new ();
+             gtk_widget_show (image);
              gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (proxy),
                                             image);
-             gtk_widget_show (image);
            }
          
          if (action->private_data->stock_id &&
index 6d97a286096f10e0819acf9e5eda71e22e595972..661760157b47e692343a8b5a17544025d818f971 100644 (file)
@@ -42,6 +42,7 @@ static void gtk_image_menu_item_size_request         (GtkWidget        *widget,
                                                       GtkRequisition   *requisition);
 static void gtk_image_menu_item_size_allocate        (GtkWidget        *widget,
                                                       GtkAllocation    *allocation);
+static void gtk_image_menu_item_map                  (GtkWidget        *widget);
 static void gtk_image_menu_item_remove               (GtkContainer          *container,
                                                       GtkWidget             *child);
 static void gtk_image_menu_item_toggle_size_request  (GtkMenuItem           *menu_item,
@@ -85,6 +86,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass)
   widget_class->screen_changed = gtk_image_menu_item_screen_changed;
   widget_class->size_request = gtk_image_menu_item_size_request;
   widget_class->size_allocate = gtk_image_menu_item_size_allocate;
+  widget_class->map = gtk_image_menu_item_map;
 
   container_class->forall = gtk_image_menu_item_forall;
   container_class->remove = gtk_image_menu_item_remove;
@@ -171,6 +173,19 @@ show_image (GtkImageMenuItem *image_menu_item)
   return show;
 }
 
+static void
+gtk_image_menu_item_map (GtkWidget *widget)
+{
+  GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (widget);
+
+  GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->map (widget);
+
+  if (image_menu_item->image)
+    g_object_set (image_menu_item->image,
+                  "visible", show_image (image_menu_item),
+                  NULL);
+}
+
 static void
 gtk_image_menu_item_destroy (GtkObject *object)
 {
@@ -197,7 +212,7 @@ gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item,
 
   *requisition = 0;
 
-  if (image_menu_item->image && show_image (image_menu_item))
+  if (image_menu_item->image && GTK_WIDGET_VISIBLE (image_menu_item->image))
     {
       GtkRequisition image_requisition;
       guint toggle_spacing;
@@ -237,10 +252,8 @@ gtk_image_menu_item_size_request (GtkWidget      *widget,
     pack_dir = GTK_PACK_DIRECTION_LTR;
 
   image_menu_item = GTK_IMAGE_MENU_ITEM (widget);
-  
-  if (image_menu_item->image && 
-      GTK_WIDGET_VISIBLE (image_menu_item->image) && 
-      show_image (image_menu_item))
+
+  if (image_menu_item->image && GTK_WIDGET_VISIBLE (image_menu_item->image))
     {
       GtkRequisition child_requisition;
       
@@ -284,7 +297,7 @@ gtk_image_menu_item_size_allocate (GtkWidget     *widget,
 
   GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->size_allocate (widget, allocation);
 
-  if (image_menu_item->image && show_image (image_menu_item))
+  if (image_menu_item->image && GTK_WIDGET_VISIBLE (image_menu_item->image))
     {
       gint x, y, offset;
       GtkRequisition child_requisition;
@@ -486,7 +499,6 @@ gtk_image_menu_item_new_from_stock (const gchar      *stock_id,
       gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
     }
 
-  gtk_widget_show (image);
   return item;
 }
 
@@ -518,7 +530,7 @@ gtk_image_menu_item_set_image (GtkImageMenuItem *image_menu_item,
     return;
 
   gtk_widget_set_parent (image, GTK_WIDGET (image_menu_item));
-  g_object_set (image, 
+  g_object_set (image,
                "visible", show_image (image_menu_item),
                "no-show-all", TRUE,
                NULL);