mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 00:32:57 -04:00
windisplay: Fix parented child window being offset
This would happen if the undecorated flag is not set; it would receive an additional offset equal to the size of the window decoration. Fixes regression presumably caused by a968caf1d207023b2820cf4c31ae3e7324ffb218
This commit is contained in:
parent
576c25b3ea
commit
48fb2f721f
@ -298,26 +298,28 @@ set_properties_now(WindowProperties &properties) {
|
|||||||
// When switching undecorated mode, Windows will keep the window at the
|
// When switching undecorated mode, Windows will keep the window at the
|
||||||
// current outer size, whereas we want to keep it with the configured
|
// current outer size, whereas we want to keep it with the configured
|
||||||
// inner size. Store the current size and origin.
|
// inner size. Store the current size and origin.
|
||||||
LPoint2i top_left = _properties.get_origin();
|
if (_parent_window_handle == nullptr) {
|
||||||
LPoint2i bottom_right = top_left + _properties.get_size();
|
LPoint2i top_left = _properties.get_origin();
|
||||||
|
LPoint2i bottom_right = top_left + _properties.get_size();
|
||||||
|
|
||||||
DWORD window_style = make_style(_properties);
|
DWORD window_style = make_style(_properties);
|
||||||
SetWindowLong(_hWnd, GWL_STYLE, window_style);
|
SetWindowLong(_hWnd, GWL_STYLE, window_style);
|
||||||
|
|
||||||
// Now calculate the proper size and origin with the new window style.
|
// Now calculate the proper size and origin with the new window style.
|
||||||
RECT view_rect;
|
RECT view_rect;
|
||||||
SetRect(&view_rect, top_left[0], top_left[1],
|
SetRect(&view_rect, top_left[0], top_left[1],
|
||||||
bottom_right[0], bottom_right[1]);
|
bottom_right[0], bottom_right[1]);
|
||||||
WINDOWINFO wi;
|
WINDOWINFO wi;
|
||||||
GetWindowInfo(_hWnd, &wi);
|
GetWindowInfo(_hWnd, &wi);
|
||||||
AdjustWindowRectEx(&view_rect, wi.dwStyle, FALSE, wi.dwExStyle);
|
AdjustWindowRectEx(&view_rect, wi.dwStyle, FALSE, wi.dwExStyle);
|
||||||
|
|
||||||
// We need to call this to ensure that the style change takes effect.
|
// We need to call this to ensure that the style change takes effect.
|
||||||
SetWindowPos(_hWnd, HWND_NOTOPMOST, view_rect.left, view_rect.top,
|
SetWindowPos(_hWnd, HWND_NOTOPMOST, view_rect.left, view_rect.top,
|
||||||
view_rect.right - view_rect.left,
|
view_rect.right - view_rect.left,
|
||||||
view_rect.bottom - view_rect.top,
|
view_rect.bottom - view_rect.top,
|
||||||
SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED |
|
SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED |
|
||||||
SWP_NOSENDCHANGING | SWP_SHOWWINDOW);
|
SWP_NOSENDCHANGING | SWP_SHOWWINDOW);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (properties.has_title()) {
|
if (properties.has_title()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user