summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/shadow/DateTimeEditElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/html/shadow/DateTimeEditElement.cpp')
-rw-r--r--Source/WebCore/html/shadow/DateTimeEditElement.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/Source/WebCore/html/shadow/DateTimeEditElement.cpp b/Source/WebCore/html/shadow/DateTimeEditElement.cpp
index 0ed1dacc3..3a64b9914 100644
--- a/Source/WebCore/html/shadow/DateTimeEditElement.cpp
+++ b/Source/WebCore/html/shadow/DateTimeEditElement.cpp
@@ -202,7 +202,7 @@ DateTimeEditElement::~DateTimeEditElement()
m_fields[fieldIndex]->removeEventHandler();
if (m_spinButton)
- m_spinButton->removeStepActionHandler();
+ m_spinButton->removeSpinButtonOwner();
}
void DateTimeEditElement::addField(PassRefPtr<DateTimeFieldElement> field)
@@ -230,6 +230,13 @@ DateTimeFieldElement* DateTimeEditElement::fieldAt(size_t fieldIndex) const
return fieldIndex < m_fields.size() ? m_fields[fieldIndex] : 0;
}
+void DateTimeEditElement::focusAndSelectSpinButtonOwner()
+{
+ if (!m_editControlOwner)
+ return;
+ m_editControlOwner->focusAndSelectEditControlOwner();
+}
+
void DateTimeEditElement::focusFieldAt(size_t newFocusFieldIndex)
{
if (m_focusFieldIndex == newFocusFieldIndex)
@@ -418,6 +425,12 @@ void DateTimeEditElement::defaultEventHandler(Event* event)
if (!focusField)
return;
+ if (m_spinButton) {
+ m_spinButton->forwardEvent(event);
+ if (event->defaultHandled())
+ return;
+ }
+
focusField->defaultEventHandler(event);
}
@@ -433,6 +446,19 @@ void DateTimeEditElement::setEmptyValue(const DateComponents& dateForReadOnlyFie
m_fields[fieldIndex]->setEmptyValue(dateForReadOnlyField, DateTimeFieldElement::DispatchNoEvent);
}
+bool DateTimeEditElement::shouldSpinButtonRespondToMouseEvents()
+{
+ return !isDisabled() && !isReadOnly();
+}
+
+bool DateTimeEditElement::shouldSpinButtonRespondToWheelEvents()
+{
+ if (!shouldSpinButtonRespondToMouseEvents())
+ return false;
+
+ return !m_editControlOwner || m_editControlOwner->isEditControlOwnerFocused();
+}
+
void DateTimeEditElement::spinButtonStepDown()
{
if (DateTimeFieldElement* const focusField = fieldAt(m_focusFieldIndex))