|
@@ -18,7 +18,8 @@
|
|
|
|
|
|
// CHANGELOG
|
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
|
-// 2019-01-17: Inputs: Using GetForegroundWindow()+IsChild() instead of GetActiveWindow() to be compatible with windows created in a different thread or parent.
|
|
|
+// 2019-01-17: Misc: Using GetForegroundWindow()+IsChild() instead of GetActiveWindow() to be compatible with windows created in a different thread or parent.
|
|
|
+// 2019-01-17: Inputs: Added support for mouse buttons 4 and 5 via WM_XBUTTON* messages.
|
|
|
// 2019-01-15: Inputs: Added support for XInput gamepads (if ImGuiConfigFlags_NavEnableGamepad is set by user application).
|
|
|
// 2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window.
|
|
|
// 2018-06-29: Inputs: Added support for the ImGuiMouseCursor_Hand cursor.
|
|
@@ -259,11 +260,13 @@ IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hwnd, UINT msg, WPARA
|
|
|
case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK:
|
|
|
case WM_RBUTTONDOWN: case WM_RBUTTONDBLCLK:
|
|
|
case WM_MBUTTONDOWN: case WM_MBUTTONDBLCLK:
|
|
|
+ case WM_XBUTTONDOWN: case WM_XBUTTONDBLCLK:
|
|
|
{
|
|
|
int button = 0;
|
|
|
- if (msg == WM_LBUTTONDOWN || msg == WM_LBUTTONDBLCLK) button = 0;
|
|
|
- if (msg == WM_RBUTTONDOWN || msg == WM_RBUTTONDBLCLK) button = 1;
|
|
|
- if (msg == WM_MBUTTONDOWN || msg == WM_MBUTTONDBLCLK) button = 2;
|
|
|
+ if (msg == WM_LBUTTONDOWN || msg == WM_LBUTTONDBLCLK) { button = 0; }
|
|
|
+ if (msg == WM_RBUTTONDOWN || msg == WM_RBUTTONDBLCLK) { button = 1; }
|
|
|
+ if (msg == WM_MBUTTONDOWN || msg == WM_MBUTTONDBLCLK) { button = 2; }
|
|
|
+ if (msg == WM_XBUTTONDOWN || msg == WM_XBUTTONDBLCLK) { button = (GET_XBUTTON_WPARAM(wParam) == XBUTTON1) ? 3 : 4; }
|
|
|
if (!ImGui::IsAnyMouseDown() && ::GetCapture() == NULL)
|
|
|
::SetCapture(hwnd);
|
|
|
io.MouseDown[button] = true;
|
|
@@ -272,11 +275,13 @@ IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hwnd, UINT msg, WPARA
|
|
|
case WM_LBUTTONUP:
|
|
|
case WM_RBUTTONUP:
|
|
|
case WM_MBUTTONUP:
|
|
|
+ case WM_XBUTTONUP:
|
|
|
{
|
|
|
int button = 0;
|
|
|
- if (msg == WM_LBUTTONUP) button = 0;
|
|
|
- if (msg == WM_RBUTTONUP) button = 1;
|
|
|
- if (msg == WM_MBUTTONUP) button = 2;
|
|
|
+ if (msg == WM_LBUTTONUP) { button = 0; }
|
|
|
+ if (msg == WM_RBUTTONUP) { button = 1; }
|
|
|
+ if (msg == WM_MBUTTONUP) { button = 2; }
|
|
|
+ if (msg == WM_XBUTTONUP) { button = (GET_XBUTTON_WPARAM(wParam) == XBUTTON1) ? 3 : 4; }
|
|
|
io.MouseDown[button] = false;
|
|
|
if (!ImGui::IsAnyMouseDown() && ::GetCapture() == hwnd)
|
|
|
::ReleaseCapture();
|