JSValue jsHTMLInputElementDisabled(ExecState* exec, const Identifier&, const PropertySlot& slot) { JSHTMLInputElement* castedThis = static_cast<JSHTMLInputElement*>(asObject(slot.slotBase())); UNUSED_PARAM(exec); HTMLInputElement* imp = static_cast<HTMLInputElement*>(castedThis->impl()); return jsBoolean(imp->disabled()); }
HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::disabled( /* [retval][out] */ BOOL* result) { ASSERT(m_element && m_element->hasTagName(inputTag)); HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element); *result = inputElement->disabled() ? TRUE : FALSE; return S_OK; }
void SpinButtonElement::step(int amount) { HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowHost()); if (input->disabled() || input->readOnly()) return; // On Mac OS, NSStepper updates the value for the button under the mouse // cursor regardless of the button pressed at the beginning. So the // following check is not needed for Mac OS. #if !OS(MAC_OS_X) if (m_upDownState != m_pressStartingState) return; #endif doStepAction(amount); }
void SpinButtonElement::repeatingTimerFired(Timer<SpinButtonElement>*) { HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowAncestorNode()); if (input->disabled() || input->isReadOnlyFormControl()) return; // On Mac OS, NSStepper updates the value for the button under the mouse // cursor regardless of the button pressed at the beginning. So the // following check is not needed for Mac OS. #if !OS(MAC_OS_X) if (m_upDownState != m_pressStartingState) return; #endif input->stepUpFromRenderer(m_upDownState == Up ? 1 : -1); }
void CalendarPickerElement::defaultEventHandler(Event* event) { HTMLInputElement* input = hostInput(); if (input->readOnly() || input->disabled()) return; if (event->type() == eventNames().clickEvent) { openPopup(); event->setDefaultHandled(); } if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); }
void SpinButtonElement::forwardEvent(Event* event) { if (!renderBox()) return; if (!event->hasInterface(eventNames().interfaceForWheelEvent)) return; HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowHost()); if (input->disabled() || input->readOnly() || !input->focused()) return; doStepAction(static_cast<WheelEvent*>(event)->wheelDeltaY()); event->setDefaultHandled(); }
void SpinButtonElement::defaultEventHandler(Event* event) { if (!event->isMouseEvent()) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); return; } RenderBox* box = renderBox(); if (!box) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); return; } HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowAncestorNode()); if (input->disabled() || input->isReadOnlyFormControl()) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); return; } MouseEvent* mouseEvent = static_cast<MouseEvent*>(event); IntPoint local = roundedIntPoint(box->absoluteToLocal(mouseEvent->absoluteLocation(), false, true)); if (mouseEvent->type() == eventNames().mousedownEvent && mouseEvent->button() == LeftButton) { if (box->borderBoxRect().contains(local)) { RefPtr<Node> protector(input); input->focus(); input->select(); input->stepUpFromRenderer(m_upDownState == Up ? 1 : -1); event->setDefaultHandled(); startRepeatingTimer(); } } else if (mouseEvent->type() == eventNames().mouseupEvent && mouseEvent->button() == LeftButton) stopRepeatingTimer(); else if (event->type() == eventNames().mousemoveEvent) { if (box->borderBoxRect().contains(local)) { if (!m_capturing) { if (Frame* frame = document()->frame()) { frame->eventHandler()->setCapturingMouseEventsNode(this); m_capturing = true; } } UpDownState oldUpDownState = m_upDownState; m_upDownState = local.y() < box->height() / 2 ? Up : Down; if (m_upDownState != oldUpDownState) renderer()->repaint(); } else { if (m_capturing) { stopRepeatingTimer(); if (Frame* frame = document()->frame()) { frame->eventHandler()->setCapturingMouseEventsNode(0); m_capturing = false; } } } } if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); }
JSValue* JSHTMLInputElement::getValueProperty(ExecState* exec, int token) const { switch (token) { case DefaultValueAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->defaultValue()); } case DefaultCheckedAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsBoolean(imp->defaultChecked()); } case FormAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return toJS(exec, WTF::getPtr(imp->form())); } case AcceptAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->accept()); } case AccessKeyAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->accessKey()); } case AlignAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->align()); } case AltAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->alt()); } case CheckedAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsBoolean(imp->checked()); } case DisabledAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsBoolean(imp->disabled()); } case MaxLengthAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsNumber(imp->maxLength()); } case NameAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->name()); } case ReadOnlyAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsBoolean(imp->readOnly()); } case SizeAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsNumber(imp->size()); } case SrcAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->src()); } case TabIndexAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsNumber(imp->tabIndex()); } case TypeAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->type()); } case UseMapAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->useMap()); } case ValueAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsString(imp->value()); } case IndeterminateAttrNum: { HTMLInputElement* imp = static_cast<HTMLInputElement*>(impl()); return jsBoolean(imp->indeterminate()); } case ConstructorAttrNum: return getConstructor(exec); } return 0; }
bool DOMHTMLInputElement::disabled() { ASSERT(m_element && m_element->hasTagName(inputTag)); HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element); return inputElement->disabled() ? true : false; }
void SearchFieldCancelButtonElement::defaultEventHandler(Event* event) { // If the element is visible, on mouseup, clear the value, and set selection HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowAncestorNode()); if (event->type() == eventNames().mousedownEvent && event->isMouseEvent() && static_cast<MouseEvent*>(event)->button() == LeftButton) { if (renderer() && renderer()->visibleToHitTesting()) { if (Frame* frame = document()->frame()) { frame->eventHandler()->setCapturingMouseEventsNode(this); m_capturing = true; } } input->focus(); input->select(); event->setDefaultHandled(); } if (event->type() == eventNames().mouseupEvent && event->isMouseEvent() && static_cast<MouseEvent*>(event)->button() == LeftButton) { if (m_capturing && renderer() && renderer()->visibleToHitTesting()) { if (Frame* frame = document()->frame()) { frame->eventHandler()->setCapturingMouseEventsNode(0); m_capturing = false; } #if !PLATFORM(OLYMPIA) // FIXME: It's always false on OLYMPIA platform. This problem depends on RIM bug #1067. if (hovered()) { #else if (event->target() == this) { #endif RefPtr<HTMLInputElement> protector(input); String oldValue = input->value(); input->setValue(""); if (!oldValue.isEmpty()) { toRenderTextControl(input->renderer())->setChangedSinceLastChangeEvent(true); input->dispatchEvent(Event::create(eventNames().inputEvent, true, false)); } input->onSearch(); event->setDefaultHandled(); } } } if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); } // ---------------------------- inline SpinButtonElement::SpinButtonElement(HTMLElement* shadowParent) : TextControlInnerElement(shadowParent->document(), shadowParent) , m_capturing(false) , m_upDownState(Indeterminate) , m_pressStartingState(Indeterminate) , m_repeatingTimer(this, &SpinButtonElement::repeatingTimerFired) { } PassRefPtr<SpinButtonElement> SpinButtonElement::create(HTMLElement* shadowParent) { return adoptRef(new SpinButtonElement(shadowParent)); } void SpinButtonElement::defaultEventHandler(Event* event) { if (!event->isMouseEvent()) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); return; } RenderBox* box = renderBox(); if (!box) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); return; } HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowAncestorNode()); if (input->disabled() || input->isReadOnlyFormControl()) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); return; } MouseEvent* mouseEvent = static_cast<MouseEvent*>(event); IntPoint local = roundedIntPoint(box->absoluteToLocal(mouseEvent->absoluteLocation(), false, true)); if (mouseEvent->type() == eventNames().mousedownEvent && mouseEvent->button() == LeftButton) { if (box->borderBoxRect().contains(local)) { RefPtr<Node> protector(input); input->focus(); input->select(); input->stepUpFromRenderer(m_upDownState == Up ? 1 : -1); event->setDefaultHandled(); startRepeatingTimer(); } } else if (mouseEvent->type() == eventNames().mouseupEvent && mouseEvent->button() == LeftButton) stopRepeatingTimer(); else if (event->type() == eventNames().mousemoveEvent) { if (box->borderBoxRect().contains(local)) { if (!m_capturing) { if (Frame* frame = document()->frame()) { frame->eventHandler()->setCapturingMouseEventsNode(this); m_capturing = true; } } UpDownState oldUpDownState = m_upDownState; m_upDownState = local.y() < box->height() / 2 ? Up : Down; if (m_upDownState != oldUpDownState) renderer()->repaint(); } else { if (m_capturing) { stopRepeatingTimer(); if (Frame* frame = document()->frame()) { frame->eventHandler()->setCapturingMouseEventsNode(0); m_capturing = false; } } } } if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); } void SpinButtonElement::startRepeatingTimer() { m_pressStartingState = m_upDownState; ScrollbarTheme* theme = ScrollbarTheme::nativeTheme(); m_repeatingTimer.start(theme->initialAutoscrollTimerDelay(), theme->autoscrollTimerDelay()); }