OSDN Git Service

ShellExtension: The feature that prioritizes the language used by WinMerge over the...
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 19 May 2019 02:29:42 +0000 (11:29 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 19 May 2019 02:29:42 +0000 (11:29 +0900)
DownloadDeps.cmd
ShellExtension/ShellExtension.cpp
ShellExtension/ShellExtension.rc
ShellExtension/WinMergeShell.cpp

index 6154f16..95d19fa 100644 (file)
@@ -3,7 +3,7 @@ set path="%ProgramFiles%\7-zip";"%ProgramFiles(x86)%\7-zip";%path%
 set downloadsdir=%~dp0\build\WinMergeDownloadDeps
 set urls_destdirs=^
 https://bitbucket.org/winmerge/winmerge/downloads/winmerge_manual_build_tools_v1.zip!Docs\Users\Manual\build ^
-https://bitbucket.org/winmerge/winmerge/downloads/ShellExtension-1.17.8.0.zip!Build ^
+https://bitbucket.org/winmerge/winmerge/downloads/ShellExtension-1.17.9.0.zip!Build ^
 https://bitbucket.org/winmerge/winmerge/downloads/Merge7z1900.1-win32.zip!Build ^
 https://bitbucket.org/winmerge/winmerge/downloads/Merge7z1900.1-x64.zip!Build\X64 ^
 https://bitbucket.org/winmerge/frhed/downloads/frhed-0.10904.2017.1-win32.zip!Build ^
index 0faf5a1..762c0c4 100644 (file)
 #include <initguid.h>
 #include "ShellExtension.h"
 #include "ShellExtension_i.c"
-#include "WinMergeShell.h"
 #include "RegKey.h"
 
-OBJECT_ENTRY_AUTO(CLSID_WinMergeShell, CWinMergeShell)
-
 class CWinMergeShellModule : public ATL::CAtlDllModuleT< CWinMergeShellModule >
 {
 public :
index b5f46f1..2d1bd93 100644 (file)
@@ -325,8 +325,8 @@ END
 //\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 1,17,8,0\r
- PRODUCTVERSION 1,17,8,0\r
+ FILEVERSION 1,17,9,0\r
+ PRODUCTVERSION 1,17,9,0\r
  FILEFLAGSMASK 0x3fL\r
 #ifdef _DEBUG\r
  FILEFLAGS 0x1L\r
@@ -343,12 +343,12 @@ BEGIN
         BEGIN\r
             VALUE "CompanyName", "http://winmerge.org"\r
             VALUE "FileDescription", "WinMerge Shell Integration library"\r
-            VALUE "FileVersion", "1.17.8.0"\r
+            VALUE "FileVersion", "1.17.9.0"\r
             VALUE "InternalName", "ShellExtension"\r
             VALUE "LegalCopyright", "Copyright 2003-2019"\r
             VALUE "OriginalFilename", "ShellExtension.DLL"\r
             VALUE "ProductName", "WinMerge Shell Integration library"\r
-            VALUE "ProductVersion", "1.17.8.0"\r
+            VALUE "ProductVersion", "1.17.9.0"\r
         END\r
     END\r
     BLOCK "VarFileInfo"\r
index 4bf1e27..74a3aa3 100644 (file)
@@ -47,6 +47,8 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
+OBJECT_ENTRY_AUTO(CLSID_WinMergeShell, CWinMergeShell)
+
 /**
  * @brief Flags for enabling and other settings of context menu.
  */
@@ -96,8 +98,6 @@ enum
        MENU_THREESEL
 };
 
-#define USES_WINMERGELOCALE CWinMergeTempLocale __wmtl__
-
 static String GetResourceString(UINT resourceID);
 
 // GreyMerlin (03 Sept 2017) - The following Version Info checking code is a 
@@ -139,48 +139,12 @@ IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WORD wServiceP
 
 
 VERSIONHELPERAPI
-IsWindowsVistaOrGreater()
-{
-    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0);
-}
-
-
-VERSIONHELPERAPI
 IsWindows8OrGreater()
 {
     return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8), LOBYTE(_WIN32_WINNT_WIN8), 0);
 }
 #endif // VERSIONHELPERAPI
 
-class CWinMergeTempLocale
-{
-private:
-       LCID m_lcidOld;
-public:
-       CWinMergeTempLocale()
-       {
-               CRegKeyEx reg;
-               if (reg.Open(HKEY_CURRENT_USER, f_RegLocaleDir) != ERROR_SUCCESS)
-                       return;
-
-               m_lcidOld = GetThreadLocale();
-
-               int iLangId = reg.ReadDword(f_LanguageId, (DWORD)-1);
-               if (iLangId != -1)
-               {
-                       if (!IsWindowsVistaOrGreater())
-                               SetThreadUILanguage(iLangId);
-                       SetThreadLocale(MAKELCID(iLangId, SORT_DEFAULT));
-               }
-       }
-       ~CWinMergeTempLocale()
-       {
-               if (!IsWindowsVistaOrGreater())
-                       SetThreadUILanguage(LANGIDFROMLCID(m_lcidOld));
-               SetThreadLocale(m_lcidOld);
-       }
-};
-
 /**
  * @brief Load a string from resource.
  * @param [in] Resource string ID.
@@ -249,7 +213,6 @@ CWinMergeShell::~CWinMergeShell()
 HRESULT CWinMergeShell::Initialize(LPCITEMIDLIST pidlFolder,
                LPDATAOBJECT pDataObj, HKEY hProgID)
 {
-       USES_WINMERGELOCALE;
        HRESULT hr = E_INVALIDARG;
 
        // Files/folders selected normally from the explorer
@@ -338,7 +301,6 @@ HRESULT CWinMergeShell::QueryContextMenu(HMENU hmenu, UINT uMenuIndex,
                UINT uidFirstCmd, UINT uidLastCmd, UINT uFlags)
 {
        int nItemsAdded = 0;
-       USES_WINMERGELOCALE;
 
        // If the flags include CMF_DEFAULTONLY then we shouldn't do anything.
        if (uFlags & CMF_DEFAULTONLY)
@@ -384,7 +346,6 @@ HRESULT CWinMergeShell::GetCommandString(UINT_PTR idCmd, UINT uFlags,
                UINT* pwReserved, LPSTR pszName, UINT  cchMax)
 {
        USES_CONVERSION;
-       USES_WINMERGELOCALE;
 
        // Check idCmd, it must be 0 in simple mode and 0 or 1 in advanced mode.
        if ((m_dwMenuState & EXT_ADVANCED) == 0)
@@ -426,7 +387,6 @@ HRESULT CWinMergeShell::InvokeCommand(LPCMINVOKECOMMANDINFO pCmdInfo)
        String strWinMergePath;
        BOOL bCompare = FALSE;
        BOOL bAlterSubFolders = FALSE;
-       USES_WINMERGELOCALE;
 
        // If lpVerb really points to a string, ignore this function call and bail out.
        if (HIWORD(pCmdInfo->lpVerb) != 0)