aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktextcontrol.cpp13
-rw-r--r--src/quick/items/qquicktextcontrol_p.h2
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp5
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();