1
0
mirror of https://github.com/valinet/ExplorerPatcher.git synced 2024-11-13 18:50:46 +01:00

Fixed #629 (Windows 10 language switcher displays correctly when taskbar is not located at the bottom of the screen)

This commit is contained in:
Valentin Radu 2022-01-06 00:11:31 +02:00
parent a64a96e372
commit 32cd66dc51
3 changed files with 47 additions and 3 deletions

View File

@ -15,6 +15,11 @@ Tested on OS build 22000.376.
* The option to toggle taskbar auto hide when double clicking the taskbar now works with the Windows 11 taskbar as well
* Performing a memory leak dump now displays GDI, peak GDI, USER and peak USER object counts as well
* The language switcher list displays only the options that work (previously, it showed some cryptic internal implementations, like "LOGONUI", "UAC", "SETTINGPAGE" and "OOBE"). Thus, the list of language switchers offers the following choices:
* Windows 11 (default)
* Windows 10 (with link to "Language Preferences")
* Windows 10
#### Fixes
@ -23,6 +28,7 @@ Tested on OS build 22000.376.
* Fixed a wrong function prototype (5b4bd07#r62018175, thanks @Simplestas)
* Protected some state variables from changing internally if modified in the registry until `explorer` is restarted
* Fixed a bug that could unexpectedly prevent the [Win]+[Alt]+[D] shortcut from working properly
* Windows 10 language switcher displays correctly when the taskbar is placed in some location other than the bottom of the screen (#629) (.2).
## 22000.376.40

View File

@ -5736,6 +5736,44 @@ HRESULT CInputSwitchControl_ShowInputSwitchHook(IInputSwitchControl* _this, RECT
double dpiy = dpiY / 96.0;
//printf("RECT %d %d %d %d - %d %d\n", lpRect->left, lpRect->right, lpRect->top, lpRect->bottom, dwNumberOfProfiles, a3);
RECT rc;
GetWindowRect(hWndTaskbar, &rc);
POINT pt;
pt.x = rc.left;
pt.y = rc.top;
UINT tbPos = GetTaskbarLocationAndSize(pt, &rc);
if (tbPos == TB_POS_BOTTOM)
{
}
else if (tbPos == TB_POS_TOP)
{
if (dwIMEStyle == 1) // Windows 10 (with Language preferences link)
{
lpRect->top = rc.top + (rc.bottom - rc.top) + (UINT)(((double)dwNumberOfProfiles * (60.0 * dpiy)) + (5.0 * dpiy * 4.0) + (dpiy) + (48.0 * dpiy));
}
else if (dwIMEStyle == 2 || dwIMEStyle == 3 || dwIMEStyle == 4 || dwIMEStyle == 5) // LOGONUI, UAC, Windows 10, OOBE
{
lpRect->top = rc.top + (rc.bottom - rc.top) + (UINT)(((double)dwNumberOfProfiles * (60.0 * dpiy)) + (5.0 * dpiy * 2.0));
}
}
else if (tbPos == TB_POS_LEFT)
{
if (dwIMEStyle == 1 || dwIMEStyle == 2 || dwIMEStyle == 3 || dwIMEStyle == 4 || dwIMEStyle == 5)
{
lpRect->right = rc.left + (rc.right - rc.left) + (UINT)((double)(300.0 * dpix));
lpRect->top += (lpRect->bottom - lpRect->top);
}
}
if (tbPos == TB_POS_RIGHT)
{
if (dwIMEStyle == 1 || dwIMEStyle == 2 || dwIMEStyle == 3 || dwIMEStyle == 4 || dwIMEStyle == 5)
{
lpRect->right = lpRect->right - (rc.right - rc.left);
lpRect->top += (lpRect->bottom - lpRect->top);
}
}
if (dwIMEStyle == 4)
{
lpRect->right -= (UINT)((double)(300.0 * dpix)) - (lpRect->right - lpRect->left);

View File

@ -1,7 +1,7 @@
#define VER_MAJOR 22000
#define VER_MINOR 376
#define VER_BUILD_HI 41
#define VER_BUILD_LO 1
#define VER_BUILD_LO 2
#define VER_FLAGS VS_FF_PRERELEASE
@ -12,5 +12,5 @@
#define VER_STR(arg) #arg
// The String form of the version numbers
#define VER_FILE_STRING VALUE "FileVersion", "22000.376.41.1"
#define VER_PRODUCT_STRING VALUE "ProductVersion", "22000.376.41.1"
#define VER_FILE_STRING VALUE "FileVersion", "22000.376.41.2"
#define VER_PRODUCT_STRING VALUE "ProductVersion", "22000.376.41.2"