summaryrefslogtreecommitdiff
path: root/gtk/gtkmenutrackeritem.c
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2014-01-04 02:11:24 -0500
committerRyan Lortie <desrt@desrt.ca>2014-01-08 14:21:18 -0500
commit8efb1404cbdeedfaf894c219fcae9dbdd1986fa2 (patch)
tree096e446786c4f43b670eb5f8309f483fd574c84f /gtk/gtkmenutrackeritem.c
parent8256b88eb1201c2d75dba2a88f00b11c7d5b5fee (diff)
downloadgtk+-8efb1404cbdeedfaf894c219fcae9dbdd1986fa2.tar.gz
GtkMenuTracker: rework action removal a bit
Refactor the code in the action observer remove function in order to make way for the (efficient) handling of hiding of the item in the case that hidden-when='' is given. https://bugzilla.gnome.org/show_bug.cgi?id=688421
Diffstat (limited to 'gtk/gtkmenutrackeritem.c')
-rw-r--r--gtk/gtkmenutrackeritem.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/gtk/gtkmenutrackeritem.c b/gtk/gtkmenutrackeritem.c
index dc46be891d..d81c9de8e5 100644
--- a/gtk/gtkmenutrackeritem.c
+++ b/gtk/gtkmenutrackeritem.c
@@ -353,31 +353,31 @@ gtk_menu_tracker_item_action_removed (GtkActionObserver *observer,
const gchar *action_name)
{
GtkMenuTrackerItem *self = GTK_MENU_TRACKER_ITEM (observer);
+ gboolean was_sensitive, was_toggled;
+ GtkMenuTrackerItemRole old_role;
if (!self->can_activate)
return;
+ was_sensitive = self->sensitive;
+ was_toggled = self->toggled;
+ old_role = self->role;
+
self->can_activate = FALSE;
+ self->sensitive = FALSE;
+ self->toggled = FALSE;
+ self->role = GTK_MENU_TRACKER_ITEM_ROLE_NORMAL;
g_object_freeze_notify (G_OBJECT (self));
- if (self->sensitive)
- {
- self->sensitive = FALSE;
- g_object_notify_by_pspec (G_OBJECT (self), gtk_menu_tracker_item_pspecs[PROP_SENSITIVE]);
- }
+ if (was_sensitive)
+ g_object_notify_by_pspec (G_OBJECT (self), gtk_menu_tracker_item_pspecs[PROP_SENSITIVE]);
- if (self->toggled)
- {
- self->toggled = FALSE;
- g_object_notify_by_pspec (G_OBJECT (self), gtk_menu_tracker_item_pspecs[PROP_TOGGLED]);
- }
+ if (was_toggled)
+ g_object_notify_by_pspec (G_OBJECT (self), gtk_menu_tracker_item_pspecs[PROP_TOGGLED]);
- if (self->role != GTK_MENU_TRACKER_ITEM_ROLE_NORMAL)
- {
- self->role = GTK_MENU_TRACKER_ITEM_ROLE_NORMAL;
- g_object_notify_by_pspec (G_OBJECT (self), gtk_menu_tracker_item_pspecs[PROP_ROLE]);
- }
+ if (old_role != GTK_MENU_TRACKER_ITEM_ROLE_NORMAL)
+ g_object_notify_by_pspec (G_OBJECT (self), gtk_menu_tracker_item_pspecs[PROP_ROLE]);
g_object_thaw_notify (G_OBJECT (self));
}