[gedit/wip/3.14-osx] Bind fullscreen mode to window state



commit 111f9893a42353d9d3042bb6ab7237e6d870c09f
Author: Jesse van den Kieboom <jessevdk gmail com>
Date:   Sat Aug 23 15:35:35 2014 +0200

    Bind fullscreen mode to window state

 gedit/gedit-commands-view.c |   13 +---------
 gedit/gedit-window.c        |   55 +++++++++++++++++++++++++++++++++---------
 2 files changed, 44 insertions(+), 24 deletions(-)
---
diff --git a/gedit/gedit-commands-view.c b/gedit/gedit-commands-view.c
index 3654b4b..d43bab1 100644
--- a/gedit/gedit-commands-view.c
+++ b/gedit/gedit-commands-view.c
@@ -97,8 +97,6 @@ _gedit_cmd_view_toggle_fullscreen_mode (GSimpleAction *action,
        {
                _gedit_window_unfullscreen (window);
        }
-
-       g_simple_action_set_state (action, state);
 }
 
 void
@@ -106,16 +104,7 @@ _gedit_cmd_view_leave_fullscreen_mode (GSimpleAction *action,
                                        GVariant      *parameter,
                                        gpointer       user_data)
 {
-       GeditWindow *window = GEDIT_WINDOW (user_data);
-       GAction *fullscreen_action;
-
-       _gedit_window_unfullscreen (window);
-
-       fullscreen_action = g_action_map_lookup_action (G_ACTION_MAP (window),
-                                                       "fullscreen");
-
-       g_simple_action_set_state (G_SIMPLE_ACTION (fullscreen_action),
-                                  g_variant_new_boolean (FALSE));
+       _gedit_window_unfullscreen (GEDIT_WINDOW (user_data));
 }
 
 static void
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index a18f821..3f5a340 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -250,6 +250,44 @@ gedit_window_finalize (GObject *object)
        G_OBJECT_CLASS (gedit_window_parent_class)->finalize (object);
 }
 
+static void
+update_fullscreen (GeditWindow *window,
+                   gboolean     is_fullscreen)
+{
+       GAction *fullscreen_action;
+
+       _gedit_multi_notebook_set_show_tabs (window->priv->multi_notebook, !is_fullscreen);
+
+       if (is_fullscreen)
+       {
+               gtk_widget_hide (window->priv->statusbar);
+       }
+       else
+       {
+               if (g_settings_get_boolean (window->priv->ui_settings, "statusbar-visible"))
+               {
+                       gtk_widget_show (window->priv->statusbar);
+               }
+       }
+
+#ifndef OS_OSX
+       if (is_fullscreen)
+       {
+               gtk_widget_show_all (window->priv->fullscreen_eventbox);
+       }
+       else
+       {
+               gtk_widget_hide (window->priv->fullscreen_eventbox);
+       }
+#endif
+
+       fullscreen_action = g_action_map_lookup_action (G_ACTION_MAP (window),
+                                                       "fullscreen");
+
+       g_simple_action_set_state (G_SIMPLE_ACTION (fullscreen_action),
+                                  g_variant_new_boolean (is_fullscreen));
+}
+
 static gboolean
 gedit_window_window_state_event (GtkWidget           *widget,
                                 GdkEventWindowState *event)
@@ -261,6 +299,11 @@ gedit_window_window_state_event (GtkWidget           *widget,
        g_settings_set_int (window->priv->window_settings, GEDIT_SETTINGS_WINDOW_STATE,
                            window->priv->window_state);
 
+       if ((event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) != 0)
+       {
+               update_fullscreen (window, (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) != 0);
+       }
+
        return GTK_WIDGET_CLASS (gedit_window_parent_class)->window_state_event (widget, event);
 }
 
@@ -3447,10 +3490,6 @@ _gedit_window_fullscreen (GeditWindow *window)
 
        /* Go to fullscreen mode and hide bars */
        gtk_window_fullscreen (GTK_WINDOW (&window->window));
-       _gedit_multi_notebook_set_show_tabs (window->priv->multi_notebook, FALSE);
-       gtk_widget_hide (window->priv->statusbar);
-
-       gtk_widget_show_all (window->priv->fullscreen_eventbox);
 }
 
 void
@@ -3463,14 +3502,6 @@ _gedit_window_unfullscreen (GeditWindow *window)
 
        /* Unfullscreen and show bars */
        gtk_window_unfullscreen (GTK_WINDOW (&window->window));
-       _gedit_multi_notebook_set_show_tabs (window->priv->multi_notebook, TRUE);
-
-       if (g_settings_get_boolean (window->priv->ui_settings, "statusbar-visible"))
-       {
-               gtk_widget_show (window->priv->statusbar);
-       }
-
-       gtk_widget_hide (window->priv->fullscreen_eventbox);
 }
 
 gboolean


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