[gnome-builder] highlighter: simplify _ide_highlighter_set_highlighter_engine()



commit 438ba607cf8b65d83fd94e87fc630c157548fdfe
Author: Christian Hergert <christian hergert me>
Date:   Mon May 11 14:10:58 2015 -0700

    highlighter: simplify _ide_highlighter_set_highlighter_engine()
    
     * ide_set_weak_pointer() will clear first
     * "highlight-engine" should be read-only
     * dispose is guaranteed to be called before finalize

 libide/ide-highlighter.c |   67 ++++++---------------------------------------
 1 files changed, 9 insertions(+), 58 deletions(-)
---
diff --git a/libide/ide-highlighter.c b/libide/ide-highlighter.c
index 4ab74b6..702178b 100644
--- a/libide/ide-highlighter.c
+++ b/libide/ide-highlighter.c
@@ -33,31 +33,8 @@ enum {
 
 static GParamSpec *gParamSpecs [LAST_PROP];
 
-
 G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (IdeHighlighter, ide_highlighter, IDE_TYPE_OBJECT)
 
-
-static void
-ide_highlighter_set_highlight_engine (IdeHighlighter     *self,
-                                      IdeHighlightEngine *engine)
-{
-  IdeHighlighterPrivate *priv = ide_highlighter_get_instance_private (self);
-
-  g_return_if_fail (IDE_IS_HIGHLIGHTER (self));
-  g_return_if_fail (IDE_IS_HIGHLIGHT_ENGINE (engine));
-
-  if (priv->engine != engine)
-    {
-      if (priv->engine != NULL)
-        ide_clear_weak_pointer (&priv->engine);
-
-      if (engine != NULL)
-        ide_set_weak_pointer (&priv->engine, engine);
-
-      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_HIGHLIGHT_ENGINE]);
-    }
-}
-
 /**
  * ide_highlighter_get_highlight_engine:
  * @self: A #IdeHighlighter.
@@ -97,43 +74,14 @@ ide_highlighter_get_property (GObject    *object,
 }
 
 static void
-ide_highlighter_set_property (GObject      *object,
-                              guint         prop_id,
-                              const GValue *value,
-                              GParamSpec   *pspec)
-{
-  IdeHighlighter *self = IDE_HIGHLIGHTER (object);
-
-  switch (prop_id)
-    {
-    case PROP_HIGHLIGHT_ENGINE:
-      ide_highlighter_set_highlight_engine (self, g_value_get_object (value));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-    }
-}
-
-static void
 ide_highlighter_dispose (GObject *object)
 {
   IdeHighlighter *self = (IdeHighlighter *)object;
-
-  ide_highlighter_set_highlight_engine (self, NULL);
-
-  G_OBJECT_CLASS (ide_highlighter_parent_class)->dispose (object);
-}
-
-static void
-ide_highlighter_finalize (GObject *object)
-{
-  IdeHighlighter *self = (IdeHighlighter *)object;
   IdeHighlighterPrivate *priv = ide_highlighter_get_instance_private (self);
 
   ide_clear_weak_pointer (&priv->engine);
 
-  G_OBJECT_CLASS (ide_highlighter_parent_class)->finalize (object);
+  G_OBJECT_CLASS (ide_highlighter_parent_class)->dispose (object);
 }
 
 static void
@@ -143,19 +91,16 @@ ide_highlighter_class_init (IdeHighlighterClass *klass)
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->dispose = ide_highlighter_dispose;
-  object_class->finalize = ide_highlighter_finalize;
   object_class->get_property = ide_highlighter_get_property;
-  object_class->set_property = ide_highlighter_set_property;
 
   gParamSpecs [PROP_HIGHLIGHT_ENGINE] =
     g_param_spec_object ("highlight-engine",
                          _("Highlight engine"),
                          _("The highlight engine of this highlighter."),
                          IDE_TYPE_HIGHLIGHT_ENGINE,
-                         (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+                         (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_properties (object_class, LAST_PROP, gParamSpecs);
-
 }
 
 static void
@@ -167,7 +112,13 @@ void
 _ide_highlighter_set_highlighter_engine (IdeHighlighter     *self,
                                          IdeHighlightEngine *engine)
 {
-  ide_highlighter_set_highlight_engine (self, engine);
+  IdeHighlighterPrivate *priv = ide_highlighter_get_instance_private (self);
+
+  g_return_if_fail (IDE_IS_HIGHLIGHTER (self));
+  g_return_if_fail (IDE_IS_HIGHLIGHT_ENGINE (engine));
+
+  if (ide_set_weak_pointer (&priv->engine, engine))
+    g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_HIGHLIGHT_ENGINE]);
 }
 
 /**


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