static void ide_highlight_engine__unbind_buffer_cb (IdeHighlightEngine *self, EggSignalGroup *group) { GtkTextBuffer *text_buffer; GtkTextTagTable *tag_table; GtkTextIter begin; GtkTextIter end; GSList *iter; IDE_ENTRY; g_assert (IDE_IS_HIGHLIGHT_ENGINE (self)); g_assert (EGG_IS_SIGNAL_GROUP (group)); text_buffer = GTK_TEXT_BUFFER (self->buffer); if (self->work_timeout) { g_source_remove (self->work_timeout); self->work_timeout = 0; } g_object_set_qdata (G_OBJECT (text_buffer), gEngineQuark, NULL); tag_table = gtk_text_buffer_get_tag_table (text_buffer); gtk_text_buffer_delete_mark (text_buffer, self->invalid_begin); gtk_text_buffer_delete_mark (text_buffer, self->invalid_end); self->invalid_begin = NULL; self->invalid_end = NULL; gtk_text_buffer_get_bounds (text_buffer, &begin, &end); for (iter = self->private_tags; iter; iter = iter->next) { gtk_text_buffer_remove_tag (text_buffer, iter->data, &begin, &end); gtk_text_tag_table_remove (tag_table, iter->data); } g_clear_pointer (&self->private_tags, g_slist_free); for (iter = self->public_tags; iter; iter = iter->next) { gtk_text_buffer_remove_tag (text_buffer, iter->data, &begin, &end); gtk_text_tag_table_remove (tag_table, iter->data); } g_clear_pointer (&self->public_tags, g_slist_free); ide_clear_weak_pointer (&self->buffer); IDE_EXIT; }
static void gtkspell_free(GtkSpell *spell) { GtkTextBuffer *buffer; GtkTextTagTable *table; GtkTextIter start, end; buffer = gtk_text_view_get_buffer(spell->view); table = gtk_text_buffer_get_tag_table(buffer); gtk_text_buffer_get_bounds(buffer, &start, &end); gtk_text_buffer_remove_tag(buffer, spell->tag_highlight, &start, &end); gtk_text_tag_table_remove(table, spell->tag_highlight); gtk_text_buffer_delete_mark(buffer, spell->mark_insert); delete_aspell_speller(spell->speller); g_signal_handlers_disconnect_matched(spell->view, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, spell); g_signal_handlers_disconnect_matched(buffer, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, spell); g_free(spell); }
static void on_line_spacing_changed_cb (GbpLineSpacingBufferAddin *self, const gchar *key, GSettings *settings) { gint spacing; g_assert (GBP_IS_LINE_SPACING_BUFFER_ADDIN (self)); g_assert (IDE_IS_BUFFER (self->buffer)); g_assert (G_IS_SETTINGS (settings)); if (self->tag != NULL) { GtkTextTagTable *table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (self->buffer)); gtk_text_tag_table_remove (table, self->tag); self->tag = NULL; } spacing = g_settings_get_int (settings, "line-spacing"); if (spacing > 0) { self->tag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER (self->buffer), NULL, "pixels-above-lines", spacing, "pixels-below-lines", spacing, NULL); gbp_line_spacing_buffer_addin_apply (self); } }
static VALUE rg_remove(VALUE self, VALUE tag) { G_CHILD_REMOVE(self, tag); gtk_text_tag_table_remove(_SELF(self), RVAL2GTKTEXTTAG(tag)); return self; }
void e_buffer_tagger_disconnect (GtkTextView *textview) { GtkTextBuffer *buffer; GtkTextTagTable *tag_table; GtkTextTag *tag; g_return_if_fail (textview != NULL); g_return_if_fail (GTK_IS_TEXT_VIEW (textview)); buffer = gtk_text_view_get_buffer (textview); tag_table = gtk_text_buffer_get_tag_table (buffer); tag = gtk_text_tag_table_lookup (tag_table, E_BUFFER_TAGGER_LINK_TAG); /* if tag is not there, then it is not connected, thus claim */ g_return_if_fail (tag != NULL); gtk_text_tag_table_remove (tag_table, tag); set_state (buffer, E_BUFFER_TAGGER_STATE_NONE); g_signal_handlers_disconnect_by_func (buffer, G_CALLBACK (buffer_insert_text), NULL); g_signal_handlers_disconnect_by_func (buffer, G_CALLBACK (buffer_delete_range), NULL); g_signal_handlers_disconnect_by_func (buffer, G_CALLBACK (buffer_cursor_position), NULL); gtk_widget_set_has_tooltip (GTK_WIDGET (textview), FALSE); g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_query_tooltip), NULL); g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_key_press_event), NULL); g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_event_after), NULL); g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_motion_notify_event), NULL); g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_visibility_notify_event), NULL); }
static void remove_tag_cb (GbColorPickerDocumentMonitor *self, GtkTextTag *tag, GtkTextIter *start, GtkTextIter *end, GtkTextBuffer *buffer) { GtkTextTagTable *tag_table; g_autofree gchar *name = NULL; Position spos; Position epos; g_assert (GB_IS_COLOR_PICKER_DOCUMENT_MONITOR (self)); g_assert (GTK_IS_TEXT_BUFFER (buffer)); g_assert (GTK_IS_TEXT_TAG (tag)); position_save (&spos, start); position_save (&epos, end); tag_table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (self->buffer)); g_object_get (G_OBJECT (tag), "name", &name, NULL); if (!dzl_str_empty0 (name) && g_str_has_prefix (name, COLOR_TAG_PREFIX) && gtk_text_tag_table_lookup (tag_table, name)) gtk_text_tag_table_remove (tag_table, tag); position_restore (&spos, buffer, start); position_restore (&epos, buffer, end); }
void GtkTextTagTable_::remove(Php::Parameters ¶meters) { GtkTextTag *tag; if(parameters.size() > 0) { Php::Value object_tag = parameters[0]; GtkTextTag_ *phpgtk_tag = (GtkTextTag_ *)object_tag.implementation(); tag = (phpgtk_tag->get_tag()); } gtk_text_tag_table_remove (GTK_TEXT_TAG_TABLE(instance), tag); }
/*# @method remove GtkTextTagTable @brief Remove a tag from the table. @param tag a GtkTextTag */ FALCON_FUNC TextTagTable::remove( VMARG ) { Item* i_tag = vm->param( 0 ); #ifndef NO_PARAMETER_CHECK if ( !i_tag || i_tag->isNil() || !i_tag->isObject() || !IS_DERIVED( i_tag, GtkTextTag ) ) throw_inv_params( "GtkTextTag" ); #endif GtkTextTag* tag = (GtkTextTag*) COREGOBJECT( i_tag )->getObject(); MYSELF; GET_OBJ( self ); gtk_text_tag_table_remove( (GtkTextTagTable*)_obj, tag ); }
static GdkAtom setup_buffer (GtkTextBuffer *buffer) { const guint tlen = strlen (example_text); const guint tcount = 17; GtkTextTag **tags; GtkTextTagTable *ttable = gtk_text_buffer_get_tag_table (buffer); GSList *node, *slist = NULL; GdkAtom atom; guint i; tags = g_malloc (sizeof (GtkTextTag *) * tcount); /* cleanup */ gtk_text_buffer_set_text (buffer, "", 0); gtk_text_tag_table_foreach (ttable, text_tag_enqueue, &slist); for (node = slist; node; node = node->next) gtk_text_tag_table_remove (ttable, node->data); g_slist_free (slist); /* create new tags */ for (i = 0; i < tcount; i++) { char *s = g_strdup_printf ("tag%u", i); tags[i] = gtk_text_buffer_create_tag (buffer, s, "weight", quick_rand32() >> 31 ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, "style", quick_rand32() >> 31 ? PANGO_STYLE_OBLIQUE : PANGO_STYLE_NORMAL, "underline", quick_rand32() >> 31, NULL); g_free (s); } /* assign text and tags */ gtk_text_buffer_set_text (buffer, example_text, -1); for (i = 0; i < tcount * 5; i++) { gint a = quick_rand32() % tlen, b = quick_rand32() % tlen; GtkTextIter start, end; gtk_text_buffer_get_iter_at_offset (buffer, &start, MIN (a, b)); gtk_text_buffer_get_iter_at_offset (buffer, &end, MAX (a, b)); gtk_text_buffer_apply_tag (buffer, tags[i % tcount], &start, &end); } /* return serialization format */ atom = gtk_text_buffer_register_deserialize_tagset (buffer, NULL); gtk_text_buffer_deserialize_set_can_create_tags (buffer, atom, TRUE); g_free (tags); return atom; }
static void destroy_display_item (gpointer data) { GcrDisplayItem *item = data; GtkTextTagTable *tags; GcrDisplayView *self; g_assert (item); g_assert (GCR_IS_DISPLAY_VIEW (item->display_view)); self = item->display_view; tags = gtk_text_buffer_get_tag_table (self->pv->buffer); gtk_text_tag_table_remove (tags, item->field_tag); gtk_text_tag_table_remove (tags, item->details_tag); g_object_unref (item->field_tag); g_object_unref (item->details_tag); if (item->pixbuf) g_object_unref (item->pixbuf); item->pixbuf = NULL; g_assert (item->details_widget); g_object_unref (item->details_widget); item->details_widget = NULL; g_return_if_fail (!gtk_text_mark_get_deleted (item->beginning)); gtk_text_buffer_delete_mark (self->pv->buffer, item->beginning); g_object_unref (item->beginning); g_return_if_fail (!gtk_text_mark_get_deleted (item->ending)); gtk_text_buffer_delete_mark (self->pv->buffer, item->ending); g_object_unref (item->ending); g_free (item); }
static void highlight_remove_tags (guint id) { guint n; for (n = 0; n < HIGHLIGHT_MATCHES; n++) { GtkTextTag *tag; char *name; name = mangle_name (id, n); tag = gtk_text_tag_table_lookup (highlight_tag_table, name); g_assert (tag != NULL); gtk_text_tag_table_remove (highlight_tag_table, tag); debug ("removed tag %s\n", name); next_priority--; } }
/** * \fn void set_tags(GtkTextBuffer *buffer) * \brief This function creates a tag for each color * which is in the GdkColor table */ void set_tags(GtkTextBuffer *buffer) { GtkTextIter start, end; GtkTextTagTable *tag_table = gtk_text_buffer_get_tag_table(buffer); gtk_text_buffer_get_start_iter(buffer, &start); gtk_text_buffer_get_end_iter(buffer, &end); GtkTextTag *tag; int i; for(i = 0; i< NB_TYPES; i++) { tag = gtk_text_tag_table_lookup(tag_table, type_table[i]); if(tag) gtk_text_tag_table_remove(tag_table, tag); gtk_text_buffer_create_tag(buffer, type_table[i], "foreground", gdk_color_to_string(&color_table[i]), NULL); } }
static void gbp_spell_buffer_addin_unload (IdeBufferAddin *addin, IdeBuffer *buffer) { GbpSpellBufferAddin *self = (GbpSpellBufferAddin *)addin; IDE_ENTRY; g_assert (GBP_IS_SPELL_BUFFER_ADDIN (self)); g_assert (IDE_IS_BUFFER (buffer)); g_signal_handlers_disconnect_by_func (buffer, G_CALLBACK (update_style_scheme), self); gtk_text_tag_table_remove (gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (buffer)), self->misspelled_tag); self->misspelled_tag = NULL; self->buffer = NULL; gbp_spell_buffer_addin_apply (self); IDE_EXIT; }
static void gedit_automatic_spell_checker_free_internal (GeditAutomaticSpellChecker *spell) { GtkTextTagTable *table; GtkTextIter start, end; GSList *list; g_return_if_fail (spell != NULL); table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (spell->doc)); if (table != NULL && spell->tag_highlight != NULL) { gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (spell->doc), &start, &end); gtk_text_buffer_remove_tag (GTK_TEXT_BUFFER (spell->doc), spell->tag_highlight, &start, &end); g_signal_handlers_disconnect_matched (G_OBJECT (table), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, spell); gtk_text_tag_table_remove (table, spell->tag_highlight); } g_signal_handlers_disconnect_matched (G_OBJECT (spell->doc), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, spell); g_signal_handlers_disconnect_matched (G_OBJECT (spell->spell_checker), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, spell); g_object_unref (spell->spell_checker); list = spell->views; while (list != NULL) { GeditView *view = GEDIT_VIEW (list->data); g_signal_handlers_disconnect_matched (G_OBJECT (view), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, spell); g_signal_handlers_disconnect_matched (G_OBJECT (view), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, spell); list = g_slist_next (list); } g_slist_free (spell->views); g_free (spell); }
/* Process plain text in the font table (font names separated by semicolons) */ static void font_table_text(ParserContext *ctx) { gchar *name, *semicolon, *tagname, *fontstring = NULL; FontProperties *fontprop; FontTableState *state = (FontTableState *)get_state(ctx); GtkTextTag *tag; static gchar *font_suggestions[] = { "Sans", /* Default font for \fnil */ "Serif", /* \froman */ "Sans", /* \fswiss */ "Monospace", /* \fmodern */ "Script", /* \fscript */ NULL, /* \fdecor */ NULL, /* \ftech */ NULL /* \fbidi */ }; name = g_strdup(ctx->text->str); semicolon = strchr(name, ';'); if(!semicolon) { gchar *newname = g_strconcat(state->name, name, NULL); g_free(state->name); state->name = newname; g_string_truncate(ctx->text, 0); return; } g_string_assign(ctx->text, semicolon + 1); /* Leave the text after the semicolon in the buffer */ *semicolon = '\0'; fontprop = g_slice_new0(FontProperties); fontprop->index = state->index; fontprop->codepage = state->codepage; fontprop->font_name = g_strconcat(state->name, name, NULL); ctx->font_table = g_slist_prepend(ctx->font_table, fontprop); /* Add the tag to the buffer right now instead of when the font is used, since any font might be declared the default font; remove any previous font with this font table index first */ tagname = g_strdup_printf("osxcart-rtf-font-%i", state->index); if((tag = gtk_text_tag_table_lookup(ctx->tags, tagname))) gtk_text_tag_table_remove(ctx->tags, tag); tag = gtk_text_tag_new(tagname); if(fontprop->font_name && font_suggestions[state->family]) fontstring = g_strconcat(fontprop->font_name, ",", font_suggestions[state->family], NULL); else if(fontprop->font_name) fontstring = g_strdup(fontprop->font_name); else if(font_suggestions[state->family]) fontstring = g_strdup(font_suggestions[state->family]); if(fontstring) { g_object_set(tag, "family", fontstring, "family-set", TRUE, NULL); g_free(fontstring); } gtk_text_tag_table_add(ctx->tags, tag); g_free(tagname); g_free(state->name); state->index = 0; state->family = FONT_FAMILY_NIL; state->codepage = -1; state->name = g_strdup(""); }
static void gb_color_picker_document_monitor_uncolorize (GbColorPickerDocumentMonitor *self, GtkTextBuffer *buffer, GtkTextIter *begin, GtkTextIter *end) { GtkTextTagTable *tag_table; GtkTextIter real_begin; GtkTextIter real_end; g_return_if_fail (GB_IS_COLOR_PICKER_DOCUMENT_MONITOR (self)); g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer)); tag_table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (buffer)); if (begin == NULL && end == NULL) { g_autoptr(GPtrArray) taglist = g_ptr_array_new_with_free_func (g_free); gtk_text_tag_table_foreach (tag_table, (GtkTextTagTableForeach)collect_tag_names, taglist); for (guint n = 0; n < taglist->len; ++n) gtk_text_tag_table_remove (tag_table, g_ptr_array_index (taglist, n)); return; } if (begin == NULL) gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &real_begin); else real_begin = *begin; if (end == NULL) gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (buffer), &real_end); else real_end = *end; while (TRUE) { g_autoptr(GSList) tags = NULL; GtkTextTag *color_tag = NULL; tags = gtk_text_iter_get_toggled_tags (&real_begin, TRUE); for (const GSList *l = tags; l != NULL; l = l->next) { g_autofree gchar *name = NULL; GtkTextTag *tag = l->data; g_object_get (G_OBJECT (tag), "name", &name, NULL); if (name != NULL && g_str_has_prefix (name, COLOR_TAG_PREFIX)) { color_tag = tag; break; } } if (color_tag != NULL) { gtk_text_iter_forward_to_tag_toggle (&real_begin, color_tag); gtk_text_tag_table_remove (tag_table, color_tag); } if (!gtk_text_iter_forward_to_tag_toggle (&real_begin, NULL)) break; if (gtk_text_iter_compare (&real_begin, &real_end) != -1) break; } }