From 4f806b3e2490b2890c22a5671290fde94ffddf6b Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Tue, 29 Nov 2011 15:33:56 +1000 Subject: [PATCH] Use QWidgetTextControl in the QtQuick1 TextEdit. QDeclarative1TextEdit and QTextEdit have the same compatbility requirements so it makes sense they continue sharing the same line control implementation. This allows the QtQuick 2 TextInput to diverge without creating a third variation of QTextControl, Task-number: QTBUG-22627 Change-Id: Id4a8f6a17aeb756c3385cf8fca3de61b8c4be757 Reviewed-by: Martin Jones --- src/qtquick1/graphicsitems/qdeclarativetextedit.cpp | 11 +++++++---- src/qtquick1/graphicsitems/qdeclarativetextedit_p_p.h | 4 ++-- .../qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/qtquick1/graphicsitems/qdeclarativetextedit.cpp b/src/qtquick1/graphicsitems/qdeclarativetextedit.cpp index 27ef543..fc799a2 100644 --- a/src/qtquick1/graphicsitems/qdeclarativetextedit.cpp +++ b/src/qtquick1/graphicsitems/qdeclarativetextedit.cpp @@ -58,7 +58,7 @@ #include #include -#include +#include QT_BEGIN_NAMESPACE @@ -555,7 +555,10 @@ bool QDeclarative1TextEditPrivate::determineHorizontalAlignment() if (hAlignImplicit && q->isComponentComplete()) { bool alignToRight; if (text.isEmpty()) { - const QString preeditText = control->textCursor().block().layout()->preeditAreaText(); + QTextCursor cursor = control->textCursor(); + const QString preeditText = cursor.block().isValid() + ? control->textCursor().block().layout()->preeditAreaText() + : QString(); alignToRight = preeditText.isEmpty() ? QApplication::keyboardInputDirection() == Qt::RightToLeft : preeditText.isRightToLeft(); @@ -1545,12 +1548,12 @@ void QDeclarative1TextEditPrivate::init() q->setFlag(QGraphicsItem::ItemHasNoContents, false); q->setFlag(QGraphicsItem::ItemAcceptsInputMethod); - control = new QTextControl(q); + control = new QWidgetTextControl(q); control->setIgnoreUnusedNavigationEvents(true); control->setTextInteractionFlags(Qt::TextInteractionFlags(Qt::LinksAccessibleByMouse | Qt::TextSelectableByKeyboard | Qt::TextEditable)); control->setDragEnabled(false); - // QTextControl follows the default text color + // QWidgetTextControl follows the default text color // defined by the platform, declarative text // should be black by default QPalette pal = control->palette(); diff --git a/src/qtquick1/graphicsitems/qdeclarativetextedit_p_p.h b/src/qtquick1/graphicsitems/qdeclarativetextedit_p_p.h index ed75a97..f747b49 100644 --- a/src/qtquick1/graphicsitems/qdeclarativetextedit_p_p.h +++ b/src/qtquick1/graphicsitems/qdeclarativetextedit_p_p.h @@ -62,7 +62,7 @@ QT_BEGIN_NAMESPACE class QTextLayout; class QTextDocument; -class QTextControl; +class QWidgetTextControl; class QDeclarative1TextEditPrivate : public QDeclarative1ImplicitSizePaintedItemPrivate { Q_DECLARE_PUBLIC(QDeclarative1TextEdit) @@ -125,7 +125,7 @@ public: QDeclarativeItem* cursor; QDeclarative1TextEdit::TextFormat format; QTextDocument *document; - QTextControl *control; + QWidgetTextControl *control; QDeclarative1TextEdit::WrapMode wrapMode; QDeclarative1TextEdit::SelectionMode mouseSelectionMode; int lineCount; diff --git a/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index f64688e..621c175 100644 --- a/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -58,7 +58,7 @@ #include #include #include -#include +#include Q_DECLARE_METATYPE(QDeclarative1TextEdit::SelectionMode) @@ -1977,7 +1977,7 @@ void tst_qdeclarativetextedit::canPaste() { QVERIFY(textEdit != 0); // check initial value - QTBUG-17765 - QTextControl tc; + QWidgetTextControl tc; QCOMPARE(textEdit->canPaste(), tc.canPaste()); #endif @@ -1995,7 +1995,7 @@ void tst_qdeclarativetextedit::canPasteEmpty() { QVERIFY(textEdit != 0); // check initial value - QTBUG-17765 - QTextControl tc; + QWidgetTextControl tc; QCOMPARE(textEdit->canPaste(), tc.canPaste()); #endif -- 2.7.4