[gtksourceview/wip/chergert/hoverers] wire hover into sourceview widget



commit 3ea68ef31994731bea2d2cf4a276a528464410cf
Author: Christian Hergert <chergert redhat com>
Date:   Mon Mar 8 16:19:14 2021 -0800

    wire hover into sourceview widget

 gtksourceview/gtksourceview.c | 33 +++++++++++++++++++++++++++++++++
 gtksourceview/gtksourceview.h |  2 ++
 2 files changed, 35 insertions(+)
---
diff --git a/gtksourceview/gtksourceview.c b/gtksourceview/gtksourceview.c
index e4292dd2..e2abe64b 100644
--- a/gtksourceview/gtksourceview.c
+++ b/gtksourceview/gtksourceview.c
@@ -39,6 +39,7 @@
 #include "gtksourcegutter-private.h"
 #include "gtksourcegutterrendererlines-private.h"
 #include "gtksourcegutterrenderermarks-private.h"
+#include "gtksourcehover-private.h"
 #include "gtksource-enumtypes.h"
 #include "gtksourcemark.h"
 #include "gtksourcemarkattributes.h"
@@ -189,6 +190,7 @@ typedef struct
        GdkRGBA right_margin_overlay_color;
 
        GtkSourceCompletion *completion;
+       GtkSourceHover *hover;
 
        guint right_margin_pos;
        gint cached_right_margin_pos;
@@ -1455,6 +1457,12 @@ gtk_source_view_dispose (GObject *object)
                g_clear_object (&priv->completion);
        }
 
+       if (priv->hover != NULL)
+       {
+               g_object_run_dispose (G_OBJECT (priv->hover));
+               g_clear_object (&priv->hover);
+       }
+
        g_clear_object (&priv->style_scheme);
        g_clear_object (&priv->space_drawer);
 
@@ -4805,6 +4813,31 @@ gtk_source_view_get_completion (GtkSourceView *view)
        return priv->completion;
 }
 
+/**
+ * gtk_source_view_get_hover:
+ * @view: a #GtkSourceView.
+ *
+ * Gets the #GtkSourceHover associated with @view. The returned object is
+ * guaranteed to be the same for the lifetime of @view. Each #GtkSourceView
+ * object has a different #GtkSourceHover.
+ *
+ * Returns: (transfer none): a #GtkSourceHover associated with @view.
+ */
+GtkSourceHover *
+gtk_source_view_get_hover (GtkSourceView *view)
+{
+       GtkSourceViewPrivate *priv = gtk_source_view_get_instance_private (view);
+
+       g_return_val_if_fail (GTK_SOURCE_IS_VIEW (view), NULL);
+
+       if (priv->hover == NULL)
+       {
+               priv->hover = _gtk_source_hover_new (view);
+       }
+
+       return priv->hover;
+}
+
 /**
  * gtk_source_view_get_gutter:
  * @view: a #GtkSourceView.
diff --git a/gtksourceview/gtksourceview.h b/gtksourceview/gtksourceview.h
index 4b448722..ab154a39 100644
--- a/gtksourceview/gtksourceview.h
+++ b/gtksourceview/gtksourceview.h
@@ -195,6 +195,8 @@ guint                           gtk_source_view_get_visual_column
                                                                                    const GtkTextIter         
     *iter);
 GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletion            *gtk_source_view_get_completion                    (GtkSourceView             
     *view);
+GTK_SOURCE_AVAILABLE_IN_5_0
+GtkSourceHover                 *gtk_source_view_get_hover                         (GtkSourceView             
     *view);
 GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceGutter                *gtk_source_view_get_gutter                        (GtkSourceView             
     *view,
                                                                                    GtkTextWindowType         
      window_type);


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