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