From e856ca95522af1b28f7979fcef28f03f85a56c3f Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 2 Apr 2010 15:19:27 +0200 Subject: [PATCH] app: handle kerning tags in the same way as baseline, size and font --- app/widgets/gimptextstyleeditor.c | 45 ++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/app/widgets/gimptextstyleeditor.c b/app/widgets/gimptextstyleeditor.c index f52b478cab..25bd8777ad 100644 --- a/app/widgets/gimptextstyleeditor.c +++ b/app/widgets/gimptextstyleeditor.c @@ -98,7 +98,7 @@ static void gimp_text_style_editor_set_baseline (GimpTextStyleEditor *e static void gimp_text_style_editor_kerning_changed (GtkAdjustment *adjustment, GimpTextStyleEditor *editor); static void gimp_text_style_editor_set_kerning (GimpTextStyleEditor *editor, - gint kerning); + GtkTextTag *kerning_tag); static void gimp_text_style_editor_update (GimpTextStyleEditor *editor); static gboolean gimp_text_style_editor_update_idle (GimpTextStyleEditor *editor); @@ -737,8 +737,15 @@ gimp_text_style_editor_kerning_changed (GtkAdjustment *adjustment, static void gimp_text_style_editor_set_kerning (GimpTextStyleEditor *editor, - gint kerning) + GtkTextTag *kerning_tag) { + gint kerning = 0; + + if (kerning_tag) + g_object_get (kerning_tag, + "rise", &kerning, /* FIXME */ + NULL); + g_signal_handlers_block_by_func (editor->kerning_adjustment, gimp_text_style_editor_kerning_changed, editor); @@ -788,7 +795,7 @@ gimp_text_style_editor_update_idle (GimpTextStyleEditor *editor) GtkTextTag *font_tag = NULL; GtkTextTag *size_tag = NULL; GtkTextTag *baseline_tag = NULL; - gint kerning; + GtkTextTag *kerning_tag = NULL; gtk_text_buffer_get_selection_bounds (buffer, &start, &end); gtk_text_iter_order (&start, &end); @@ -802,11 +809,14 @@ gimp_text_style_editor_update_idle (GimpTextStyleEditor *editor) } /* and get some initial values */ - font_tag = gimp_text_buffer_get_iter_font (editor->buffer, &start, NULL); - size_tag = gimp_text_buffer_get_iter_size (editor->buffer, &start, NULL); - baseline_tag = gimp_text_buffer_get_iter_baseline (editor->buffer, &start, - NULL); - gimp_text_buffer_get_iter_kerning (editor->buffer, &start, &kerning); + font_tag = gimp_text_buffer_get_iter_font (editor->buffer, + &start, NULL); + size_tag = gimp_text_buffer_get_iter_size (editor->buffer, + &start, NULL); + baseline_tag = gimp_text_buffer_get_iter_baseline (editor->buffer, + &start, NULL); + kerning_tag = gimp_text_buffer_get_iter_kerning (editor->buffer, + &start, NULL); for (iter = start; gtk_text_iter_in_range (&iter, &start, &end); @@ -868,12 +878,12 @@ gimp_text_style_editor_update_idle (GimpTextStyleEditor *editor) if (! kerning_differs) { - gint tag_kerning; + GtkTextTag *tag; - gimp_text_buffer_get_iter_kerning (editor->buffer, &iter, - &tag_kerning); + tag = gimp_text_buffer_get_iter_kerning (editor->buffer, &iter, + NULL); - if (kerning != tag_kerning) + if (tag != kerning_tag) kerning_differs = TRUE; } @@ -896,7 +906,7 @@ gimp_text_style_editor_update_idle (GimpTextStyleEditor *editor) if (kerning_differs) gtk_entry_set_text (GTK_ENTRY (editor->kerning_spinbutton), ""); else - gimp_text_style_editor_set_kerning (editor, kerning); + gimp_text_style_editor_set_kerning (editor, kerning_tag); } else { @@ -905,7 +915,6 @@ gimp_text_style_editor_update_idle (GimpTextStyleEditor *editor) GSList *tags_on; GSList *tags_off; GList *list; - gint value; gtk_text_buffer_get_iter_at_mark (buffer, &cursor, gtk_text_buffer_get_insert (buffer)); @@ -974,8 +983,12 @@ gimp_text_style_editor_update_idle (GimpTextStyleEditor *editor) g_slist_find (tags_off, tag)); } - gimp_text_buffer_get_iter_kerning (editor->buffer, &cursor, &value); - gimp_text_style_editor_set_kerning (editor, value); + { + GtkTextTag *tag; + + tag = gimp_text_buffer_get_iter_kerning (editor->buffer, &cursor, NULL); + gimp_text_style_editor_set_kerning (editor, tag); + } g_slist_free (tags); g_slist_free (tags_on);