[gnome-builder/wip/gtk4-port: 1386/1774] plugins/markdown-preview: setup base-uri for preview




commit f964d9518d6c540f636680f6bed6cdaf537b45f4
Author: Christian Hergert <chergert redhat com>
Date:   Mon Jun 6 21:04:27 2022 -0700

    plugins/markdown-preview: setup base-uri for preview

 .../markdown-preview/gbp-markdown-html-generator.c | 29 +++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)
---
diff --git a/src/plugins/markdown-preview/gbp-markdown-html-generator.c 
b/src/plugins/markdown-preview/gbp-markdown-html-generator.c
index 51734f18f..0bcee2d9a 100644
--- a/src/plugins/markdown-preview/gbp-markdown-html-generator.c
+++ b/src/plugins/markdown-preview/gbp-markdown-html-generator.c
@@ -99,6 +99,33 @@ gbp_markdown_html_generator_generate_finish (IdeHtmlGenerator  *generator,
   return ide_task_propagate_pointer (IDE_TASK (result), error);
 }
 
+static gboolean
+file_to_base_uri (GBinding     *binding,
+                  const GValue *from,
+                  GValue       *to,
+                  gpointer      user_data)
+{
+  g_value_set_string (to, g_file_get_uri (g_value_get_object (from)));
+  return TRUE;
+}
+
+static void
+gbp_markdown_html_generator_set_buffer (GbpMarkdownHtmlGenerator *self,
+                                        IdeBuffer                *buffer)
+{
+  g_assert (GBP_IS_MARKDOWN_HTML_GENERATOR (self));
+  g_assert (!buffer || IDE_IS_BUFFER (buffer));
+
+  g_signal_group_set_target (self->buffer_signals, buffer);
+
+  if (IDE_IS_BUFFER (buffer))
+    g_object_bind_property_full (buffer, "file",
+                                 self, "base-uri",
+                                 G_BINDING_SYNC_CREATE,
+                                 file_to_base_uri,
+                                 NULL, NULL, NULL);
+}
+
 static void
 gbp_markdown_html_generator_dispose (GObject *object)
 {
@@ -139,7 +166,7 @@ gbp_markdown_html_generator_set_property (GObject      *object,
   switch (prop_id)
     {
     case PROP_BUFFER:
-      g_signal_group_set_target (self->buffer_signals, g_value_get_object (value));
+      gbp_markdown_html_generator_set_buffer (self, g_value_get_object (value));
       break;
 
     default:


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