QQuickTextEdit to trigger input method updates on selectAll()
authorPekka Vuorela <pekka.ta.vuorela@nokia.com>
Wed, 25 Jan 2012 12:15:29 +0000 (14:15 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 12 Apr 2012 11:32:21 +0000 (13:32 +0200)
Change-Id: I8642eca0e584b811308b73817e7decf2f392f1b5
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
src/quick/items/qquicktextcontrol.cpp
src/quick/items/qquicktextcontrol_p.h
tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp

index 739b5f8..f63e6a7 100644 (file)
@@ -46,7 +46,6 @@
 
 #include <qcoreapplication.h>
 #include <qfont.h>
-#include <qpainter.h>
 #include <qevent.h>
 #include <qdebug.h>
 #include <qdrag.h>
@@ -60,8 +59,6 @@
 #include "qtextlist.h"
 #include "qtextdocumentwriter.h"
 #include "private/qtextcursor_p.h"
-#include "qpagedpaintdevice.h"
-#include "private/qpagedpaintdevice_p.h"
 
 #include <qtextformat.h>
 #include <qdatetime.h>
@@ -429,8 +426,11 @@ void QQuickTextControlPrivate::repaintOldAndNewSelection(const QTextCursor &oldS
 void QQuickTextControlPrivate::selectionChanged(bool forceEmitSelectionChanged /*=false*/)
 {
     Q_Q(QQuickTextControl);
-    if (forceEmitSelectionChanged)
+    if (forceEmitSelectionChanged) {
+        if (hasFocus)
+            qGuiApp->inputMethod()->update(Qt::ImCurrentSelection);
         emit q->selectionChanged();
+    }
 
     bool current = cursor.hasSelection();
     if (current == lastSelectionState)
@@ -438,8 +438,11 @@ void QQuickTextControlPrivate::selectionChanged(bool forceEmitSelectionChanged /
 
     lastSelectionState = current;
     emit q->copyAvailable(current);
-    if (!forceEmitSelectionChanged)
+    if (!forceEmitSelectionChanged) {
+        if (hasFocus)
+            qGuiApp->inputMethod()->update(Qt::ImCurrentSelection);
         emit q->selectionChanged();
+    }
     emit q->cursorRectangleChanged();
 }
 
index be3f7f7..aae9e12 100644 (file)
@@ -74,7 +74,6 @@ class QQuickTextControlPrivate;
 class QAbstractScrollArea;
 class QEvent;
 class QTimerEvent;
-class QPagedPaintDevice;
 
 class Q_AUTOTEST_EXPORT QQuickTextControl : public QObject
 {
@@ -122,7 +121,6 @@ public:
 
     virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const;
     virtual QRectF blockBoundingRect(const QTextBlock &block) const;
-    QAbstractTextDocumentLayout::PaintContext getPaintContext() const;
 
 public Q_SLOTS:
     void setPlainText(const QString &text);
index dd9aa0a..7113141 100644 (file)
@@ -2379,6 +2379,11 @@ void tst_qquicktextedit::inputMethodUpdate()
     QVERIFY(edit->selectionStart() != edit->selectionEnd());
     QVERIFY(platformInputContext.m_updateCallCount > 0);
 
+    // programmatical selections trigger update
+    platformInputContext.clear();
+    edit->selectAll();
+    QCOMPARE(platformInputContext.m_updateCallCount, 1);
+
     // font changes
     platformInputContext.clear();
     QFont font = edit->font();