mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[NTUSER] Fix SetProcessDefaultLayout() (#1013)
- Add a check in co_UserCreateWindowEx() for parentless windows, that checks the default layout direction; if it's LAYOUT_RTL add the WS_EX_LAYOUTRTL flag to the extended window styles. - Make the internal routine accepting also LAYOUT_LTR as a value for SetProcessDefaultLayout(). Limit receiving value to LAYOUT_ORIENTATIONMASK (and not just LAYOUT_RTL) or LAYOUT_LTR, as per written in: https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdefaultlayout Now all the applications that call SetProcessDefaultLayout() to mirror the layout get mirrored. This is based on Wine.
This commit is contained in:
parent
6e4e5a004c
commit
123a7c80e0
2 changed files with 11 additions and 1 deletions
|
@ -342,7 +342,7 @@ NtUserCallOneParam(
|
|||
case ONEPARAM_ROUTINE_SETPROCDEFLAYOUT:
|
||||
{
|
||||
PPROCESSINFO ppi;
|
||||
if (Param & LAYOUT_ORIENTATIONMASK)
|
||||
if (Param & LAYOUT_ORIENTATIONMASK || Param == LAYOUT_LTR)
|
||||
{
|
||||
ppi = PsGetCurrentProcessWin32Process();
|
||||
ppi->dwLayout = Param;
|
||||
|
|
|
@ -2017,6 +2017,16 @@ co_UserCreateWindowEx(CREATESTRUCTW* Cs,
|
|||
EngSetLastError(ERROR_TLW_WITH_WSCHILD);
|
||||
goto cleanup; /* WS_CHILD needs a parent, but WS_POPUP doesn't */
|
||||
}
|
||||
else if (Cs->lpszClass != (LPCWSTR)MAKEINTATOM(gpsi->atomSysClass[ICLS_DESKTOP]) &&
|
||||
(IS_INTRESOURCE(Cs->lpszClass) ||
|
||||
Cs->lpszClass != (LPCWSTR)MAKEINTATOM(gpsi->atomSysClass[ICLS_HWNDMESSAGE]) ||
|
||||
_wcsicmp(Cs->lpszClass, L"Message") != 0))
|
||||
{
|
||||
if (pti->ppi->dwLayout & LAYOUT_RTL)
|
||||
{
|
||||
Cs->dwExStyle |= WS_EX_LAYOUTRTL;
|
||||
}
|
||||
}
|
||||
|
||||
ParentWindow = hWndParent ? UserGetWindowObject(hWndParent): NULL;
|
||||
OwnerWindow = hWndOwner ? UserGetWindowObject(hWndOwner): NULL;
|
||||
|
|
Loading…
Reference in a new issue