[gnome-builder] libide/sourceview: remove shadow from search bubble



commit 12b1ad313971c6ef90557f72532abb0e07f54e60
Author: Colin Kinloch <colin kinloch collabora com>
Date:   Tue Oct 11 22:35:01 2022 +0100

    libide/sourceview: remove shadow from search bubble
    
    Signed-off-by: Colin Kinloch <colin kinloch collabora com>

 .../gsettings/org.gnome.builder.editor.gschema.xml |  5 ++
 src/libide/editor/ide-editor-page-settings.c       |  3 ++
 src/libide/sourceview/ide-source-view-private.h    |  4 +-
 src/libide/sourceview/ide-source-view.c            | 53 ++++++++++++++++++++--
 src/libide/sourceview/ide-source-view.h            |  6 +++
 src/plugins/editorui/gbp-editorui-preview.c        |  4 +-
 src/plugins/editorui/tweaks.ui                     | 17 +++++++
 7 files changed, 87 insertions(+), 5 deletions(-)
---
diff --git a/data/gsettings/org.gnome.builder.editor.gschema.xml 
b/data/gsettings/org.gnome.builder.editor.gschema.xml
index 04861bfd9..515121f4c 100644
--- a/data/gsettings/org.gnome.builder.editor.gschema.xml
+++ b/data/gsettings/org.gnome.builder.editor.gschema.xml
@@ -145,5 +145,10 @@
       <summary>Select First Completion</summary>
       <description>Automatically select the first auto-completion entry.</description>
     </key>
+    <key name="rounded-find-bubbles" type="b">
+      <default>true</default>
+      <summary>Rounded Find Bubbles</summary>
+      <description>Display Search Results with Rounded Edges</description>
+    </key>
   </schema>
 </schemalist>
diff --git a/src/libide/editor/ide-editor-page-settings.c b/src/libide/editor/ide-editor-page-settings.c
index 7f4c0273d..d3a8081a5 100644
--- a/src/libide/editor/ide-editor-page-settings.c
+++ b/src/libide/editor/ide-editor-page-settings.c
@@ -294,6 +294,9 @@ _ide_editor_page_settings_init (IdeEditorPage *self)
   g_settings_bind (editor_settings, "smart-backspace",
                    self->view, "smart-backspace",
                    G_SETTINGS_BIND_GET);
+  g_settings_bind (editor_settings, "rounded-find-bubbles",
+                   self->view, "rounded-find-bubbles",
+                   G_SETTINGS_BIND_GET);
   g_settings_bind (editor_settings,
                    "completion-n-rows",
                    gtk_source_view_get_completion (GTK_SOURCE_VIEW (self->view)),
diff --git a/src/libide/sourceview/ide-source-view-private.h b/src/libide/sourceview/ide-source-view-private.h
index 029104acb..27061d6f0 100644
--- a/src/libide/sourceview/ide-source-view-private.h
+++ b/src/libide/sourceview/ide-source-view-private.h
@@ -47,6 +47,7 @@ struct _IdeSourceView
   PangoFontDescription *font_desc;
   double line_height;
   int font_scale;
+  bool rounded_find_bubbles;
 
   /* Search context used to draw bubbles */
   GtkSourceSearchContext *search_context;
@@ -93,7 +94,8 @@ void  _ide_source_view_addins_set_language (IdeSourceView              *self,
 char *_ide_source_view_generate_css        (GtkSourceView              *view,
                                             const PangoFontDescription *font_desc,
                                             int                         font_scale,
-                                            double                      line_height);
+                                            double                      line_height,
+                                            bool                        rounded_find_bubbles);
 void  _ide_source_view_set_search_context  (IdeSourceView              *self,
                                             GtkSourceSearchContext     *search_context);
 
diff --git a/src/libide/sourceview/ide-source-view.c b/src/libide/sourceview/ide-source-view.c
index 9b5d2ff63..6dd73b180 100644
--- a/src/libide/sourceview/ide-source-view.c
+++ b/src/libide/sourceview/ide-source-view.c
@@ -48,6 +48,7 @@ enum {
   PROP_LINE_HEIGHT,
   PROP_OVERWRITE_BRACES,
   PROP_ZOOM_LEVEL,
+  PROP_ROUNDED_FIND_BUBBLES,
   N_PROPS,
 
   /* Property Overrides */
@@ -73,7 +74,8 @@ char *
 _ide_source_view_generate_css (GtkSourceView              *view,
                                const PangoFontDescription *font_desc,
                                int                         font_scale,
-                               double                      line_height)
+                               double                      line_height,
+                               bool                        rounded_find_bubbles)
 {
   g_autofree char *font_css = NULL;
   PangoFontDescription *scaled = NULL;
@@ -91,7 +93,8 @@ _ide_source_view_generate_css (GtkSourceView              *view,
 
   /* Get information for search bubbles */
   buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-  if ((scheme = gtk_source_buffer_get_style_scheme (GTK_SOURCE_BUFFER (buffer))) &&
+  if (rounded_find_bubbles &&
+      (scheme = gtk_source_buffer_get_style_scheme (GTK_SOURCE_BUFFER (buffer))) &&
       (style = gtk_source_style_scheme_get_style (scheme, "search-match")))
     {
       g_autofree char *background = NULL;
@@ -167,7 +170,8 @@ ide_source_view_update_css (IdeSourceView *self)
 
   g_assert (IDE_IS_SOURCE_VIEW (self));
 
-  if ((css = _ide_source_view_generate_css (GTK_SOURCE_VIEW (self), self->font_desc, self->font_scale, 
self->line_height)))
+  if ((css = _ide_source_view_generate_css (GTK_SOURCE_VIEW (self), self->font_desc, self->font_scale,
+                                            self->line_height, self->rounded_find_bubbles)))
     gtk_css_provider_load_from_data (self->css_provider, css, -1);
 }
 
@@ -656,6 +660,11 @@ ide_source_view_connect_buffer (IdeSourceView *self,
                            G_CALLBACK (ide_source_view_update_css),
                            self,
                            G_CONNECT_SWAPPED);
+  g_signal_connect_object (self,
+                           "notify::rounded-find-bubbles",
+                           G_CALLBACK (ide_source_view_update_css),
+                           self,
+                           G_CONNECT_SWAPPED);
 
   /* Insert matching braces features */
   g_signal_connect_object (buffer,
@@ -1264,6 +1273,10 @@ ide_source_view_get_property (GObject    *object,
       g_value_set_double (value, ide_source_view_get_zoom_level (self));
       break;
 
+    case PROP_ROUNDED_FIND_BUBBLES:
+      g_value_set_boolean (value, ide_source_view_get_rounded_find_bubbles (self));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -1305,6 +1318,10 @@ ide_source_view_set_property (GObject      *object,
       ide_source_view_set_overwrite_braces (self, g_value_get_boolean (value));
       break;
 
+    case PROP_ROUNDED_FIND_BUBBLES:
+      ide_source_view_set_rounded_find_bubbles (self, g_value_get_boolean (value));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -1375,6 +1392,13 @@ ide_source_view_class_init (IdeSourceViewClass *klass)
                          -G_MAXDOUBLE, G_MAXDOUBLE, 1.0,
                          (G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
 
+  properties [PROP_ROUNDED_FIND_BUBBLES] =
+    g_param_spec_boolean ("rounded-find-bubbles",
+                          "Rounded Find Bubbles",
+                          "Display find bubbles rounded",
+                          TRUE,
+                          (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
   g_object_class_install_properties (object_class, N_PROPS, properties);
 
   /**
@@ -1889,6 +1913,29 @@ ide_source_view_set_overwrite_braces (IdeSourceView *self,
     }
 }
 
+gboolean
+ide_source_view_get_rounded_find_bubbles (IdeSourceView *self)
+{
+  g_return_val_if_fail (IDE_IS_SOURCE_VIEW (self), FALSE);
+
+  return self->rounded_find_bubbles;
+}
+
+void
+ide_source_view_set_rounded_find_bubbles (IdeSourceView *self,
+                                          gboolean       rounded_find_bubbles)
+{
+  g_return_if_fail (IDE_IS_SOURCE_VIEW (self));
+
+  rounded_find_bubbles = !!rounded_find_bubbles;
+
+  if (rounded_find_bubbles != self->rounded_find_bubbles)
+    {
+      self->rounded_find_bubbles = rounded_find_bubbles;
+      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ROUNDED_FIND_BUBBLES]);
+    }
+}
+
 static int
 sort_by_priority (gconstpointer a,
                   gconstpointer b)
diff --git a/src/libide/sourceview/ide-source-view.h b/src/libide/sourceview/ide-source-view.h
index afab81370..22a0d1048 100644
--- a/src/libide/sourceview/ide-source-view.h
+++ b/src/libide/sourceview/ide-source-view.h
@@ -96,4 +96,10 @@ IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_overwrite_braces        (IdeSourceView              *self,
                                                                          gboolean                    
overwrite_braces);
 
+IDE_AVAILABLE_IN_ALL
+gboolean                    ide_source_view_get_rounded_find_bubbles    (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
+void                        ide_source_view_set_rounded_find_bubbles    (IdeSourceView              *self,
+                                                                         gboolean                    
rounded_find_bubbles);
+
 G_END_DECLS
diff --git a/src/plugins/editorui/gbp-editorui-preview.c b/src/plugins/editorui/gbp-editorui-preview.c
index 9d20af06a..ea0b368e4 100644
--- a/src/plugins/editorui/gbp-editorui-preview.c
+++ b/src/plugins/editorui/gbp-editorui-preview.c
@@ -131,12 +131,14 @@ gbp_editorui_preview_settings_changed_cb (GbpEditoruiPreview *self,
       g_autofree char *font_name = NULL;
       PangoFontDescription *font_desc;
       double line_height;
+      bool rounded_find_bubbles;
 
       line_height = g_settings_get_double (settings, "line-height");
       font_name = g_settings_get_string (settings, "font-name");
       font_desc = pango_font_description_from_string (font_name);
+      rounded_find_bubbles = g_settings_get_boolean (settings, "rounded-find-bubbles");
 
-      if ((css = _ide_source_view_generate_css (GTK_SOURCE_VIEW (self), font_desc, 1, line_height)))
+      if ((css = _ide_source_view_generate_css (GTK_SOURCE_VIEW (self), font_desc, 1, line_height, 
rounded_find_bubbles)))
         gtk_css_provider_load_from_data (self->css_provider, css, -1);
 
       g_clear_pointer (&font_desc, pango_font_description_free);
diff --git a/src/plugins/editorui/tweaks.ui b/src/plugins/editorui/tweaks.ui
index 53ebeb53f..ed466d6ac 100644
--- a/src/plugins/editorui/tweaks.ui
+++ b/src/plugins/editorui/tweaks.ui
@@ -349,6 +349,23 @@
                         </child>
                       </object>
                     </child>
+                    <child>
+                      <object class="IdeTweaksGroup">
+                        <property name="title" translatable="yes">Misc</property>
+                        <child>
+                          <object class="IdeTweaksSwitch" id="editor_rounded_find_bubbles">
+                            <property name="title" translatable="yes">Rounded Find Bubbles</property>
+                            <property name="subtitle" translatable="yes">Display text search matched with 
rounded corners</property>
+                            <property name="binding">
+                              <object class="IdeTweaksSetting">
+                                <property name="schema-id">org.gnome.builder.editor</property>
+                                <property name="schema-key">rounded-find-bubbles</property>
+                              </object>
+                            </property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
                   </object>
                 </child>
                 <child>


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