summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Arne Petersen <jpetersen@jpetersen.org>2008-05-29 18:09:01 +0000
committerJan Arne Petersen <jap@src.gnome.org>2008-05-29 18:09:01 +0000
commit0fb31a06bb4f36c89b92940c9795d0253d71fe98 (patch)
tree1742292d6548ae1d52f26145463f393d472592c0
parentee8253f908d2541321d72a0151fcfeb7446f7b8f (diff)
downloadgdk-pixbuf-0fb31a06bb4f36c89b92940c9795d0253d71fe98.tar.gz
Bug 56355 – GtkLabel - Not all changes propagate correctly
2008-05-29 Jan Arne Petersen <jpetersen@jpetersen.org> Bug 56355 – GtkLabel - Not all changes propagate correctly * gtk/gtklabel.c: (gtk_label_recalculate), (gtk_label_set_label), (gtk_label_set_markup_with_mnemonic), (gtk_label_parse_uline), (gtk_label_set_text_with_mnemonic), (gtk_label_set_use_underline): Call gtk_label_setup_mnemonic from gtk_label_recalculate. Add notifications of mnemonic-keyval changes. svn path=/trunk/; revision=20237
-rw-r--r--ChangeLog10
-rw-r--r--gtk/gtklabel.c36
2 files changed, 22 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 921128135..d68a6a8bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-05-29 Jan Arne Petersen <jpetersen@jpetersen.org>
+
+ Bug 56355 – GtkLabel - Not all changes propagate correctly
+
+ * gtk/gtklabel.c: (gtk_label_recalculate), (gtk_label_set_label),
+ (gtk_label_set_markup_with_mnemonic), (gtk_label_parse_uline),
+ (gtk_label_set_text_with_mnemonic), (gtk_label_set_use_underline):
+ Call gtk_label_setup_mnemonic from gtk_label_recalculate. Add
+ notifications of mnemonic-keyval changes.
+
2008-05-27 Matthias Clasen <mclasen@redhat.com>
Bug 522084 – GIcon support for GtkIconTheme & GtkImage
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 0b86314fc..e2e4520a0 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -1558,6 +1558,8 @@ gtk_label_set_attributes_internal (GtkLabel *label,
static void
gtk_label_recalculate (GtkLabel *label)
{
+ guint keyval = label->mnemonic_keyval;
+
if (label->use_markup)
set_markup (label, label->label, label->use_underline);
else
@@ -1576,11 +1578,12 @@ gtk_label_recalculate (GtkLabel *label)
}
if (!label->use_underline)
- {
- guint keyval = label->mnemonic_keyval;
+ label->mnemonic_keyval = GDK_VoidSymbol;
- label->mnemonic_keyval = GDK_VoidSymbol;
+ if (keyval != label->mnemonic_keyval)
+ {
gtk_label_setup_mnemonic (label, keyval);
+ g_object_notify (G_OBJECT (label), "mnemonic-keyval");
}
gtk_label_clear_layout (label);
@@ -1671,19 +1674,13 @@ void
gtk_label_set_label (GtkLabel *label,
const gchar *str)
{
- guint last_keyval;
-
g_return_if_fail (GTK_IS_LABEL (label));
g_return_if_fail (str != NULL);
g_object_freeze_notify (G_OBJECT (label));
- last_keyval = label->mnemonic_keyval;
-
gtk_label_set_label_internal (label, g_strdup (str));
gtk_label_recalculate (label);
- if (last_keyval != label->mnemonic_keyval)
- gtk_label_setup_mnemonic (label, last_keyval);
g_object_thaw_notify (G_OBJECT (label));
}
@@ -1799,18 +1796,15 @@ void
gtk_label_set_markup_with_mnemonic (GtkLabel *label,
const gchar *str)
{
- guint last_keyval;
g_return_if_fail (GTK_IS_LABEL (label));
g_object_freeze_notify (G_OBJECT (label));
- last_keyval = label->mnemonic_keyval;
gtk_label_set_label_internal (label, g_strdup (str ? str : ""));
gtk_label_set_use_markup_internal (label, TRUE);
gtk_label_set_use_underline_internal (label, TRUE);
gtk_label_recalculate (label);
- gtk_label_setup_mnemonic (label, last_keyval);
g_object_thaw_notify (G_OBJECT (label));
}
@@ -3007,13 +3001,10 @@ gtk_label_parse_uline (GtkLabel *label,
const gchar *str)
{
guint keyval;
- guint orig_keyval;
g_return_val_if_fail (GTK_IS_LABEL (label), GDK_VoidSymbol);
g_return_val_if_fail (str != NULL, GDK_VoidSymbol);
- orig_keyval = label->mnemonic_keyval;
-
g_object_freeze_notify (G_OBJECT (label));
gtk_label_set_label_internal (label, g_strdup (str ? str : ""));
@@ -3023,9 +3014,12 @@ gtk_label_parse_uline (GtkLabel *label,
gtk_label_recalculate (label);
keyval = label->mnemonic_keyval;
- label->mnemonic_keyval = GDK_VoidSymbol;
-
- gtk_label_setup_mnemonic (label, orig_keyval);
+ if (keyval != GDK_VoidSymbol)
+ {
+ label->mnemonic_keyval = GDK_VoidSymbol;
+ gtk_label_setup_mnemonic (label, keyval);
+ g_object_notify (G_OBJECT (label), "mnemonic-keyval");
+ }
g_object_thaw_notify (G_OBJECT (label));
@@ -3052,8 +3046,6 @@ gtk_label_set_text_with_mnemonic (GtkLabel *label,
g_return_if_fail (GTK_IS_LABEL (label));
g_return_if_fail (str != NULL);
- last_keyval = label->mnemonic_keyval;
-
g_object_freeze_notify (G_OBJECT (label));
gtk_label_set_label_internal (label, g_strdup (str ? str : ""));
@@ -3062,8 +3054,6 @@ gtk_label_set_text_with_mnemonic (GtkLabel *label,
gtk_label_recalculate (label);
- gtk_label_setup_mnemonic (label, last_keyval);
-
g_object_thaw_notify (G_OBJECT (label));
}
@@ -4010,8 +4000,6 @@ gtk_label_set_use_underline (GtkLabel *label,
gtk_label_set_use_underline_internal (label, setting);
gtk_label_recalculate (label);
- if (label->use_underline)
- gtk_label_setup_mnemonic (label, label->mnemonic_keyval);
}
/**