[gnome-builder] highlighter: simplify _ide_highlighter_set_highlighter_engine()
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] highlighter: simplify _ide_highlighter_set_highlighter_engine()
- Date: Mon, 11 May 2015 21:11:33 +0000 (UTC)
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]