X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkaccellabel.c;h=d8bb7e96fa4069247059cc3183863c7fdc3af6ec;hb=e09957a47da9425cc26d1b33cb4e9cc3e92e9ac7;hp=d374faa871ee9fe82312b4aa0f8de8b18fc75afb;hpb=778aa7ade0107fa645ab1427132551d138c7334a;p=~andy%2Fgtk diff --git a/gtk/gtkaccellabel.c b/gtk/gtkaccellabel.c index d374faa87..d8bb7e96f 100644 --- a/gtk/gtkaccellabel.c +++ b/gtk/gtkaccellabel.c @@ -836,12 +836,13 @@ _gtk_accel_label_class_get_accelerator_label (GtkAccelLabelClass *klass, #endif seen_mod = TRUE; } - if (seen_mod) - g_string_append (gstring, klass->mod_separator); ch = gdk_keyval_to_unicode (accelerator_key); if (ch && ch < 0x80 && (g_unichar_isgraph (ch) || ch == ' ')) { + if (seen_mod) + g_string_append (gstring, klass->mod_separator); + switch (ch) { case ' ': @@ -862,6 +863,9 @@ _gtk_accel_label_class_get_accelerator_label (GtkAccelLabelClass *klass, tmp = gdk_keyval_name (gdk_keyval_to_lower (accelerator_key)); if (tmp != NULL) { + if (seen_mod) + g_string_append (gstring, klass->mod_separator); + if (tmp[0] != 0 && tmp[1] == 0) g_string_append_c (gstring, g_ascii_toupper (tmp[0])); else @@ -908,23 +912,35 @@ gtk_accel_label_refetch (GtkAccelLabel *accel_label) if (enable_accels && (accel_label->priv->accel_closure || accel_label->priv->accel_key)) { - guint accel_key = accel_label->priv->accel_key; - GdkModifierType accel_mods = accel_label->priv->accel_mods; + gboolean have_accel = FALSE; + guint accel_key; + GdkModifierType accel_mods; + + /* First check for a manual accel set with _set_accel() */ + if (accel_label->priv->accel_key) + { + accel_mods = accel_label->priv->accel_mods; + accel_key = accel_label->priv->accel_key; + have_accel = TRUE; + } /* If we don't have a hardcoded value, check the accel group */ - if (!accel_key) + if (!have_accel) { - GtkAccelKey *key = gtk_accel_group_find (accel_label->priv->accel_group, find_accel, accel_label->priv->accel_closure); + GtkAccelKey *key; + + key = gtk_accel_group_find (accel_label->priv->accel_group, find_accel, accel_label->priv->accel_closure); if (key && key->accel_flags & GTK_ACCEL_VISIBLE) { accel_key = key->accel_key; accel_mods = key->accel_mods; + have_accel = TRUE; } } /* If we found a key using either method, set it */ - if (accel_key) + if (have_accel) { GtkAccelLabelClass *klass; gchar *tmp; @@ -934,10 +950,12 @@ gtk_accel_label_refetch (GtkAccelLabel *accel_label) accel_label->priv->accel_string = g_strconcat (" ", tmp, NULL); g_free (tmp); } - if (!accel_label->priv->accel_string) - accel_label->priv->accel_string = g_strdup ("-/-"); + + else + /* Otherwise we have a closure with no key. Show "-/-". */ + accel_label->priv->accel_string = g_strdup ("-/-"); } - + if (!accel_label->priv->accel_string) accel_label->priv->accel_string = g_strdup ("");