]> granicus.if.org Git - vim/commitdiff
patch 8.1.0577: tabpage right-click menu never shows "Close tab" v8.1.0577
authorBram Moolenaar <Bram@vim.org>
Tue, 11 Dec 2018 19:39:19 +0000 (20:39 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 11 Dec 2018 19:39:19 +0000 (20:39 +0100)
Problem:    Tabpage right-click menu never shows "Close tab".
Solution:   Always create the "Close tab" item but ignore the event if there
            is only one tab.

src/gui.c
src/gui_gtk_x11.c
src/gui_mac.c
src/gui_motif.c
src/version.c

index 2f3bafc97d416f756afc0d07e00c4ea12c67f413..9160848c8e6af4e70c460ecc0dcdd659577fd3dd 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -3865,10 +3865,14 @@ send_tabline_menu_event(int tabidx, int event)
 {
     char_u         string[3];
 
-    /* Don't put events in the input queue now. */
+    // Don't put events in the input queue now.
     if (hold_gui_events)
        return;
 
+    // Cannot close the last tabpage.
+    if (event == TABLINE_MENU_CLOSE && first_tabpage->tp_next == NULL)
+       return;
+
     string[0] = CSI;
     string[1] = KS_TABMENU;
     string[2] = KE_FILLER;
index dbddb0ffb05fe71327e032e49c6b812cf4c581c5..898e2af5f147ff8872a816122b932785168874b5 100644 (file)
@@ -3337,9 +3337,7 @@ create_tabline_menu(void)
     GtkWidget *menu;
 
     menu = gtk_menu_new();
-    if (first_tabpage->tp_next != NULL)
-       add_tabline_menu_item(menu, (char_u *)_("Close tab"),
-                                                         TABLINE_MENU_CLOSE);
+    add_tabline_menu_item(menu, (char_u *)_("Close tab"), TABLINE_MENU_CLOSE);
     add_tabline_menu_item(menu, (char_u *)_("New tab"), TABLINE_MENU_NEW);
     add_tabline_menu_item(menu, (char_u *)_("Open Tab..."), TABLINE_MENU_OPEN);
 
index 96f04c55a31a4f5e911d99b71412fad14701cc97..ec8ec3adf8a014c40653d9f59ba5d3b13ec42ada 100644 (file)
@@ -6705,8 +6705,7 @@ initialise_tabline(void)
 
     // create tabline popup menu required by vim docs (see :he tabline-menu)
     CreateNewMenu(kTabContextMenuId, 0, &contextMenu);
-    if (first_tabpage->tp_next != NULL)
-       AppendMenuItemTextWithCFString(contextMenu, CFSTR("Close Tab"), 0,
+    AppendMenuItemTextWithCFString(contextMenu, CFSTR("Close Tab"), 0,
                                                    TABLINE_MENU_CLOSE, NULL);
     AppendMenuItemTextWithCFString(contextMenu, CFSTR("New Tab"), 0,
                                                      TABLINE_MENU_NEW, NULL);
index 8467c529d4f64d0ed05fc5f7f528278d4954570b..b6c140be3890accfa001a6f887357d16210361c5 100644 (file)
@@ -514,21 +514,18 @@ gui_x11_create_widgets(void)
     XtVaSetValues(scroller, XmNwidth, 0, XmNresizable, False,
                  XmNtraversalOn, False, NULL);
 
-    /* Create the tabline popup menu */
+    // Create the tabline popup menu
     tabLine_menu = XmCreatePopupMenu(tabLine, "tabline popup", NULL, 0);
 
-    /* Add the buttons to the menu */
-    if (first_tabpage->tp_next != NULL)
-    {
-       n = 0;
-       XtSetArg(args[n], XmNuserData, TABLINE_MENU_CLOSE); n++;
-       xms = XmStringCreate((char *)"Close tab", STRING_TAG);
-       XtSetArg(args[n], XmNlabelString, xms); n++;
-       button = XmCreatePushButton(tabLine_menu, "Close", args, n);
-       XtAddCallback(button, XmNactivateCallback,
-                     (XtCallbackProc)tabline_button_cb, NULL);
-       XmStringFree(xms);
-    }
+    // Add the buttons to the tabline popup menu
+    n = 0;
+    XtSetArg(args[n], XmNuserData, TABLINE_MENU_CLOSE); n++;
+    xms = XmStringCreate((char *)"Close tab", STRING_TAG);
+    XtSetArg(args[n], XmNlabelString, xms); n++;
+    button = XmCreatePushButton(tabLine_menu, "Close", args, n);
+    XtAddCallback(button, XmNactivateCallback,
+                 (XtCallbackProc)tabline_button_cb, NULL);
+    XmStringFree(xms);
 
     n = 0;
     XtSetArg(args[n], XmNuserData, TABLINE_MENU_NEW); n++;
index 29fdfb2dd93c194ed1b5c25bfb5c6ee6717db567..0600217c7daddf667a936fd663d86bd2e94632b2 100644 (file)
@@ -792,6 +792,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    577,
 /**/
     576,
 /**/