diff --git a/libxfce4panel/xfce-arrow-button.c b/libxfce4panel/xfce-arrow-button.c index 36d8b293..f09013dd 100644 --- a/libxfce4panel/xfce-arrow-button.c +++ b/libxfce4panel/xfce-arrow-button.c @@ -474,16 +474,16 @@ xfce_arrow_button_blinking_timeout (gpointer user_data) { XfceArrowButton *button = XFCE_ARROW_BUTTON (user_data); - GtkStateFlags flags = gtk_widget_get_state_flags (GTK_WIDGET (button)); + GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (button)); - if ((flags & GTK_STATE_FLAG_ACTIVE) == GTK_STATE_FLAG_ACTIVE + if (gtk_style_context_has_class (context, GTK_STYLE_CLASS_SUGGESTED_ACTION) || button->priv->blinking_timeout_id == 0) { - gtk_widget_unset_state_flags (GTK_WIDGET (button), GTK_STATE_FLAG_ACTIVE); + gtk_style_context_remove_class (context, GTK_STYLE_CLASS_SUGGESTED_ACTION); } else { - gtk_widget_set_state_flags (GTK_WIDGET (button), GTK_STATE_FLAG_ACTIVE, FALSE); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_SUGGESTED_ACTION); } return (button->priv->blinking_counter++ < MAX_BLINKING_COUNT); @@ -496,7 +496,12 @@ xfce_arrow_button_blinking_timeout_destroyed (gpointer user_data) { XfceArrowButton *button = XFCE_ARROW_BUTTON (user_data); - gtk_widget_unset_state_flags (GTK_WIDGET (button), GTK_STATE_FLAG_ACTIVE); + GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (button)); + + if (gtk_style_context_has_class (context, GTK_STYLE_CLASS_SUGGESTED_ACTION)) + { + gtk_style_context_remove_class (context, GTK_STYLE_CLASS_SUGGESTED_ACTION); + } button->priv->blinking_timeout_id = 0; button->priv->blinking_counter = 0;