summaryrefslogtreecommitdiff
path: root/src/tabwin.c
diff options
context:
space:
mode:
authorSimon Steinbeiss <simon.steinbeiss@elfenbeinturm.at>2020-01-15 23:21:48 +0100
committerOlivier Fourdan <fourdan@xfce.org>2020-04-08 09:15:25 +0200
commitf41e57e1b4086bb1f586c0ee79e3856f092a128b (patch)
treeebd34225ced44453bbb62d14831ee63b45718f86 /src/tabwin.c
parentaf7db8ee2dc75c77dbd1011bdf8b970c452eca8d (diff)
downloadxfwm4-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.c13
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;
}