]> spindle.queued.net Git - midori/commitdiff
Strip underscores from action labels in shortcuts extension
authorChristian Dywan <christian@twotoasts.de>
Sat, 20 Jun 2009 18:30:03 +0000 (20:30 +0200)
committerChristian Dywan <christian@twotoasts.de>
Sat, 20 Jun 2009 18:30:03 +0000 (20:30 +0200)
AUTHORS
extensions/shortcuts.c

diff --git a/AUTHORS b/AUTHORS
index 0b542978f51ec83a3a0f18bf291bb21c1dad2d1d..04ec8c9e65c5eb4d71380763efa26555c9d6066e 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -67,6 +67,7 @@ Translations:
 Code from other projects:
     GTK+/ GdkPixbuf, Matthias Clasen <mclasen@redhat.com>
     GTK+/ GtkEntry, Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+    GTK+/ GtkToolbar, Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
     Modified by the GTK+ Team and others 1997-2000
     libSoup/ CookieJarText, Copyright (C) 2008 Xan Lopez <xan@gnome.org>, Dan Winship <danw@gnome.org>
     libSylph, Copyright 1999-2008 Hiroyuki Yamamoto, Copyright 2006-2009 Enrico Tröger <enrico.troeger@uvena.de>
index 77cd88a07cc53aa4c1181f4e1a34b7fffd7b00c6..6731fdcc2a986eea0faa45cbf6ede263c0d59581 100644 (file)
@@ -32,6 +32,52 @@ shortcuts_deactivate_cb (MidoriExtension* extension,
         app, shortcuts_app_add_browser_cb, extension);
 }
 
+/* A copy of _gtk_toolbar_elide_underscores
+   Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+   Copied from GTK+ 2.17.1 */
+static gchar *
+elide_underscores (const gchar *original)
+{
+  gchar *q, *result;
+  const gchar *p, *end;
+  gsize len;
+  gboolean last_underscore;
+
+  if (!original)
+    return NULL;
+
+  len = strlen (original);
+  q = result = g_malloc (len + 1);
+  last_underscore = FALSE;
+
+  end = original + len;
+  for (p = original; p < end; p++)
+    {
+      if (!last_underscore && *p == '_')
+       last_underscore = TRUE;
+      else
+       {
+         last_underscore = FALSE;
+         if (original + 2 <= p && p + 1 <= end &&
+              p[-2] == '(' && p[-1] == '_' && p[0] != '_' && p[1] == ')')
+           {
+             q--;
+             *q = '\0';
+             p++;
+           }
+         else
+           *q++ = *p;
+       }
+    }
+
+  if (last_underscore)
+    *q++ = '_';
+
+  *q = '\0';
+
+  return result;
+}
+
 static void
 shortcuts_preferences_render_text (GtkTreeViewColumn* column,
                                    GtkCellRenderer*   renderer,
@@ -41,18 +87,23 @@ shortcuts_preferences_render_text (GtkTreeViewColumn* column,
 {
     GtkAction* action;
     gchar* label;
+    gchar* stripped;
 
     gtk_tree_model_get (model, iter, 0, &action, -1);
     if ((label = katze_object_get_string (action, "label")))
-        g_object_set (renderer, "text", label, NULL);
+        stripped = elide_underscores (label);
     else
     {
         GtkStockItem item;
         g_object_get (action, "stock-id", &label, NULL);
         if (gtk_stock_lookup (label, &item))
-            g_object_set (renderer, "text", item.label, NULL);
+            stripped = elide_underscores (item.label);
+        else
+            stripped = g_strdup ("");
     }
     g_free (label);
+    g_object_set (renderer, "text", stripped, NULL);
+    g_free (stripped);
     g_object_unref (action);
 }