summaryrefslogtreecommitdiff
path: root/gtk/gtktexttag.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-09-25 20:40:20 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-09-25 20:40:20 +0000
commit0c3be55498e388015bcba07791177be9d1225bd9 (patch)
treeadcafce7f55404b0b8a6ab1f86967a54fe2cf69c /gtk/gtktexttag.c
parentefae27a3a5d7ed8cb7063e1f0ac5634fc162284f (diff)
downloadgdk-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.c76
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: