[gnome-builder] layout-tab: add prelight state
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] layout-tab: add prelight state
- Date: Mon, 21 Dec 2015 08:03:33 +0000 (UTC)
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]