diff options
author | Pekka Vuorela <pekka.ta.vuorela@nokia.com> | 2012-02-29 18:43:50 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-26 10:36:31 +0200 |
commit | f32ae39ac4b634bd82adc7e5a756f801e70e879a (patch) | |
tree | c333558e2f6f80df44c3515a6dfac99e1e16e81c /src | |
parent | 2532c475d16b7b2252f44ab1fe858d17262d7fc1 (diff) |
Remove tentative commit from editors
Feature to be reimplemented simplified. Now using new
FocusAboutToChange event for using input method to commit stuff when
window is losing focus.
Change-Id: I81c96c36d9f0a1b38adb4324f3b892c33547cb50
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickcanvas.cpp | 8 | ||||
-rw-r--r-- | src/quick/items/qquicktextcontrol.cpp | 19 | ||||
-rw-r--r-- | src/quick/items/qquicktextcontrol_p_p.h | 1 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 33 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput_p_p.h | 1 |
5 files changed, 15 insertions, 47 deletions
diff --git a/src/quick/items/qquickcanvas.cpp b/src/quick/items/qquickcanvas.cpp index 3a9820d7d5..c9d7813a07 100644 --- a/src/quick/items/qquickcanvas.cpp +++ b/src/quick/items/qquickcanvas.cpp @@ -532,7 +532,7 @@ void QQuickCanvasPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, F if (oldActiveFocusItem) { #ifndef QT_NO_IM - qApp->inputMethod()->reset(); + qApp->inputMethod()->commit(); #endif activeFocusItem = 0; @@ -628,7 +628,7 @@ void QQuickCanvasPrivate::clearFocusInScope(QQuickItem *scope, QQuickItem *item, Q_ASSERT(oldActiveFocusItem); #ifndef QT_NO_IM - qApp->inputMethod()->reset(); + qApp->inputMethod()->commit(); #endif activeFocusItem = 0; @@ -994,6 +994,10 @@ bool QQuickCanvas::event(QEvent *e) case QEvent::WindowDeactivate: rootItem()->windowDeactivateEvent(); break; + case QEvent::FocusAboutToChange: + if (d->activeFocusItem) + qGuiApp->inputMethod()->commit(); + break; default: break; } diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp index 1846d03b9b..eefe938467 100644 --- a/src/quick/items/qquicktextcontrol.cpp +++ b/src/quick/items/qquicktextcontrol.cpp @@ -1459,7 +1459,6 @@ void QQuickTextControlPrivate::inputMethodEvent(QInputMethodEvent *e) } } layout->setAdditionalFormats(overrides); - tentativeCommit = e->tentativeCommitString(); cursor.endEditBlock(); @@ -1503,7 +1502,6 @@ void QQuickTextControlPrivate::focusEvent(QFocusEvent *e) if (e->gotFocus()) { setBlinkingCursorEnabled(interactionFlags & (Qt::TextEditable | Qt::TextSelectableByKeyboard)); } else { - commitPreedit(); setBlinkingCursorEnabled(false); if (cursorIsFocusIndicator @@ -1732,14 +1730,12 @@ void QQuickTextControlPrivate::commitPreedit() if (!isPreediting()) return; - cursor.beginEditBlock(); - qApp->inputMethod()->reset(); + qApp->inputMethod()->commit(); - if (!tentativeCommit.isEmpty()) { - cursor.insertText(tentativeCommit); - tentativeCommit.clear(); - } + if (!isPreediting()) + return; + cursor.beginEditBlock(); preeditCursor = 0; QTextBlock block = cursor.block(); QTextLayout *layout = block.layout(); @@ -1767,17 +1763,12 @@ Qt::TextInteractionFlags QQuickTextControl::textInteractionFlags() const QString QQuickTextControl::toPlainText() const { - Q_D(const QQuickTextControl); - QString plainText = document()->toPlainText(); - if (!d->tentativeCommit.isEmpty()) - plainText.insert(textCursor().position(), d->tentativeCommit); - return plainText; + return document()->toPlainText(); } #ifndef QT_NO_TEXTHTMLPARSER QString QQuickTextControl::toHtml() const { - // note: currently not including tentative commit return document()->toHtml(); } #endif diff --git a/src/quick/items/qquicktextcontrol_p_p.h b/src/quick/items/qquicktextcontrol_p_p.h index 9d776ce46b..c5a39cc759 100644 --- a/src/quick/items/qquicktextcontrol_p_p.h +++ b/src/quick/items/qquicktextcontrol_p_p.h @@ -137,7 +137,6 @@ public: QTextCursor cursor; QTextCursor selectedWordOnDoubleClick; QTextCursor selectedBlockOnTrippleClick; - QString tentativeCommit; QString highlightedAnchor; // Anchor below cursor QString anchorOnMousePress; QString linkToCopy; diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 94856b63ab..f2da67bae7 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -119,8 +119,6 @@ QString QQuickTextInput::text() const Q_D(const QQuickTextInput); QString content = d->m_text; - if (!d->m_tentativeCommit.isEmpty()) - content.insert(d->m_cursor, d->m_tentativeCommit); QString res = d->m_maskData ? d->stripString(content) : content; return (res.isNull() ? QString::fromLatin1("") : res); } @@ -132,7 +130,6 @@ void QQuickTextInput::setText(const QString &s) return; if (d->composeMode()) qApp->inputMethod()->reset(); - d->m_tentativeCommit.clear(); d->internalSetText(s, -1, false); } @@ -2496,7 +2493,6 @@ void QQuickTextInput::itemChange(ItemChange change, const ItemChangeData &value) } if (!hasFocus) { - d->commitPreedit(); if (!d->persistentSelection) d->deselect(); disconnect(qApp->inputMethod(), SIGNAL(inputDirectionChanged(Qt::LayoutDirection)), @@ -2831,21 +2827,16 @@ void QQuickTextInputPrivate::paste(QClipboard::Mode clipboardMode) /*! \internal - - Exits preedit mode and commits parts marked as tentative commit */ void QQuickTextInputPrivate::commitPreedit() { if (!composeMode()) return; - qApp->inputMethod()->reset(); + qApp->inputMethod()->commit(); - if (!m_tentativeCommit.isEmpty()) { - internalInsert(m_tentativeCommit); - m_tentativeCommit.clear(); - finishChange(-1, true/*not used, not documented*/, false); - } + if (!composeMode()) + return; m_preeditCursor = 0; m_textLayout.setPreeditArea(-1, QString()); @@ -3160,14 +3151,7 @@ void QQuickTextInputPrivate::processInputMethodEvent(QInputMethodEvent *event) q->updateCursorRectangle(); } - bool tentativeCommitChanged = m_tentativeCommit != event->tentativeCommitString(); - - if (tentativeCommitChanged) { - m_textDirty = true; - m_tentativeCommit = event->tentativeCommitString(); - } - - if (isGettingInput || tentativeCommitChanged) + if (isGettingInput) finishChange(priorState); if (selectionChange) { @@ -3237,15 +3221,6 @@ bool QQuickTextInputPrivate::finishChange(int validateFromState, bool update, bo return true; } m_cursor = cursorCopy; - - if (!m_tentativeCommit.isEmpty()) { - textCopy.insert(m_cursor, m_tentativeCommit); - bool validInput = m_validator->validate(textCopy, cursorCopy) != QValidator::Invalid; - if (!validInput) - m_tentativeCommit.clear(); - } - } else { - m_tentativeCommit.clear(); } } #endif diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h index 165155acd0..3bd34b2661 100644 --- a/src/quick/items/qquicktextinput_p_p.h +++ b/src/quick/items/qquicktextinput_p_p.h @@ -188,7 +188,6 @@ public: QString m_text; QString m_inputMask; QString m_cancelText; - QString m_tentativeCommit; QFont font; QFont sourceFont; |