From: Pekka Vuorela Date: Mon, 5 Dec 2011 15:03:18 +0000 (+0200) Subject: Make editors commit preedit themselves on losing focus X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=9697e2af142a2c7751cdda5c5807c9fe74dee994;p=konrad%2Fqtdeclarative.git Make editors commit preedit themselves on losing focus Change-Id: I1d42a8804068718c7347b4f652289f9724c25a3c Reviewed-by: Joona Petrell --- 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); }