changeset 24353:c80daba2b5df v8.2.2717

patch 8.2.2717: GTK menu items don't show a tooltip Commit: https://github.com/vim/vim/commit/ce5b06a6a972dcc36e460782e10e21a09b227b5d Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 5 14:13:20 2021 +0200 patch 8.2.2717: GTK menu items don't show a tooltip Problem: GTK menu items don't show a tooltip. Solution: Add a callback to show the tooltip. (Leonid V. Fedorenchik, closes #8067, closes #7810)
author Bram Moolenaar <Bram@vim.org>
date Mon, 05 Apr 2021 14:15:12 +0200
parents 19b7101670bb
children 5154610c4f93
files src/gui_gtk.c src/version.c
diffstat 2 files changed, 29 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -684,6 +684,28 @@ menu_item_activate(GtkWidget *widget UNU
     gui_menu_cb((vimmenu_T *)data);
 }
 
+    static void
+menu_item_select(GtkWidget *widget UNUSED, gpointer data)
+{
+    vimmenu_T	*menu;
+    char_u	*tooltip;
+    static int	did_msg = FALSE;
+
+    menu = (vimmenu_T *)data;
+    tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
+    if (tooltip != NULL && utf_valid_string(tooltip, NULL))
+    {
+	msg((char *)tooltip);
+	did_msg = TRUE;
+    }
+    else if (did_msg)
+    {
+	msg("");
+	did_msg = FALSE;
+    }
+    CONVERT_TO_UTF8_FREE(tooltip);
+}
+
     void
 gui_mch_add_menu_item(vimmenu_T *menu, int idx)
 {
@@ -800,8 +822,12 @@ gui_mch_add_menu_item(vimmenu_T *menu, i
 		menu->id, idx);
 
 	if (menu->id != NULL)
+	{
 	    g_signal_connect(G_OBJECT(menu->id), "activate",
 			     G_CALLBACK(menu_item_activate), menu);
+	    g_signal_connect(G_OBJECT(menu->id), "select",
+			     G_CALLBACK(menu_item_select), menu);
+	}
     }
 }
 #endif // FEAT_MENU
@@ -892,8 +918,7 @@ get_menu_position(vimmenu_T *menu)
     void
 gui_mch_menu_set_tip(vimmenu_T *menu)
 {
-    if (menu->id != NULL && menu->parent != NULL
-	    && gui.toolbar != NULL && menu_is_toolbar(menu->parent->name))
+    if (menu->id != NULL && menu->parent != NULL && gui.toolbar != NULL)
     {
 	char_u *tooltip;
 
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2717,
+/**/
     2716,
 /**/
     2715,