From 1dbfbf4c66187e7522888c19d78024cfceaea570 Mon Sep 17 00:00:00 2001 From: Pekka Vuorela Date: Mon, 7 Nov 2011 11:52:56 +0200 Subject: Implement partial tentativeCommit support in QTextEdit Available on plain text for now, html support still pending. Change-Id: I0818b97874e80c8c1b33a9127aa7bb3330a8761d Reviewed-by: Lars Knoll --- src/widgets/widgets/qtextedit.cpp | 15 +++++++++++++-- src/widgets/widgets/qtextedit.h | 6 ++---- src/widgets/widgets/qwidgettextcontrol.cpp | 18 ++++++++++++++++++ src/widgets/widgets/qwidgettextcontrol_p.h | 6 ++---- src/widgets/widgets/qwidgettextcontrol_p_p.h | 1 + 5 files changed, 36 insertions(+), 10 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index f345cb2f7c..73d78171db 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -1099,13 +1099,17 @@ void QTextEdit::setPlainText(const QString &text) } /*! - \fn QString QTextEdit::toPlainText() const + QString QTextEdit::toPlainText() const Returns the text of the text edit as plain text. \sa QTextEdit::setPlainText() */ - +QString QTextEdit::toPlainText() const +{ + Q_D(const QTextEdit); + return d->control->toPlainText(); +} /*! \property QTextEdit::html @@ -1135,8 +1139,15 @@ void QTextEdit::setHtml(const QString &text) d->control->setHtml(text); d->preferRichText = true; } + +QString QTextEdit::toHtml() const +{ + Q_D(const QTextEdit); + return d->control->toHtml(); +} #endif + /*! \reimp */ void QTextEdit::keyPressEvent(QKeyEvent *e) diff --git a/src/widgets/widgets/qtextedit.h b/src/widgets/widgets/qtextedit.h index 1fcf87cdf7..ae9865977f 100644 --- a/src/widgets/widgets/qtextedit.h +++ b/src/widgets/widgets/qtextedit.h @@ -162,11 +162,9 @@ public: bool find(const QString &exp, QTextDocument::FindFlags options = 0); - inline QString toPlainText() const - { return document()->toPlainText(); } + QString toPlainText() const; #ifndef QT_NO_TEXTHTMLPARSER - inline QString toHtml() const - { return document()->toHtml(); } + QString toHtml() const; #endif void ensureCursorVisible(); diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index d48ee9a2ae..b6432ee53f 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -1991,7 +1991,10 @@ void QWidgetTextControlPrivate::inputMethodEvent(QInputMethodEvent *e) } } layout->setAdditionalFormats(overrides); + tentativeCommit = e->tentativeCommitString(); + cursor.endEditBlock(); + if (cursor.d) cursor.d->setX(); if (oldPreeditCursor != preeditCursor) @@ -2909,7 +2912,22 @@ bool QWidgetTextControl::find(const QString &exp, QTextDocument::FindFlags optio return true; } +QString QWidgetTextControl::toPlainText() const +{ + Q_D(const QWidgetTextControl); + QString plainText = document()->toPlainText(); + if (!d->tentativeCommit.isEmpty()) + plainText.insert(textCursor().position(), d->tentativeCommit); + return plainText; +} +#ifndef QT_NO_TEXTHTMLPARSER +QString QWidgetTextControl::toHtml() const +{ + // note: currently not including tentative commit + return document()->toHtml(); +} +#endif void QWidgetTextControlPrivate::append(const QString &text, Qt::TextFormat format) { diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h index f1ac09d459..1550959ebe 100644 --- a/src/widgets/widgets/qwidgettextcontrol_p.h +++ b/src/widgets/widgets/qwidgettextcontrol_p.h @@ -114,11 +114,9 @@ public: bool find(const QString &exp, QTextDocument::FindFlags options = 0); - inline QString toPlainText() const - { return document()->toPlainText(); } + QString toPlainText() const; #ifndef QT_NO_TEXTHTMLPARSER - inline QString toHtml() const - { return document()->toHtml(); } + QString toHtml() const; #endif virtual void ensureCursorVisible(); diff --git a/src/widgets/widgets/qwidgettextcontrol_p_p.h b/src/widgets/widgets/qwidgettextcontrol_p_p.h index 613d1a6097..f53e0808b8 100644 --- a/src/widgets/widgets/qwidgettextcontrol_p_p.h +++ b/src/widgets/widgets/qwidgettextcontrol_p_p.h @@ -208,6 +208,7 @@ public: int preeditCursor; bool hideCursor; // used to hide the cursor in the preedit area + QString tentativeCommit; QVector extraSelections; -- cgit v1.2.3