From 2e94947c5602800b540fdabbb9c058a63f13e9d0 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Thu, 20 Sep 2018 13:22:09 +0200 Subject: qnsview_key/qnsview_mouse make Ctrl+left click work again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A result of typo/incorrect keyboard modifiers extracted + wrong button sent via QWindowSystemInterface::handleMouseEvent. Task-number: QTBUG-70512 Change-Id: I809168e363496884312412051e8d435f5794b3be Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/cocoa/qnsview_keys.mm | 2 +- src/plugins/platforms/cocoa/qnsview_mouse.mm | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/platforms/cocoa/qnsview_keys.mm b/src/plugins/platforms/cocoa/qnsview_keys.mm index 85c0607265..28db532ddc 100644 --- a/src/plugins/platforms/cocoa/qnsview_keys.mm +++ b/src/plugins/platforms/cocoa/qnsview_keys.mm @@ -47,7 +47,7 @@ Qt::KeyboardModifiers qtMods =Qt::NoModifier; if (modifierFlags & NSEventModifierFlagShift) qtMods |= Qt::ShiftModifier; - if (modifierFlags & NSEventModifierFlagShift) + if (modifierFlags & NSEventModifierFlagControl) qtMods |= dontSwapCtrlAndMeta ? Qt::ControlModifier : Qt::MetaModifier; if (modifierFlags & NSEventModifierFlagOption) qtMods |= Qt::AltModifier; diff --git a/src/plugins/platforms/cocoa/qnsview_mouse.mm b/src/plugins/platforms/cocoa/qnsview_mouse.mm index 468f26ffb4..3d6471005d 100644 --- a/src/plugins/platforms/cocoa/qnsview_mouse.mm +++ b/src/plugins/platforms/cocoa/qnsview_mouse.mm @@ -198,7 +198,9 @@ const auto modifiers = [QNSView convertKeyModifiers:theEvent.modifierFlags]; const auto buttons = currentlyPressedMouseButtons(); - const auto button = cocoaButton2QtButton(theEvent); + auto button = cocoaButton2QtButton(theEvent); + if (button == Qt::LeftButton && m_sendUpAsRightButton) + button = Qt::RightButton; const auto eventType = cocoaEvent2QtMouseEvent(theEvent); QWindowSystemInterface::handleMouseEvent(targetView->m_platformWindow->window(), @@ -266,12 +268,14 @@ if (m_sendUpAsRightButton && button == Qt::LeftButton) button = Qt::RightButton; - if (button == Qt::RightButton) - m_sendUpAsRightButton = false; m_buttons &= ~button; [self handleMouseEvent:theEvent]; + + if (button == Qt::RightButton) + m_sendUpAsRightButton = false; + return true; } -- cgit v1.2.3