diff options
-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(); |