diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-09-25 20:40:20 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-09-25 20:40:20 +0000 |
commit | 0c3be55498e388015bcba07791177be9d1225bd9 (patch) | |
tree | adcafce7f55404b0b8a6ab1f86967a54fe2cf69c /gtk/gtktexttag.c | |
parent | efae27a3a5d7ed8cb7063e1f0ac5634fc162284f (diff) | |
download | gdk-pixbuf-0c3be55498e388015bcba07791177be9d1225bd9.tar.gz |
ue Sep 25 12:41:17 2001 Owen Taylor <otaylor@redhat.com>GTK_1_3_9
* configure.in: Version 1.3.9, interface age 0, binary age 0.
* configure.in: Require GLib-1.39, Pango 0.20, Atk 0.5.
* NEWS: Updates.
Mon Sep 24 11:59:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_draw_insertion_cursor): Shared
function for drawing cursors between gtkentry/gtklabel/gtktextview.
Should this be public? It has a bit of an odd interface, but
custom editing widgets probably should be using it.
Function will draw with wider width for taller cursors, and
draws a little indicator arrow to indicate directoin for split
cursors.
* gtk/gtktextview.c: Add a "cursor_color" property.
* gtk/gtktextdisplay.[ch]: Add a cursor_gc parameter to
gtk_text_layout_draw().
* gtk/gtkentry.c gtk/gtklabel.c gtk/gtktextdisplay.c: Use
_gtk_draw_insertion_cursor().
Tue Sep 25 11:22:23 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkcellrenderertext.c gtk/gtktexttag.c: Restore
the behavior where you could turn family_set (etc) back on
and get back the values you had before.
* demos/gtk-demo/stock_browser.c (id_to_macro): Use
g_string_ascii_up() rather than looping through the
string ourself.
Diffstat (limited to 'gtk/gtktexttag.c')
-rw-r--r-- | gtk/gtktexttag.c | 76 |
1 files changed, 73 insertions, 3 deletions
diff --git a/gtk/gtktexttag.c b/gtk/gtktexttag.c index fbd90eb4c..f4f1c749e 100644 --- a/gtk/gtktexttag.c +++ b/gtk/gtktexttag.c @@ -749,6 +749,46 @@ get_property_font_set_mask (guint prop_id) return 0; } +static PangoFontMask +set_font_desc_fields (PangoFontDescription *desc, + PangoFontMask to_set) +{ + PangoFontMask changed_mask = 0; + + if (to_set & PANGO_FONT_MASK_FAMILY) + { + const char *family = pango_font_description_get_family (desc); + if (!family) + { + family = "sans"; + changed_mask |= PANGO_FONT_MASK_FAMILY; + } + + pango_font_description_set_family (desc, family); + } + if (to_set & PANGO_FONT_MASK_STYLE) + pango_font_description_set_style (desc, pango_font_description_get_style (desc)); + if (to_set & PANGO_FONT_MASK_VARIANT) + pango_font_description_set_variant (desc, pango_font_description_get_variant (desc)); + if (to_set & PANGO_FONT_MASK_WEIGHT) + pango_font_description_set_weight (desc, pango_font_description_get_weight (desc)); + if (to_set & PANGO_FONT_MASK_STRETCH) + pango_font_description_set_stretch (desc, pango_font_description_get_stretch (desc)); + if (to_set & PANGO_FONT_MASK_SIZE) + { + gint size = pango_font_description_get_size (desc); + if (size <= 0) + { + size = 10 * PANGO_SCALE; + changed_mask |= PANGO_FONT_MASK_SIZE; + } + + pango_font_description_set_size (desc, size); + } + + return changed_mask; +} + static void notify_set_changed (GObject *object, PangoFontMask changed_mask) @@ -768,6 +808,24 @@ notify_set_changed (GObject *object, } static void +notify_fields_changed (GObject *object, + PangoFontMask changed_mask) +{ + if (changed_mask & PANGO_FONT_MASK_FAMILY) + g_object_notify (object, "family"); + if (changed_mask & PANGO_FONT_MASK_STYLE) + g_object_notify (object, "style"); + if (changed_mask & PANGO_FONT_MASK_VARIANT) + g_object_notify (object, "variant"); + if (changed_mask & PANGO_FONT_MASK_WEIGHT) + g_object_notify (object, "weight"); + if (changed_mask & PANGO_FONT_MASK_STRETCH) + g_object_notify (object, "stretch"); + if (changed_mask & PANGO_FONT_MASK_SIZE) + g_object_notify (object, "size"); +} + +static void set_font_description (GtkTextTag *text_tag, PangoFontDescription *font_desc) { @@ -1174,9 +1232,21 @@ gtk_text_tag_set_property (GObject *object, case PROP_WEIGHT_SET: case PROP_STRETCH_SET: case PROP_SIZE_SET: - if (!g_value_get_boolean (value) && text_tag->values->font) - pango_font_description_unset_fields (text_tag->values->font, - get_property_font_set_mask (prop_id)); + if (!g_value_get_boolean (value)) + { + if (text_tag->values->font) + pango_font_description_unset_fields (text_tag->values->font, + get_property_font_set_mask (prop_id)); + } + else + { + PangoFontMask changed_mask; + + gtk_text_tag_ensure_font (text_tag); + changed_mask = set_font_desc_fields (text_tag->values->font, + get_property_font_set_mask (prop_id)); + notify_fields_changed (G_OBJECT (text_tag), changed_mask); + } break; case PROP_SCALE_SET: |