Fix QInputPanel::invokeAction(Click) not being called on mouse clicks
authorSimon Hausmann <simon.hausmann@nokia.com>
Tue, 25 Oct 2011 10:06:01 +0000 (12:06 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 26 Oct 2011 12:05:16 +0000 (14:05 +0200)
It appears that the introduction of the KeyRelease event type check in
commit 70cc5c9b7b420ecaf099d5d08fb1b4e8ad81a920 was accidential and meant
to use MouseButtonRelease (in QSGTextInputPrivate::sendMouseEventToInputContext).

This patch also removes the unnecessary QEvent::MouseMove check as well as
the mousePos = -1 setting if the position is out of range. The input methods
do the same check and reset() accordingly anyway.

Change-Id: Icf3638979583d97c066cb639f80fa11f44538d7c
Reviewed-by: Pekka Vuorela <pekka.ta.vuorela@nokia.com>
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>

src/declarative/items/qquicktextinput.cpp

index 4e26056..473dcd2 100644 (file)
@@ -1162,16 +1162,9 @@ void QQuickTextInput::mouseReleaseEvent(QMouseEvent *event)
 bool QQuickTextInputPrivate::sendMouseEventToInputContext(QMouseEvent *event)
 {
 #if !defined QT_NO_IM
-    if (control->composeMode() && event->type() == QEvent::KeyRelease) {
+    if (control->composeMode() && event->type() == QEvent::MouseButtonRelease) {
         int tmp_cursor = xToPos(event->localPos().x());
         int mousePos = tmp_cursor - control->cursor();
-        if (mousePos < 0 || mousePos > control->preeditAreaText().length()) {
-            mousePos = -1;
-            // don't send move events outside the preedit area
-            if (event->type() == QEvent::MouseMove)
-                return true;
-        }
-
         // may be causing reset() in some input methods
         qApp->inputPanel()->invokeAction(QInputPanel::Click, mousePos);
         if (!control->preeditAreaText().isEmpty())