From 531bef28d8b4da18bb442f7dbdf2b5a552295a8a Mon Sep 17 00:00:00 2001 From: Ashfaaq18 Date: Tue, 21 Sep 2021 22:04:27 +0530 Subject: [PATCH] Fix docked window sizing direction problem in RTL mode Fix #10536, close #10576 --- PowerEditor/src/WinControls/DockingWnd/DockingSplitter.cpp | 4 +++- PowerEditor/src/WinControls/DockingWnd/DockingSplitter.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.cpp b/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.cpp index daeee1263..0c46ce93b 100644 --- a/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.cpp +++ b/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.cpp @@ -31,6 +31,8 @@ void DockingSplitter::init(HINSTANCE hInst, HWND hWnd, HWND hMessage, UINT flags _flags = flags; WNDCLASS wc; + DWORD hwndExStyle = (DWORD)GetWindowLongPtr(hWnd, GWL_EXSTYLE); + isRTL = hwndExStyle & WS_EX_LAYOUTRTL; if (flags & DMS_HORIZONTAL) { @@ -137,7 +139,7 @@ LRESULT DockingSplitter::runProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM } else if (_ptOldPos.x != pt.x) { - ::SendMessage(_hMessage, DMM_MOVE_SPLITTER, _ptOldPos.x - pt.x, reinterpret_cast(_hSelf)); + ::SendMessage(_hMessage, DMM_MOVE_SPLITTER, isRTL ? pt.x - _ptOldPos.x : _ptOldPos.x - pt.x, reinterpret_cast(_hSelf)); } _ptOldPos = pt; } diff --git a/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.h b/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.h index 901c15db9..b1085ce5a 100644 --- a/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.h +++ b/PowerEditor/src/WinControls/DockingWnd/DockingSplitter.h @@ -49,5 +49,8 @@ private: static BOOL _isVertReg; static BOOL _isHoriReg; + + // get layout direction + bool isRTL; };