diff options
-rw-r--r-- | src/quick/items/qquicktextcontrol.cpp | 28 | ||||
-rw-r--r-- | src/quick/items/qquicktextedit_p_p.h | 2 | ||||
-rw-r--r-- | tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp | 21 |
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); |