OSDN Git Service

Use Registery config extern menu
[tortoisegit/TortoiseGitJp.git] / src / TortoiseShell / ContextMenu.cpp
index c483382..f4c5614 100644 (file)
@@ -66,7 +66,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        ITEMIS_INSVN|ITEMIS_GITSVN, 0, ITEMIS_FOLDERINSVN|ITEMIS_GITSVN, 0, 0, 0, 0, 0},\r
 \r
        { ShellMenuGitSVNIgnore,                                MENUSVNIGNORE,          IDI_IGNORE,                             IDS_MENUSVNIGNORE,                              IDS_MENUSVNIGNORE_DESC,\r
-       ITEMIS_INSVN|ITEMIS_GITSVN|ITEMIS_EXTENDED, 0, ITEMIS_FOLDERINSVN|ITEMIS_GITSVN|ITEMIS_EXTENDED, 0, 0, 0, 0, 0},\r
+       ITEMIS_INSVN|ITEMIS_GITSVN, 0, ITEMIS_FOLDERINSVN|ITEMIS_GITSVN, 0, 0, 0, 0, 0},\r
 \r
        { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 \r
@@ -83,10 +83,10 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, 0, 0 },\r
 \r
        { ShellMenuRefLog,                                              MENUREFLOG,                     IDI_LOG,                                IDS_MENUREFLOG,                         IDS_MENUDESCREFLOG,\r
-       ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, 0, 0 },\r
+       ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, 0, 0 },\r
 \r
        { ShellMenuRefBrowse,                                   MENUREFBROWSE,          IDI_REPOBROWSE,                 IDS_MENUREFBROWSE,                      IDS_MENUDESCREFBROWSE,\r
-       ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, 0, 0 },\r
+       ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, 0, 0 },\r
 \r
 \r
 //     { ShellMenuRepoBrowse,                                  MENUREPOBROWSE,         IDI_REPOBROWSE,                 IDS_MENUREPOBROWSE,                     IDS_MENUDESCREPOBROWSE,\r
@@ -108,7 +108,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuStashPop,                                MENUSTASHPOP,           IDI_RELOCATE,                       IDS_MENUSTASHPOP,                               IDS_MENUSTASHPOP,\r
        ITEMIS_INSVN|ITEMIS_STASH, 0, ITEMIS_FOLDERINSVN|ITEMIS_STASH, 0, 0, 0, 0, 0 },\r
        { ShellMenuStashList,                               MENUSTASHAPPLY,         IDI_LOG,                            IDS_MENUSTASHLIST,                              IDS_MENUSTASHLIST,\r
-       ITEMIS_INSVN|ITEMIS_EXTENDED, 0, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, 0, 0, 0, 0, 0 },\r
+       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
 \r
        { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
@@ -126,8 +126,8 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuRemove,                                              MENUREMOVE,                     IDI_DELETE,                             IDS_MENUREMOVE,                         IDS_MENUDESCREMOVE,\r
        ITEMIS_INSVN|ITEMIS_INVERSIONEDFOLDER, ITEMIS_ADDED, 0, 0, 0, 0, 0, 0 },\r
 \r
-       { ShellMenuRemoveKeep,                                  MENUREMOVE,                     IDI_DELETE,                             IDS_MENUREMOVEKEEP,                     IDS_MENUDESCREMOVEKEEP,\r
-       ITEMIS_INSVN|ITEMIS_INVERSIONEDFOLDER|ITEMIS_EXTENDED, ITEMIS_ADDED, 0, 0, 0, 0, 0, 0 },\r
+       { ShellMenuRemoveKeep,                                  MENUREMOVEKEEP,                 IDI_DELETE,                             IDS_MENUREMOVEKEEP,                     IDS_MENUDESCREMOVEKEEP,\r
+       ITEMIS_INSVN|ITEMIS_INVERSIONEDFOLDER, ITEMIS_ADDED, 0, 0, 0, 0, 0, 0 },\r
 \r
        { ShellMenuRevert,                                              MENUREVERT,                     IDI_REVERT,                             IDS_MENUREVERT,                         IDS_MENUDESCREVERT,\r
        ITEMIS_INSVN, ITEMIS_NORMAL|ITEMIS_ADDED, ITEMIS_FOLDERINSVN, ITEMIS_ADDED, 0, 0, 0, 0 },\r
@@ -136,7 +136,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        ITEMIS_ADDED, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN|ITEMIS_ADDED, 0, 0, 0, 0, 0 },\r
 \r
        { ShellMenuDelUnversioned,                              MENUDELUNVERSIONED,     IDI_DELUNVERSIONED,             IDS_MENUDELUNVERSIONED,         IDS_MENUDESCDELUNVERSIONED,\r
-       ITEMIS_FOLDER|ITEMIS_INSVN|ITEMIS_EXTENDED, 0, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, 0, 0, 0, 0, 0 },\r
+       ITEMIS_FOLDER|ITEMIS_INSVN, 0, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
        { ShellMenuCleanup,                                             MENUCLEANUP,            IDI_CLEANUP,                    IDS_MENUCLEANUP,                        IDS_MENUDESCCLEANUP,\r
        ITEMIS_INSVN|ITEMIS_FOLDER, 0, ITEMIS_FOLDERINSVN|ITEMIS_FOLDER, 0, 0, 0, 0, 0 },\r
@@ -208,7 +208,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_SUBMODULE, 0, 0, 0, 0, 0, 0, 0 },\r
 \r
        { ShellMenuSubSync,                                     MENUSUBSYNC,                    IDI_MENUSYNC,                           IDS_MENUSUBSYNC,                        IDS_MENUSUBSYNC,\r
-       ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_SUBMODULE|ITEMIS_EXTENDED, 0, 0, 0, 0, 0, 0, 0 },\r
+       ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_SUBMODULE, 0, 0, 0, 0, 0, 0, 0 },\r
 \r
 \r
 \r
@@ -225,10 +225,10 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 \r
 \r
        { ShellMenuCreatePatch,                                 MENUCREATEPATCH,        IDI_CREATEPATCH,                IDS_MENUCREATEPATCH,            IDS_MENUDESCCREATEPATCH,\r
-       ITEMIS_INSVN|ITEMIS_EXTENDED, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, 0, 0, 0, 0, 0 },\r
+       ITEMIS_INSVN, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
        { ShellMenuApplyPatch,                                  MENUAPPLYPATCH,         IDI_PATCH,                              IDS_MENUAPPLYPATCH,                     IDS_MENUDESCAPPLYPATCH,\r
-       ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_ONLYONE|ITEMIS_PATCHFILE, 0, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, ITEMIS_ADDED, 0, 0 },\r
+       ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_FOLDERINSVN, ITEMIS_ADDED, ITEMIS_ONLYONE|ITEMIS_PATCHFILE, 0, ITEMIS_FOLDERINSVN, ITEMIS_ADDED, 0, 0 },\r
 \r
        { ShellMenuSendMail,                                    MENUSENDMAIL,           IDI_MENUSENDMAIL,                       IDS_MENUSENDMAIL,                       IDS_MENUDESSENDMAIL,\r
        ITEMIS_PATCHFILE, 0,  0, 0,  0, 0, 0, 0 },\r
@@ -1180,6 +1180,7 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
 \r
        unsigned __int64 topmenu = g_ShellCache.GetMenuLayout();\r
        unsigned __int64 menumask = g_ShellCache.GetMenuMask();\r
+       unsigned __int64 menuex = g_ShellCache.GetMenuExt();\r
 \r
        int menuIndex = 0;\r
        bool bAddSeparator = false;\r
@@ -1321,6 +1322,14 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
                        else if ((menuInfo[menuIndex].fourthno)&&((menuInfo[menuIndex].fourthno & (~itemStates)) == menuInfo[menuIndex].fourthno))\r
                                bInsertMenu = true;\r
 \r
+                       if (menuInfo[menuIndex].menuID & menuex)\r
+                       {\r
+                               if( !(itemStates & ITEMIS_EXTENDED) )\r
+                               {\r
+                                       bInsertMenu = false;\r
+                               }\r
+                       }\r
+\r
                        if (menuInfo[menuIndex].menuID & (~menumask))\r
                        {\r
                                if (bInsertMenu)\r