diff options
author | Simon Steinbeiss <simon.steinbeiss@elfenbeinturm.at> | 2020-01-15 23:21:48 +0100 |
---|---|---|
committer | Olivier Fourdan <fourdan@xfce.org> | 2020-04-08 09:15:25 +0200 |
commit | f41e57e1b4086bb1f586c0ee79e3856f092a128b (patch) | |
tree | ebd34225ced44453bbb62d14831ee63b45718f86 /src/tabwin.c | |
parent | af7db8ee2dc75c77dbd1011bdf8b970c452eca8d (diff) | |
download | xfwm4-f41e57e1b4086bb1f586c0ee79e3856f092a128b.tar.gz |
tabwin: Ensure selected windows remain selected
Bug: #16382
After hovering the currently selected item the tabwin would be left
without a selected item. This patch makes sure that on the leave event
the selected item regains its selected style.
Also switch from GTK_STATE_FLAG_ACTIVE to GTK_STATE_FLAG_CHECKED.
Diffstat (limited to 'src/tabwin.c')
-rw-r--r-- | src/tabwin.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/tabwin.c b/src/tabwin.c index a12105cdd..b05972842 100644 --- a/src/tabwin.c +++ b/src/tabwin.c @@ -249,16 +249,16 @@ tabwinSetSelected (TabwinWidget *tabwin_widget, GtkWidget *w, GtkWidget *l) if (tabwin_widget->selected) { - gtk_widget_unset_state_flags (tabwin_widget->selected, GTK_STATE_FLAG_ACTIVE); + gtk_widget_unset_state_flags (tabwin_widget->selected, GTK_STATE_FLAG_CHECKED); } tabwin_widget->selected = w; - gtk_widget_set_state_flags (w, GTK_STATE_FLAG_ACTIVE, FALSE); + gtk_widget_set_state_flags (w, GTK_STATE_FLAG_CHECKED, FALSE); c = g_object_get_data (G_OBJECT (tabwin_widget->selected), "client-ptr-val"); if (c != NULL) { TRACE ("client \"%s\" (0x%lx)", c->name, c->window); - + /* We don't update labels here */ if (c->screen_info->params->cycle_tabwin_mode == OVERFLOW_COLUMN_GRID) { @@ -384,9 +384,13 @@ cb_window_button_enter (GtkWidget *widget, GdkEvent *event, gpointer user_data) g_return_val_if_fail (tabwin_widget != NULL, FALSE); - /* keep track of which widget we're hovered over */ + /* keep track of which widget we're hovering over */ tabwin_widget->hovered = widget; + /* make sure the hovered style is applied */ + if (tabwin_widget->hovered == tabwin_widget->selected) + gtk_widget_unset_state_flags (tabwin_widget->selected, GTK_STATE_FLAG_CHECKED); + c = g_object_get_data (G_OBJECT (widget), "client-ptr-val"); /* when hovering over a window icon, display it's label but don't @@ -430,6 +434,7 @@ cb_window_button_leave (GtkWidget *widget, GdkEvent *event, gpointer user_data) /* don't do anything if we have the focus */ if (gtk_widget_is_focus (widget)) { + gtk_widget_set_state_flags (tabwin_widget->selected, GTK_STATE_FLAG_CHECKED, FALSE); return FALSE; } |