| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2010 Google Inc. All rights reserved. | 3 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 LayoutUnit closestPosition(trackSize * closestRatio); | 160 LayoutUnit closestPosition(trackSize * closestRatio); |
| 161 const LayoutUnit snappingThreshold(5); | 161 const LayoutUnit snappingThreshold(5); |
| 162 if ((closestPosition - position).abs() <= snappingThreshold) | 162 if ((closestPosition - position).abs() <= snappingThreshold) |
| 163 value = closest; | 163 value = closest; |
| 164 } | 164 } |
| 165 | 165 |
| 166 String valueString = serializeForNumberType(value); | 166 String valueString = serializeForNumberType(value); |
| 167 if (valueString == input->value()) | 167 if (valueString == input->value()) |
| 168 return; | 168 return; |
| 169 | 169 |
| 170 // FIXME: This is no longer being set from renderer. Consider updating the met
hod name. | 170 // FIXME: This is no longer being set from renderer. Consider updating the |
| 171 // method name. |
| 171 input->setValueFromRenderer(valueString); | 172 input->setValueFromRenderer(valueString); |
| 172 if (layoutObject()) | 173 if (layoutObject()) |
| 173 layoutObject()->setNeedsLayoutAndFullPaintInvalidation( | 174 layoutObject()->setNeedsLayoutAndFullPaintInvalidation( |
| 174 LayoutInvalidationReason::SliderValueChanged); | 175 LayoutInvalidationReason::SliderValueChanged); |
| 175 } | 176 } |
| 176 | 177 |
| 177 void SliderThumbElement::startDragging() { | 178 void SliderThumbElement::startDragging() { |
| 178 if (LocalFrame* frame = document().frame()) { | 179 if (LocalFrame* frame = document().frame()) { |
| 179 frame->eventHandler().setCapturingMouseEventsNode(this); | 180 frame->eventHandler().setCapturingMouseEventsNode(this); |
| 180 m_inDragMode = true; | 181 m_inDragMode = true; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 195 hostInput()->dispatchFormControlChangeEvent(); | 196 hostInput()->dispatchFormControlChangeEvent(); |
| 196 } | 197 } |
| 197 | 198 |
| 198 void SliderThumbElement::defaultEventHandler(Event* event) { | 199 void SliderThumbElement::defaultEventHandler(Event* event) { |
| 199 if (!event->isMouseEvent()) { | 200 if (!event->isMouseEvent()) { |
| 200 HTMLDivElement::defaultEventHandler(event); | 201 HTMLDivElement::defaultEventHandler(event); |
| 201 return; | 202 return; |
| 202 } | 203 } |
| 203 | 204 |
| 204 // FIXME: Should handle this readonly/disabled check in more general way. | 205 // FIXME: Should handle this readonly/disabled check in more general way. |
| 205 // Missing this kind of check is likely to occur elsewhere if adding it in eac
h shadow element. | 206 // Missing this kind of check is likely to occur elsewhere if adding it in |
| 207 // each shadow element. |
| 206 HTMLInputElement* input = hostInput(); | 208 HTMLInputElement* input = hostInput(); |
| 207 if (!input || input->isDisabledOrReadOnly()) { | 209 if (!input || input->isDisabledOrReadOnly()) { |
| 208 stopDragging(); | 210 stopDragging(); |
| 209 HTMLDivElement::defaultEventHandler(event); | 211 HTMLDivElement::defaultEventHandler(event); |
| 210 return; | 212 return; |
| 211 } | 213 } |
| 212 | 214 |
| 213 MouseEvent* mouseEvent = toMouseEvent(event); | 215 MouseEvent* mouseEvent = toMouseEvent(event); |
| 214 bool isLeftButton = mouseEvent->button() == | 216 bool isLeftButton = mouseEvent->button() == |
| 215 static_cast<short>(WebPointerProperties::Button::Left); | 217 static_cast<short>(WebPointerProperties::Button::Left); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 | 255 |
| 254 void SliderThumbElement::detachLayoutTree(const AttachContext& context) { | 256 void SliderThumbElement::detachLayoutTree(const AttachContext& context) { |
| 255 if (m_inDragMode) { | 257 if (m_inDragMode) { |
| 256 if (LocalFrame* frame = document().frame()) | 258 if (LocalFrame* frame = document().frame()) |
| 257 frame->eventHandler().setCapturingMouseEventsNode(nullptr); | 259 frame->eventHandler().setCapturingMouseEventsNode(nullptr); |
| 258 } | 260 } |
| 259 HTMLDivElement::detachLayoutTree(context); | 261 HTMLDivElement::detachLayoutTree(context); |
| 260 } | 262 } |
| 261 | 263 |
| 262 HTMLInputElement* SliderThumbElement::hostInput() const { | 264 HTMLInputElement* SliderThumbElement::hostInput() const { |
| 263 // Only HTMLInputElement creates SliderThumbElement instances as its shadow no
des. | 265 // Only HTMLInputElement creates SliderThumbElement instances as its shadow |
| 264 // So, ownerShadowHost() must be an HTMLInputElement. | 266 // nodes. So, ownerShadowHost() must be an HTMLInputElement. |
| 265 return toHTMLInputElement(ownerShadowHost()); | 267 return toHTMLInputElement(ownerShadowHost()); |
| 266 } | 268 } |
| 267 | 269 |
| 268 static const AtomicString& sliderThumbShadowPartId() { | 270 static const AtomicString& sliderThumbShadowPartId() { |
| 269 DEFINE_STATIC_LOCAL(const AtomicString, sliderThumb, | 271 DEFINE_STATIC_LOCAL(const AtomicString, sliderThumb, |
| 270 ("-webkit-slider-thumb")); | 272 ("-webkit-slider-thumb")); |
| 271 return sliderThumb; | 273 return sliderThumb; |
| 272 } | 274 } |
| 273 | 275 |
| 274 static const AtomicString& mediaSliderThumbShadowPartId() { | 276 static const AtomicString& mediaSliderThumbShadowPartId() { |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 m_slidingDirection = NoMove; | 353 m_slidingDirection = NoMove; |
| 352 m_touchStarted = true; | 354 m_touchStarted = true; |
| 353 thumb->setPositionFromPoint(touches->item(0)->absoluteLocation()); | 355 thumb->setPositionFromPoint(touches->item(0)->absoluteLocation()); |
| 354 } else if (m_touchStarted) { | 356 } else if (m_touchStarted) { |
| 355 LayoutPoint currentPoint = touches->item(0)->absoluteLocation(); | 357 LayoutPoint currentPoint = touches->item(0)->absoluteLocation(); |
| 356 if (m_slidingDirection == | 358 if (m_slidingDirection == |
| 357 NoMove) { // Still needs to update the direction. | 359 NoMove) { // Still needs to update the direction. |
| 358 m_slidingDirection = getDirection(currentPoint, m_startPoint); | 360 m_slidingDirection = getDirection(currentPoint, m_startPoint); |
| 359 } | 361 } |
| 360 | 362 |
| 361 // m_slidingDirection has been updated, so check whether it's okay to slid
e again. | 363 // m_slidingDirection has been updated, so check whether it's okay to |
| 364 // slide again. |
| 362 if (canSlide()) { | 365 if (canSlide()) { |
| 363 thumb->setPositionFromPoint(touches->item(0)->absoluteLocation()); | 366 thumb->setPositionFromPoint(touches->item(0)->absoluteLocation()); |
| 364 event->setDefaultHandled(); | 367 event->setDefaultHandled(); |
| 365 } | 368 } |
| 366 } | 369 } |
| 367 } | 370 } |
| 368 } | 371 } |
| 369 | 372 |
| 370 SliderContainerElement::Direction SliderContainerElement::getDirection( | 373 SliderContainerElement::Direction SliderContainerElement::getDirection( |
| 371 LayoutPoint& point1, | 374 LayoutPoint& point1, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 updateTouchEventHandlerRegistry(); | 448 updateTouchEventHandlerRegistry(); |
| 446 HTMLElement::didMoveToNewDocument(oldDocument); | 449 HTMLElement::didMoveToNewDocument(oldDocument); |
| 447 } | 450 } |
| 448 | 451 |
| 449 void SliderContainerElement::removeAllEventListeners() { | 452 void SliderContainerElement::removeAllEventListeners() { |
| 450 Node::removeAllEventListeners(); | 453 Node::removeAllEventListeners(); |
| 451 m_hasTouchEventHandler = false; | 454 m_hasTouchEventHandler = false; |
| 452 } | 455 } |
| 453 | 456 |
| 454 } // namespace blink | 457 } // namespace blink |
| OLD | NEW |