From: Andrew den Exter Date: Tue, 29 Nov 2011 05:33:56 +0000 (+1000) Subject: Use QWidgetTextControl in the QtQuick1 TextEdit. X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=4f806b3e2490b2890c22a5671290fde94ffddf6b;p=konrad%2Fqtdeclarative.git 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 --- 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