gtk+ r21764 - in trunk: . gtk
- From: tvb svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r21764 - in trunk: . gtk
- Date: Thu, 6 Nov 2008 16:36:16 +0000 (UTC)
Author: tvb
Date: Thu Nov 6 16:36:16 2008
New Revision: 21764
URL: http://svn.gnome.org/viewvc/gtk+?rev=21764&view=rev
Log:
* gtk/gtklabel.c: gtk_label_set_attributes() now applies attributes
on top of any markup or mnemonic attributes (bug 558409).
* README: Updated and added release notes for 2.16
Modified:
trunk/ChangeLog
trunk/README
trunk/gtk/gtklabel.c
Modified: trunk/README
==============================================================================
--- trunk/README (original)
+++ trunk/README Thu Nov 6 16:36:16 2008
@@ -26,6 +26,14 @@
See the file 'INSTALL'
+Release notes for 2.16
+======================
+* The attributes set with gtk_label_set_attributes will now be applied
+ and merged with any other attributes previously effected by way
+ of the GtkLabel:use-underline or GtkLabel:use-markup properties.
+ While it is not recommended to mix markup strings with manually set
+ attributes, if you must; know that the attributes will be applied
+ to the label after the markup string is parsed.
Release notes for 2.14
======================
Modified: trunk/gtk/gtklabel.c
==============================================================================
--- trunk/gtk/gtklabel.c (original)
+++ trunk/gtk/gtklabel.c Thu Nov 6 16:36:16 2008
@@ -1530,6 +1530,36 @@
}
static void
+gtk_label_compose_effective_attrs (GtkLabel *label)
+{
+ PangoAttrIterator *iter;
+ PangoAttribute *attr;
+ GSList *iter_attrs, *l;
+
+ if (label->attrs)
+ {
+ if (label->effective_attrs)
+ {
+ if ((iter = pango_attr_list_get_iterator (label->attrs)))
+ do
+ {
+ iter_attrs = pango_attr_iterator_get_attrs (iter);
+ for (l = iter_attrs; l; l = l->next)
+ {
+ attr = l->data;
+ pango_attr_list_insert (label->effective_attrs, attr);
+ }
+ g_slist_free (iter_attrs);
+ }
+ while (pango_attr_iterator_next (iter));
+ }
+ else
+ label->effective_attrs =
+ pango_attr_list_ref (label->attrs);
+ }
+}
+
+static void
gtk_label_set_attributes_internal (GtkLabel *label,
PangoAttrList *attrs)
{
@@ -1538,17 +1568,8 @@
if (label->attrs)
pango_attr_list_unref (label->attrs);
-
- if (!label->use_markup && !label->use_underline)
- {
- if (attrs)
- pango_attr_list_ref (attrs);
- if (label->effective_attrs)
- pango_attr_list_unref (label->effective_attrs);
- label->effective_attrs = attrs;
- }
-
label->attrs = attrs;
+
g_object_notify (G_OBJECT (label), "attributes");
}
@@ -1562,11 +1583,17 @@
guint keyval = label->mnemonic_keyval;
if (label->use_markup)
- set_markup (label, label->label, label->use_underline);
+ {
+ set_markup (label, label->label, label->use_underline);
+ gtk_label_compose_effective_attrs (label);
+ }
else
{
if (label->use_underline)
- gtk_label_set_uline_text_internal (label, label->label);
+ {
+ gtk_label_set_uline_text_internal (label, label->label);
+ gtk_label_compose_effective_attrs (label);
+ }
else
{
gtk_label_set_text_internal (label, g_strdup (label->label));
@@ -1624,9 +1651,14 @@
* @attrs: a #PangoAttrList
*
* Sets a #PangoAttrList; the attributes in the list are applied to the
- * label text. The attributes set with this function will be ignored
- * if the #GtkLabel:use-underline" or #GtkLabel:use-markup properties
- * are set to %TRUE.
+ * label text.
+ *
+ * <note><para>The attributes set with this function will be applied
+ * and merged with any other attributes previously effected by way
+ * of the #GtkLabel:use-underline or #GtkLabel:use-markup properties.
+ * While it is not recommended to mix markup strings with manually set
+ * attributes, if you must; know that the attributes will be applied
+ * to the label after the markup string is parsed.</para></note>
**/
void
gtk_label_set_attributes (GtkLabel *label,
@@ -1635,7 +1667,9 @@
g_return_if_fail (GTK_IS_LABEL (label));
gtk_label_set_attributes_internal (label, attrs);
-
+
+ gtk_label_recalculate (label);
+
gtk_label_clear_layout (label);
gtk_widget_queue_resize (GTK_WIDGET (label));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]