[gnome-builder] minimap: add setting to auto-hide minimap
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] minimap: add setting to auto-hide minimap
- Date: Thu, 30 Apr 2015 23:51:55 +0000 (UTC)
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]