[gnome-builder] libide/editor: implement auto-hide with IdeScrubberRevealer
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] libide/editor: implement auto-hide with IdeScrubberRevealer
- Date: Thu, 28 Jul 2022 23:03:42 +0000 (UTC)
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]