summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-04-05 14:13:20 +0200
committerBram Moolenaar <Bram@vim.org>2021-04-05 14:13:20 +0200
commitce5b06a6a972dcc36e460782e10e21a09b227b5d (patch)
tree49120cf96aed868e11fa9b470a7c3fe05a4b657e
parent0b94e297afd072c51bf2eed12c7ffe3978d93399 (diff)
downloadvim-git-ce5b06a6a972dcc36e460782e10e21a09b227b5d.tar.gz
patch 8.2.2717: GTK menu items don't show a tooltipv8.2.2717
Problem: GTK menu items don't show a tooltip. Solution: Add a callback to show the tooltip. (Leonid V. Fedorenchik, closes #8067, closes #7810)
-rw-r--r--src/gui_gtk.c29
-rw-r--r--src/version.c2
2 files changed, 29 insertions, 2 deletions
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index c172fa49d..3c435f960 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -684,6 +684,28 @@ menu_item_activate(GtkWidget *widget UNUSED, gpointer data)
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, int idx)
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
index d38b6ba06..f22d0cb25 100644
--- 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,