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; }; // -------------------------------------------------------------------------