[gtksourceview/wip/chergert/hoverers] make hover delay a property



commit 69f6dd18810b36dad36b73d184eef3640b300cd0
Author: Christian Hergert <chergert redhat com>
Date:   Tue Mar 9 23:26:18 2021 -0800

    make hover delay a property

 gtksourceview/gtksourcehover.c | 63 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 62 insertions(+), 1 deletion(-)
---
diff --git a/gtksourceview/gtksourcehover.c b/gtksourceview/gtksourcehover.c
index 9d5ad2cc..1b822ded 100644
--- a/gtksourceview/gtksourcehover.c
+++ b/gtksourceview/gtksourcehover.c
@@ -30,7 +30,7 @@
 #include "gtksourcesignalgroup-private.h"
 #include "gtksourceview-private.h"
 
-#define DEFAULT_HOVER_DELAY 250
+#define DEFAULT_HOVER_DELAY 500
 
 struct _GtkSourceHover
 {
@@ -50,6 +50,14 @@ struct _GtkSourceHover
 
 G_DEFINE_TYPE (GtkSourceHover, gtk_source_hover, G_TYPE_OBJECT)
 
+enum {
+       PROP_0,
+       PROP_HOVER_DELAY,
+       N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
 static gboolean
 gtk_source_hover_get_bounds (GtkSourceHover *self,
                              GtkTextIter    *begin,
@@ -233,6 +241,42 @@ gtk_source_hover_finalize (GObject *object)
        G_OBJECT_CLASS (gtk_source_hover_parent_class)->finalize (object);
 }
 
+static void
+gtk_source_hover_get_property (GObject    *object,
+                               guint       prop_id,
+                               GValue     *value,
+                               GParamSpec *pspec)
+{
+       GtkSourceHover *self = GTK_SOURCE_HOVER (object);
+
+       switch (prop_id) {
+       case PROP_HOVER_DELAY:
+               g_value_set_uint (value, self->hover_delay);
+               break;
+
+       default:
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       }
+}
+
+static void
+gtk_source_hover_set_property (GObject      *object,
+                               guint         prop_id,
+                               const GValue *value,
+                               GParamSpec   *pspec)
+{
+       GtkSourceHover *self = GTK_SOURCE_HOVER (object);
+
+       switch (prop_id) {
+       case PROP_HOVER_DELAY:
+               self->hover_delay = g_value_get_uint (value);
+               break;
+
+       default:
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       }
+}
+
 static void
 gtk_source_hover_class_init (GtkSourceHoverClass *klass)
 {
@@ -240,6 +284,23 @@ gtk_source_hover_class_init (GtkSourceHoverClass *klass)
 
        object_class->dispose = gtk_source_hover_dispose;
        object_class->finalize = gtk_source_hover_finalize;
+       object_class->get_property = gtk_source_hover_get_property;
+       object_class->set_property = gtk_source_hover_set_property;
+
+       /**
+        * GtkSourceHover:hover-delay:
+        *
+        * The "hover-delay" property contains the number of milliseconds to
+        * delay before showing the hover assistant.
+        */
+       properties [PROP_HOVER_DELAY] =
+               g_param_spec_uint ("hover-delay",
+                                  "Hover Delay",
+                                  "Number of milliseconds to delay before showing assistant",
+                                  1, 5000, DEFAULT_HOVER_DELAY,
+                                  (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+       g_object_class_install_properties (object_class, N_PROPS, properties);
 }
 
 static void


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