[gnome-builder] minimap: add setting to auto-hide minimap



commit c04d920e5cb97f13ca65f180f34f906e32e40499
Author: Christian Hergert <christian hergert me>
Date:   Thu Apr 30 16:51:48 2015 -0700

    minimap: add setting to auto-hide minimap
    
    There were complaints about the distraction of the auto-hide map. This
    will let us enable/disable that feature. We will default to auto-hide
    disabled (at least for now).

 .../gsettings/org.gnome.builder.editor.gschema.xml |    5 ++
 data/ui/gb-preferences-page-editor.ui              |   10 +++++
 src/editor/gb-editor-frame-private.h               |    2 +
 src/editor/gb-editor-frame.c                       |   42 +++++++++++++++++++-
 4 files changed, 58 insertions(+), 1 deletions(-)
---
diff --git a/data/gsettings/org.gnome.builder.editor.gschema.xml 
b/data/gsettings/org.gnome.builder.editor.gschema.xml
index 1ca1131..9d2400d 100644
--- a/data/gsettings/org.gnome.builder.editor.gschema.xml
+++ b/data/gsettings/org.gnome.builder.editor.gschema.xml
@@ -79,6 +79,11 @@
       <summary>Show overview map</summary>
       <description>If enabled, Builder will display an overview map of the source file next to the 
editor.</description>
     </key>
+    <key name="auto-hide-map" type="b">
+      <default>false</default>
+      <summary>Automatically Hide Overview Map</summary>
+      <description>If enabled, Builder will automatically hide the overview map when mouse focus leaves the 
editor, or a timeout occurs.</description>
+    </key>
     <key name="draw-spaces" flags="org.gnome.builder.editor.DrawSpaces">
       <default>[]</default>
       <summary>Draw Spaces</summary>
diff --git a/data/ui/gb-preferences-page-editor.ui b/data/ui/gb-preferences-page-editor.ui
index 28b10e6..59c69c6 100644
--- a/data/ui/gb-preferences-page-editor.ui
+++ b/data/ui/gb-preferences-page-editor.ui
@@ -112,6 +112,16 @@
               </object>
             </child>
             <child>
+              <object class="GbPreferencesSwitch" id="auto_hide_map_switch">
+                <property name="title" translatable="yes">Auto Hide Map</property>
+               <property name="description" translatable="yes">Automatically hide the overview map during 
inactivity.</property>
+                <property name="settings">editor_settings</property>
+                <property name="settings-schema-key">auto-hide-map</property>
+                <property name="size-group">control_group</property>
+                <property name="visible">true</property>
+              </object>
+            </child>
+            <child>
               <object class="GtkBox" id="scroll_off_container">
                 <property name="orientation">horizontal</property>
                 <property name="margin">6</property>
diff --git a/src/editor/gb-editor-frame-private.h b/src/editor/gb-editor-frame-private.h
index 7044b58..6ce85e1 100644
--- a/src/editor/gb-editor-frame-private.h
+++ b/src/editor/gb-editor-frame-private.h
@@ -48,6 +48,8 @@ struct _GbEditorFrame
   IdeAnimation        *map_animation;
 
   gulong               cursor_moved_handler;
+
+  guint                auto_hide_map : 1;
 };
 
 G_END_DECLS
diff --git a/src/editor/gb-editor-frame.c b/src/editor/gb-editor-frame.c
index 93f58cb..9b0512a 100644
--- a/src/editor/gb-editor-frame.c
+++ b/src/editor/gb-editor-frame.c
@@ -36,6 +36,7 @@ G_DEFINE_TYPE (GbEditorFrame, gb_editor_frame, GTK_TYPE_BIN)
 
 enum {
   PROP_0,
+  PROP_AUTO_HIDE_MAP,
   PROP_BACK_FORWARD_LIST,
   PROP_DOCUMENT,
   PROP_SHOW_MAP,
@@ -96,6 +97,10 @@ gb_editor_frame_hide_map (GbEditorFrame *self,
   g_assert (GB_IS_EDITOR_FRAME (self));
   g_assert (IDE_IS_SOURCE_MAP (source_map));
 
+  /* ignore hide request if auto-hide is disabled */
+  if ((self->source_map != NULL) && !self->auto_hide_map)
+    return;
+
   gb_editor_frame_animate_map (self, FALSE);
 }
 
@@ -558,6 +563,23 @@ gb_editor_frame_set_show_map (GbEditorFrame *self,
 }
 
 static void
+gb_editor_frame_set_auto_hide_map (GbEditorFrame *self,
+                                   gboolean       auto_hide_map)
+{
+  g_assert (GB_IS_EDITOR_FRAME (self));
+
+  g_print ("SET AUTO HIDE MAP\n");
+
+  auto_hide_map = !!auto_hide_map;
+
+  if (auto_hide_map != self->auto_hide_map)
+    {
+      self->auto_hide_map = auto_hide_map;
+      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_AUTO_HIDE_MAP]);
+    }
+}
+
+static void
 gb_editor_frame__source_view_populate_popup (GbEditorFrame *self,
                                              GtkWidget     *popup,
                                              IdeSourceView *source_view)
@@ -696,6 +718,10 @@ gb_editor_frame_get_property (GObject    *object,
 
   switch (prop_id)
     {
+    case PROP_AUTO_HIDE_MAP:
+      g_value_set_boolean (value, self->auto_hide_map);
+      break;
+
     case PROP_DOCUMENT:
       g_value_set_object (value, gb_editor_frame_get_document (self));
       break;
@@ -719,6 +745,10 @@ gb_editor_frame_set_property (GObject      *object,
 
   switch (prop_id)
     {
+    case PROP_AUTO_HIDE_MAP:
+      gb_editor_frame_set_auto_hide_map (self, g_value_get_boolean (value));
+      break;
+
     case PROP_DOCUMENT:
       gb_editor_frame_set_document (self, g_value_get_object (value));
       break;
@@ -749,6 +779,15 @@ gb_editor_frame_class_init (GbEditorFrameClass *klass)
 
   widget_class->grab_focus = gb_editor_frame_grab_focus;
 
+  gParamSpecs [PROP_AUTO_HIDE_MAP] =
+    g_param_spec_boolean ("auto-hide-map",
+                          _("Auto Hide Map"),
+                          _("Auto Hide Map"),
+                          FALSE,
+                          (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (object_class, PROP_AUTO_HIDE_MAP,
+                                   gParamSpecs [PROP_AUTO_HIDE_MAP]);
+
   gParamSpecs [PROP_BACK_FORWARD_LIST] =
     g_param_spec_object ("back-forward-list",
                          _("Back Forward List"),
@@ -814,7 +853,8 @@ gb_editor_frame_init (GbEditorFrame *self)
   g_settings_bind (settings, "smart-backspace", self->source_view, "smart-backspace", G_SETTINGS_BIND_GET);
   g_settings_bind_with_mapping (settings, "smart-home-end", self->source_view, "smart-home-end", 
G_SETTINGS_BIND_GET, get_smart_home_end, NULL, NULL, NULL);
   g_settings_bind (settings, "word-completion", self->source_view, "enable-word-completion", 
G_SETTINGS_BIND_GET);
-  g_settings_bind (settings, "show-map", self, "show-map", G_SETTINGS_BIND_DEFAULT);
+  g_settings_bind (settings, "show-map", self, "show-map", G_SETTINGS_BIND_GET);
+  g_settings_bind (settings, "auto-hide-map", self, "auto-hide-map", G_SETTINGS_BIND_GET);
   g_signal_connect (settings, "changed::keybindings", G_CALLBACK (keybindings_changed), self);
 
   g_object_bind_property (self->source_view, "overwrite", self->overwrite_label, "visible", 
G_BINDING_SYNC_CREATE);


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