[Xfce4-commits] <xfwm4:ochosi/tabwin> Change tabwin focused buttons state from GTK_STATE_NORMAL to GTK_STATE_SELECTED

Simon Steinbeiss noreply at xfce.org
Tue Dec 10 01:00:01 CET 2013


Updating branch refs/heads/ochosi/tabwin
         to 69af4410a6a07f5237ef7af8b1f6fb5d144a8a51 (commit)
       from 847306de342e94866670663795722760124aad26 (commit)

commit 69af4410a6a07f5237ef7af8b1f6fb5d144a8a51
Author: Cédric Leporcq <cedl38 at gmail.com>
Date:   Thu Dec 5 00:42:03 2013 +0100

    Change tabwin focused buttons state from GTK_STATE_NORMAL to GTK_STATE_SELECTED
    
    Signed-off-by: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>

 src/tabwin.c |   33 +++++++++++++++++++++++++++++----
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/src/tabwin.c b/src/tabwin.c
index 08d2f05..4572f06 100644
--- a/src/tabwin.c
+++ b/src/tabwin.c
@@ -175,11 +175,22 @@ tabwin_expose (GtkWidget *tbw, GdkEventExpose *event, gpointer data)
 }
 
 static gboolean
-paint_selected (GtkWidget *w, GdkEventExpose *event, gpointer data)
+paint_selected (GtkWidget *w, GdkEventExpose *event, gpointer user_data)
 {
+    TabwinWidget *tbw = user_data;
+
     g_return_val_if_fail (GTK_IS_WIDGET(w), FALSE);
     TRACE ("entering paint_selected");
 
+    if (w == tbw->tabwin->hovered)
+    {
+        gtk_widget_set_state (w, GTK_STATE_ACTIVE);
+    }
+    else
+    {
+        gtk_widget_set_state (w, GTK_STATE_SELECTED);
+    }
+
     gtk_button_set_relief (GTK_BUTTON (w), GTK_RELIEF_NORMAL);
 
     return FALSE;
@@ -254,7 +265,7 @@ tabwinSetSelected (TabwinWidget *tbw, GtkWidget *w, GtkWidget *l)
     tbw->selected_callback = g_signal_connect (G_OBJECT (tbw->selected),
                                                "expose-event",
                                                G_CALLBACK (paint_selected),
-                                               NULL);
+                                               tbw);
 
     c = g_object_get_data (G_OBJECT (tbw->selected), "client-ptr-val");
 
@@ -358,6 +369,11 @@ cb_window_button_enter (GtkWidget *widget, GdkEvent *event, gpointer user_data)
      * select it */
     if (c != NULL)
     {
+        if (gtk_widget_is_focus (widget))
+        {
+            gtk_widget_set_state (widget, GTK_STATE_ACTIVE);
+        }
+
         /* we don't update the labels on mouse over for this mode */
         if (c->screen_info->params->cycle_tabwin_mode == OVERFLOW_COLUMN_GRID)
         {
@@ -385,14 +401,15 @@ cb_window_button_leave (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 
     g_return_val_if_fail (tbw != NULL, FALSE);
 
+    tbw->tabwin->hovered = NULL;
+
     /* don't do anything if we have the focus */
     if (gtk_widget_is_focus (widget))
     {
+        gtk_widget_set_state (widget, GTK_STATE_SELECTED);
         return FALSE;
     }
 
-    tbw->tabwin->hovered = NULL;
-
     c = g_object_get_data (G_OBJECT (widget), "client-ptr-val");
 
     /* when hovering over a window icon, display it's label but don't
@@ -708,6 +725,14 @@ tabwinChange2Selected (Tabwin *t, GList *selected)
                     tabwinSetSelected (tbw, window_button, buttonlabel);
                     gtk_widget_queue_draw (GTK_WIDGET(tbw));
                 }
+                else if (window_button == t->hovered)
+                {
+                    gtk_widget_set_state (window_button, GTK_STATE_PRELIGHT);
+                }
+                else
+                {
+                    gtk_widget_set_state (window_button, GTK_STATE_NORMAL);
+                }
             }
         }
     }


More information about the Xfce4-commits mailing list