|
@@ -107,7 +107,7 @@ struct ImGui_ImplWin32_Data
|
|
{
|
|
{
|
|
HWND hWnd;
|
|
HWND hWnd;
|
|
HWND MouseHwnd;
|
|
HWND MouseHwnd;
|
|
- int MouseTrackedArea; // 0: not tracked, 1: client are, 2: non-client area
|
|
|
|
|
|
+ int MouseTrackedArea; // 0: not tracked, 1: client area, 2: non-client area
|
|
int MouseButtonsDown;
|
|
int MouseButtonsDown;
|
|
INT64 Time;
|
|
INT64 Time;
|
|
INT64 TicksPerSecond;
|
|
INT64 TicksPerSecond;
|
|
@@ -629,6 +629,16 @@ IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hwnd, UINT msg, WPARA
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
+ case WM_DESTROY:
|
|
|
|
+ if (bd->MouseHwnd == hwnd && bd->MouseTrackedArea != 0)
|
|
|
|
+ {
|
|
|
|
+ TRACKMOUSEEVENT tme_cancel = { sizeof(tme_cancel), TME_CANCEL, hwnd, 0 };
|
|
|
|
+ ::TrackMouseEvent(&tme_cancel);
|
|
|
|
+ bd->MouseHwnd = nullptr;
|
|
|
|
+ bd->MouseTrackedArea = 0;
|
|
|
|
+ io.AddMousePosEvent(-FLT_MAX, -FLT_MAX);
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK:
|
|
case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK:
|
|
case WM_RBUTTONDOWN: case WM_RBUTTONDBLCLK:
|
|
case WM_RBUTTONDOWN: case WM_RBUTTONDBLCLK:
|
|
case WM_MBUTTONDOWN: case WM_MBUTTONDBLCLK:
|
|
case WM_MBUTTONDOWN: case WM_MBUTTONDBLCLK:
|