src/hbwidgets/editors/hblineedit.cpp
changeset 28 b7da29130b0e
parent 21 4633027730f5
--- a/src/hbwidgets/editors/hblineedit.cpp	Thu Sep 02 20:44:51 2010 +0300
+++ b/src/hbwidgets/editors/hblineedit.cpp	Fri Sep 17 08:32:10 2010 +0300
@@ -285,7 +285,7 @@
 {
     Q_D(HbLineEdit);
     
-    if((!e->commitString().isEmpty() || e->replacementLength()) &&
+    if((!e->commitString().isEmpty() || e->replacementLength() || !e->preeditString().isEmpty()) &&
          d->echoMode == HbLineEdit::PasswordEchoOnEdit && d->clearOnEdit) {
         d->doc->clear();
         d->passwordText.clear();
@@ -343,9 +343,10 @@
         d->clearOnEdit = false;
     }
 
+
     if(d->forwardKeyEvent(event)) {
         HbAbstractEdit::keyPressEvent(event);
-    } else if (d->echoMode == HbLineEdit::Password || d->echoMode == HbLineEdit::NoEcho){
+    } else if (d->isPasswordMode()){
         // Keep doc and passwordText in sync
         bool update = false;
         if (event->key() == Qt::Key_Backspace && !(event->modifiers() & ~Qt::ShiftModifier)) {
@@ -357,14 +358,14 @@
         }
 
         if (update) {
-            setPlainText(((d->echoMode == HbLineEdit::Password)?d->passwordString(d->passwordText):""));
+            if(d->echoMode == HbLineEdit::PasswordEchoOnEdit) {
+                setPlainText(d->passwordText);
+            } else {
+                setPlainText(((d->echoMode == HbLineEdit::Password)?d->passwordString(d->passwordText):""));
+            }
         }
         setCursorPosition(d->passwordText.length());
     }
-    if (d->echoMode == HbLineEdit::PasswordEchoOnEdit) {
-        // Keep doc and passwordText in sync
-        d->passwordText = toPlainText();
-    }    
 }
 
 /*!