mirror of
https://github.com/glfw/glfw.git
synced 2024-11-15 02:34:36 +00:00
Fix imgui window resizing and dragging issue while undocking.
This commit is contained in:
parent
d516e66801
commit
359bcc31d0
@ -490,7 +490,9 @@ static void releaseMonitor(_GLFWwindow* window)
|
|||||||
static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
||||||
WPARAM wParam, LPARAM lParam)
|
WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
static RECT border_thickness;
|
static RECT border_thickness = { 0, 0, 0, 0 };
|
||||||
|
if (!_glfw.hints.window.titlebar)
|
||||||
|
SetRect(&border_thickness, 8, 8, 8, 8);
|
||||||
|
|
||||||
_GLFWwindow* window = GetPropW(hWnd, L"GLFW");
|
_GLFWwindow* window = GetPropW(hWnd, L"GLFW");
|
||||||
if (!window)
|
if (!window)
|
||||||
@ -548,22 +550,8 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
|||||||
if (_glfw.hints.window.titlebar)
|
if (_glfw.hints.window.titlebar)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//find border thickness
|
|
||||||
SetRectEmpty(&border_thickness);
|
|
||||||
if (GetWindowLongPtr(hWnd, GWL_STYLE) & WS_THICKFRAME)
|
|
||||||
{
|
|
||||||
AdjustWindowRectEx(&border_thickness, GetWindowLongPtr(hWnd, GWL_STYLE) & ~WS_CAPTION, FALSE, NULL);
|
|
||||||
border_thickness.left *= -1;
|
|
||||||
border_thickness.top *= -1;
|
|
||||||
}
|
|
||||||
else// if (GetWindowLongPtr(hWnd, GWL_STYLE) & WS_BORDER)
|
|
||||||
{
|
|
||||||
SetRect(&border_thickness, 4, 4, 4, 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
MARGINS margins = { 0 };
|
MARGINS margins = { 0 };
|
||||||
DwmExtendFrameIntoClientArea(hWnd, &margins);
|
DwmExtendFrameIntoClientArea(hWnd, &margins);
|
||||||
SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -573,14 +561,8 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
|||||||
if (_glfw.hints.window.titlebar)
|
if (_glfw.hints.window.titlebar)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Extend the frame into the client area.
|
|
||||||
MARGINS margins = { 0 };
|
MARGINS margins = { 0 };
|
||||||
auto hr = DwmExtendFrameIntoClientArea(hWnd, &margins);
|
DwmExtendFrameIntoClientArea(hWnd, &margins);
|
||||||
|
|
||||||
if (!SUCCEEDED(hr))
|
|
||||||
{
|
|
||||||
// Handle the error.
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1273,12 +1255,7 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
|||||||
|
|
||||||
// Extend the frame into the client area.
|
// Extend the frame into the client area.
|
||||||
MARGINS margins = { 0 };
|
MARGINS margins = { 0 };
|
||||||
auto hr = DwmExtendFrameIntoClientArea(hWnd, &margins);
|
DwmExtendFrameIntoClientArea(hWnd, &margins);
|
||||||
|
|
||||||
if (!SUCCEEDED(hr))
|
|
||||||
{
|
|
||||||
// Handle the error.
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1287,6 +1264,8 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
|||||||
if (_glfw.hints.window.titlebar)
|
if (_glfw.hints.window.titlebar)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if (GetWindowLongPtr(hWnd, GWL_STYLE) & WS_THICKFRAME)
|
||||||
|
{
|
||||||
POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
|
POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
|
||||||
ScreenToClient(hWnd, &pt);
|
ScreenToClient(hWnd, &pt);
|
||||||
RECT rc;
|
RECT rc;
|
||||||
@ -1321,6 +1300,7 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user