[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 16:30:39 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 968cec613c0ba5f7f95fc1034551c00f04459fd6
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Nov 24 21:29:28 2010 +0000

    2010-11-24  Kristian Amlie  <kristian.amlie at nokia.com>
    
            Reviewed by Andreas Kling.
    
            Fixed handling of QInputMethodEvents with nonzero replacementLength.
    
            These types of events replace text that is already in the widget, but
            WebKit did not check for replacementLength at all.
    
            https://bugs.webkit.org/show_bug.cgi?id=49787
    
            * Api/qwebpage.cpp:
            (QWebPagePrivate::inputMethodEvent):
            * tests/qwebpage/tst_qwebpage.cpp:
            (tst_QWebPage::inputMethods):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72697 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/qt/Api/qwebpage.cpp b/WebKit/qt/Api/qwebpage.cpp
index e00b4c6..94ed62a 100644
--- a/WebKit/qt/Api/qwebpage.cpp
+++ b/WebKit/qt/Api/qwebpage.cpp
@@ -1080,7 +1080,13 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
         }
     }
 
-    if (!ev->commitString().isEmpty())
+    if (node && ev->replacementLength() > 0) {
+        int cursorPos = frame->selection()->extent().offsetInContainerNode();
+        int start = cursorPos + ev->replacementStart();
+        setSelectionRange(node, start, start + ev->replacementLength());
+        // Commit regardless of whether commitString is empty, to get rid of selection.
+        editor->confirmComposition(ev->commitString());
+    } else if (!ev->commitString().isEmpty())
         editor->confirmComposition(ev->commitString());
     else if (!hasSelection && !ev->preeditString().isEmpty())
         editor->setComposition(ev->preeditString(), underlines, 0, 0);
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index 993f0e0..42faf2e 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,19 @@
+2010-11-24  Kristian Amlie  <kristian.amlie at nokia.com>
+
+        Reviewed by Andreas Kling.
+
+        Fixed handling of QInputMethodEvents with nonzero replacementLength.
+
+        These types of events replace text that is already in the widget, but
+        WebKit did not check for replacementLength at all.
+
+        https://bugs.webkit.org/show_bug.cgi?id=49787
+
+        * Api/qwebpage.cpp:
+        (QWebPagePrivate::inputMethodEvent):
+        * tests/qwebpage/tst_qwebpage.cpp:
+        (tst_QWebPage::inputMethods):
+
 2010-11-24  Andras Becsi  <abecsi at inf.u-szeged.hu>
 
         Reviewed by Kenneth Rohde Christiansen.
diff --git a/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index 27a36c3..c27ba02 100644
--- a/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -1568,6 +1568,20 @@ void tst_QWebPage::inputMethods()
     page->event(&evpres);
     page->event(&evrel);
 
+    {
+        QList<QInputMethodEvent::Attribute> attributes;
+        QInputMethodEvent event(QString(), attributes);
+        event.setCommitString("XXX", 0, 0);
+        page->event(&event);
+        event.setCommitString(QString(), -2, 2); // Erase two characters.
+        page->event(&event);
+        event.setCommitString(QString(), -1, 1); // Erase one character.
+        page->event(&event);
+        variant = page->inputMethodQuery(Qt::ImSurroundingText);
+        value = variant.value<QString>();
+        QCOMPARE(value, QString("QtWebKit"));
+    }
+
     //Move to the start of the line
     page->triggerAction(QWebPage::MoveToStartOfLine);
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list