diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2011-12-21 17:36:13 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-21 08:57:12 +0100 |
commit | 71b64a4ab73b112b3f94e6a4668e534eb4d16d93 (patch) | |
tree | 00a457c7d590f1d9d10937806079cb255be0bc7b /src | |
parent | 8def833e2077ef3554992f930ba7b863d8145a5f (diff) |
Remove uneccessary layout in TextInput initialization.
The layout was only done to ensure there was always at least one
QTextLine in the layout to avoid validity checks later, but since
lineForTextPosition can return an invalid QTextLine the checks are still
needed anyway.
Change-Id: Iae65e3460812a60e2aafecd553bf4241bd640d04
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 39 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput_p.h | 1 |
2 files changed, 12 insertions, 28 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index b58e57edbb..e6da163c83 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -602,11 +602,7 @@ void QQuickTextInput::setCursorVisible(bool on) return; d->cursorVisible = on; d->setCursorBlinkPeriod(on ? qApp->styleHints()->cursorFlashTime() : 0); - QRect r = cursorRectangle(); - if (d->inputMask().isEmpty()) - updateRect(r); - else - updateRect(); + update(); emit cursorVisibleChanged(d->cursorVisible); } @@ -639,9 +635,11 @@ QRect QQuickTextInput::cursorRectangle() const int c = d->m_cursor; if (d->m_preeditCursor != -1) c += d->m_preeditCursor; - if (d->m_echoMode == NoEcho || !isComponentComplete()) + if (d->m_echoMode == NoEcho) c = 0; QTextLine l = d->m_textLayout.lineForTextPosition(c); + if (!l.isValid()) + return QRect(); return QRect( qRound(l.cursorToX(c) - d->hscroll), qRound(l.y() - d->vscroll), @@ -1102,7 +1100,9 @@ QRectF QQuickTextInput::positionToRectangle(int pos) const if (pos > d->m_cursor) pos += d->preeditAreaText().length(); QTextLine l = d->m_textLayout.lineAt(0); - return QRectF(l.cursorToX(pos) - d->hscroll, 0.0, d->m_cursorWidth, l.height()); + return l.isValid() + ? QRectF(l.cursorToX(pos) - d->hscroll, 0.0, d->m_cursorWidth, l.height()) + : QRectF(); } /*! @@ -1175,7 +1175,7 @@ int QQuickTextInputPrivate::positionAt(int x, int y, QTextLine::CursorPosition p break; line = nextLine; } - return line.xToCursor(x, position); + return line.isValid() ? line.xToCursor(x, position) : 0; } void QQuickTextInput::keyPressEvent(QKeyEvent* ev) @@ -2049,9 +2049,6 @@ void QQuickTextInputPrivate::init() q->connect(QGuiApplication::clipboard(), SIGNAL(dataChanged()), q, SLOT(q_canPasteChanged())); #endif // QT_NO_CLIPBOARD - m_textLayout.beginLayout(); - m_textLayout.createLine(); - m_textLayout.endLayout(); imHints &= ~Qt::ImhMultiLine; oldValidity = hasAcceptableInput(m_text); @@ -2089,7 +2086,8 @@ void QQuickTextInput::updateCursorRectangle() void QQuickTextInput::selectionChanged() { Q_D(QQuickTextInput); - updateRect();//TODO: Only update rect in selection + d->textLayoutDirty = true; //TODO: Only update rect in selection + update(); emit selectedTextChanged(); if (d->lastSelectionStart != d->selectionStart()) { @@ -2118,19 +2116,6 @@ void QQuickTextInputPrivate::hideCursor() textNode->cursorNode()->setColor(QColor(0, 0, 0, 0)); } -void QQuickTextInput::updateRect(const QRect &r) -{ - Q_D(QQuickTextInput); - if (!isComponentComplete()) - return; - - if (r.isEmpty()) { - d->textLayoutDirty = true; - } - - update(); -} - QRectF QQuickTextInput::boundingRect() const { Q_D(const QQuickTextInput); @@ -3417,7 +3402,7 @@ void QQuickTextInputPrivate::setCursorBlinkPeriod(int msec) } else { m_blinkTimer = 0; if (m_blinkStatus == 1) - emit q->updateRect(inputMask().isEmpty() ? q->cursorRectangle() : QRect()); + q->update(); } m_blinkPeriod = msec; } @@ -3437,7 +3422,7 @@ void QQuickTextInput::timerEvent(QTimerEvent *event) Q_D(QQuickTextInput); if (event->timerId() == d->m_blinkTimer) { d->m_blinkStatus = !d->m_blinkStatus; - updateRect(inputMask().isEmpty() ? cursorRectangle() : QRect()); + update(); } else if (event->timerId() == d->m_deleteAllTimer) { killTimer(d->m_deleteAllTimer); d->m_deleteAllTimer = 0; diff --git a/src/quick/items/qquicktextinput_p.h b/src/quick/items/qquicktextinput_p.h index 447f3330ec..0b63e60f60 100644 --- a/src/quick/items/qquicktextinput_p.h +++ b/src/quick/items/qquicktextinput_p.h @@ -306,7 +306,6 @@ private Q_SLOTS: void selectionChanged(); void createCursor(); void updateCursorRectangle(); - void updateRect(const QRect &r = QRect()); void q_canPasteChanged(); private: |