]> git.eshelyaron.com Git - emacs.git/commitdiff
Make toolbar show keyboard equivalents in its tooltips
authorStefan Kangas <stefankangas@gmail.com>
Sun, 9 Jun 2019 02:27:09 +0000 (04:27 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 22 Jun 2019 09:12:34 +0000 (12:12 +0300)
* src/keyboard.c (parse_tool_bar_item): Add equivalent key binding to
the tooltip string of toolbar buttons.
* etc/NEWS: Announce it.
* etc/TODO: Remove its entry.  (Bug#36156)

etc/NEWS
etc/TODO
src/keyboard.c

index f0d7457a6276d0c525c7be5faa37eb494439a394..0cfac248a323e67e77c6ca1cc3faaa31207967a4 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -125,6 +125,9 @@ This is intended mostly to help developers.
 ** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3
 builds respectively.
 
+---
+** The toolbar now shows the equivalent key binding in its tooltips.
+
 \f
 * Startup Changes in Emacs 27.1
 
index 273455c386ea4e6ba16ff51ab56e84e59097a599..34de81b147c716e44ffdbea641ae5b49cea5a14c 100644 (file)
--- a/etc/TODO
+++ b/etc/TODO
@@ -176,8 +176,6 @@ See the 'test' directory for examples.
 ** In Emacs Info, examples of using Customize should be clickable
    and they should create Custom buffers.
 
-** The toolbar should show keyboard equivalents in its tooltips.
-
 ** Add function to redraw the tool bar.
 
 ** Redesign the load-history data structure so it can cope better
index ab6ca36219d65e81ce6b9cf95497c293c5f81fa4..0d7f124f5f31d8fc13bfcef4e8226d4c76d6e789 100644 (file)
@@ -8297,6 +8297,19 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
   if (CONSP (get_keymap (PROP (TOOL_BAR_ITEM_BINDING), 0, 1)))
     return 0;
 
+  /* If there is a key binding, add it to the help, which will be
+     displayed as a tooltip for this entry. */
+  Lisp_Object binding = PROP (TOOL_BAR_ITEM_BINDING);
+  Lisp_Object keys = Fwhere_is_internal (binding, Qnil, Qt, Qnil, Qnil);
+  if (!NILP (keys))
+    {
+      AUTO_STRING (beg, "  (");
+      AUTO_STRING (end, ")");
+      Lisp_Object orig = PROP (TOOL_BAR_ITEM_HELP);
+      Lisp_Object desc = Fkey_description (keys, Qnil);
+      set_prop (TOOL_BAR_ITEM_HELP, CALLN (Fconcat, orig, beg, desc, end));
+    }
+
   /* Enable or disable selection of item.  */
   if (!EQ (PROP (TOOL_BAR_ITEM_ENABLED_P), Qt))
     set_prop (TOOL_BAR_ITEM_ENABLED_P,