[gedit/wip/3.14-osx: 35/69] [osx] Add inline stack switcher for side panel



commit e03dc7e95ad43f6125db0fc59391c0b63a23a74e
Author: Jesse van den Kieboom <jessevdk gmail com>
Date:   Sat Aug 23 17:14:42 2014 +0200

    [osx] Add inline stack switcher for side panel

 gedit/gedit-window-private.h            |    2 ++
 gedit/gedit-window.c                    |   16 ++++++++++++++++
 gedit/resources/css/gedit-style-osx.css |   10 ++++++++++
 gedit/resources/ui/gedit-window.ui      |   24 ++++++++++++++++++++++--
 4 files changed, 50 insertions(+), 2 deletions(-)
---
diff --git a/gedit/gedit-window-private.h b/gedit/gedit-window-private.h
index b567420..bf008f7 100644
--- a/gedit/gedit-window-private.h
+++ b/gedit/gedit-window-private.h
@@ -41,8 +41,10 @@ struct _GeditWindowPrivate
 
        GeditMultiNotebook *multi_notebook;
 
+       GtkWidget      *side_panel_box;
        GtkWidget      *side_panel;
        GtkWidget      *side_stack_switcher;
+       GtkWidget      *side_panel_inline_stack_switcher;
        GtkWidget      *bottom_panel_box;
        GtkWidget      *bottom_panel;
 
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 3f5a340..707c441 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -465,7 +465,9 @@ gedit_window_class_init (GeditWindowClass *klass)
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, open_button);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, gear_button);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, hpaned);
+       gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, side_panel_box);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, side_panel);
+       gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, 
side_panel_inline_stack_switcher);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, vpaned);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, multi_notebook);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, bottom_panel_box);
@@ -2364,7 +2366,10 @@ on_side_panel_stack_children_number_changed (GtkStack    *stack,
        if (children != NULL && children->next != NULL)
        {
                gtk_widget_show (priv->side_stack_switcher);
+
+#ifndef OS_OSX
                gtk_header_bar_set_custom_title (GTK_HEADER_BAR (priv->side_headerbar), 
priv->side_stack_switcher);
+#endif
        }
        else
        {
@@ -2382,12 +2387,23 @@ setup_side_panel (GeditWindow *window)
 
        gedit_debug (DEBUG_WINDOW);
 
+       g_object_bind_property (window->priv->side_panel,
+                               "visible",
+                               window->priv->side_panel_box,
+                               "visible",
+                               G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
+
        g_signal_connect_after (priv->side_panel,
                                "notify::visible",
                                G_CALLBACK (side_panel_visibility_changed),
                                window);
 
+#ifdef OS_OSX
+       priv->side_stack_switcher = priv->side_panel_inline_stack_switcher;
+#else
        priv->side_stack_switcher = gedit_menu_stack_switcher_new ();
+#endif
+
        gtk_button_set_relief (GTK_BUTTON (priv->side_stack_switcher), GTK_RELIEF_NONE);
        g_object_ref_sink (priv->side_stack_switcher);
 
diff --git a/gedit/resources/css/gedit-style-osx.css b/gedit/resources/css/gedit-style-osx.css
index ec73cd1..6286a2a 100644
--- a/gedit/resources/css/gedit-style-osx.css
+++ b/gedit/resources/css/gedit-style-osx.css
@@ -130,3 +130,13 @@ GtkEntry
 {
        font-family: "Helvetica";
 }
+
+GeditMenuStackSwitcher.gedit-side-panel-stack-switcher
+{
+  -GtkButton-default-border: 0;
+  -GtkButton-default-outside-border: 0;
+  -GtkButton-inner-border: 0;
+  -GtkWidget-focus-line-width: 0;
+  -GtkWidget-focus-padding: 0;
+  padding: 1px 8px 2px 4px;
+}
diff --git a/gedit/resources/ui/gedit-window.ui b/gedit/resources/ui/gedit-window.ui
index e61d557..62a518a 100644
--- a/gedit/resources/ui/gedit-window.ui
+++ b/gedit/resources/ui/gedit-window.ui
@@ -152,8 +152,28 @@
                   <class name="gedit-side-panel-paned"/>
                 </style>
                 <child>
-                  <object class="GtkStack" id="side_panel">
-                    <property name="visible">False</property>
+                  <object class="GtkBox" id="side_panel_box">
+                    <property name="visible">True</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkStack" id="side_panel">
+                        <property name="visible">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GeditMenuStackSwitcher" id="side_panel_inline_stack_switcher">
+                        <property name="visible">False</property>
+                        <property name="stack">side_panel</property>
+                        <style>
+                          <class name="gedit-side-panel-stack-switcher"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
                     <property name="resize">False</property>


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