diff options
author | Pekka Vuorela <pekka.ta.vuorela@nokia.com> | 2012-01-25 14:15:29 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-12 13:32:21 +0200 |
commit | adf3f8a72af5114e0b372f952d2ad94bb8511adb (patch) | |
tree | 35659df3d8de4efaff1d01cfcf1fbf38de77d55b | |
parent | 1b0bcbbe749529c9b3c37f79f9535293544c4fbb (diff) |
QQuickTextEdit to trigger input method updates on selectAll()
Change-Id: I8642eca0e584b811308b73817e7decf2f392f1b5
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
-rw-r--r-- | src/quick/items/qquicktextcontrol.cpp | 13 | ||||
-rw-r--r-- | src/quick/items/qquicktextcontrol_p.h | 2 | ||||
-rw-r--r-- | tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp | 5 |
3 files changed, 13 insertions, 7 deletions
diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp index 739b5f859b..f63e6a7523 100644 --- a/src/quick/items/qquicktextcontrol.cpp +++ b/src/quick/items/qquicktextcontrol.cpp @@ -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(); } diff --git a/src/quick/items/qquicktextcontrol_p.h b/src/quick/items/qquicktextcontrol_p.h index be3f7f7ccf..aae9e12dad 100644 --- a/src/quick/items/qquicktextcontrol_p.h +++ b/src/quick/items/qquicktextcontrol_p.h @@ -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); diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp index dd9aa0acad..7113141800 100644 --- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp +++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp @@ -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(); |