I think I've done it quickly. Not sure why it wasn't already implemented in WDL-OL.
Anyway, that's the edit on IGraphicsWin.cpp:
Code:
inline IMouseMod GetMouseMod(WPARAM wParam)
{
return IMouseMod((wParam & MK_LBUTTON),
(wParam & MK_RBUTTON),
(wParam & MK_MBUTTON), // added here MIDDLE button
(wParam & MK_SHIFT),
(wParam & MK_CONTROL),
#ifdef RTAS_API
IsOptionKeyDown()
#elif defined(AAX_API)
GetAsyncKeyState(VK_MENU) < 0
#else
GetKeyState(VK_MENU) < 0
#endif
);
}
And that's the new IMouseMod in IPlugStructs.h:
Code:
struct IMouseMod
{
bool L, R, M, S, C, A;
IMouseMod(bool l = false, bool r = false, bool m = false, bool s = false, bool c = false, bool a = false)
: L(l), R(r), M(m), S(s), C(c), A(a) {}
};
And of course, wherever there are controls for MK_LBUTTON/MK_RBUTTON, WM_LBUTTONUP/WM_RBUTTONUP, WM_LBUTTONDOWN/WM_RBUTTONDOWN i've added the respective _M parameter, as well with WM_MBUTTONDBLCLK.
Tested with VST and Windows. Seems to works well. If you find any troubles on RTAS_API or AAX_API, please let me know so I can update the code