From a5df2e7120412dfdedb9f4951cdb061c0f218bf7 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 22 Aug 2014 14:19:04 +0200 Subject: Cocoa: Handle insertNewLine selector for when it is sent while composing text Some IMEs will perform an insertNewLine when Return/Enter is pressed while composing text as well as causing the edit to finish. By handling this it will ensure that the extra enter/return event is sent when the IME requests it. Task-id: QTBUG-39125 Change-Id: Ice6eded68e6b1dc51703a38316f76f78099923da Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/platforms/cocoa/qnsview.h | 1 + src/plugins/platforms/cocoa/qnsview.mm | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index cbeecb987f..44a1556fc4 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -78,6 +78,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QNSViewMouseMoveHelper); bool m_shouldSetGLContextinDrawRect; NSString *m_inputSource; QNSViewMouseMoveHelper *m_mouseMoveHelper; + bool m_resendKeyEvent; } - (id)init; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 7ece5dcdf8..86691456b8 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -149,6 +149,7 @@ static NSString *_q_NSWindowDidChangeOcclusionStateNotification = nil; m_sendUpAsRightButton = false; m_inputSource = 0; m_mouseMoveHelper = [[QNSViewMouseMoveHelper alloc] initWithView:self]; + m_resendKeyEvent = false; if (!touchDevice) { touchDevice = new QTouchDevice; @@ -1402,6 +1403,8 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent) } } } + if (m_resendKeyEvent) + m_sendKeyEvent = true; } if (m_sendKeyEvent && m_composingText.isEmpty()) @@ -1409,6 +1412,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent) nativeScanCode, nativeVirtualKey, nativeModifiers, text, [nsevent isARepeat]); m_sendKeyEvent = false; + m_resendKeyEvent = false; } - (void)keyDown:(NSEvent *)nsevent @@ -1479,6 +1483,12 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent) } } +- (void) insertNewline:(id)sender +{ + Q_UNUSED(sender); + m_resendKeyEvent = true; +} + - (void) doCommandBySelector:(SEL)aSelector { [self tryToPerform:aSelector with:self]; -- cgit v1.2.3