From 9697e2af142a2c7751cdda5c5807c9fe74dee994 Mon Sep 17 00:00:00 2001 From: Pekka Vuorela Date: Mon, 5 Dec 2011 17:03:18 +0200 Subject: [PATCH] Make editors commit preedit themselves on losing focus Change-Id: I1d42a8804068718c7347b4f652289f9724c25a3c Reviewed-by: Joona Petrell --- src/qtquick1/graphicsitems/qdeclarativetextinput.cpp | 4 +++- src/quick/items/qquickcanvas.cpp | 4 ++-- src/quick/items/qquicktextinput.cpp | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp b/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp index e5fdcb2..a0a0c95 100644 --- a/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp +++ b/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp @@ -1065,8 +1065,10 @@ void QDeclarative1TextInputPrivate::focusChanged(bool hasFocus) q->setCursorVisible(hasFocus && scene && scene->hasFocus()); if(!hasFocus && control->passwordEchoEditing()) control->updatePasswordEchoEditing(false);//QWidgetLineControl sets it on key events, but doesn't deal with focus events - if (!hasFocus) + if (!hasFocus) { + control->commitPreedit(); control->deselect(); + } QDeclarativeItemPrivate::focusChanged(hasFocus); } diff --git a/src/quick/items/qquickcanvas.cpp b/src/quick/items/qquickcanvas.cpp index 0f281a3..5fd8f93 100644 --- a/src/quick/items/qquickcanvas.cpp +++ b/src/quick/items/qquickcanvas.cpp @@ -383,7 +383,7 @@ void QQuickCanvasPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, F if (oldActiveFocusItem) { #ifndef QT_NO_IM - qApp->inputPanel()->commit(); + qApp->inputPanel()->reset(); #endif activeFocusItem = 0; @@ -492,7 +492,7 @@ void QQuickCanvasPrivate::clearFocusInScope(QQuickItem *scope, QQuickItem *item, Q_ASSERT(oldActiveFocusItem); #ifndef QT_NO_IM - qApp->inputPanel()->commit(); + qApp->inputPanel()->reset(); #endif activeFocusItem = 0; diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index a114caf..b3387f5 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -2004,8 +2004,11 @@ void QQuickTextInput::itemChange(ItemChange change, const ItemChangeData &value) #endif d->updatePasswordEchoEditing(false);//QQuickTextInputPrivate sets it on key events, but doesn't deal with focus events } - if (!hasFocus) + + if (!hasFocus) { + d->commitPreedit(); d->deselect(); + } } QQuickItem::itemChange(change, value); } -- 2.7.4