[gnome-builder] libide/editor: implement auto-hide with IdeScrubberRevealer



commit c3feaac11324bb20e301eb14d70044fc7a12f638
Author: Christian Hergert <chergert redhat com>
Date:   Thu Jul 28 15:47:34 2022 -0700

    libide/editor: implement auto-hide with IdeScrubberRevealer

 .../gsettings/org.gnome.builder.editor.gschema.xml | 10 +++++++++
 src/libide/editor/ide-editor-page-private.h        |  3 ++-
 src/libide/editor/ide-editor-page-settings.c       | 18 +++++++++-------
 src/libide/editor/ide-editor-page.c                |  2 +-
 src/libide/editor/ide-editor-page.ui               | 25 ++++++++--------------
 5 files changed, 32 insertions(+), 26 deletions(-)
---
diff --git a/data/gsettings/org.gnome.builder.editor.gschema.xml 
b/data/gsettings/org.gnome.builder.editor.gschema.xml
index e13041bb8..f1a627eed 100644
--- a/data/gsettings/org.gnome.builder.editor.gschema.xml
+++ b/data/gsettings/org.gnome.builder.editor.gschema.xml
@@ -84,6 +84,16 @@
       <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="map-policy" type="s">
+      <choices>
+        <choice value="never"/>
+        <choice value="auto"/>
+        <choice value="always"/>
+      </choices>
+      <default>'never'</default>
+      <summary>Overview Map Policy</summary>
+      <description>When the overview map should be displayed.</description>
+    </key>
     <key name="draw-spaces" flags="org.gnome.builder.editor.DrawSpaces">
       <default>[]</default>
       <summary>Draw Spaces</summary>
diff --git a/src/libide/editor/ide-editor-page-private.h b/src/libide/editor/ide-editor-page-private.h
index 8130658ac..86fa88ab9 100644
--- a/src/libide/editor/ide-editor-page-private.h
+++ b/src/libide/editor/ide-editor-page-private.h
@@ -20,6 +20,7 @@
 
 #pragma once
 
+#include <libide-gtk.h>
 #include <libide-plugins.h>
 
 #include "ide-editor-page.h"
@@ -44,7 +45,7 @@ struct _IdeEditorPage
   IdeSourceView           *view;
   GtkScrolledWindow       *scroller;
   GtkSourceMap            *map;
-  GtkRevealer             *map_revealer;
+  IdeScrubberRevealer     *scrubber_revealer;
   IdeEditorSearchBar      *search_bar;
   GtkRevealer             *search_revealer;
 
diff --git a/src/libide/editor/ide-editor-page-settings.c b/src/libide/editor/ide-editor-page-settings.c
index 116c07482..2cc582196 100644
--- a/src/libide/editor/ide-editor-page-settings.c
+++ b/src/libide/editor/ide-editor-page-settings.c
@@ -67,11 +67,13 @@ _ide_editor_page_settings_reload (IdeEditorPage *self)
 }
 
 static gboolean
-show_map_to_vscrollbar_policy (GValue   *value,
-                               GVariant *variant,
-                               gpointer  user_data)
+map_policy_to_vscrollbar_policy (GValue   *value,
+                                 GVariant *variant,
+                                 gpointer  user_data)
 {
-  if (g_variant_get_boolean (variant))
+  const char *policy = g_variant_get_string (variant, NULL);
+
+  if (g_strcmp0 (policy, "always") == 0)
     g_value_set_enum (value, GTK_POLICY_EXTERNAL);
   else
     g_value_set_enum (value, GTK_POLICY_AUTOMATIC);
@@ -184,16 +186,16 @@ _ide_editor_page_settings_init (IdeEditorPage *self)
                           "tab-width", self->view, "tab-width",
                           G_BINDING_SYNC_CREATE);
 
-  g_settings_bind (editor_settings, "show-map",
-                   self->map_revealer, "reveal-child",
+  g_settings_bind (editor_settings, "map-policy",
+                   self->scrubber_revealer, "policy",
                    G_SETTINGS_BIND_GET);
   g_settings_bind (editor_settings, "highlight-current-line",
                    self->view, "highlight-current-line",
                    G_SETTINGS_BIND_GET);
-  g_settings_bind_with_mapping (editor_settings, "show-map",
+  g_settings_bind_with_mapping (editor_settings, "map-policy",
                                 self->scroller, "vscrollbar-policy",
                                 G_SETTINGS_BIND_GET,
-                                show_map_to_vscrollbar_policy,
+                                map_policy_to_vscrollbar_policy,
                                 NULL, NULL, NULL);
   g_settings_bind_with_mapping (editor_settings, "show-grid-lines",
                                 self->view, "background-pattern",
diff --git a/src/libide/editor/ide-editor-page.c b/src/libide/editor/ide-editor-page.c
index e56340de5..c5d6f06cb 100644
--- a/src/libide/editor/ide-editor-page.c
+++ b/src/libide/editor/ide-editor-page.c
@@ -594,7 +594,7 @@ ide_editor_page_class_init (IdeEditorPageClass *klass)
 
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/libide-editor/ide-editor-page.ui");
   gtk_widget_class_bind_template_child (widget_class, IdeEditorPage, map);
-  gtk_widget_class_bind_template_child (widget_class, IdeEditorPage, map_revealer);
+  gtk_widget_class_bind_template_child (widget_class, IdeEditorPage, scrubber_revealer);
   gtk_widget_class_bind_template_child (widget_class, IdeEditorPage, search_bar);
   gtk_widget_class_bind_template_child (widget_class, IdeEditorPage, search_revealer);
   gtk_widget_class_bind_template_child (widget_class, IdeEditorPage, scroller);
diff --git a/src/libide/editor/ide-editor-page.ui b/src/libide/editor/ide-editor-page.ui
index 72b16ccb6..74efd2763 100644
--- a/src/libide/editor/ide-editor-page.ui
+++ b/src/libide/editor/ide-editor-page.ui
@@ -3,10 +3,10 @@
   <template class="IdeEditorPage" parent="IdePage">
     <property name="can-maximize">true</property>
     <child type="content">
-      <object class="GtkBox">
-        <property name="orientation">horizontal</property>
+      <object class="IdeScrubberRevealer" id="scrubber_revealer">
+        <property name="hexpand">true</property>
         <property name="vexpand">true</property>
-        <child>
+        <property name="content">
           <object class="GtkScrolledWindow" id="scroller">
             <child>
               <object class="IdeSourceView" id="view">
@@ -23,20 +23,13 @@
               </object>
             </child>
           </object>
-        </child>
-        <child>
-          <object class="GtkRevealer" id="map_revealer">
-            <property name="transition-type">slide-left</property>
-            <property name="transition-duration">300</property>
-            <property name="reveal-child">true</property>
-            <child>
-              <object class="GtkSourceMap" id="map">
-                <property name="left-margin">6</property>
-                <property name="view">view</property>
-              </object>
-            </child>
+        </property>
+        <property name="scrubber">
+          <object class="GtkSourceMap" id="map">
+            <property name="left-margin">6</property>
+            <property name="view">view</property>
           </object>
-        </child>
+        </property>
       </object>
     </child>
     <child type="content">


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