Sophie

Sophie

distrib > Mageia > 1 > i586 > media > core-updates-src > by-pkgid > fd4cd2f7616f47ca9a62a573f59c142d > files > 19

kdelibs4-4.6.5-1.6.mga1.src.rpm

commit 3c5318801156e18f3b48208a883a8596296f9f22
Author: Andrea Iacovitti <aiacovitti@libero.it>
Date:   Thu Aug 4 19:25:26 2011 +0200

    Unbreak completion on tab-out in KDE/4.6 branch
    CCBUG: 277457

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