Kevin Kofler 951e5a7
--- kdelibs/khtml/rendering/render_form.cpp
Kevin Kofler 951e5a7
+++ kdelibs/khtml/rendering/render_form.cpp
Kevin Kofler 951e5a7
@@ -1012,11 +1012,11 @@
Kevin Kofler 951e5a7
 // -----------------------------------------------------------------------------
Kevin Kofler 951e5a7
 
Kevin Kofler 951e5a7
 RenderLineEdit::RenderLineEdit(HTMLInputElementImpl *element)
Kevin Kofler 951e5a7
-    : RenderFormElement(element)
Kevin Kofler 951e5a7
+    : RenderFormElement(element), m_blockElementUpdates(false)
Kevin Kofler 951e5a7
 {
Kevin Kofler 951e5a7
     LineEditWidget *edit = new LineEditWidget(element, view(), view()->widget());
Kevin Kofler 951e5a7
     connect(edit,SIGNAL(returnPressed()), this, SLOT(slotReturnPressed()));
Kevin Kofler 951e5a7
-    connect(edit,SIGNAL(textEdited(QString)),this,SLOT(slotTextEdited(QString)));
Kevin Kofler 951e5a7
+    connect(edit,SIGNAL(textChanged(QString)),this,SLOT(slotTextChanged(QString)));
Kevin Kofler 951e5a7
 
Kevin Kofler 951e5a7
     if(element->inputType() == HTMLInputElementImpl::PASSWORD)
Kevin Kofler 951e5a7
         edit->setEchoMode( QLineEdit::Password );
Kevin Kofler 951e5a7
@@ -1142,17 +1142,21 @@
Kevin Kofler 951e5a7
     }
Kevin Kofler 951e5a7
 
Kevin Kofler 951e5a7
     if (element()->value().string() != widget()->text()) {
Kevin Kofler 951e5a7
+        m_blockElementUpdates = true;
Kevin Kofler 951e5a7
         int pos = widget()->cursorPosition();
Kevin Kofler 951e5a7
         widget()->setText(element()->value().string());
Kevin Kofler 951e5a7
         widget()->setCursorPosition(pos);
Kevin Kofler 951e5a7
+        m_blockElementUpdates = false;
Kevin Kofler 951e5a7
     }
Kevin Kofler 951e5a7
     widget()->setReadOnly(element()->readOnly());
Kevin Kofler 951e5a7
 
Kevin Kofler 951e5a7
     RenderFormElement::updateFromElement();
Kevin Kofler 951e5a7
 }
Kevin Kofler 951e5a7
 
Kevin Kofler 951e5a7
-void RenderLineEdit::slotTextEdited(const QString &string)
Kevin Kofler 951e5a7
+void RenderLineEdit::slotTextChanged(const QString &string)
Kevin Kofler 951e5a7
 {
Kevin Kofler 951e5a7
+    if (m_blockElementUpdates) return;
Kevin Kofler 951e5a7
+
Kevin Kofler 951e5a7
     // don't use setValue here!
Kevin Kofler 951e5a7
     element()->m_value = string;
Kevin Kofler 951e5a7
     element()->m_unsubmittedFormChange = true;
Kevin Kofler 951e5a7
--- kdelibs/khtml/rendering/render_form.h
Kevin Kofler 951e5a7
+++ kdelibs/khtml/rendering/render_form.h
Kevin Kofler 951e5a7
@@ -282,12 +282,13 @@
Kevin Kofler 951e5a7
     void setSelectionRange(long start, long end);
Kevin Kofler 951e5a7
 public Q_SLOTS:
Kevin Kofler 951e5a7
     void slotReturnPressed();
Kevin Kofler 951e5a7
-    void slotTextEdited(const QString &string);
Kevin Kofler 951e5a7
+    void slotTextChanged(const QString &string);
Kevin Kofler 951e5a7
 protected:
Kevin Kofler 951e5a7
 
Kevin Kofler 951e5a7
 private:
Kevin Kofler 951e5a7
     virtual bool isEditable() const { return true; }
Kevin Kofler 951e5a7
     virtual bool canHaveBorder() const { return true; }
Kevin Kofler 951e5a7
+    bool m_blockElementUpdates;
Kevin Kofler 951e5a7
 };
Kevin Kofler 951e5a7
 
Kevin Kofler 951e5a7
 // -------------------------------------------------------------------------