void TextFieldInputType::forwardEvent(Event* event) { if (m_innerSpinButton) { m_innerSpinButton->forwardEvent(event); if (event->defaultHandled()) return; } if (event->isMouseEvent() || event->isDragEvent() || event->eventInterface() == WheelEventInterfaceType || event->type() == eventNames().blurEvent || event->type() == eventNames().focusEvent) { element().document().updateStyleIfNeededForNode(element()); if (element().renderer()) { RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(element().renderer()); if (event->type() == eventNames().blurEvent) { if (RenderTextControlInnerBlock* innerTextRenderer = innerTextElement()->renderer()) { if (RenderLayer* innerLayer = innerTextRenderer->layer()) { IntSize scrollOffset(!renderTextControl->style().isLeftToRightDirection() ? innerLayer->scrollWidth() : 0, 0); innerLayer->scrollToOffset(scrollOffset, RenderLayer::ScrollOffsetClamped); } } renderTextControl->capsLockStateMayHaveChanged(); } else if (event->type() == eventNames().focusEvent) renderTextControl->capsLockStateMayHaveChanged(); element().forwardEvent(event); } } }
void TextFieldInputType::forwardEvent(Event* event) { if (SpinButtonElement* spinButton = spinButtonElement()) { spinButton->forwardEvent(event); if (event->defaultHandled()) return; } if (element().renderer() && (event->isMouseEvent() || event->isDragEvent() || event->hasInterface(EventNames::WheelEvent) || event->type() == EventTypeNames::blur || event->type() == EventTypeNames::focus)) { RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(element().renderer()); if (event->type() == EventTypeNames::blur) { if (RenderBox* innerEditorRenderer = element().innerEditorElement()->renderBox()) { // FIXME: This class has no need to know about RenderLayer! if (RenderLayer* innerLayer = innerEditorRenderer->layer()) { if (RenderLayerScrollableArea* innerScrollableArea = innerLayer->scrollableArea()) { IntSize scrollOffset(!renderTextControl->style()->isLeftToRightDirection() ? innerScrollableArea->scrollWidth().toInt() : 0, 0); innerScrollableArea->scrollToOffset(scrollOffset, ScrollOffsetClamped); } } } renderTextControl->capsLockStateMayHaveChanged(); } else if (event->type() == EventTypeNames::focus) { renderTextControl->capsLockStateMayHaveChanged(); } element().forwardEvent(event); } }
void SearchFieldResultsButtonElement::defaultEventHandler(Event* evt) { // On mousedown, bring up a menu, if needed HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowAncestorNode()); if (evt->type() == eventNames().mousedownEvent && evt->isMouseEvent() && static_cast<MouseEvent*>(evt)->button() == LeftButton) { input->focus(); input->select(); RenderTextControlSingleLine* renderer = static_cast<RenderTextControlSingleLine*>(input->renderer()); if (renderer->popupIsVisible()) renderer->hidePopup(); else if (input->maxResults() > 0) renderer->showPopup(); evt->setDefaultHandled(); } if (!evt->defaultHandled()) HTMLDivElement::defaultEventHandler(evt); }
void TextFieldInputType::forwardEvent(Event* event) { if (element()->renderer() && (event->isMouseEvent() || event->isDragEvent() || event->hasInterface(eventNames().interfaceForWheelEvent) || event->type() == eventNames().blurEvent || event->type() == eventNames().focusEvent)) { RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(element()->renderer()); if (event->type() == eventNames().blurEvent) { if (RenderBox* innerTextRenderer = innerTextElement()->renderBox()) { if (RenderLayer* innerLayer = innerTextRenderer->layer()) innerLayer->scrollToOffset(!renderTextControl->style()->isLeftToRightDirection() ? innerLayer->scrollWidth() : 0, 0, RenderLayer::ScrollOffsetClamped); } renderTextControl->capsLockStateMayHaveChanged(); } else if (event->type() == eventNames().focusEvent) renderTextControl->capsLockStateMayHaveChanged(); element()->forwardEvent(event); } }
PassRefPtr<RenderStyle> TextControlInnerElement::customStyleForRenderer() { RenderTextControlSingleLine* parentRenderer = toRenderTextControlSingleLine(shadowHost()->renderer()); return parentRenderer->createInnerBlockStyle(parentRenderer->style()); }