Changeset 92699 in webkit
- Timestamp:
- Aug 9, 2011 12:42:26 PM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r92698 r92699 1 2011-08-09 Alexei Svitkine <asvitkine@chromium.org> 2 3 [Chromium] Enable rubber banding when scrolling. 4 5 https://bugs.webkit.org/show_bug.cgi?id=65707 6 7 Reviewed by Dimitri Glazkov. 8 9 No new tests since this is just syncing changes to chromium platform. 10 11 * platform/PlatformWheelEvent.h: 12 (WebCore::PlatformWheelEvent::PlatformWheelEvent): 13 * platform/chromium/ScrollAnimatorChromiumMac.mm: 14 (WebCore::ScrollAnimatorChromiumMac::handleGestureEvent): 15 1 16 2011-08-09 Vsevolod Vlasov <vsevik@chromium.org> 2 17 -
trunk/Source/WebCore/platform/PlatformWheelEvent.h
r92617 r92699 74 74 }; 75 75 76 #if PLATFORM(MAC) 76 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 77 77 enum PlatformWheelEventPhase { 78 78 PlatformWheelEventPhaseNone = 0, … … 98 98 , m_altKey(false) 99 99 , m_metaKey(false) 100 #if PLATFORM(MAC) 100 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 101 101 , m_hasPreciseScrollingDeltas(false) 102 102 , m_phase(PlatformWheelEventPhaseNone) … … 120 120 , m_altKey(altKey) 121 121 , m_metaKey(metaKey) 122 #if PLATFORM(MAC) 122 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 123 123 , m_hasPreciseScrollingDeltas(false) 124 124 , m_phase(PlatformWheelEventPhaseNone) … … 175 175 PlatformWheelEvent(NSEvent *, NSView *windowView); 176 176 #endif 177 177 #endif 178 179 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 178 180 PlatformWheelEventPhase phase() const { return m_phase; } 179 181 PlatformWheelEventPhase momentumPhase() const { return m_momentumPhase; } … … 214 216 bool m_altKey; 215 217 bool m_metaKey; 216 #if PLATFORM(MAC) 218 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 217 219 bool m_hasPreciseScrollingDeltas; 218 220 PlatformWheelEventPhase m_phase; -
trunk/Source/WebCore/platform/chromium/ScrollAnimatorChromiumMac.mm
r92617 r92699 853 853 if (gestureEvent.type() == PlatformGestureEvent::ScrollBeginType) 854 854 beginScrollGesture(); 855 else 855 else if (gestureEvent.type() == PlatformGestureEvent::ScrollEndType) 856 856 endScrollGesture(); 857 857 } -
trunk/Source/WebKit/chromium/ChangeLog
r92694 r92699 1 2011-08-09 Alexei Svitkine <asvitkine@chromium.org> 2 3 [Chromium] Enable rubber banding when scrolling. 4 5 https://bugs.webkit.org/show_bug.cgi?id=65707 6 7 Reviewed by Dimitri Glazkov. 8 9 * features.gypi: 10 * public/WebInputEvent.h: 11 (WebKit::WebMouseWheelEvent::WebMouseWheelEvent): 12 (WebKit::WebGestureEvent::WebGestureEvent): 13 * public/mac/WebInputEventFactory.h: 14 * src/WebInputEventConversion.cpp: 15 (WebKit::PlatformWheelEventBuilder::PlatformWheelEventBuilder): 16 (WebKit::PlatformGestureEventBuilder::PlatformGestureEventBuilder): 17 * src/WebInputEventConversion.h: 18 * src/WebPopupMenuImpl.cpp: 19 (WebKit::WebPopupMenuImpl::GestureEvent): 20 (WebKit::WebPopupMenuImpl::handleInputEvent): 21 * src/WebPopupMenuImpl.h: 22 * src/WebViewImpl.cpp: 23 (WebKit::WebViewImpl::gestureEvent): 24 (WebKit::WebViewImpl::handleInputEvent): 25 * src/WebViewImpl.h: 26 * src/mac/WebInputEventFactory.mm: 27 (WebKit::gestureEventTypeForEvent): 28 (WebKit::phaseForNSEventPhase): 29 (WebKit::phaseForEvent): 30 (WebKit::momentumPhaseForEvent): 31 (WebKit::WebInputEventFactory::mouseWheelEvent): 32 (WebKit::WebInputEventFactory::gestureEvent): 33 1 34 2011-08-09 Dmitry Lomov <dslomov@google.com> 2 35 -
trunk/Source/WebKit/chromium/features.gypi
r92617 r92699 154 154 ['OS=="mac"', { 155 155 'feature_defines': [ 156 'ENABLE_RUBBER_BANDING=1', 156 157 'WTF_USE_SKIA_ON_MAC_CHROMIUM=<(use_skia)', 157 158 ], -
trunk/Source/WebKit/chromium/public/WebInputEvent.h
r92617 r92699 101 101 Char, 102 102 103 // WebGestureEvent 104 GestureScrollBegin, 105 GestureScrollEnd, 106 103 107 // WebTouchEvent 104 108 TouchStart, … … 280 284 class WebMouseWheelEvent : public WebMouseEvent { 281 285 public: 286 enum Phase { 287 PhaseNone = 0, 288 PhaseBegan = 1 << 1, 289 PhaseStationary = 1 << 2, 290 PhaseChanged = 1 << 3, 291 PhaseEnded = 1 << 4, 292 PhaseCancelled = 1 << 5, 293 }; 294 282 295 float deltaX; 283 296 float deltaY; … … 290 303 // transfering it over the wire. 291 304 int scrollByPage; 305 306 bool hasPreciseScrollingDeltas; 307 Phase phase; 308 Phase momentumPhase; 292 309 293 310 WebMouseWheelEvent(unsigned sizeParam = sizeof(WebMouseWheelEvent)) … … 298 315 , wheelTicksY(0.0f) 299 316 , scrollByPage(false) 317 , hasPreciseScrollingDeltas(false) 318 , phase(PhaseNone) 319 , momentumPhase(PhaseNone) 320 { 321 } 322 }; 323 324 // WebGestureEvent -------------------------------------------------------------- 325 326 class WebGestureEvent : public WebInputEvent { 327 public: 328 int x; 329 int y; 330 int globalX; 331 int globalY; 332 333 WebGestureEvent(unsigned sizeParam = sizeof(WebGestureEvent)) 334 : x(0) 335 , y(0) 336 , globalX(0) 337 , globalY(0) 300 338 { 301 339 } -
trunk/Source/WebKit/chromium/public/mac/WebInputEventFactory.h
r92617 r92699 47 47 class WebMouseEvent; 48 48 class WebMouseWheelEvent; 49 class WebGestureEvent; 49 50 50 51 class WebInputEventFactory { … … 54 55 WEBKIT_EXPORT static WebMouseEvent mouseEvent(NSEvent*, NSView*); 55 56 WEBKIT_EXPORT static WebMouseWheelEvent mouseWheelEvent(NSEvent*, NSView*); 57 WEBKIT_EXPORT static WebGestureEvent gestureEvent(NSEvent *, NSView *); 56 58 }; 57 59 -
trunk/Source/WebKit/chromium/src/WebInputEventConversion.cpp
r92617 r92699 101 101 m_altKey = (e.modifiers & WebInputEvent::AltKey); 102 102 m_metaKey = (e.modifiers & WebInputEvent::MetaKey); 103 } 103 #if OS(DARWIN) 104 m_hasPreciseScrollingDeltas = e.hasPreciseScrollingDeltas; 105 m_phase = static_cast<WebCore::PlatformWheelEventPhase>(e.phase); 106 m_momentumPhase = static_cast<WebCore::PlatformWheelEventPhase>(e.momentumPhase); 107 m_timestamp = e.timeStampSeconds; 108 #endif 109 } 110 111 // PlatformGestureEventBuilder -------------------------------------------------- 112 113 #if ENABLE(GESTURE_EVENTS) 114 PlatformGestureEventBuilder::PlatformGestureEventBuilder(Widget* widget, const WebGestureEvent& e) 115 { 116 switch (e.type) { 117 case WebInputEvent::GestureScrollBegin: 118 m_type = PlatformGestureEvent::ScrollBeginType; 119 break; 120 case WebInputEvent::GestureScrollEnd: 121 m_type = PlatformGestureEvent::ScrollEndType; 122 break; 123 default: 124 ASSERT_NOT_REACHED(); 125 } 126 m_position = widget->convertFromContainingWindow(IntPoint(e.x, e.y)); 127 m_globalPosition = IntPoint(e.globalX, e.globalY); 128 m_timestamp = e.timeStampSeconds; 129 m_shiftKey = (e.modifiers & WebInputEvent::ShiftKey); 130 m_ctrlKey = (e.modifiers & WebInputEvent::ControlKey); 131 m_altKey = (e.modifiers & WebInputEvent::AltKey); 132 m_metaKey = (e.modifiers & WebInputEvent::MetaKey); 133 } 134 #endif 104 135 105 136 // MakePlatformKeyboardEvent -------------------------------------------------- -
trunk/Source/WebKit/chromium/src/WebInputEventConversion.h
r92617 r92699 32 32 #define WebInputEventConversion_h 33 33 34 #include "WebInputEvent.h" 35 34 #include "PlatformGestureEvent.h" 36 35 #include "PlatformKeyboardEvent.h" 37 36 #include "PlatformMouseEvent.h" 38 37 #include "PlatformTouchEvent.h" 39 38 #include "PlatformWheelEvent.h" 39 #include "WebInputEvent.h" 40 40 41 41 namespace WebCore { … … 52 52 class WebMouseWheelEvent; 53 53 class WebKeyboardEvent; 54 class WebGestureEvent; 54 55 55 56 // These classes are used to convert from WebInputEvent subclasses to … … 65 66 PlatformWheelEventBuilder(WebCore::Widget*, const WebMouseWheelEvent&); 66 67 }; 68 69 #if ENABLE(GESTURE_EVENTS) 70 class PlatformGestureEventBuilder : public WebCore::PlatformGestureEvent { 71 public: 72 PlatformGestureEventBuilder(WebCore::Widget*, const WebGestureEvent&); 73 }; 74 #endif 67 75 68 76 class PlatformKeyboardEventBuilder : public WebCore::PlatformKeyboardEvent { -
trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.cpp
r92617 r92699 134 134 } 135 135 136 bool WebPopupMenuImpl::GestureEvent(const WebGestureEvent& event) 137 { 138 return m_widget->handleGestureEvent(PlatformGestureEventBuilder(m_widget, event)); 139 } 140 136 141 #if ENABLE(TOUCH_EVENTS) 137 142 bool WebPopupMenuImpl::TouchEvent(const WebTouchEvent& event) … … 267 272 return TouchEvent(*static_cast<const WebTouchEvent*>(&inputEvent)); 268 273 274 case WebInputEvent::GestureScrollBegin: 275 case WebInputEvent::GestureScrollEnd: 276 return GestureEvent(*static_cast<const WebGestureEvent*>(&inputEvent)); 277 269 278 case WebInputEvent::Undefined: 270 279 case WebInputEvent::MouseEnter: -
trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.h
r92617 r92699 53 53 54 54 namespace WebKit { 55 class WebGestureEvent; 55 56 class WebKeyboardEvent; 56 57 class WebMouseEvent; … … 105 106 void MouseDoubleClick(const WebMouseEvent&); 106 107 void MouseWheel(const WebMouseWheelEvent&); 108 bool GestureEvent(const WebGestureEvent&); 107 109 bool TouchEvent(const WebTouchEvent&); 108 110 bool KeyEvent(const WebKeyboardEvent&); -
trunk/Source/WebKit/chromium/src/WebViewImpl.cpp
r92617 r92699 604 604 } 605 605 606 #if ENABLE(GESTURE_EVENTS) 607 bool WebViewImpl::gestureEvent(const WebGestureEvent& event) 608 { 609 PlatformGestureEventBuilder platformEvent(mainFrameImpl()->frameView(), event); 610 return mainFrameImpl()->frame()->eventHandler()->handleGestureEvent(platformEvent); 611 } 612 #endif 613 606 614 bool WebViewImpl::keyEvent(const WebKeyboardEvent& event) 607 615 { … … 1281 1289 break; 1282 1290 1291 #if ENABLE(GESTURE_EVENTS) 1292 case WebInputEvent::GestureScrollBegin: 1293 case WebInputEvent::GestureScrollEnd: 1294 handled = gestureEvent(*static_cast<const WebGestureEvent*>(&inputEvent)); 1295 break; 1296 #endif 1297 1283 1298 #if ENABLE(TOUCH_EVENTS) 1284 1299 case WebInputEvent::TouchStart: -
trunk/Source/WebKit/chromium/src/WebViewImpl.h
r92617 r92699 85 85 class WebDevToolsAgentPrivate; 86 86 class WebFrameImpl; 87 class WebGestureEvent; 87 88 class WebImage; 88 89 class WebKeyboardEvent; … … 278 279 void mouseDoubleClick(const WebMouseEvent&); 279 280 bool mouseWheel(const WebMouseWheelEvent&); 281 bool gestureEvent(const WebGestureEvent&); 280 282 bool keyEvent(const WebKeyboardEvent&); 281 283 bool charEvent(const WebKeyboardEvent&); -
trunk/Source/WebKit/chromium/src/mac/WebInputEventFactory.mm
r92617 r92699 35 35 #include <wtf/ASCIICType.h> 36 36 37 #if BUILDING_ON_LEOPARD || BUILDING_ON_SNOW_LEOPARD 38 39 // Additional Lion APIs. 40 enum { 41 NSEventPhaseNone = 0, 42 NSEventPhaseBegan = 0x1 << 0, 43 NSEventPhaseStationary = 0x1 << 1, 44 NSEventPhaseChanged = 0x1 << 2, 45 NSEventPhaseEnded = 0x1 << 3, 46 NSEventPhaseCancelled = 0x1 << 4 47 }; 48 typedef NSUInteger NSEventPhase; 49 50 @interface NSEvent (LionSDKDeclarations) 51 - (NSEventPhase)phase; 52 - (NSEventPhase)momentumPhase; 53 @end 54 55 #endif // BUILDING_ON_LEOPARD || BUILDING_ON_SNOW_LEOPARD 56 57 #if BUILDING_ON_LEOPARD 58 59 // These are not defined in the 10.5 SDK but are defined in later SDKs inside 60 // a MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 #ifdef. 61 enum { 62 NSEventTypeBeginGesture = 19, 63 NSEventTypeEndGesture = 20 64 }; 65 66 #endif // BUILDING_ON_LEOPARD 67 37 68 namespace WebKit { 38 69 … … 148 179 // E.g. the key next to Caps Lock has the same Event.keyCode on U.S. keyboard ('A') and on Russian keyboard (CYRILLIC LETTER EF). 149 180 return WebCore::windowsKeyCodeForKeyCode([event keyCode]); 181 } 182 183 static WebInputEvent::Type gestureEventTypeForEvent(NSEvent *event) 184 { 185 switch ([event type]) { 186 case NSEventTypeBeginGesture: 187 return WebInputEvent::GestureScrollBegin; 188 case NSEventTypeEndGesture: 189 return WebInputEvent::GestureScrollEnd; 190 default: 191 ASSERT_NOT_REACHED(); 192 return WebInputEvent::GestureScrollEnd; 193 } 150 194 } 151 195 … … 708 752 // WebMouseWheelEvent --------------------------------------------------------- 709 753 754 static WebMouseWheelEvent::Phase phaseForNSEventPhase(NSEventPhase eventPhase) 755 { 756 uint32_t phase = WebMouseWheelEvent::PhaseNone; 757 if (eventPhase & NSEventPhaseBegan) 758 phase |= WebMouseWheelEvent::PhaseBegan; 759 if (eventPhase & NSEventPhaseStationary) 760 phase |= WebMouseWheelEvent::PhaseStationary; 761 if (eventPhase & NSEventPhaseChanged) 762 phase |= WebMouseWheelEvent::PhaseChanged; 763 if (eventPhase & NSEventPhaseEnded) 764 phase |= WebMouseWheelEvent::PhaseEnded; 765 if (eventPhase & NSEventPhaseCancelled) 766 phase |= WebMouseWheelEvent::PhaseCancelled; 767 return static_cast<WebMouseWheelEvent::Phase>(phase); 768 } 769 770 static WebMouseWheelEvent::Phase phaseForEvent(NSEvent *event) 771 { 772 if (![event respondsToSelector:@selector(phase)]) 773 return WebMouseWheelEvent::PhaseNone; 774 775 NSEventPhase eventPhase = [event phase]; 776 return phaseForNSEventPhase(eventPhase); 777 } 778 779 static WebMouseWheelEvent::Phase momentumPhaseForEvent(NSEvent *event) 780 { 781 if (![event respondsToSelector:@selector(momentumPhase)]) 782 return WebMouseWheelEvent::PhaseNone; 783 784 NSEventPhase eventMomentumPhase = [event momentumPhase]; 785 return phaseForNSEventPhase(eventMomentumPhase); 786 } 787 710 788 WebMouseWheelEvent WebInputEventFactory::mouseWheelEvent(NSEvent* event, NSView* view) 711 789 { … … 839 917 result.wheelTicksX = result.deltaX / scrollbarPixelsPerCocoaTick; 840 918 result.wheelTicksY = result.deltaY / scrollbarPixelsPerCocoaTick; 919 result.hasPreciseScrollingDeltas = true; 841 920 } else { 842 921 result.deltaX = [event deltaX] * scrollbarPixelsPerCocoaTick; … … 848 927 result.timeStampSeconds = [event timestamp]; 849 928 929 result.phase = phaseForEvent(event); 930 result.momentumPhase = momentumPhaseForEvent(event); 931 850 932 return result; 851 933 } 852 934 935 WebGestureEvent WebInputEventFactory::gestureEvent(NSEvent *event, NSView *view) 936 { 937 WebGestureEvent result; 938 939 // Use a temporary WebMouseEvent to get the location. 940 WebMouseEvent temp; 941 942 setWebEventLocationFromEventInView(&temp, event, view); 943 result.x = temp.x; 944 result.y = temp.y; 945 result.globalX = temp.globalX; 946 result.globalY = temp.globalY; 947 948 result.type = gestureEventTypeForEvent(event); 949 result.modifiers = modifiersFromEvent(event); 950 result.timeStampSeconds = [event timestamp]; 951 952 return result; 953 } 954 853 955 } // namespace WebKit
Note: See TracChangeset
for help on using the changeset viewer.