[gnome-builder] highlight-engine: fixups from adding pause support
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] highlight-engine: fixups from adding pause support
- Date: Fri, 21 Jul 2017 23:15:51 +0000 (UTC)
commit a0ec44cd3b9baa8cf44b291adbd0da862b676cf8
Author: Christian Hergert <chergert redhat com>
Date: Fri Jul 21 16:15:14 2017 -0700
highlight-engine: fixups from adding pause support
We need to update some values when unpausing as those signals
could have come in while we paused the signal group.
libide/highlighting/ide-highlight-engine.c | 74 +++++++++++++---------------
1 files changed, 35 insertions(+), 39 deletions(-)
---
diff --git a/libide/highlighting/ide-highlight-engine.c b/libide/highlighting/ide-highlight-engine.c
index 3363242..223ef69 100644
--- a/libide/highlighting/ide-highlight-engine.c
+++ b/libide/highlighting/ide-highlight-engine.c
@@ -650,7 +650,7 @@ ide_highlight_engine__bind_buffer_cb (IdeHighlightEngine *self,
g_assert (IDE_IS_BUFFER (buffer));
g_assert (DZL_IS_SIGNAL_GROUP (group));
- ide_set_weak_pointer (&self->buffer, buffer);
+ self->buffer = buffer;
g_object_set_qdata (G_OBJECT (buffer), engineQuark, self);
@@ -659,6 +659,9 @@ ide_highlight_engine__bind_buffer_cb (IdeHighlightEngine *self,
self->invalid_begin = gtk_text_buffer_create_mark (text_buffer, NULL, &begin, TRUE);
self->invalid_end = gtk_text_buffer_create_mark (text_buffer, NULL, &end, FALSE);
+ ide_highlight_engine__notify_style_scheme_cb (self, NULL, buffer);
+ ide_highlight_engine__notify_language_cb (self, NULL, buffer);
+
ide_highlight_engine_reload (self);
IDE_EXIT;
@@ -713,7 +716,7 @@ ide_highlight_engine__unbind_buffer_cb (IdeHighlightEngine *self,
}
g_clear_pointer (&self->public_tags, g_slist_free);
- ide_clear_weak_pointer (&self->buffer);
+ self->buffer = NULL;
IDE_EXIT;
}
@@ -725,9 +728,7 @@ ide_highlight_engine_set_buffer (IdeHighlightEngine *self,
g_assert (IDE_IS_HIGHLIGHT_ENGINE (self));
g_assert (!buffer || GTK_IS_TEXT_BUFFER (buffer));
- /*
- * We can get GtkSourceBuffer intermittently here.
- */
+ /* We can get GtkSourceBuffer intermittently here. */
if (!buffer || IDE_IS_BUFFER (buffer))
{
dzl_signal_group_set_target (self->signal_group, buffer);
@@ -760,30 +761,15 @@ ide_highlight_engine__notify_extension (IdeHighlightEngine *self,
GParamSpec *pspec,
IdeExtensionAdapter *adapter)
{
+ IdeHighlighter *highlighter;
+
g_assert (IDE_IS_HIGHLIGHT_ENGINE (self));
g_assert (IDE_IS_EXTENSION_ADAPTER (adapter));
- ide_highlight_engine_set_highlighter (self, ide_extension_adapter_get_extension (adapter));
-}
-
-static void
-ide_highlight_engine_constructed (GObject *object)
-{
- IdeHighlightEngine *self = (IdeHighlightEngine *)object;
-
- G_OBJECT_CLASS (ide_highlight_engine_parent_class)->constructed (object);
-
- self->extension = ide_extension_adapter_new (ide_object_get_context (IDE_OBJECT (self)),
- NULL,
- IDE_TYPE_HIGHLIGHTER,
- "Highlighter-Languages",
- NULL);
+ highlighter = ide_extension_adapter_get_extension (adapter);
+ g_return_if_fail (!highlighter || IDE_IS_HIGHLIGHTER (highlighter));
- g_signal_connect_object (self->extension,
- "notify::extension",
- G_CALLBACK (ide_highlight_engine__notify_extension),
- self,
- G_CONNECT_SWAPPED);
+ ide_highlight_engine_set_highlighter (self, highlighter);
}
static void
@@ -791,22 +777,12 @@ ide_highlight_engine_dispose (GObject *object)
{
IdeHighlightEngine *self = (IdeHighlightEngine *)object;
- ide_highlight_engine_set_buffer (self, NULL);
-
- G_OBJECT_CLASS (ide_highlight_engine_parent_class)->dispose (object);
-}
-
-static void
-ide_highlight_engine_finalize (GObject *object)
-{
- IdeHighlightEngine *self = (IdeHighlightEngine *)object;
-
+ g_clear_object (&self->signal_group);
g_clear_object (&self->extension);
g_clear_object (&self->highlighter);
g_clear_object (&self->settings);
- g_clear_object (&self->signal_group);
- G_OBJECT_CLASS (ide_highlight_engine_parent_class)->finalize (object);
+ G_OBJECT_CLASS (ide_highlight_engine_parent_class)->dispose (object);
}
static void
@@ -856,9 +832,7 @@ ide_highlight_engine_class_init (IdeHighlightEngineClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->constructed = ide_highlight_engine_constructed;
object_class->dispose = ide_highlight_engine_dispose;
- object_class->finalize = ide_highlight_engine_finalize;
object_class->get_property = ide_highlight_engine_get_property;
object_class->set_property = ide_highlight_engine_set_property;
@@ -929,6 +903,18 @@ ide_highlight_engine_init (IdeHighlightEngine *self)
G_CALLBACK (ide_highlight_engine_settings_changed),
self,
G_CONNECT_SWAPPED);
+
+ self->extension = ide_extension_adapter_new (ide_object_get_context (IDE_OBJECT (self)),
+ NULL,
+ IDE_TYPE_HIGHLIGHTER,
+ "Highlighter-Languages",
+ NULL);
+
+ g_signal_connect_object (self->extension,
+ "notify::extension",
+ G_CALLBACK (ide_highlight_engine__notify_extension),
+ self,
+ G_CONNECT_SWAPPED);
}
IdeHighlightEngine *
@@ -1084,6 +1070,16 @@ void
ide_highlight_engine_unpause (IdeHighlightEngine *self)
{
g_return_if_fail (IDE_IS_HIGHLIGHT_ENGINE (self));
+ g_return_if_fail (self->signal_group != NULL);
dzl_signal_group_unblock (self->signal_group);
+
+ if (self->buffer != NULL)
+ {
+ /* Notify of some blocked signals */
+ ide_highlight_engine__notify_style_scheme_cb (self, NULL, self->buffer);
+ ide_highlight_engine__notify_language_cb (self, NULL, self->buffer);
+
+ ide_highlight_engine_reload (self);
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]