Loading widget/src/cocoa/nsChildView.mm +34 −23 Original line number Diff line number Diff line Loading @@ -200,6 +200,7 @@ nsIWidget * gRollupWidget = nsnull; - (void)fireKeyEventForFlagsChanged:(NSEvent*)theEvent keyDown:(BOOL)isKeyDown; - (void)initTSMDocument; @end Loading Loading @@ -5092,6 +5093,9 @@ GetUSLayoutCharFromKeyTranslate(UInt32 aKeyCode, UInt32 aModifiers) if (!mGeckoChild) return nsRect(0, 0, 0, 0); if (aEventType == NS_COMPOSITION_START) [self initTSMDocument]; // static void init_composition_event( *aEvent, int aType) nsCompositionEvent event(PR_TRUE, aEventType, mGeckoChild); event.time = PR_IntervalNow(); Loading Loading @@ -5199,9 +5203,14 @@ GetUSLayoutCharFromKeyTranslate(UInt32 aKeyCode, UInt32 aModifiers) } } mKeyPressHandled = mGeckoChild->DispatchWindowEvent(geckoEvent); PRBool keyPressHandled = mGeckoChild->DispatchWindowEvent(geckoEvent); // Only record the results of dispatching geckoEvent if we're currently // processing a keyDown event. if (mCurKeyEvent) { mKeyPressHandled = keyPressHandled; mKeyPressSent = YES; } } else { if (!nsTSMManager::IsComposing()) { [self sendCompositionEvent:NS_COMPOSITION_START]; Loading Loading @@ -5650,27 +5659,6 @@ static const char* ToEscapedString(NSString* aString, nsCAutoString& aBuf) } } // We need to initialize the TSMDocument *before* interpretKeyEvents when // IME is enabled. if (!isKeyEquiv && nsTSMManager::IsIMEEnabled()) { // We need to get actual focused view. E.g., the view is in bookmark dialog // that is <panel> element. Then, the key events are processed the parent // window's view that has native focus. nsQueryContentEvent textContent(PR_TRUE, NS_QUERY_TEXT_CONTENT, mGeckoChild); textContent.InitForQueryTextContent(0, 0); mGeckoChild->DispatchWindowEvent(textContent); NSView<mozView>* focusedView = self; if (textContent.mSucceeded && textContent.mReply.mFocusedWidget) { NSView<mozView>* view = static_cast<NSView<mozView>*>(textContent.mReply.mFocusedWidget-> GetNativeData(NS_NATIVE_WIDGET)); if (view) focusedView = view; } nsTSMManager::InitTSMDocument(focusedView); } // Let Cocoa interpret the key events, caching IsComposing first. // We don't do it if this came from performKeyEquivalent because // interpretKeyEvents isn't set up to handle those key combinations. Loading Loading @@ -5720,6 +5708,29 @@ static const char* ToEscapedString(NSString* aString, nsCAutoString& aBuf) NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); } - (void)initTSMDocument { if (!mGeckoChild) return; // We need to get actual focused view. E.g., the view is in bookmark dialog // that is <panel> element. Then, the key events are processed the parent // window's view that has native focus. nsQueryContentEvent textContent(PR_TRUE, NS_QUERY_TEXT_CONTENT, mGeckoChild); textContent.InitForQueryTextContent(0, 0); mGeckoChild->DispatchWindowEvent(textContent); NSView<mozView>* focusedView = self; if (textContent.mSucceeded && textContent.mReply.mFocusedWidget) { NSView<mozView>* view = static_cast<NSView<mozView>*>(textContent.mReply.mFocusedWidget-> GetNativeData(NS_NATIVE_WIDGET)); if (view) focusedView = view; } nsTSMManager::InitTSMDocument(focusedView); } // Create a TSM document for use with plugins, so that we can support IME in // them. Once it's created, if need be (re)activate it. Some plugins (e.g. Loading Loading
widget/src/cocoa/nsChildView.mm +34 −23 Original line number Diff line number Diff line Loading @@ -200,6 +200,7 @@ nsIWidget * gRollupWidget = nsnull; - (void)fireKeyEventForFlagsChanged:(NSEvent*)theEvent keyDown:(BOOL)isKeyDown; - (void)initTSMDocument; @end Loading Loading @@ -5092,6 +5093,9 @@ GetUSLayoutCharFromKeyTranslate(UInt32 aKeyCode, UInt32 aModifiers) if (!mGeckoChild) return nsRect(0, 0, 0, 0); if (aEventType == NS_COMPOSITION_START) [self initTSMDocument]; // static void init_composition_event( *aEvent, int aType) nsCompositionEvent event(PR_TRUE, aEventType, mGeckoChild); event.time = PR_IntervalNow(); Loading Loading @@ -5199,9 +5203,14 @@ GetUSLayoutCharFromKeyTranslate(UInt32 aKeyCode, UInt32 aModifiers) } } mKeyPressHandled = mGeckoChild->DispatchWindowEvent(geckoEvent); PRBool keyPressHandled = mGeckoChild->DispatchWindowEvent(geckoEvent); // Only record the results of dispatching geckoEvent if we're currently // processing a keyDown event. if (mCurKeyEvent) { mKeyPressHandled = keyPressHandled; mKeyPressSent = YES; } } else { if (!nsTSMManager::IsComposing()) { [self sendCompositionEvent:NS_COMPOSITION_START]; Loading Loading @@ -5650,27 +5659,6 @@ static const char* ToEscapedString(NSString* aString, nsCAutoString& aBuf) } } // We need to initialize the TSMDocument *before* interpretKeyEvents when // IME is enabled. if (!isKeyEquiv && nsTSMManager::IsIMEEnabled()) { // We need to get actual focused view. E.g., the view is in bookmark dialog // that is <panel> element. Then, the key events are processed the parent // window's view that has native focus. nsQueryContentEvent textContent(PR_TRUE, NS_QUERY_TEXT_CONTENT, mGeckoChild); textContent.InitForQueryTextContent(0, 0); mGeckoChild->DispatchWindowEvent(textContent); NSView<mozView>* focusedView = self; if (textContent.mSucceeded && textContent.mReply.mFocusedWidget) { NSView<mozView>* view = static_cast<NSView<mozView>*>(textContent.mReply.mFocusedWidget-> GetNativeData(NS_NATIVE_WIDGET)); if (view) focusedView = view; } nsTSMManager::InitTSMDocument(focusedView); } // Let Cocoa interpret the key events, caching IsComposing first. // We don't do it if this came from performKeyEquivalent because // interpretKeyEvents isn't set up to handle those key combinations. Loading Loading @@ -5720,6 +5708,29 @@ static const char* ToEscapedString(NSString* aString, nsCAutoString& aBuf) NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); } - (void)initTSMDocument { if (!mGeckoChild) return; // We need to get actual focused view. E.g., the view is in bookmark dialog // that is <panel> element. Then, the key events are processed the parent // window's view that has native focus. nsQueryContentEvent textContent(PR_TRUE, NS_QUERY_TEXT_CONTENT, mGeckoChild); textContent.InitForQueryTextContent(0, 0); mGeckoChild->DispatchWindowEvent(textContent); NSView<mozView>* focusedView = self; if (textContent.mSucceeded && textContent.mReply.mFocusedWidget) { NSView<mozView>* view = static_cast<NSView<mozView>*>(textContent.mReply.mFocusedWidget-> GetNativeData(NS_NATIVE_WIDGET)); if (view) focusedView = view; } nsTSMManager::InitTSMDocument(focusedView); } // Create a TSM document for use with plugins, so that we can support IME in // them. Once it's created, if need be (re)activate it. Some plugins (e.g. Loading