From e3effc8df235e2cfc7cd92797c0a4feeceeac16c Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 5 Nov 2017 04:56:08 +0100 Subject: [PATCH] expander: Don't do :hover yourself GTK does it for you. --- gtk/gtkexpander.c | 98 ++--------------------------------------------- 1 file changed, 4 insertions(+), 94 deletions(-) diff --git a/gtk/gtkexpander.c b/gtk/gtkexpander.c index 55ff54934a..19f0f96582 100644 --- a/gtk/gtkexpander.c +++ b/gtk/gtkexpander.c @@ -154,7 +154,6 @@ struct _GtkExpanderPrivate guint expanded : 1; guint use_underline : 1; guint use_markup : 1; - guint prelight : 1; guint label_fill : 1; guint resize_toplevel : 1; guint pressed_in_title : 1; @@ -174,10 +173,6 @@ static void gtk_expander_size_allocate (GtkWidget *widget, const GtkAllocation *allocation, int baseline, GtkAllocation *out_clip); -static gboolean gtk_expander_enter_notify (GtkWidget *widget, - GdkEventCrossing *event); -static gboolean gtk_expander_leave_notify (GtkWidget *widget, - GdkEventCrossing *event); static gboolean gtk_expander_focus (GtkWidget *widget, GtkDirectionType direction); static gboolean gtk_expander_drag_motion (GtkWidget *widget, @@ -213,8 +208,6 @@ static void gtk_expander_measure (GtkWidget *widget, int *natural, int *minimum_baseline, int *natural_baseline); -static void gtk_expander_state_flags_changed (GtkWidget *widget, - GtkStateFlags previous_state); /* Gestures */ static void gesture_multipress_pressed_cb (GtkGestureMultiPress *gesture, @@ -263,13 +256,10 @@ gtk_expander_class_init (GtkExpanderClass *klass) widget_class->destroy = gtk_expander_destroy; widget_class->size_allocate = gtk_expander_size_allocate; - widget_class->enter_notify_event = gtk_expander_enter_notify; - widget_class->leave_notify_event = gtk_expander_leave_notify; widget_class->focus = gtk_expander_focus; widget_class->drag_motion = gtk_expander_drag_motion; widget_class->drag_leave = gtk_expander_drag_leave; widget_class->measure = gtk_expander_measure; - widget_class->state_flags_changed = gtk_expander_state_flags_changed; container_class->add = gtk_expander_add; container_class->remove = gtk_expander_remove; @@ -370,7 +360,6 @@ gtk_expander_init (GtkExpander *expander) priv->expanded = FALSE; priv->use_underline = FALSE; priv->use_markup = FALSE; - priv->prelight = FALSE; priv->label_fill = FALSE; priv->expand_timer = 0; priv->resize_toplevel = 0; @@ -567,85 +556,6 @@ gesture_multipress_released_cb (GtkGestureMultiPress *gesture, gtk_widget_activate (GTK_WIDGET (expander)); } -static void -update_node_state (GtkExpander *expander) -{ - GtkExpanderPrivate *priv = expander->priv; - GtkStateFlags state; - - state = gtk_widget_get_state_flags (GTK_WIDGET (expander)); - - if (priv->prelight) - state |= GTK_STATE_FLAG_PRELIGHT; - else - state &= ~GTK_STATE_FLAG_PRELIGHT; - - gtk_widget_set_state_flags (priv->title_widget, state, TRUE); - - if (priv->expanded) - state |= GTK_STATE_FLAG_CHECKED; - else - state &= ~GTK_STATE_FLAG_CHECKED; - - gtk_widget_set_state_flags (priv->arrow_widget, state, TRUE); -} - -static void -gtk_expander_state_flags_changed (GtkWidget *widget, - GtkStateFlags previous_state) -{ - update_node_state (GTK_EXPANDER (widget)); - - GTK_WIDGET_CLASS (gtk_expander_parent_class)->state_flags_changed (widget, previous_state); -} - -static gboolean -gtk_expander_enter_notify (GtkWidget *widget, - GdkEventCrossing *event) -{ - GtkExpander *expander = GTK_EXPANDER (widget); - GdkNotifyType detail; - - gdk_event_get_crossing_detail ((GdkEvent *)event, &detail); - - if (detail != GDK_NOTIFY_INFERIOR) - { - expander->priv->prelight = TRUE; - - update_node_state (expander); - - if (expander->priv->label_widget) - gtk_widget_set_state_flags (expander->priv->label_widget, - GTK_STATE_FLAG_PRELIGHT, - FALSE); - } - - return FALSE; -} - -static gboolean -gtk_expander_leave_notify (GtkWidget *widget, - GdkEventCrossing *event) -{ - GtkExpander *expander = GTK_EXPANDER (widget); - GdkNotifyType detail; - - gdk_event_get_crossing_detail ((GdkEvent *)event, &detail); - - if (detail != GDK_NOTIFY_INFERIOR) - { - expander->priv->prelight = FALSE; - - update_node_state (expander); - - if (expander->priv->label_widget) - gtk_widget_unset_state_flags (expander->priv->label_widget, - GTK_STATE_FLAG_PRELIGHT); - } - - return FALSE; -} - static gboolean expand_timeout (gpointer data) { @@ -1038,7 +948,10 @@ gtk_expander_set_expanded (GtkExpander *expander, priv->expanded = expanded; - update_node_state (expander); + if (priv->expanded) + gtk_widget_set_state_flags (priv->arrow_widget, GTK_STATE_FLAG_CHECKED, FALSE); + else + gtk_widget_unset_state_flags (priv->arrow_widget, GTK_STATE_FLAG_CHECKED); child = priv->child; @@ -1298,9 +1211,6 @@ gtk_expander_set_label_widget (GtkExpander *expander, { priv->label_widget = label_widget; - if (priv->prelight) - gtk_widget_set_state_flags (label_widget, GTK_STATE_FLAG_PRELIGHT, FALSE); - gtk_container_add (GTK_CONTAINER (priv->title_widget), label_widget); } -- 2.30.2