| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2011 Apple Inc. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| 11 * documentation and/or other materials provided with the distribution. | 11 * documentation and/or other materials provided with the distribution. |
| 12 * | 12 * |
| 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY | 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY |
| 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR | 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR |
| 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 #include "platform/scroll/ScrollbarTheme.h" | 26 #include "platform/scroll/ScrollbarTheme.h" |
| 27 | 27 |
| 28 #include "platform/PlatformMouseEvent.h" | |
| 29 #include "platform/RuntimeEnabledFeatures.h" | 28 #include "platform/RuntimeEnabledFeatures.h" |
| 30 #include "platform/graphics/Color.h" | 29 #include "platform/graphics/Color.h" |
| 31 #include "platform/graphics/GraphicsContext.h" | 30 #include "platform/graphics/GraphicsContext.h" |
| 32 #include "platform/graphics/GraphicsContextStateSaver.h" | 31 #include "platform/graphics/GraphicsContextStateSaver.h" |
| 33 #include "platform/graphics/paint/CompositingRecorder.h" | 32 #include "platform/graphics/paint/CompositingRecorder.h" |
| 34 #include "platform/graphics/paint/CullRect.h" | 33 #include "platform/graphics/paint/CullRect.h" |
| 35 #include "platform/graphics/paint/DrawingDisplayItem.h" | 34 #include "platform/graphics/paint/DrawingDisplayItem.h" |
| 36 #include "platform/graphics/paint/DrawingRecorder.h" | 35 #include "platform/graphics/paint/DrawingRecorder.h" |
| 37 #include "platform/graphics/paint/PaintController.h" | 36 #include "platform/graphics/paint/PaintController.h" |
| 38 #include "platform/scroll/Scrollbar.h" | 37 #include "platform/scroll/Scrollbar.h" |
| 39 #include "platform/scroll/ScrollbarThemeMock.h" | 38 #include "platform/scroll/ScrollbarThemeMock.h" |
| 40 #include "platform/scroll/ScrollbarThemeOverlayMock.h" | 39 #include "platform/scroll/ScrollbarThemeOverlayMock.h" |
| 41 #include "public/platform/Platform.h" | 40 #include "public/platform/Platform.h" |
| 41 #include "public/platform/WebMouseEvent.h" |
| 42 #include "public/platform/WebPoint.h" | 42 #include "public/platform/WebPoint.h" |
| 43 #include "public/platform/WebRect.h" | 43 #include "public/platform/WebRect.h" |
| 44 #include "public/platform/WebScrollbarBehavior.h" | 44 #include "public/platform/WebScrollbarBehavior.h" |
| 45 #include "wtf/Optional.h" | 45 #include "wtf/Optional.h" |
| 46 | 46 |
| 47 #if !OS(MACOSX) | 47 #if !OS(MACOSX) |
| 48 #include "public/platform/WebThemeEngine.h" | 48 #include "public/platform/WebThemeEngine.h" |
| 49 #endif | 49 #endif |
| 50 | 50 |
| 51 namespace blink { | 51 namespace blink { |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 #if OS(MACOSX) | 212 #if OS(MACOSX) |
| 213 context.fillRect(cornerRect, Color::white); | 213 context.fillRect(cornerRect, Color::white); |
| 214 #else | 214 #else |
| 215 Platform::current()->themeEngine()->paint( | 215 Platform::current()->themeEngine()->paint( |
| 216 context.canvas(), WebThemeEngine::PartScrollbarCorner, | 216 context.canvas(), WebThemeEngine::PartScrollbarCorner, |
| 217 WebThemeEngine::StateNormal, WebRect(cornerRect), 0); | 217 WebThemeEngine::StateNormal, WebRect(cornerRect), 0); |
| 218 #endif | 218 #endif |
| 219 } | 219 } |
| 220 | 220 |
| 221 bool ScrollbarTheme::shouldCenterOnThumb(const ScrollbarThemeClient& scrollbar, | 221 bool ScrollbarTheme::shouldCenterOnThumb(const ScrollbarThemeClient& scrollbar, |
| 222 const PlatformMouseEvent& evt) { | 222 const WebMouseEvent& evt) { |
| 223 return Platform::current()->scrollbarBehavior()->shouldCenterOnThumb( | 223 return Platform::current()->scrollbarBehavior()->shouldCenterOnThumb( |
| 224 evt.pointerProperties().button, evt.shiftKey(), evt.altKey()); | 224 evt.button, evt.modifiers() & WebInputEvent::ShiftKey, |
| 225 evt.modifiers() & WebInputEvent::AltKey); |
| 225 } | 226 } |
| 226 | 227 |
| 227 void ScrollbarTheme::paintTickmarks(GraphicsContext& context, | 228 void ScrollbarTheme::paintTickmarks(GraphicsContext& context, |
| 228 const Scrollbar& scrollbar, | 229 const Scrollbar& scrollbar, |
| 229 const IntRect& rect) { | 230 const IntRect& rect) { |
| 230 // Android paints tickmarks in the browser at FindResultBar.java. | 231 // Android paints tickmarks in the browser at FindResultBar.java. |
| 231 #if !OS(ANDROID) | 232 #if !OS(ANDROID) |
| 232 if (scrollbar.orientation() != VerticalScrollbar) | 233 if (scrollbar.orientation() != VerticalScrollbar) |
| 233 return; | 234 return; |
| 234 | 235 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 263 | 264 |
| 264 FloatRect tickStroke(rect.x() + tickmarkBorderWidth(), yPos + 1, | 265 FloatRect tickStroke(rect.x() + tickmarkBorderWidth(), yPos + 1, |
| 265 rect.width() - 2 * tickmarkBorderWidth(), 1); | 266 rect.width() - 2 * tickmarkBorderWidth(), 1); |
| 266 context.fillRect(tickStroke, Color(0xFF, 0xDD, 0x00, 0xFF)); | 267 context.fillRect(tickStroke, Color(0xFF, 0xDD, 0x00, 0xFF)); |
| 267 } | 268 } |
| 268 #endif | 269 #endif |
| 269 } | 270 } |
| 270 | 271 |
| 271 bool ScrollbarTheme::shouldSnapBackToDragOrigin( | 272 bool ScrollbarTheme::shouldSnapBackToDragOrigin( |
| 272 const ScrollbarThemeClient& scrollbar, | 273 const ScrollbarThemeClient& scrollbar, |
| 273 const PlatformMouseEvent& evt) { | 274 const WebMouseEvent& evt) { |
| 274 IntPoint mousePosition = scrollbar.convertFromRootFrame(evt.position()); | 275 IntPoint mousePosition = scrollbar.convertFromRootFrame( |
| 276 flooredIntPoint(evt.positionInRootFrame())); |
| 275 mousePosition.move(scrollbar.x(), scrollbar.y()); | 277 mousePosition.move(scrollbar.x(), scrollbar.y()); |
| 276 return Platform::current()->scrollbarBehavior()->shouldSnapBackToDragOrigin( | 278 return Platform::current()->scrollbarBehavior()->shouldSnapBackToDragOrigin( |
| 277 mousePosition, trackRect(scrollbar), | 279 mousePosition, trackRect(scrollbar), |
| 278 scrollbar.orientation() == HorizontalScrollbar); | 280 scrollbar.orientation() == HorizontalScrollbar); |
| 279 } | 281 } |
| 280 | 282 |
| 281 double ScrollbarTheme::overlayScrollbarFadeOutDelaySeconds() const { | 283 double ScrollbarTheme::overlayScrollbarFadeOutDelaySeconds() const { |
| 282 // On Mac, fading is controlled by the painting code in ScrollAnimatorMac. | 284 // On Mac, fading is controlled by the painting code in ScrollAnimatorMac. |
| 283 return 0.0; | 285 return 0.0; |
| 284 } | 286 } |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 return DisplayItem::kScrollbarBackTrack; | 438 return DisplayItem::kScrollbarBackTrack; |
| 437 case ForwardTrackPart: | 439 case ForwardTrackPart: |
| 438 return DisplayItem::kScrollbarForwardTrack; | 440 return DisplayItem::kScrollbarForwardTrack; |
| 439 default: | 441 default: |
| 440 ASSERT_NOT_REACHED(); | 442 ASSERT_NOT_REACHED(); |
| 441 return DisplayItem::kScrollbarBackTrack; | 443 return DisplayItem::kScrollbarBackTrack; |
| 442 } | 444 } |
| 443 } | 445 } |
| 444 | 446 |
| 445 } // namespace blink | 447 } // namespace blink |
| OLD | NEW |