aboutsummaryrefslogtreecommitdiff
path: root/src/idoscalemenuitem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/idoscalemenuitem.c')
-rw-r--r--src/idoscalemenuitem.c73
1 files changed, 27 insertions, 46 deletions
diff --git a/src/idoscalemenuitem.c b/src/idoscalemenuitem.c
index dff4cb0..51e41b3 100644
--- a/src/idoscalemenuitem.c
+++ b/src/idoscalemenuitem.c
@@ -40,13 +40,11 @@ static void ido_scale_menu_item_get_property (GObject
guint prop_id,
GValue *value,
GParamSpec *pspec);
-static gboolean ido_scale_menu_item_parent_key_press_event (GtkWidget *widget,
- GdkEventKey *event,
- gpointer user_data);
-static void ido_scale_menu_item_select (GtkMenuItem *item);
-static void ido_scale_menu_item_deselect (GtkMenuItem *item);
-static void ido_scale_menu_item_parent_set (GtkWidget *widget,
- GtkWidget *old_parent);
+static gboolean ido_scale_menu_item_parent_key_press_event (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer user_data);
+static void ido_scale_menu_item_select (GtkMenuItem *item);
+static void ido_scale_menu_item_deselect (GtkMenuItem *item);
static gboolean ido_scale_menu_item_button_press_event (GtkWidget *menuitem,
GdkEventButton *event);
static gboolean ido_scale_menu_item_button_release_event (GtkWidget *menuitem,
@@ -59,9 +57,8 @@ static void ido_scale_menu_item_primary_image_notify (GtkImage
static void ido_scale_menu_item_secondary_image_notify (GtkImage *image,
GParamSpec *pspec,
IdoScaleMenuItem *item);
-static void ido_scale_menu_item_notify (IdoScaleMenuItem *item,
- GParamSpec *pspec,
- gpointer user_data);
+static void ido_scale_menu_item_parent_set (GtkWidget *item,
+ GtkWidget *previous_parent);
static void update_packing (IdoScaleMenuItem *self,
IdoScaleMenuItemStyle style);
static void default_primary_clicked_handler (IdoScaleMenuItem *self);
@@ -273,10 +270,6 @@ ido_scale_menu_item_constructed (GObject *object)
G_CALLBACK (ido_scale_menu_item_toggle_size_allocate),
NULL);
- g_signal_connect (self, "notify",
- G_CALLBACK (ido_scale_menu_item_notify),
- NULL);
-
gtk_container_add (GTK_CONTAINER (self), hbox);
gtk_widget_add_events (GTK_WIDGET(self), GDK_SCROLL_MASK);
@@ -295,12 +288,12 @@ ido_scale_menu_item_class_init (IdoScaleMenuItemClass *item_class)
menuitem_class->select = ido_scale_menu_item_select;
menuitem_class->deselect = ido_scale_menu_item_deselect;
- widget_class->parent_set = ido_scale_menu_item_parent_set;
widget_class->button_press_event = ido_scale_menu_item_button_press_event;
widget_class->button_release_event = ido_scale_menu_item_button_release_event;
widget_class->motion_notify_event = ido_scale_menu_item_motion_notify_event;
widget_class->scroll_event = ido_scale_menu_item_scroll_event;
widget_class->size_allocate = ido_scale_menu_item_size_allocate;
+ widget_class->parent_set = ido_scale_menu_item_parent_set;
gobject_class->constructed = ido_scale_menu_item_constructed;
gobject_class->set_property = ido_scale_menu_item_set_property;
@@ -588,26 +581,6 @@ ido_scale_menu_item_deselect (GtkMenuItem *item)
GTK_MENU_ITEM_CLASS (ido_scale_menu_item_parent_class)->deselect (item);
}
-static void
-ido_scale_menu_item_parent_set (GtkWidget *widget,
- GtkWidget *old_parent)
-{
- GtkWidget *parent;
-
- /* Menus don't pass key events to their children. This works around
- * that by listening to key events on the parent widget. */
-
- if (old_parent)
- g_signal_handlers_disconnect_by_func (old_parent, ido_scale_menu_item_parent_key_press_event, widget);
-
- parent = gtk_widget_get_parent (widget);
- if (parent)
- {
- g_signal_connect (parent, "key-press-event",
- G_CALLBACK (ido_scale_menu_item_parent_key_press_event), widget);
- }
-}
-
static gboolean
ido_scale_menu_item_button_press_event (GtkWidget *menuitem,
GdkEventButton *event)
@@ -727,20 +700,28 @@ menu_hidden (GtkWidget *menu,
}
static void
-ido_scale_menu_item_notify (IdoScaleMenuItem *item,
- GParamSpec *pspec,
- gpointer user_data)
+ido_scale_menu_item_parent_set (GtkWidget *item,
+ GtkWidget *previous_parent)
+
{
- if (g_strcmp0 (pspec->name, "parent"))
+ GtkWidget *parent;
+
+ if (previous_parent)
{
- GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (item));
+ g_signal_handlers_disconnect_by_func (previous_parent, menu_hidden, item);
+ g_signal_handlers_disconnect_by_func (previous_parent, ido_scale_menu_item_parent_key_press_event, item);
+ }
- if (parent)
- {
- g_signal_connect (parent, "hide",
- G_CALLBACK (menu_hidden),
- item);
- }
+ parent = gtk_widget_get_parent (item);
+
+ if (parent)
+ {
+ g_signal_connect (parent, "hide", G_CALLBACK (menu_hidden), item);
+
+ /* Menus don't pass key events to their children. This works around
+ * that by listening to key events on the parent widget. */
+ g_signal_connect (parent, "key-press-event",
+ G_CALLBACK (ido_scale_menu_item_parent_key_press_event), item);
}
}