[gedit] fullscreen mode: use an overlay + revealer



commit ba6a99ef3a8352140a285e968315b3b2fe05d721
Author: Sebastien Lafargue <slaf66 gmail com>
Date:   Tue Feb 18 22:39:34 2014 +0100

    fullscreen mode: use an overlay + revealer
    
    https://bugzilla.gnome.org/show_bug.cgi?id=724682

 gedit/gedit-window-private.h |    4 +-
 gedit/gedit-window.c         |  206 +++-----------------
 gedit/gedit-window.ui        |  451 ++++++++++++++++++++++--------------------
 3 files changed, 261 insertions(+), 400 deletions(-)
---
diff --git a/gedit/gedit-window-private.h b/gedit/gedit-window-private.h
index fb56d24..a78d455 100644
--- a/gedit/gedit-window-private.h
+++ b/gedit/gedit-window-private.h
@@ -56,11 +56,11 @@ struct _GeditWindowPrivate
 
        /* Widgets for fullscreen mode */
        GtkWidget      *fullscreen_controls;
+       GtkWidget      *fullscreen_eventbox;
+       GtkWidget      *fullscreen_headerbar;
        GtkWidget      *fullscreen_open_menu;
        GtkMenuButton  *fullscreen_gear_button;
        gboolean        fullscreen_controls_setup;
-       guint           fullscreen_animation_timeout_id;
-       gboolean        fullscreen_animation_enter;
 
        /* statusbar and context ids for statusbar messages */
        GtkWidget      *statusbar;
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 4eba180..c26dbb5 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -56,7 +56,7 @@
 #include "gedit-highlight-mode-selector.h"
 
 #define TAB_WIDTH_DATA "GeditWindowTabWidthData"
-#define FULLSCREEN_ANIMATION_SPEED 4
+#define FULLSCREEN_ANIMATION_SPEED 500
 
 /* Signals */
 enum
@@ -210,19 +210,6 @@ gedit_window_dispose (GObject *object)
                window->priv->dispose_has_run = TRUE;
        }
 
-       if (window->priv->fullscreen_animation_timeout_id != 0)
-       {
-               g_source_remove (window->priv->fullscreen_animation_timeout_id);
-               window->priv->fullscreen_animation_timeout_id = 0;
-       }
-
-       if (window->priv->fullscreen_controls != NULL)
-       {
-               gtk_widget_destroy (window->priv->fullscreen_controls);
-
-               window->priv->fullscreen_controls = NULL;
-       }
-
        g_clear_object (&window->priv->message_bus);
        g_clear_object (&window->priv->window_group);
        g_clear_object (&window->priv->default_location);
@@ -426,6 +413,8 @@ gedit_window_class_init (GeditWindowClass *klass)
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, bottom_panel);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, statusbar);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, fullscreen_controls);
+       gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, fullscreen_eventbox);
+       gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, fullscreen_headerbar);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, fullscreen_open_menu);
        gtk_widget_class_bind_template_child_private (widget_class, GeditWindow, fullscreen_gear_button);
 }
@@ -1758,163 +1747,22 @@ drop_uris_cb (GtkWidget    *widget,
        load_uris_from_drop (window, uri_list);
 }
 
-static void
-fullscreen_controls_show (GeditWindow *window)
-{
-       GdkScreen *screen;
-       GdkRectangle fs_rect;
-       gint w, h;
-
-       screen = gtk_window_get_screen (GTK_WINDOW (window));
-       gdk_screen_get_monitor_geometry (screen,
-                                        gdk_screen_get_monitor_at_window (screen,
-                                                                          gtk_widget_get_window (GTK_WIDGET 
(window))),
-                                        &fs_rect);
-
-       gtk_widget_show_all (window->priv->fullscreen_controls);
-       gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls), &w, &h);
-
-       gtk_window_resize (GTK_WINDOW (window->priv->fullscreen_controls),
-                          fs_rect.width, h);
-
-       gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
-                        fs_rect.x, fs_rect.y - h + 1);
-}
-
-static gboolean
-run_fullscreen_animation (gpointer data)
-{
-       GeditWindow *window = GEDIT_WINDOW (data);
-       GdkScreen *screen;
-       GdkRectangle fs_rect;
-       gint x, y;
-
-       screen = gtk_window_get_screen (GTK_WINDOW (window));
-       gdk_screen_get_monitor_geometry (screen,
-                                        gdk_screen_get_monitor_at_window (screen,
-                                                                          gtk_widget_get_window (GTK_WIDGET 
(window))),
-                                        &fs_rect);
-
-       gtk_window_get_position (GTK_WINDOW (window->priv->fullscreen_controls),
-                                &x, &y);
-
-       if (window->priv->fullscreen_animation_enter)
-       {
-               if (y == fs_rect.y)
-               {
-                       window->priv->fullscreen_animation_timeout_id = 0;
-                       return FALSE;
-               }
-               else
-               {
-                       gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
-                                        x, y + 1);
-                       return TRUE;
-               }
-       }
-       else
-       {
-               gint w, h;
-
-               gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls),
-                                    &w, &h);
-
-               if (y == fs_rect.y - h + 1)
-               {
-                       window->priv->fullscreen_animation_timeout_id = 0;
-                       return FALSE;
-               }
-               else
-               {
-                       gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
-                                        x, y - 1);
-                       return TRUE;
-               }
-       }
-}
-
-static void
-show_hide_fullscreen_controls (GeditWindow *window,
-                              gboolean     show,
-                              gint         height)
-{
-       GtkSettings *settings;
-       gboolean enable_animations;
-
-       settings = gtk_widget_get_settings (GTK_WIDGET (window));
-       g_object_get (G_OBJECT (settings),
-                     "gtk-enable-animations",
-                     &enable_animations,
-                     NULL);
-
-       if (enable_animations)
-       {
-               window->priv->fullscreen_animation_enter = show;
-
-               if (window->priv->fullscreen_animation_timeout_id == 0)
-               {
-                       window->priv->fullscreen_animation_timeout_id =
-                               g_timeout_add (FULLSCREEN_ANIMATION_SPEED,
-                                              (GSourceFunc) run_fullscreen_animation,
-                                              window);
-               }
-       }
-       else
-       {
-               GdkRectangle fs_rect;
-               GdkScreen *screen;
-
-               screen = gtk_window_get_screen (GTK_WINDOW (window));
-               gdk_screen_get_monitor_geometry (screen,
-                                                gdk_screen_get_monitor_at_window (screen,
-                                                                                  gtk_widget_get_window 
(GTK_WIDGET (window))),
-                                                &fs_rect);
-
-               if (show)
-               {
-                       gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
-                                fs_rect.x, fs_rect.y);
-               }
-               else
-               {
-                       gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
-                                        fs_rect.x, fs_rect.y - height + 1);
-               }
-       }
-
-}
-
 static gboolean
 on_fullscreen_controls_enter_notify_event (GtkWidget        *widget,
-                                          GdkEventCrossing *event,
-                                          GeditWindow      *window)
+                                           GdkEventCrossing *event,
+                                           GeditWindow      *window)
 {
-       show_hide_fullscreen_controls (window, TRUE, 0);
+       gtk_revealer_set_reveal_child (GTK_REVEALER (window->priv->fullscreen_controls), TRUE);
 
        return FALSE;
 }
 
 static gboolean
 on_fullscreen_controls_leave_notify_event (GtkWidget        *widget,
-                                          GdkEventCrossing *event,
-                                          GeditWindow      *window)
+                                           GdkEventCrossing *event,
+                                           GeditWindow      *window)
 {
-       GdkDevice *device;
-       gint w, h;
-       gint x, y;
-
-       device = gdk_event_get_device ((GdkEvent *)event);
-
-       gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls), &w, &h);
-       gdk_device_get_position (device, NULL, &x, &y);
-
-       /* gtk seems to emit leave notify when clicking on tool items,
-        * work around it by checking the coordinates
-        */
-       if (y >= h)
-       {
-               show_hide_fullscreen_controls (window, FALSE, h);
-       }
+       gtk_revealer_set_reveal_child (GTK_REVEALER (window->priv->fullscreen_controls), FALSE);
 
        return FALSE;
 }
@@ -1927,28 +1775,23 @@ fullscreen_controls_setup (GeditWindow *window)
        if (priv->fullscreen_controls_setup)
                return;
 
-       gtk_window_set_transient_for (GTK_WINDOW (priv->fullscreen_controls),
-                                     GTK_WINDOW (&window->window));
-       gtk_window_set_attached_to (GTK_WINDOW (window), priv->fullscreen_controls);
-
-       /* this is a hack to make the fullscreen control see the window actions.
-        * GTK should grow something better to do this */
-       gtk_widget_insert_action_group (priv->fullscreen_controls,
-                                       "win",
-                                       G_ACTION_GROUP (window));
-
        g_settings_bind (window->priv->ui_settings,
                         GEDIT_SETTINGS_MAX_RECENTS,
                         window->priv->fullscreen_open_menu,
                         "limit",
                         G_SETTINGS_BIND_GET);
 
-       g_signal_connect (priv->fullscreen_controls, "enter-notify-event",
-                         G_CALLBACK (on_fullscreen_controls_enter_notify_event),
-                         window);
-       g_signal_connect (priv->fullscreen_controls, "leave-notify-event",
-                         G_CALLBACK (on_fullscreen_controls_leave_notify_event),
-                         window);
+       g_signal_connect (priv->fullscreen_eventbox,
+                         "enter-notify-event",
+                         G_CALLBACK (on_fullscreen_controls_enter_notify_event),
+                         window);
+       g_signal_connect (priv->fullscreen_eventbox,
+                         "leave-notify-event",
+                         G_CALLBACK (on_fullscreen_controls_leave_notify_event),
+                         window);
+
+       gtk_widget_set_size_request (GTK_WIDGET (window->priv->fullscreen_eventbox), -1, 1);
+
        priv->fullscreen_controls_setup = TRUE;
 }
 
@@ -2787,7 +2630,7 @@ check_window_is_active (GeditWindow *window,
 {
        if (window->priv->window_state & GDK_WINDOW_STATE_FULLSCREEN)
        {
-               gtk_widget_set_visible (window->priv->fullscreen_controls,
+               gtk_widget_set_visible (window->priv->fullscreen_eventbox,
                                        gtk_window_is_active (GTK_WINDOW (window)));
        }
 }
@@ -2861,7 +2704,6 @@ gedit_window_init (GeditWindow *window)
        window->priv->inhibition_cookie = 0;
        window->priv->dispose_has_run = FALSE;
        window->priv->fullscreen_controls = NULL;
-       window->priv->fullscreen_animation_timeout_id = 0;
        window->priv->direct_save_uri = NULL;
        window->priv->editor_settings = g_settings_new ("org.gnome.gedit.preferences.editor");
        window->priv->ui_settings = g_settings_new ("org.gnome.gedit.preferences.ui");
@@ -3629,8 +3471,10 @@ _gedit_window_fullscreen (GeditWindow *window)
        gtk_window_fullscreen (GTK_WINDOW (&window->window));
        _gedit_multi_notebook_set_show_tabs (window->priv->multi_notebook, FALSE);
        gtk_widget_hide (window->priv->statusbar);
+
        fullscreen_controls_setup (window);
-       fullscreen_controls_show (window);
+
+       gtk_widget_show_all (window->priv->fullscreen_eventbox);
 }
 
 void
@@ -3650,7 +3494,7 @@ _gedit_window_unfullscreen (GeditWindow *window)
                gtk_widget_show (window->priv->statusbar);
        }
 
-       gtk_widget_hide (window->priv->fullscreen_controls);
+       gtk_widget_hide (window->priv->fullscreen_eventbox);
 }
 
 gboolean
diff --git a/gedit/gedit-window.ui b/gedit/gedit-window.ui
index fa751cb..e8922bb 100644
--- a/gedit/gedit-window.ui
+++ b/gedit/gedit-window.ui
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <!-- interface-requires gtk+ 3.8 -->
+  <!-- interface-requires gtk+ 3.10 -->
   <template class="GeditWindow" parent="GtkWindow">
     <property name="can_focus">False</property>
     <property name="has_focus">False</property>
@@ -138,64 +138,91 @@
       </object>
     </child>
     <child>
-      <object class="GtkBox" id="main_box">
+      <object class="GtkOverlay" id="fullscreen_overlay">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
+        <property name="can_focus">False</property>
+        <property name="has_focus">False</property>
+        <property name="is_focus">False</property>
         <child>
-          <object class="GtkPaned" id="hpaned">
+          <object class="GtkBox" id="main_box">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="has_focus">False</property>
-            <property name="is_focus">False</property>
-            <style>
-              <class name="gedit-side-panel-paned"/>
-            </style>
-            <child>
-              <object class="GtkStack" id="side_panel">
-                <property name="visible">False</property>
-              </object>
-              <packing>
-                <property name="resize">False</property>
-                <property name="shrink">False</property>
-              </packing>
-            </child>
+            <property name="orientation">vertical</property>
             <child>
-              <object class="GtkBox" id="content_box">
+              <object class="GtkPaned" id="hpaned">
                 <property name="visible">True</property>
-                <property name="orientation">vertical</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <style>
+                  <class name="gedit-side-panel-paned"/>
+                </style>
                 <child>
-                  <object class="GtkPaned" id="vpaned">
+                  <object class="GtkStack" id="side_panel">
+                    <property name="visible">False</property>
+                  </object>
+                  <packing>
+                    <property name="resize">False</property>
+                    <property name="shrink">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkBox" id="content_box">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="has_focus">False</property>
-                    <property name="is_focus">False</property>
                     <property name="orientation">vertical</property>
-                    <style>
-                      <class name="gedit-bottom-panel-paned"/>
-                    </style>
                     <child>
-                      <object class="GeditMultiNotebook" id="multi_notebook">
+                      <object class="GtkPaned" id="vpaned">
                         <property name="visible">True</property>
-                      </object>
-                      <packing>
-                        <property name="resize">True</property>
-                        <property name="shrink">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkBox" id="bottom_panel_box">
-                        <property name="visible">False</property>
-                        <property name="orientation">horizontal</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">False</property>
+                        <property name="is_focus">False</property>
+                        <property name="orientation">vertical</property>
                         <style>
-                          <class name="gedit-bottom-panel"/>
+                          <class name="gedit-bottom-panel-paned"/>
                         </style>
                         <child>
-                          <object class="GtkBox" id="bottom_panel_stack_box">
+                          <object class="GeditMultiNotebook" id="multi_notebook">
                             <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
+                          </object>
+                          <packing>
+                            <property name="resize">True</property>
+                            <property name="shrink">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="bottom_panel_box">
+                            <property name="visible">False</property>
+                            <property name="orientation">horizontal</property>
+                            <style>
+                              <class name="gedit-bottom-panel"/>
+                            </style>
                             <child>
-                              <object class="GtkStack" id="bottom_panel">
+                              <object class="GtkBox" id="bottom_panel_stack_box">
                                 <property name="visible">True</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkStack" id="bottom_panel">
+                                    <property name="visible">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkStackSwitcher" id="bottom_panel_stack_switcher">
+                                    <property name="visible">True</property>
+                                    <property name="stack">bottom_panel</property>
+                                    <style>
+                                      <class name="gedit-bottom-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="expand">True</property>
@@ -204,12 +231,22 @@
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkStackSwitcher" id="bottom_panel_stack_switcher">
+                              <object class="GtkBox" id="bottom_panel_sidebar">
                                 <property name="visible">True</property>
-                                <property name="stack">bottom_panel</property>
-                                <style>
-                                  <class name="gedit-bottom-panel-stack-switcher"/>
-                                </style>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GeditCloseButton" id="bottom_panel_close_button">
+                                    <property name="visible">True</property>
+                                    <property name="relief">none</property>
+                                    <property name="tooltip-text" translatable="True">Hide panel</property>
+                                    <property name="action_name">win.bottom-panel</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
@@ -219,200 +256,180 @@
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkBox" id="bottom_panel_sidebar">
-                            <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
-                            <child>
-                              <object class="GeditCloseButton" id="bottom_panel_close_button">
-                                <property name="visible">True</property>
-                                <property name="relief">none</property>
-                                <property name="tooltip-text" translatable="True">Hide panel</property>
-                                <property name="action_name">win.bottom-panel</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
+                            <property name="resize">False</property>
+                            <property name="shrink">False</property>
                           </packing>
                         </child>
                       </object>
                       <packing>
-                        <property name="resize">False</property>
-                        <property name="shrink">False</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GeditStatusbar" id="statusbar">
+                        <property name="visible">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GeditStatusbar" id="statusbar">
-                    <property name="visible">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
+                    <property name="resize">True</property>
+                    <property name="shrink">True</property>
                   </packing>
                 </child>
               </object>
               <packing>
-                <property name="resize">True</property>
-                <property name="shrink">True</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
               </packing>
             </child>
           </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
         </child>
-      </object>
-    </child>
-  </template>
-  <object class="GtkWindow" id="fullscreen_controls">
-    <property name="type">popup</property>
-    <property name="can_focus">False</property>
-    <property name="has_focus">False</property>
-    <property name="is_focus">False</property>
-    <child>
-      <object class="GtkHeaderBar" id="fullscreen_headerbar">
-        <property name="visible">True</property>
-        <child>
-          <object class="GtkBox" id="fullscreen_open_box">
+        <child type="overlay">
+          <object class="GtkEventBox" id="fullscreen_eventbox">
             <property name="visible">True</property>
-            <property name="orientation">horizontal</property>
-            <property name="valign">center</property>
-            <style>
-              <class name="linked"/>
-            </style>
-            <child>
-              <object class="GtkButton" id="fullscreen_open_button">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Open</property>
-                <property name="tooltip_text" translatable="yes">Open a file</property>
-                <property name="action_name">win.open</property>
-                <style>
-                  <class name="text-button"/>
-                </style>
-              </object>
-            </child>
+            <property name="can_focus">False</property>
+            <property name="valign">start</property>
             <child>
-              <object class="GeditOpenMenuButton" id="fullscreen_open_menu">
+              <object class="GtkRevealer" id="fullscreen_controls">
                 <property name="visible">True</property>
-                <property name="tooltip_text" translatable="yes">Open a recently used file</property>
-                <style>
-                  <class name="image-button"/>
-                </style>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="pack_type">start</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="fullscreen_new_tab_button">
-            <property name="visible">True</property>
-            <property name="valign">center</property>
-            <property name="tooltip_text" translatable="yes">Create a new document</property>
-            <property name="action_name">win.new-tab</property>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child>
-              <object class="GtkImage" id="fullscreen_new_tab_image">
-                <property name="visible">True</property>
-                <property name="icon_size">1</property>
-                <property name="icon_name">tab-new-symbolic</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="pack_type">start</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="leave_fullscreen_button">
-            <property name="visible">True</property>
-            <property name="valign">center</property>
-            <property name="tooltip_text" translatable="yes">Leave Fullscreen</property>
-            <property name="action_name">win.leave-fullscreen</property>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child>
-              <object class="GtkImage" id="leave_fullscreen_image">
-                <property name="visible">True</property>
-                <property name="icon_size">1</property>
-                <property name="icon_name">view-restore-symbolic</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="pack_type">end</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkMenuButton" id="fullscreen_gear_button">
-            <property name="visible">True</property>
-            <property name="valign">center</property>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child>
-              <object class="GtkImage" id="fullscreen_gear_image">
-                <property name="visible">True</property>
-                <property name="icon_size">1</property>
-                <property name="icon_name">emblem-system-symbolic</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="pack_type">end</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="fullscreen_save_button">
-            <property name="visible">True</property>
-            <property name="valign">center</property>
-            <property name="tooltip_text" translatable="yes">Save the current file</property>
-            <property name="action_name">win.save</property>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child>
-              <object class="GtkImage" id="fullscreen_save_image">
-                <property name="visible">True</property>
-                <property name="icon_size">1</property>
-                <property name="icon_name">document-save-symbolic</property>
+                <property name="can_focus">False</property>
+                <property name="reveal_child">False</property>
+                <property name="valign">start</property>
+                <child>
+                  <object class="GtkHeaderBar" id="fullscreen_headerbar">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkBox" id="fullscreen_open_box">
+                        <property name="visible">True</property>
+                        <property name="orientation">horizontal</property>
+                        <property name="valign">center</property>
+                        <style>
+                          <class name="linked"/>
+                        </style>
+                        <child>
+                          <object class="GtkButton" id="fullscreen_open_button">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Open</property>
+                            <property name="tooltip_text" translatable="yes">Open a file</property>
+                            <property name="action_name">win.open</property>
+                            <style>
+                              <class name="text-button"/>
+                            </style>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GeditOpenMenuButton" id="fullscreen_open_menu">
+                            <property name="visible">True</property>
+                            <property name="tooltip_text" translatable="yes">Open a recently used 
file</property>
+                            <style>
+                              <class name="image-button"/>
+                            </style>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="pack_type">start</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="fullscreen_new_tab_button">
+                        <property name="visible">True</property>
+                        <property name="valign">center</property>
+                        <property name="tooltip_text" translatable="yes">Create a new document</property>
+                        <property name="action_name">win.new-tab</property>
+                        <style>
+                          <class name="image-button"/>
+                        </style>
+                        <child>
+                          <object class="GtkImage" id="fullscreen_new_tab_image">
+                            <property name="visible">True</property>
+                            <property name="icon_size">1</property>
+                            <property name="icon_name">tab-new-symbolic</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="pack_type">start</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="leave_fullscreen_button">
+                        <property name="visible">True</property>
+                        <property name="valign">center</property>
+                        <property name="tooltip_text" translatable="yes">Leave Fullscreen</property>
+                        <property name="action_name">win.leave-fullscreen</property>
+                        <style>
+                          <class name="image-button"/>
+                        </style>
+                        <child>
+                          <object class="GtkImage" id="leave_fullscreen_image">
+                            <property name="visible">True</property>
+                            <property name="icon_size">1</property>
+                            <property name="icon_name">view-restore-symbolic</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="pack_type">end</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkMenuButton" id="fullscreen_gear_button">
+                        <property name="visible">True</property>
+                        <property name="valign">center</property>
+                        <style>
+                          <class name="image-button"/>
+                        </style>
+                        <child>
+                          <object class="GtkImage" id="fullscreen_gear_image">
+                            <property name="visible">True</property>
+                            <property name="icon_size">1</property>
+                            <property name="icon_name">emblem-system-symbolic</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="pack_type">end</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="fullscreen_save_button">
+                        <property name="visible">True</property>
+                        <property name="valign">center</property>
+                        <property name="tooltip_text" translatable="yes">Save the current file</property>
+                        <property name="action_name">win.save</property>
+                        <style>
+                          <class name="image-button"/>
+                        </style>
+                        <child>
+                          <object class="GtkImage" id="fullscreen_save_image">
+                            <property name="visible">True</property>
+                            <property name="icon_size">1</property>
+                            <property name="icon_name">document-save-symbolic</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="pack_type">end</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
               </object>
             </child>
           </object>
-          <packing>
-            <property name="pack_type">end</property>
-          </packing>
         </child>
       </object>
     </child>
-  </object>
+  </template>
   <object class="GtkSizeGroup">
     <property name="mode">horizontal</property>
     <widgets>


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