OSDN Git Service

Add diff two commits command at shell menu
[tortoisegit/TortoiseGitJp.git] / src / TortoiseShell / ContextMenu.cpp
index f4c5614..25fe5b0 100644 (file)
@@ -54,7 +54,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 //     { ShellMenuUpdate,                                      MENUSUBUPDATE,                  IDI_UPDATE,                             IDS_MENUUPDATE,                         IDS_MENUDESCUPDATE,                             \r
 //     ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
-       { ShellSeparator, ITEMIS_GITSVN, 0, 0, 0, 0, 0, 0, 0},\r
+       { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 \r
        { ShellMenuCommit,                                              MENUCOMMIT,                     IDI_COMMIT,                             IDS_MENUCOMMIT,                         IDS_MENUDESCCOMMIT,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
@@ -73,9 +73,13 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuDiff,                                                MENUDIFF,                       IDI_DIFF,                               IDS_MENUDIFF,                           IDS_MENUDESCDIFF,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_FOLDER|ITEMIS_NORMAL, ITEMIS_TWO, 0, 0, 0, 0, 0 },\r
 \r
-       { ShellMenuPrevDiff,                                    MENUPREVDIFF,                   IDI_DIFF,                               IDS_MENUPREVDIFF,                       IDS_MENUDESCPREVDIFF,\r
+       { ShellMenuPrevDiff,                                    MENUPREVDIFF,                   IDI_DIFF,                       IDS_MENUPREVDIFF,                       IDS_MENUDESCPREVDIFF,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_FOLDER, 0, 0, 0, 0, 0, 0 },\r
 \r
+       { ShellMenuDiffTwo,                                             MENUDIFFTWO,            IDI_DIFF,                               IDS_MENUDIFFTWO,                        IDS_MENUDESCDIFFTWO,\r
+       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
+       { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 //     { ShellMenuUrlDiff,                                             MENUURLDIFF,            IDI_DIFF,                               IDS_MENUURLDIFF,                        IDS_MENUDESCURLDIFF,\r
 //     ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, 0, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED|ITEMIS_ONLYONE, 0, 0, 0, 0, 0 },\r
 \r
@@ -1334,8 +1338,9 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
                        {\r
                                if (bInsertMenu)\r
                                {\r
+                                       bool bIsTop = ((topmenu & menuInfo[menuIndex].menuID) != 0);\r
                                        // insert a separator\r
-                                       if ((bMenuEntryAdded)&&(bAddSeparator))\r
+                                       if ((bMenuEntryAdded)&&(bAddSeparator)&&(!bIsTop))\r
                                        {\r
                                                bAddSeparator = false;\r
                                                bMenuEntryAdded = false;\r
@@ -1741,6 +1746,14 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                        svnCmd += folder_;\r
                                svnCmd += _T("\"");\r
                                break;\r
+                       case ShellMenuDiffTwo:\r
+                               svnCmd += _T("diffcommits /path:\"");\r
+                               if (files_.size() == 1)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
                        case ShellMenuDropCopyAdd:\r
                                tempfile = WriteFileListToTempFile();\r
                                svnCmd += _T("dropcopyadd /pathfile:\"");\r