[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.1/kdelibs/khtml
From: Maks Orlovich <maksim () kde ! org>
Date: 2008-10-18 16:37:30
Message-ID: 1224347850.863460.20227.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 873059 by orlovich:
Rework how we do onchange for input/checkboxes, unbreaking it and simplifying things.
As we only want to fire it in response to user events, this just does it in defaultEventHandler.
Fixes kde-look wallaper settings, and along with Germain's previous fix this covers
#165607, #170451. This also doesn't suffer from #148118
BUG:148118
BUG:165607
BUG:170451
M +8 -0 html/html_formimpl.cpp
M +1 -12 rendering/render_form.cpp
--- branches/KDE/4.1/kdelibs/khtml/html/html_formimpl.cpp #873058:873059
@@ -1801,8 +1801,16 @@
MouseEventImpl* const me = static_cast<MouseEventImpl*>(evt);
if ((m_type == RADIO || m_type == CHECKBOX)
&& me->id() == EventImpl::MOUSEUP_EVENT && me->detail() > 0) {
+
+ // Did we change? Always yes for checkboxes, and for radio buttons
+ // only if we're not already checked.
+ bool changed = m_type == CHECKBOX || !checked();
+
// click will follow
setChecked(m_type == RADIO ? true : !checked());
+
+ if (changed)
+ onChange();
}
if (evt->id() == EventImpl::CLICK_EVENT && m_type == IMAGE && m_render) {
// record the mouse position for when we get the DOMActivate event
--- branches/KDE/4.1/kdelibs/khtml/rendering/render_form.cpp #873058:873059
@@ -269,8 +269,7 @@
void RenderCheckBox::updateFromElement()
{
if (widget()->isChecked() != element()->checked()) {
- m_ignoreStateChanged = true; // We don't want an onchange here,
- // or us getting yanked in a recalcStyle in the process, etc.
+ m_ignoreStateChanged = true;
widget()->setChecked(element()->checked());
m_ignoreStateChanged = false;
}
@@ -282,10 +281,6 @@
{
if (m_ignoreStateChanged) return;
element()->setChecked(state == Qt::Checked);
-
- ref();
- element()->onChange();
- deref();
}
bool RenderCheckBox::handleEvent(const DOM::EventImpl& ev)
@@ -346,12 +341,6 @@
{
if (m_ignoreToggled)
return;
-
- if(activated) {
- ref();
- element()->onChange();
- deref();
- }
}
bool RenderRadioButton::handleEvent(const DOM::EventImpl& ev)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic