[gtk+/composite-templates] GtkAccelLabel: adjust recent accel changes



commit 52fb0cfe998a5cb9dc25c5ebc43a0d18a4386e35
Author: Ryan Lortie <desrt desrt ca>
Date:   Tue Sep 18 08:57:53 2012 -0400

    GtkAccelLabel: adjust recent accel changes
    
    In the event that a GtkAccelKey was present for the closure but it
    contained a keyval of 0 the previous code would show "".  After the
    recent adjustments, "-/-" would be shown in this case.
    
    It turns out to be a pretty common case, so fix the logic to stop using
    '0' as a magic value to mean "don't have an accel" and add a separate
    boolean for that purpose.

 gtk/gtkaccellabel.c |   30 ++++++++++++++++++++++--------
 1 files changed, 22 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtkaccellabel.c b/gtk/gtkaccellabel.c
index d374faa..311b4a4 100644
--- a/gtk/gtkaccellabel.c
+++ b/gtk/gtkaccellabel.c
@@ -908,23 +908,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 +946,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 ("");
 



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