]> granicus.if.org Git - vim/commitdiff
patch 8.1.0492: "Edit with existing Vim" list can get long v8.1.0492
authorBram Moolenaar <Bram@vim.org>
Thu, 25 Oct 2018 09:25:53 +0000 (11:25 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 25 Oct 2018 09:25:53 +0000 (11:25 +0200)
Problem:    "Edit with existing Vim" list can get long.
Solution:   Move the list to a submenu. (Ken Takata, closes #3561)

src/GvimExt/gvimext.cpp
src/version.c

index 2b9f1ad8f73d587ccf50c2f52829747c736e2cf8..64c5d1339f8501d2a21cf958a3b8a9d1aa54f75f 100644 (file)
@@ -708,11 +708,26 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
        m_edit_existing_off = 1;
     }
 
+    HMENU hSubMenu = NULL;
+    if (m_cntOfHWnd > 1)
+    {
+       hSubMenu = CreatePopupMenu();
+       mii.fMask |= MIIM_SUBMENU;
+       mii.wID = idCmd;
+       mii.dwTypeData = _("Edit with existing Vim");
+       mii.cch = lstrlen(mii.dwTypeData);
+       mii.hSubMenu = hSubMenu;
+       InsertMenuItem(hMenu, indexMenu++, TRUE, &mii);
+       mii.fMask = mii.fMask & ~MIIM_SUBMENU;
+       mii.hSubMenu = NULL;
+    }
     // Now display all the vim instances
     for (int i = 0; i < m_cntOfHWnd; i++)
     {
        char title[BUFSIZE];
        char temp[BUFSIZE];
+       int index;
+       HMENU hmenu;
 
        // Obtain window title, continue if can not
        if (GetWindowText(m_hWnd[i], title, BUFSIZE - 1) == 0)
@@ -726,15 +741,30 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
            *pos = 0;
        }
        // Now concatenate
-       strncpy(temp, _("Edit with existing Vim - "), BUFSIZE - 1);
-       temp[BUFSIZE - 1] = '\0';
+       if (m_cntOfHWnd > 1)
+           temp[0] = '\0';
+       else
+       {
+           strncpy(temp, _("Edit with existing Vim - "), BUFSIZE - 1);
+           temp[BUFSIZE - 1] = '\0';
+       }
        strncat(temp, title, BUFSIZE - 1 - strlen(temp));
        temp[BUFSIZE - 1] = '\0';
 
        mii.wID = idCmd++;
        mii.dwTypeData = temp;
        mii.cch = lstrlen(mii.dwTypeData);
-       InsertMenuItem(hMenu, indexMenu++, TRUE, &mii);
+       if (m_cntOfHWnd > 1)
+       {
+           hmenu = hSubMenu;
+           index = i;
+       }
+       else
+       {
+           hmenu = hMenu;
+           index = indexMenu++;
+       }
+       InsertMenuItem(hmenu, index, TRUE, &mii);
     }
     // InsertMenu(hMenu, indexMenu++, MF_SEPARATOR|MF_BYPOSITION, 0, NULL);
 
index ad9b575d02eb4993653a8beb2d76aca0acf267b6..9283cc2fd7a2787444c151956139245f9d50696b 100644 (file)
@@ -792,6 +792,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    492,
 /**/
     491,
 /**/