Details
-
Bug
-
Resolution: Done
-
P2: Important
-
4.6.0, 4.6.1, 4.6.2
-
None
-
9b4ca998930c7b81b72e5068b3ebae33907ac4b2
Description
QLineControl::updateDisplayText() doesn't check the existence of preedit text when updating the area. This results in inputting into QLineEdit through IMEs such as uim or scim being sluggish and unresponsive. Qt 4.6 series was the first time I noticed this bug.
A patch by Etsushi Kato <ek.kato@gmail.com> for qt 4.6.2 is proposed:
— qt-kde-qt-mac/src/gui/widgets/qlinecontrol.cpp.orig 2010-02-17
12:18:04.000000000 +0900
+++ qt-kde-qt-mac/src/gui/widgets/qlinecontrol.cpp 2010-03-06
23:35:54.000000000 +0900
@@ -406,8 +406,9 @@
void QLineControl::processInputMethodEvent(QInputMethodEvent *event)
m_textLayout.setAdditionalFormats(formats);
updateDisplayText();
+ if (preeditAreaText() != oldPreeditText)
+ emit displayTextChanged(preeditAreaText());
if (cursorPositionChanged)
emitCursorPositionChanged();
if (isGettingInput)
This bug was originally reported by me to the libuim bugtracker, where Etsushi Kato was nice enough to track down the issue and write a patch.
For the original bug report see here: http://bugs.freedesktop.org/show_bug.cgi?id=26265