diff options
Diffstat (limited to 'Source/WebCore/html/shadow/DateTimeEditElement.cpp')
-rw-r--r-- | Source/WebCore/html/shadow/DateTimeEditElement.cpp | 28 |
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)) |