Make window resize less lagged on Windows

This commit is contained in:
Ilya Fedin 2022-05-21 17:10:21 +04:00 committed by John Preston
parent cdfa6ea2bf
commit b5da6e709d

View file

@ -242,6 +242,18 @@ void WindowHelper::setNativeFrame(bool enabled) {
updateMargins(); updateMargins();
updateWindowFrameColors(); updateWindowFrameColors();
fixMaximizedWindow(); fixMaximizedWindow();
SetWindowPos(
_handle,
0,
0,
0,
0,
0,
SWP_FRAMECHANGED
| SWP_NOMOVE
| SWP_NOSIZE
| SWP_NOZORDER
| SWP_NOACTIVATE);
} }
void WindowHelper::initialShadowUpdate() { void WindowHelper::initialShadowUpdate() {
@ -405,17 +417,14 @@ bool WindowHelper::handleNativeEvent(
} return true; } return true;
case WM_NCCALCSIZE: { case WM_NCCALCSIZE: {
if (_title->isHidden()) { if (_title->isHidden() || !wParam) {
return false; return false;
} }
WINDOWPLACEMENT wp; WINDOWPLACEMENT wp;
wp.length = sizeof(WINDOWPLACEMENT); wp.length = sizeof(WINDOWPLACEMENT);
if (GetWindowPlacement(_handle, &wp) if (GetWindowPlacement(_handle, &wp)
&& (wp.showCmd == SW_SHOWMAXIMIZED)) { && (wp.showCmd == SW_SHOWMAXIMIZED)) {
const auto params = (LPNCCALCSIZE_PARAMS)lParam; const auto r = &((LPNCCALCSIZE_PARAMS)lParam)->rgrc[0];
const auto r = (wParam == TRUE)
? &params->rgrc[0]
: (LPRECT)lParam;
const auto hMonitor = MonitorFromPoint( const auto hMonitor = MonitorFromPoint(
{ (r->left + r->right) / 2, (r->top + r->bottom) / 2 }, { (r->left + r->right) / 2, (r->top + r->bottom) / 2 },
MONITOR_DEFAULTTONEAREST); MONITOR_DEFAULTTONEAREST);
@ -435,8 +444,10 @@ bool WindowHelper::handleNativeEvent(
} }
} }
} }
}
if (result) *result = 0; if (result) *result = 0;
} else {
if (result) *result = WVR_REDRAW;
}
return true; return true;
} }