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 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 // FIXME: This is no longer being set from renderer. Consider updating the | 170 // FIXME: This is no longer being set from renderer. Consider updating the |
171 // method name. | 171 // method name. |
172 input->setValueFromRenderer(valueString); | 172 input->setValueFromRenderer(valueString); |
173 if (layoutObject()) | 173 if (layoutObject()) |
174 layoutObject()->setNeedsLayoutAndFullPaintInvalidation( | 174 layoutObject()->setNeedsLayoutAndFullPaintInvalidation( |
175 LayoutInvalidationReason::SliderValueChanged); | 175 LayoutInvalidationReason::SliderValueChanged); |
176 } | 176 } |
177 | 177 |
178 void SliderThumbElement::startDragging() { | 178 void SliderThumbElement::startDragging() { |
179 if (LocalFrame* frame = document().frame()) { | 179 if (LocalFrame* frame = document().frame()) { |
180 frame->eventHandler().setCapturingMouseEventsNode(this); | 180 // Note that we get to here only we through mouse event path. The touch |
| 181 // events are implicitly captured to the starting element and will be |
| 182 // handled in handleTouchEvent function. |
| 183 frame->eventHandler().setPointerCapture(PointerEventFactory::s_mouseId, |
| 184 this); |
181 m_inDragMode = true; | 185 m_inDragMode = true; |
182 } | 186 } |
183 } | 187 } |
184 | 188 |
185 void SliderThumbElement::stopDragging() { | 189 void SliderThumbElement::stopDragging() { |
186 if (!m_inDragMode) | 190 if (!m_inDragMode) |
187 return; | 191 return; |
188 | 192 |
189 if (LocalFrame* frame = document().frame()) | 193 if (LocalFrame* frame = document().frame()) { |
190 frame->eventHandler().setCapturingMouseEventsNode(nullptr); | 194 frame->eventHandler().releasePointerCapture(PointerEventFactory::s_mouseId, |
| 195 this); |
| 196 } |
191 m_inDragMode = false; | 197 m_inDragMode = false; |
192 if (layoutObject()) | 198 if (layoutObject()) |
193 layoutObject()->setNeedsLayoutAndFullPaintInvalidation( | 199 layoutObject()->setNeedsLayoutAndFullPaintInvalidation( |
194 LayoutInvalidationReason::SliderValueChanged); | 200 LayoutInvalidationReason::SliderValueChanged); |
195 if (hostInput()) | 201 if (hostInput()) |
196 hostInput()->dispatchFormControlChangeEvent(); | 202 hostInput()->dispatchFormControlChangeEvent(); |
197 } | 203 } |
198 | 204 |
199 void SliderThumbElement::defaultEventHandler(Event* event) { | 205 void SliderThumbElement::defaultEventHandler(Event* event) { |
| 206 if (event->isPointerEvent() && |
| 207 event->type() == EventTypeNames::lostpointercapture) { |
| 208 stopDragging(); |
| 209 return; |
| 210 } |
| 211 |
200 if (!event->isMouseEvent()) { | 212 if (!event->isMouseEvent()) { |
201 HTMLDivElement::defaultEventHandler(event); | 213 HTMLDivElement::defaultEventHandler(event); |
202 return; | 214 return; |
203 } | 215 } |
204 | 216 |
205 // FIXME: Should handle this readonly/disabled check in more general way. | 217 // FIXME: Should handle this readonly/disabled check in more general way. |
206 // Missing this kind of check is likely to occur elsewhere if adding it in | 218 // Missing this kind of check is likely to occur elsewhere if adding it in |
207 // each shadow element. | 219 // each shadow element. |
208 HTMLInputElement* input = hostInput(); | 220 HTMLInputElement* input = hostInput(); |
209 if (!input || input->isDisabledFormControl()) { | 221 if (!input || input->isDisabledFormControl()) { |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 updateTouchEventHandlerRegistry(); | 459 updateTouchEventHandlerRegistry(); |
448 HTMLElement::didMoveToNewDocument(oldDocument); | 460 HTMLElement::didMoveToNewDocument(oldDocument); |
449 } | 461 } |
450 | 462 |
451 void SliderContainerElement::removeAllEventListeners() { | 463 void SliderContainerElement::removeAllEventListeners() { |
452 Node::removeAllEventListeners(); | 464 Node::removeAllEventListeners(); |
453 m_hasTouchEventHandler = false; | 465 m_hasTouchEventHandler = false; |
454 } | 466 } |
455 | 467 |
456 } // namespace blink | 468 } // namespace blink |
OLD | NEW |