Changeset 52008 in webkit
- Timestamp:
- Dec 11, 2009 10:46:14 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r52002 r52008 1 2009-12-11 Brian Weinstein <bweinstein@apple.com> 2 3 Reviewed by Adam Roben. 4 5 Fixes <http://webkit.org/b/32303>. 6 Middle-mouse button not firing mousedown DOM event when autoscroll happens. 7 8 Added tests to show that middle mousedown DOM events are fired when panscrolling happens, and 9 that when event.preventDefault is called, pan scrolling doesn't happen. 10 11 * platform/win/fast/events/panScroll-event-fired-expected.txt: Added. 12 * platform/win/fast/events/panScroll-event-fired.html: Added. 13 * platform/win/fast/events/panScroll-preventDefault-expected.txt: Added. 14 * platform/win/fast/events/panScroll-preventDefault.html: Added. 15 1 16 2009-12-11 Csaba Osztrogonác <ossy@webkit.org> 2 17 -
trunk/WebCore/ChangeLog
r52007 r52008 1 2009-12-11 Brian Weinstein <bweinstein@apple.com> 2 3 Reviewed by Adam Roben. 4 5 Fixes <http://webkit.org/b/32303>. 6 Middle-mouse button not firing mousedown DOM event when autoscroll happens. 7 8 This fix moves the pan scrolling code into Node.cpp, as part of the default event handler. 9 We get two wins out of this: 10 1) Mousedown DOM events are now fired before pan scrolling. 11 2) Calling event.preventDefault() on a middle mouse button will now prevent pan scrolling. 12 13 Added tests to show that middle mousedown DOM events are fired when panscrolling happens, and 14 that when event.preventDefault is called, pan scrolling doesn't happen. 15 16 Tests: platform/win/fast/events/panScroll-event-fired.html 17 platform/win/fast/events/panScroll-preventDefault.html 18 19 * dom/Node.cpp: 20 (WebCore::Node::defaultEventHandler): Moved pan scrolling starting code to here. 21 * page/EventHandler.cpp: 22 (WebCore::EventHandler::startPanScrolling): Function to initialize scrolling variables and start timer. 23 (WebCore::EventHandler::handleMousePressEvent): From here. 24 * page/EventHandler.h: 25 1 26 2009-12-11 Chris Marrin <cmarrin@apple.com> 2 27 -
trunk/WebCore/dom/Node.cpp
r51162 r52008 2828 2828 if (Frame* frame = document()->frame()) 2829 2829 frame->eventHandler()->defaultTextInputEventHandler(static_cast<TextEvent*>(event)); 2830 #if ENABLE(PAN_SCROLLING) 2831 } else if (eventType == eventNames().mousedownEvent) { 2832 MouseEvent* mouseEvent = static_cast<MouseEvent*>(event); 2833 if (mouseEvent->button() == MiddleButton && !this->isLink()) { 2834 RenderObject* renderer = this->renderer(); 2835 2836 while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->canBeScrolledAndHasScrollableArea())) { 2837 // FIXME: If we start in a frame that can't scroll, we don't want to jump out of it to start scrolling: 2838 // <https://bugs.webkit.org/show_bug.cgi?id=32399>. 2839 if (!renderer->parent() && renderer->node() == renderer->document() && renderer->document()->ownerElement()) 2840 renderer = renderer->document()->ownerElement()->renderer(); 2841 else 2842 renderer = renderer->parent(); 2843 } 2844 2845 if (renderer) { 2846 if (Frame* frame = renderer->document()->frame()) 2847 frame->eventHandler()->startPanScrolling(renderer); 2848 } 2849 } 2850 #endif 2830 2851 } 2831 2852 } -
trunk/WebCore/page/EventHandler.cpp
r51991 r52008 694 694 695 695 #if ENABLE(PAN_SCROLLING) 696 697 void EventHandler::startPanScrolling(RenderObject* renderer) 698 { 699 m_panScrollInProgress = true; 700 m_panScrollButtonPressed = true; 701 handleAutoscroll(renderer); 702 invalidateClick(); 703 } 696 704 697 705 void EventHandler::updatePanScrollState() … … 1194 1202 return true; 1195 1203 } 1196 1197 if (mouseEvent.button() == MiddleButton && !mev.isOverLink()) {1198 RenderObject* renderer = mev.targetNode()->renderer();1199 1200 while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->canBeScrolledAndHasScrollableArea())) {1201 if (!renderer->parent() && renderer->node() == renderer->document() && renderer->document()->ownerElement())1202 renderer = renderer->document()->ownerElement()->renderer();1203 else1204 renderer = renderer->parent();1205 }1206 1207 if (renderer) {1208 m_panScrollInProgress = true;1209 m_panScrollButtonPressed = true;1210 handleAutoscroll(renderer);1211 invalidateClick();1212 return true;1213 }1214 }1215 1204 #endif 1216 1205 -
trunk/WebCore/page/EventHandler.h
r51991 r52008 88 88 void setMousePressNode(PassRefPtr<Node>); 89 89 90 void startPanScrolling(RenderObject*); 90 91 bool panScrollInProgress() { return m_panScrollInProgress; } 91 92 void setPanScrollInProgress(bool inProgress) { m_panScrollInProgress = inProgress; }
Note: See TracChangeset
for help on using the changeset viewer.