[gnome-builder] layout-tab: add prelight state



commit 3e4e8eeb751bc648cad5d45a57cd3e3c34e10ca0
Author: Christian Hergert <chergert redhat com>
Date:   Wed Dec 9 14:06:55 2015 -0800

    layout-tab: add prelight state

 data/theme/Adwaita.css  |   10 ++++++++++
 libide/ide-layout-tab.c |   28 ++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/data/theme/Adwaita.css b/data/theme/Adwaita.css
index 2186f03..704b5e2 100644
--- a/data/theme/Adwaita.css
+++ b/data/theme/Adwaita.css
@@ -109,6 +109,8 @@ layouttab {
   border-radius: 0 0 3px 3px;
   border-bottom: 1px solid @borders;
   color: #c8c8c8;
+  transition-duration: 300ms;
+  transition-timing-function: ease;
 }
 
 layoutstack.focused layouttab {
@@ -119,6 +121,14 @@ layoutstack.focused layouttab {
   box-shadow: 0px 5px 5px -10px #2e3436 inset;
 }
 
+layoutstack:not(.focused) layouttab:hover {
+  background-color: transparent;
+  border-bottom: 3px solid #888a85;
+  border-left: 1px solid #c0c0c0;
+  border-right: 1px solid #c0c0c0;
+  box-shadow: 0px 5px 5px -10px #2e3436 inset;
+}
+
 layouttab button {
   background-image: none;
   background-color: transparent;
diff --git a/libide/ide-layout-tab.c b/libide/ide-layout-tab.c
index 45c91b6..47ca28a 100644
--- a/libide/ide-layout-tab.c
+++ b/libide/ide-layout-tab.c
@@ -146,6 +146,30 @@ ide_layout_tab_set_view (IdeLayoutTab *self,
     }
 }
 
+static gboolean
+ide_layout_tab_enter_notify_event (GtkWidget        *widget,
+                                   GdkEventCrossing *crossing)
+{
+  g_assert (GTK_IS_WIDGET (widget));
+  g_assert (crossing != NULL);
+
+  gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_PRELIGHT, FALSE);
+
+  return GDK_EVENT_PROPAGATE;
+}
+
+static gboolean
+ide_layout_tab_leave_notify_event (GtkWidget        *widget,
+                                   GdkEventCrossing *crossing)
+{
+  g_assert (GTK_IS_WIDGET (widget));
+  g_assert (crossing != NULL);
+
+  gtk_widget_unset_state_flags (widget, GTK_STATE_FLAG_PRELIGHT);
+
+  return GDK_EVENT_PROPAGATE;
+}
+
 static void
 ide_layout_tab_destroy (GtkWidget *widget)
 {
@@ -208,6 +232,8 @@ ide_layout_tab_class_init (IdeLayoutTabClass *klass)
   object_class->set_property = ide_layout_tab_set_property;
 
   widget_class->destroy = ide_layout_tab_destroy;
+  widget_class->enter_notify_event = ide_layout_tab_enter_notify_event;
+  widget_class->leave_notify_event = ide_layout_tab_leave_notify_event;
 
   properties [PROP_VIEW] =
     g_param_spec_object ("view",
@@ -237,6 +263,8 @@ ide_layout_tab_init (IdeLayoutTab *self)
 
   gtk_widget_init_template (GTK_WIDGET (self));
 
+  gtk_widget_add_events (GTK_WIDGET (self), GDK_ENTER_NOTIFY | GDK_LEAVE_NOTIFY);
+
   menu = ide_application_get_menu_by_id (IDE_APPLICATION_DEFAULT, "ide-layout-stack-menu");
   popover = gtk_popover_new_from_model (self->title_menu_button, G_MENU_MODEL (menu));
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (self->title_menu_button), popover);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]