diff options
author | Ken VanDine <ken.vandine@canonical.com> | 2010-12-09 17:57:06 -0500 |
---|---|---|
committer | Ken VanDine <ken.vandine@canonical.com> | 2010-12-09 17:57:06 -0500 |
commit | c8c96a2079bddcd9db51d3f8cd733a6198bb6c85 (patch) | |
tree | 99d9294215ccfc55f702058fe08cf49efc65a0a5 | |
parent | 107da7d1c1b15189576df0d5ff0c37c9690e9676 (diff) | |
parent | 1574d58e111bd80cbeb770ab3f603dca88a90341 (diff) | |
download | libdbusmenu-c8c96a2079bddcd9db51d3f8cd733a6198bb6c85.tar.gz libdbusmenu-c8c96a2079bddcd9db51d3f8cd733a6198bb6c85.tar.bz2 libdbusmenu-c8c96a2079bddcd9db51d3f8cd733a6198bb6c85.zip |
releasing version 0.3.90-0ubuntu2
-rw-r--r-- | debian/changelog | 8 | ||||
-rw-r--r-- | libdbusmenu-gtk/genericmenuitem.c | 24 |
2 files changed, 18 insertions, 14 deletions
diff --git a/debian/changelog b/debian/changelog index efc5d8d..ee204ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +libdbusmenu (0.3.90-0ubuntu2) natty; urgency=low + + * libdbusmenu-gtk/genericmenuitem.c + - Switching away from using set_activate as that doesn't actually set + the value, it just signals + + -- Ken VanDine <ken.vandine@canonical.com> Thu, 09 Dec 2010 17:46:41 -0500 + libdbusmenu (0.3.90-0ubuntu1) natty; urgency=low * debian/rules diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c index d507487..d3023ad 100644 --- a/libdbusmenu-gtk/genericmenuitem.c +++ b/libdbusmenu-gtk/genericmenuitem.c @@ -65,6 +65,7 @@ static void (*parent_draw_indicator) (GtkCheckMenuItem *check_menu_item, cairo_t static void draw_indicator (GtkCheckMenuItem *check_menu_item, GdkRectangle *area); static void (*parent_draw_indicator) (GtkCheckMenuItem *check_menu_item, GdkRectangle *area) = NULL; #endif +static void (*parent_menuitem_activate) (GtkMenuItem * mi) = NULL; /* Initializing all of the classes. Most notably we're disabling the drawing of the check early. */ @@ -86,6 +87,7 @@ genericmenuitem_class_init (GenericmenuitemClass *klass) GtkMenuItemClass * menuitem_class = GTK_MENU_ITEM_CLASS (klass); menuitem_class->set_label = set_label; menuitem_class->get_label = get_label; + parent_menuitem_activate = menuitem_class->activate; menuitem_class->activate = activate; return; @@ -338,21 +340,19 @@ genericmenuitem_set_state (Genericmenuitem * item, GenericmenuitemState state) item->priv->state = state; GtkCheckMenuItem * check = GTK_CHECK_MENU_ITEM(item); - - gboolean old_active = gtk_check_menu_item_get_active (check); - gboolean old_inconsist = gtk_check_menu_item_get_inconsistent (check); + gboolean goal_active = FALSE; switch (item->priv->state) { case GENERICMENUITEM_STATE_UNCHECKED: - gtk_check_menu_item_set_active (check, FALSE); + goal_active = FALSE; gtk_check_menu_item_set_inconsistent (check, FALSE); break; case GENERICMENUITEM_STATE_CHECKED: - gtk_check_menu_item_set_active (check, TRUE); + goal_active = TRUE; gtk_check_menu_item_set_inconsistent (check, FALSE); break; case GENERICMENUITEM_STATE_INDETERMINATE: - gtk_check_menu_item_set_active (check, TRUE); + goal_active = TRUE; gtk_check_menu_item_set_inconsistent (check, TRUE); break; default: @@ -360,16 +360,12 @@ genericmenuitem_set_state (Genericmenuitem * item, GenericmenuitemState state) return; } - if (old_active != gtk_check_menu_item_get_active (check)) { - g_object_notify(G_OBJECT(item), "active"); - } - - if (old_inconsist != gtk_check_menu_item_get_inconsistent (check)) { - g_object_notify(G_OBJECT(item), "inconsistent"); + if (goal_active != gtk_check_menu_item_get_active(check)) { + if (parent_menuitem_activate != NULL) { + parent_menuitem_activate(GTK_MENU_ITEM(check)); + } } - gtk_widget_queue_draw(GTK_WIDGET(item)); - return; } |