void handleTaskBarEvent (const LPARAM lParam) { if (owner.isCurrentlyBlockedByAnotherModalComponent()) { if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN || lParam == WM_LBUTTONDBLCLK || lParam == WM_LBUTTONDBLCLK) { Component* const current = Component::getCurrentlyModalComponent(); if (current != nullptr) current->inputAttemptWhenModal(); } } else { ModifierKeys eventMods (ModifierKeys::getCurrentModifiersRealtime()); if (lParam == WM_LBUTTONDOWN || lParam == WM_LBUTTONDBLCLK) eventMods = eventMods.withFlags (ModifierKeys::leftButtonModifier); else if (lParam == WM_RBUTTONDOWN || lParam == WM_RBUTTONDBLCLK) eventMods = eventMods.withFlags (ModifierKeys::rightButtonModifier); else if (lParam == WM_LBUTTONUP || lParam == WM_RBUTTONUP) eventMods = eventMods.withoutMouseButtons(); const MouseEvent e (Desktop::getInstance().getMainMouseSource(), Point<int>(), eventMods, &owner, &owner, Time (getMouseEventTime()), Point<int>(), Time (getMouseEventTime()), 1, false); if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN) { SetFocus (iconData.hWnd); SetForegroundWindow (iconData.hWnd); owner.mouseDown (e); } else if (lParam == WM_LBUTTONUP || lParam == WM_RBUTTONUP) { owner.mouseUp (e); } else if (lParam == WM_LBUTTONDBLCLK || lParam == WM_LBUTTONDBLCLK) { owner.mouseDoubleClick (e); } else if (lParam == WM_MOUSEMOVE) { owner.mouseMove (e); } } }
void offerActiveXMouseEventToPeer (ComponentPeer* const peer, HWND hwnd, UINT message, LPARAM lParam) { RECT activeXRect, peerRect; GetWindowRect (hwnd, &activeXRect); GetWindowRect ((HWND) peer->getNativeHandle(), &peerRect); switch (message) { case WM_MOUSEMOVE: case WM_LBUTTONDOWN: case WM_MBUTTONDOWN: case WM_RBUTTONDOWN: case WM_LBUTTONUP: case WM_MBUTTONUP: case WM_RBUTTONUP: peer->handleMouseEvent (0, Point<int> (GET_X_LPARAM (lParam) + activeXRect.left - peerRect.left, GET_Y_LPARAM (lParam) + activeXRect.top - peerRect.top).toFloat(), ModifierKeys::getCurrentModifiersRealtime(), getMouseEventTime()); break; default: break; } }