Can't type on some websites (plug-ins steal key events).
authorenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Mar 2012 01:35:47 +0000 (01:35 +0000)
committerenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Mar 2012 01:35:47 +0000 (01:35 +0000)
<rdar://problem/10892291>

When the plugin is disabled, it is necessary to reset _pluginComplexTextInputIdentifier
in order to return the correct input context. Failure to do so results in the inputContext
method to return the plugin input context instead of the context of the browser view.

Reviewed by Sam Weinig.

* UIProcess/API/mac/WKView.mm:
(-[WKView _setPluginComplexTextInputState:]):
(-[WKView _handlePluginComplexTextInputKeyDown:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@109826 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/mac/WKView.mm

index 0bc7b24..b6d31d6 100644 (file)
@@ -1,3 +1,18 @@
+2012-03-05  Enrica Casucci  <enrica@apple.com>
+
+        Can't type on some websites (plug-ins steal key events).
+        <rdar://problem/10892291>
+
+        When the plugin is disabled, it is necessary to reset _pluginComplexTextInputIdentifier
+        in order to return the correct input context. Failure to do so results in the inputContext
+        method to return the plugin input context instead of the context of the browser view.
+        
+        Reviewed by Sam Weinig.
+
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView _setPluginComplexTextInputState:]):
+        (-[WKView _handlePluginComplexTextInputKeyDown:]):
+
 2012-03-05  Anders Carlsson  <andersca@apple.com>
 
         Be more aggressive about repainting page overlays
index b50ce36..a326dd0 100644 (file)
@@ -374,6 +374,7 @@ struct WKViewInterpretKeyEventsParameters {
 
     // Send back an empty string to the plug-in. This will disable text input.
     _data->_page->sendComplexTextInputToPlugin(_data->_pluginComplexTextInputIdentifier, String());
+    _data->_pluginComplexTextInputIdentifier = 0;   // Always reset the identifier when the plugin is disabled.
 }
 
 typedef HashMap<SEL, String> SelectorNameMap;
@@ -1263,8 +1264,10 @@ static const short kIOHIDEventTypeScroll = 6;
     if (string) {
         _data->_page->sendComplexTextInputToPlugin(_data->_pluginComplexTextInputIdentifier, string);
 
-        if (!usingLegacyCocoaTextInput)
+        if (!usingLegacyCocoaTextInput) {
             _data->_pluginComplexTextInputState = PluginComplexTextInputDisabled;
+            _data->_pluginComplexTextInputIdentifier = 0;   // Always reset the identifier when the plugin is disabled.
+        }
     }
 
     return didHandleEvent;