REGRESSION (r150291): Chinese predictive input pop-up disappears on twitter.com
authorap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Jul 2013 21:14:58 +0000 (21:14 +0000)
committerap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Jul 2013 21:14:58 +0000 (21:14 +0000)
        https://bugs.webkit.org/show_bug.cgi?id=118739
        <rdar://problem/14300350>

        Reviewed by Daniel Bates.

        EditorState tracking on UI side is very fragile. This is a targeted fix just for
        this specific scenario.

        The issue was that we had a stale m_temporarilyClosedComposition flag, which was
        making UI process believe that a composition was closed from WebProcess side,
        and notify input method about that. It shouldn't have been a problem, because there
        is no composition at this point indeed, but this extra call is a problem for
        predictive input, which works in a somewhat unconventional way (<rdar://problem/14458297>).

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::insertText): Reset m_temporarilyClosedComposition flag when
        getting new EditorState in response to performing this action. There is certainly
        no composition after insertText, and all interested parties are on the same page
        already.

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

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm

index 285f6de..f2ed21c 100644 (file)
@@ -1,3 +1,26 @@
+2013-07-16  Alexey Proskuryakov  <ap@apple.com>
+
+        REGRESSION (r150291): Chinese predictive input pop-up disappears on twitter.com
+        https://bugs.webkit.org/show_bug.cgi?id=118739
+        <rdar://problem/14300350>
+
+        Reviewed by Daniel Bates.
+
+        EditorState tracking on UI side is very fragile. This is a targeted fix just for
+        this specific scenario.
+
+        The issue was that we had a stale m_temporarilyClosedComposition flag, which was
+        making UI process believe that a composition was closed from WebProcess side,
+        and notify input method about that. It shouldn't have been a problem, because there
+        is no composition at this point indeed, but this extra call is a problem for
+        predictive input, which works in a somewhat unconventional way (<rdar://problem/14458297>).
+
+        * UIProcess/mac/WebPageProxyMac.mm:
+        (WebKit::WebPageProxy::insertText): Reset m_temporarilyClosedComposition flag when
+        getting new EditorState in response to performing this action. There is certainly
+        no composition after insertText, and all interested parties are on the same page
+        already.
+
 2013-07-16  Jessie Berlin  <jberlin@apple.com>
 
         Fix some NSDictionary misuse pointed out by the clang static analyzer
index 50796d6..baf3d26 100644 (file)
@@ -221,6 +221,8 @@ bool WebPageProxy::insertText(const String& text, uint64_t replacementRangeStart
 
     bool handled = true;
     process()->sendSync(Messages::WebPage::InsertText(text, replacementRangeStart, replacementRangeEnd), Messages::WebPage::InsertText::Reply(handled, m_editorState), m_pageID);
+    m_temporarilyClosedComposition = false;
+
     return handled;
 }