aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktextcontrol.cpp28
-rw-r--r--src/quick/items/qquicktextedit_p_p.h2
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp21
3 files changed, 24 insertions, 27 deletions
diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp
index 2585caefb5..0ad21ccff3 100644
--- a/src/quick/items/qquicktextcontrol.cpp
+++ b/src/quick/items/qquicktextcontrol.cpp
@@ -965,7 +965,6 @@ QRectF QQuickTextControlPrivate::rectForPosition(int position) const
const QTextBlock block = doc->findBlock(position);
if (!block.isValid())
return QRectF();
- const QAbstractTextDocumentLayout *docLayout = doc->documentLayout();
const QTextLayout *layout = block.layout();
const QPointF layoutPos = q->blockBoundingRect(block).topLeft();
int relativePos = position - block.position();
@@ -980,24 +979,14 @@ QRectF QQuickTextControlPrivate::rectForPosition(int position) const
#endif
QTextLine line = layout->lineForTextPosition(relativePos);
- int cursorWidth;
- {
- bool ok = false;
-#ifndef QT_NO_PROPERTIES
- cursorWidth = docLayout->property("cursorWidth").toInt(&ok);
-#endif
- if (!ok)
- cursorWidth = 1;
- }
-
QRectF r;
if (line.isValid()) {
qreal x = line.cursorToX(relativePos);
qreal w = 0;
- r = QRectF(layoutPos.x() + x, layoutPos.y() + line.y(), cursorWidth + w, line.height());
+ r = QRectF(layoutPos.x() + x, layoutPos.y() + line.y(), textCursorWidth + w, line.height());
} else {
- r = QRectF(layoutPos.x(), layoutPos.y(), cursorWidth, 10); // #### correct height
+ r = QRectF(layoutPos.x(), layoutPos.y(), textCursorWidth, 10); // #### correct height
}
return r;
@@ -1510,19 +1499,6 @@ QString QQuickTextControl::anchorAt(const QPointF &pos) const
return d->doc->documentLayout()->anchorAt(pos);
}
-void QQuickTextControl::setCursorWidth(int width)
-{
- Q_D(QQuickTextControl);
-#ifdef QT_NO_PROPERTIES
- Q_UNUSED(width);
-#else
- if (width == -1)
- width = textCursorWidth;
- d->doc->documentLayout()->setProperty("cursorWidth", width);
-#endif
- d->repaintCursor();
-}
-
void QQuickTextControl::setAcceptRichText(bool accept)
{
Q_D(QQuickTextControl);
diff --git a/src/quick/items/qquicktextedit_p_p.h b/src/quick/items/qquicktextedit_p_p.h
index ffad3ebdcf..ae00303dd1 100644
--- a/src/quick/items/qquicktextedit_p_p.h
+++ b/src/quick/items/qquicktextedit_p_p.h
@@ -122,7 +122,7 @@ public:
Qt::LayoutDirection textDirection(const QString &text) const;
bool isLinkHoveredConnected();
- void setNativeCursorEnabled(bool enabled) { control->setCursorWidth(enabled ? 1 : 0); }
+ void setNativeCursorEnabled(bool) {}
void handleFocusEvent(QFocusEvent *event);
void addCurrentTextNodeToRoot(QSGTransformNode *, QQuickTextNode*, TextNodeIterator&, int startPos);
QQuickTextNode* createTextNode();
diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
index 4829b478e9..4f10b4ce82 100644
--- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
@@ -171,6 +171,7 @@ private slots:
void preeditCursorRectangle();
void inputMethodComposing();
+ void cursorRectangleSize_data();
void cursorRectangleSize();
void getText_data();
@@ -3654,12 +3655,28 @@ void tst_qquicktextedit::inputMethodComposing()
QCOMPARE(spy.count(), 8);
}
+void tst_qquicktextedit::cursorRectangleSize_data()
+{
+ QTest::addColumn<bool>("useCursorDelegate");
+
+ QTest::newRow("default cursor") << false;
+ QTest::newRow("custom cursor delegate") << true;
+}
+
void tst_qquicktextedit::cursorRectangleSize()
{
+ QFETCH(bool, useCursorDelegate);
+
QQuickView *window = new QQuickView(testFileUrl("positionAt.qml"));
QVERIFY(window->rootObject() != 0);
QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit *>(window->rootObject());
+ QQmlComponent cursorDelegate(window->engine());
+ if (useCursorDelegate) {
+ cursorDelegate.setData("import QtQuick 2.0\nRectangle { width:10; height:10; }", QUrl());
+ textEdit->setCursorDelegate(&cursorDelegate);
+ }
+
// make sure cursor rectangle is not at (0,0)
textEdit->setX(10);
textEdit->setY(10);
@@ -3677,6 +3694,10 @@ void tst_qquicktextedit::cursorRectangleSize()
QRectF cursorRectFromItem = textEdit->cursorRectangle();
QRectF cursorRectFromPositionToRectangle = textEdit->positionToRectangle(textEdit->cursorPosition());
+ QVERIFY(cursorRectFromItem.isValid());
+ QVERIFY(cursorRectFromQuery.isValid());
+ QVERIFY(cursorRectFromPositionToRectangle.isValid());
+
// item and input query cursor rectangles match
QCOMPARE(cursorRectFromItem, cursorRectFromQuery);