]> Pileus Git - ~andy/gtk/commitdiff
More action-related fixes
authorMatthias Clasen <matthiasc@src.gnome.org>
Mon, 26 Jan 2009 03:01:01 +0000 (03:01 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 26 Jan 2009 03:01:01 +0000 (03:01 +0000)
svn path=/trunk/; revision=22218

ChangeLog
gtk/gtkrecentchoosermenu.c
gtk/gtktoggletoolbutton.c
gtk/gtktoolbutton.c
gtk/gtktoolitem.c
gtk/gtktoolitem.h

index 6e69a3ff5fd556a3dda8bfb845d541b54a17fcf2..e2050e6e94d8ae9c12b02b6d46966e8c2b494cda 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2009-01-25  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtktoolitem.[hc]: Export the function to create a proxy
+       menuitem from the action for use in subclasses.
+
+       * gtk/gtktoolbutton.c:
+       * gtk/gtktoggletoolbutton.c: Use it here.
+
+       * gtk/gtkrecentchoosermenu.c: Avoid temporary empty state that
+       can lead to a recent action proxy menu being erroneously hidden.
+
 2009-01-25  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkradioaction.c: Set draw-as-radio to TRUE.
index bc02aa6dfde04b35c398a93bb9efa8784a340da6..e658eef067fb543ffa66d005f63b9ce8eb72bdad 100644 (file)
@@ -970,6 +970,8 @@ idle_populate_func (gpointer data)
 
          return FALSE;
        }
+      else
+        gtk_widget_hide (pdata->placeholder);
       
       pdata->n_items = g_list_length (pdata->items);
       pdata->loaded_items = 0;
@@ -1056,9 +1058,8 @@ gtk_recent_chooser_menu_populate (GtkRecentChooserMenu *menu)
 
   priv->icon_size = get_icon_size_for_widget (GTK_WIDGET (menu));
   
-  /* remove our menu items first and hide the placeholder */
+  /* remove our menu items first */
   gtk_recent_chooser_menu_dispose_items (menu);
-  gtk_widget_hide (priv->placeholder);
   
   priv->populate_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,
                                                 idle_populate_func,
index c527c136b28b69a5799475a9b406d0e49ad988db..062a2d0820a07781fb5de8c92d344b8bf65bfd50 100644 (file)
@@ -201,10 +201,16 @@ gtk_toggle_tool_button_create_menu_proxy (GtkToolItem *item)
   GtkStockItem stock_item;
   gboolean use_mnemonic = TRUE;
   const char *label;
+  GtkWidget *label_widget;
+  const gchar *label_text;
+  const gchar *stock_id;
 
-  GtkWidget *label_widget = gtk_tool_button_get_label_widget (tool_button);
-  const gchar *label_text = gtk_tool_button_get_label (tool_button);
-  const gchar *stock_id = gtk_tool_button_get_stock_id (tool_button);
+  if (_gtk_tool_item_create_menu_proxy (item))
+    return TRUE;
+
+  label_widget = gtk_tool_button_get_label_widget (tool_button);
+  label_text = gtk_tool_button_get_label (tool_button);
+  stock_id = gtk_tool_button_get_stock_id (tool_button);
 
   if (GTK_IS_LABEL (label_widget))
     {
index 6c00662b45c2fcda7615a0f652a3db28a8203d2d..c99169a22ed30c31a7f8903f72772ec09c49cef0 100644 (file)
@@ -642,6 +642,9 @@ gtk_tool_button_create_menu_proxy (GtkToolItem *item)
   gboolean use_mnemonic = TRUE;
   const char *label;
 
+  if (_gtk_tool_item_create_menu_proxy (item))
+    return TRUE;
   if (GTK_IS_LABEL (button->priv->label_widget))
     {
       label = gtk_label_get_label (GTK_LABEL (button->priv->label_widget));
index 54b60e792f9e5dcd0ce4aaacfff1ee8cae4e1311..6360c444a498c8ad6696d744c23582e4147b4264 100644 (file)
@@ -127,8 +127,6 @@ static gboolean gtk_tool_item_real_set_tooltip (GtkToolItem *tool_item,
                                                const gchar *tip_text,
                                                const gchar *tip_private);
 
-static gboolean gtk_tool_item_create_menu_proxy (GtkToolItem *item);
-
 static void gtk_tool_item_activatable_interface_init (GtkActivatableIface  *iface);
 static void gtk_tool_item_activatable_update         (GtkActivatable       *activatable,
                                                      GtkAction            *action,
@@ -169,7 +167,7 @@ gtk_tool_item_class_init (GtkToolItemClass *klass)
   widget_class->size_allocate = gtk_tool_item_size_allocate;
   widget_class->parent_set    = gtk_tool_item_parent_set;
 
-  klass->create_menu_proxy = gtk_tool_item_create_menu_proxy;
+  klass->create_menu_proxy = _gtk_tool_item_create_menu_proxy;
   klass->set_tooltip       = gtk_tool_item_real_set_tooltip;
   
   g_object_class_install_property (object_class,
@@ -554,8 +552,8 @@ gtk_tool_item_size_allocate (GtkWidget     *widget,
     }
 }
 
-static gboolean
-gtk_tool_item_create_menu_proxy (GtkToolItem *item)
+gboolean
+_gtk_tool_item_create_menu_proxy (GtkToolItem *item)
 {
   GtkWidget *menu_item;
   gboolean visible_overflown;
@@ -574,6 +572,8 @@ gtk_tool_item_create_menu_proxy (GtkToolItem *item)
        }
       else
        gtk_tool_item_set_proxy_menu_item (item, "gtk-action-menu-item", NULL);
+
+      return TRUE;
     }
 
   return FALSE;
index 5432a2b6c6f4c2e7eff1ef4ee769cbe67168651a..a81b06bb80a09ae334194b657da28e01ad506ad4 100644 (file)
@@ -128,6 +128,10 @@ void               gtk_tool_item_rebuild_menu             (GtkToolItem *tool_item);
 
 void            gtk_tool_item_toolbar_reconfigured     (GtkToolItem *tool_item);
 
+/* private */
+
+gboolean       _gtk_tool_item_create_menu_proxy        (GtkToolItem *tool_item);
+
 G_END_DECLS
 
 #endif /* __GTK_TOOL_ITEM_H__ */