# HG changeset patch # User Bram Moolenaar # Date 1617624912 -7200 # Node ID c80daba2b5df41de3bed76c990cd0e0f285607c5 # Parent 19b7101670bbf0e647fe6266079d3c510513875e patch 8.2.2717: GTK menu items don't show a tooltip Commit: https://github.com/vim/vim/commit/ce5b06a6a972dcc36e460782e10e21a09b227b5d Author: Bram Moolenaar 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) diff --git a/src/gui_gtk.c b/src/gui_gtk.c --- 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; diff --git a/src/version.c b/src/version.c --- 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,