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