]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcellrendereraccel.c
Display localised accelerator keys also in OTHER mode
[~andy/gtk] / gtk / gtkcellrendereraccel.c
index e6ff68b90c2b0d4e3c793a355165cbfcdcdc9e68..306bc5e247bfa952f326eb7745b1906c4307b986 100644 (file)
@@ -52,6 +52,10 @@ static GtkCellEditable *
                                                   GdkRectangle    *background_area,
                                                   GdkRectangle    *cell_area,
                                                   GtkCellRendererState flags);
+static gchar *convert_keysym_state_to_string     (GtkCellRendererAccel *accel,
+                                                  guint                 keysym,
+                                                  GdkModifierType       mask,
+                                                  guint                 keycode);
 
 enum {
   ACCEL_EDITED,
@@ -74,6 +78,11 @@ G_DEFINE_TYPE (GtkCellRendererAccel, gtk_cell_renderer_accel, GTK_TYPE_CELL_REND
 static void
 gtk_cell_renderer_accel_init (GtkCellRendererAccel *cell_accel)
 {
+  gchar *text;
+
+  text = convert_keysym_state_to_string (cell_accel, 0, 0, 0);
+  g_object_set (cell_accel, "text", text, NULL);
+  g_free (text);
 }
 
 static void
@@ -229,10 +238,9 @@ convert_keysym_state_to_string (GtkCellRendererAccel *accel,
 {
   if (keysym == 0 && keycode == 0)
     /* This label is displayed in a treeview cell displaying
-     * a disabled accelerator key combination. Only include
-     * the text after the | in the translation.
+     * a disabled accelerator key combination.
      */
-    return g_strdup (Q_("Accelerator|Disabled"));
+    return g_strdup (C_("Accelerator", "Disabled"));
   else 
     {
       if (accel->accel_mode == GTK_CELL_RENDERER_ACCEL_MODE_GTK)
@@ -241,7 +249,10 @@ convert_keysym_state_to_string (GtkCellRendererAccel *accel,
        {
          gchar *name;
 
-         name = gtk_accelerator_name (keysym, mask);
+         name = gtk_accelerator_get_label (keysym, mask);
+         if (name == NULL)
+           name = gtk_accelerator_name (keysym, mask);
+
          if (keysym == 0)
            {
              gchar *tmp;
@@ -555,7 +566,7 @@ gtk_cell_renderer_accel_start_editing (GtkCellRenderer      *cell,
   
   accel->grab_widget = widget;
 
-  g_signal_connect (G_OBJECT (widget), "key_press_event",
+  g_signal_connect (G_OBJECT (widget), "key-press-event",
                     G_CALLBACK (grab_key_callback),
                     accel);