static void ide_xml_highlighter_real_set_engine (IdeHighlighter *highlighter, IdeHighlightEngine *engine) { IdeXmlHighlighter *self = (IdeXmlHighlighter *)highlighter; IdeBuffer *buffer = NULL; g_return_if_fail (IDE_IS_XML_HIGHLIGHTER (self)); g_return_if_fail (IDE_IS_HIGHLIGHT_ENGINE (engine)); if (ide_set_weak_pointer (&self->engine, engine)) { buffer = ide_highlight_engine_get_buffer (engine); /* * TODO: technically we should connect/disconnect when the * highlighter changes. but in practice, it is set only * once. */ g_signal_connect_object (engine, "notify::buffer", G_CALLBACK (ide_xml_highlighter_on_buffer_set), self, G_CONNECT_SWAPPED); } ide_xml_highlighter_set_buffer (self, buffer); }
static void ide_xml_highlighter_on_buffer_set (IdeXmlHighlighter *self, GParamSpec *pspec, IdeHighlightEngine *engine) { IdeBuffer *buffer; g_assert (IDE_IS_XML_HIGHLIGHTER (self)); g_assert (IDE_IS_HIGHLIGHT_ENGINE (engine)); buffer = ide_highlight_engine_get_buffer (engine); ide_xml_highlighter_set_buffer (self, buffer); }
static void ide_highlight_engine_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { IdeHighlightEngine *self = IDE_HIGHLIGHT_ENGINE (object); switch (prop_id) { case PROP_BUFFER: g_value_set_object (value, ide_highlight_engine_get_buffer (self)); break; case PROP_HIGHLIGHTER: g_value_set_object (value, ide_highlight_engine_get_highlighter (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } }