[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.5/kdelibs/khtml
From: Harri Porten <porten () kde ! org>
Date: 2007-02-18 11:41:18
Message-ID: 1171798878.802434.5664.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 634796 by porten:
fixed bug #120582 ("cloneNode does not clone `checked' attribute in form
inputs"). Had my own patch ready but then discovered Webcore changeset 4457
and applied the relevant part of it to harmonize the code.
M +5 -0 ChangeLog
M +11 -5 html/html_formimpl.cpp
M +3 -1 html/html_formimpl.h
--- branches/KDE/3.5/kdelibs/khtml/ChangeLog #634795:634796
@@ -1,3 +1,8 @@
+2007-02-18 Harri Porten <porten@kde.org>
+
+ * html/html_formimpl.cpp: fixed bug #120582 ("cloneNode does not
+ clone `checked' attribute in form inputs")
+
2007-02-11 Harri Porten <porten@kde.org>
* ecma/kjs_window.cpp (executeOpenWindow): fixed location href
--- branches/KDE/3.5/kdelibs/khtml/html/html_formimpl.cpp #634795:634796
@@ -1222,6 +1222,8 @@
m_size = 20;
m_clicked = false;
m_checked = false;
+ m_defaultChecked = false;
+ m_useDefaultChecked = true;
m_indeterminate = false;
m_haveType = false;
@@ -1327,7 +1329,7 @@
return QString::fromLatin1("."); // empty string, avoid restoring
case CHECKBOX:
case RADIO:
- return QString::fromLatin1(m_checked ? "on" : "off");
+ return QString::fromLatin1(checked() ? "on" : "off");
case TEXT:
if (autoComplete() && value() != getAttribute(ATTR_VALUE) && getDocument()->view())
getDocument()->view()->addFormCompletionItem(name().string(), value().string());
@@ -1390,7 +1392,9 @@
}
break;
case ATTR_CHECKED:
- // WebCore has m_defaultChecked and m_useDefaultChecked code here....
+ m_defaultChecked = attr->val();
+ if (m_useDefaultChecked) // We only need to setChanged if the form is looking
+ setChanged(); // at the default checked state right now.
break;
case ATTR_MAXLENGTH:
{
@@ -1462,7 +1466,7 @@
nvalue += value[i];
m_value = nvalue;
}
- m_checked = (getAttribute(ATTR_CHECKED) != 0);
+ m_defaultChecked = (getAttribute(ATTR_CHECKED) != 0);
if ( m_type == IMAGE )
addHTMLAlignment( getAttribute( ATTR_ALIGN ) );
m_inited = true;
@@ -1657,7 +1661,8 @@
void HTMLInputElementImpl::reset()
{
setValue(getAttribute(ATTR_VALUE));
- setChecked(getAttribute(ATTR_CHECKED) != 0);
+ m_useDefaultChecked = true;
+ m_checked = m_defaultChecked;
setIndeterminate(true);
}
@@ -1666,7 +1671,8 @@
if (m_form && m_type == RADIO && _checked && !name().isEmpty())
m_form->radioClicked(this);
- if (m_checked == _checked) return;
+ if (checked() == _checked) return;
+ m_useDefaultChecked = false;
m_checked = _checked;
// setIndeterminate(false);
--- branches/KDE/3.5/kdelibs/khtml/html/html_formimpl.h #634795:634796
@@ -270,7 +270,7 @@
bool autoComplete() const { return m_autocomplete; }
- bool checked() const { return m_checked; }
+ bool checked() const { return m_useDefaultChecked ? m_defaultChecked : m_checked; }
void setChecked(bool);
bool indeterminate() const { return m_indeterminate; }
void setIndeterminate(bool);
@@ -332,6 +332,8 @@
typeEnum m_type : 4;
bool m_clicked : 1 ;
bool m_checked : 1;
+ bool m_defaultChecked : 1; // could do without by checking ATTR_CHECKED
+ bool m_useDefaultChecked : 1;
bool m_indeterminate : 1;
bool m_haveType : 1;
bool m_activeSubmit : 1;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic