[gtk+] GtkAccelLabel: Don't show "+" if there's no more keys to add



commit 3c8a4126a897b032eda6c7baa287ebe94c9e5736
Author: Bastien Nocera <hadess hadess net>
Date:   Mon Feb 18 11:59:26 2013 +0100

    GtkAccelLabel: Don't show "+" if there's no more keys to add
    
    With the following code:
        #define INVALID_CHAR GDK_KEY_VoidSymbol - 1
        gtk_accelerator_get_label (INVALID_CHAR, GDK_SHIFT_MASK | GDK_CONTROL_MASK);
    we would get this label:
        Shift+Ctrl+
    instead of this label:
        Shift+Ctrl
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694075

 gtk/gtkaccellabel.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkaccellabel.c b/gtk/gtkaccellabel.c
index 311b4a4..d8bb7e9 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]