Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: Source/platform/scroll/ScrollbarThemeMacCommon.mm

Issue 147193002: Revert of Move preferred scrollbar style preference change listening from renderer to browser, 3 of 3. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008, 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 "config.h" 26 #include "config.h"
27 #include "RuntimeEnabledFeatures.h"
28 #include "platform/scroll/ScrollbarThemeMacCommon.h" 27 #include "platform/scroll/ScrollbarThemeMacCommon.h"
29 28
30 #include <Carbon/Carbon.h> 29 #include <Carbon/Carbon.h>
31 #include "platform/PlatformMouseEvent.h" 30 #include "platform/PlatformMouseEvent.h"
32 #include "platform/graphics/Gradient.h" 31 #include "platform/graphics/Gradient.h"
33 #include "platform/graphics/GraphicsContext.h" 32 #include "platform/graphics/GraphicsContext.h"
34 #include "platform/graphics/GraphicsContextStateSaver.h" 33 #include "platform/graphics/GraphicsContextStateSaver.h"
35 #include "platform/graphics/GraphicsLayer.h" 34 #include "platform/graphics/GraphicsLayer.h"
36 #include "platform/graphics/ImageBuffer.h" 35 #include "platform/graphics/ImageBuffer.h"
37 #include "platform/mac/ColorMac.h" 36 #include "platform/mac/ColorMac.h"
(...skipping 30 matching lines...) Expand all
68 return set; 67 return set;
69 } 68 }
70 69
71 } 70 }
72 71
73 namespace WebCore { 72 namespace WebCore {
74 73
75 static float gInitialButtonDelay = 0.5f; 74 static float gInitialButtonDelay = 0.5f;
76 static float gAutoscrollButtonDelay = 0.05f; 75 static float gAutoscrollButtonDelay = 0.05f;
77 static bool gJumpOnTrackClick = false; 76 static bool gJumpOnTrackClick = false;
78 static NSScrollerStyle gPreferredScrollerStyle = NSScrollerStyleLegacy;
79 77
80 ScrollbarTheme* ScrollbarTheme::nativeTheme() 78 ScrollbarTheme* ScrollbarTheme::nativeTheme()
81 { 79 {
82 static ScrollbarThemeMacCommon* theme = NULL; 80 static ScrollbarThemeMacCommon* theme = NULL;
83 if (theme) 81 if (theme)
84 return theme; 82 return theme;
85 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { 83 if (isScrollbarOverlayAPIAvailable()) {
86 DEFINE_STATIC_LOCAL(ScrollbarThemeMacOverlayAPI, overlayTheme, ()); 84 DEFINE_STATIC_LOCAL(ScrollbarThemeMacOverlayAPI, overlayTheme, ());
87 theme = &overlayTheme; 85 theme = &overlayTheme;
88 } else { 86 } else {
89 DEFINE_STATIC_LOCAL(ScrollbarThemeMacNonOverlayAPI, nonOverlayTheme, ()) ; 87 DEFINE_STATIC_LOCAL(ScrollbarThemeMacNonOverlayAPI, nonOverlayTheme, ()) ;
90 theme = &nonOverlayTheme; 88 theme = &nonOverlayTheme;
91 } 89 }
92 return theme; 90 return theme;
93 } 91 }
94 92
95 void ScrollbarThemeMacCommon::registerScrollbar(ScrollbarThemeClient* scrollbar) 93 void ScrollbarThemeMacCommon::registerScrollbar(ScrollbarThemeClient* scrollbar)
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 IntRect tickmarkTrackRect = rect; 284 IntRect tickmarkTrackRect = rect;
287 tickmarkTrackRect.setX(tickmarkTrackRect.x() + 1); 285 tickmarkTrackRect.setX(tickmarkTrackRect.x() + 1);
288 tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 2); 286 tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 2);
289 paintGivenTickmarks(context, scrollbar, tickmarkTrackRect, tickmarks); 287 paintGivenTickmarks(context, scrollbar, tickmarkTrackRect, tickmarks);
290 } 288 }
291 289
292 ScrollbarThemeMacCommon::~ScrollbarThemeMacCommon() 290 ScrollbarThemeMacCommon::~ScrollbarThemeMacCommon()
293 { 291 {
294 } 292 }
295 293
296 void ScrollbarThemeMacCommon::preferencesChanged(float initialButtonDelay, float autoscrollButtonDelay, bool jumpOnTrackClick, NSScrollerStyle preferredScroller Style, bool redraw) 294 void ScrollbarThemeMacCommon::preferencesChanged(float initialButtonDelay, float autoscrollButtonDelay, bool jumpOnTrackClick, bool redraw)
297 { 295 {
298 updateButtonPlacement(); 296 updateButtonPlacement();
299 gInitialButtonDelay = initialButtonDelay; 297 gInitialButtonDelay = initialButtonDelay;
300 gAutoscrollButtonDelay = autoscrollButtonDelay; 298 gAutoscrollButtonDelay = autoscrollButtonDelay;
301 gJumpOnTrackClick = jumpOnTrackClick; 299 gJumpOnTrackClick = jumpOnTrackClick;
302 bool sendScrollerStyleNotification = gPreferredScrollerStyle != preferredScr ollerStyle;
303 gPreferredScrollerStyle = preferredScrollerStyle;
304 if (redraw && !scrollbarSet().isEmpty()) { 300 if (redraw && !scrollbarSet().isEmpty()) {
305 ScrollbarSet::iterator end = scrollbarSet().end(); 301 ScrollbarSet::iterator end = scrollbarSet().end();
306 for (ScrollbarSet::iterator it = scrollbarSet().begin(); it != end; ++it ) { 302 for (ScrollbarSet::iterator it = scrollbarSet().begin(); it != end; ++it ) {
307 (*it)->styleChanged(); 303 (*it)->styleChanged();
308 (*it)->invalidate(); 304 (*it)->invalidate();
309 } 305 }
310 } 306 }
311 if (sendScrollerStyleNotification) {
312 [[NSNotificationCenter defaultCenter]
313 postNotificationName:@"NSPreferredScrollerStyleDidChangeNotification "
314 object:nil
315 userInfo:@{ @"NSScrollerStyle" : @(gPreferredScrollerSty le) }];
316 }
317 } 307 }
318 308
319 double ScrollbarThemeMacCommon::initialAutoscrollTimerDelay() 309 double ScrollbarThemeMacCommon::initialAutoscrollTimerDelay()
320 { 310 {
321 return gInitialButtonDelay; 311 return gInitialButtonDelay;
322 } 312 }
323 313
324 double ScrollbarThemeMacCommon::autoscrollTimerDelay() 314 double ScrollbarThemeMacCommon::autoscrollTimerDelay()
325 { 315 {
326 return gAutoscrollButtonDelay; 316 return gAutoscrollButtonDelay;
(...skipping 24 matching lines...) Expand all
351 return kThemeTopInsideArrowPressed; 341 return kThemeTopInsideArrowPressed;
352 case ForwardButtonEndPart: 342 case ForwardButtonEndPart:
353 return kThemeBottomOutsideArrowPressed; 343 return kThemeBottomOutsideArrowPressed;
354 case ThumbPart: 344 case ThumbPart:
355 return kThemeThumbPressed; 345 return kThemeThumbPressed;
356 default: 346 default:
357 return 0; 347 return 0;
358 } 348 }
359 } 349 }
360 350
361 // static
362 NSScrollerStyle ScrollbarThemeMacCommon::recommendedScrollerStyle()
363 {
364 if (RuntimeEnabledFeatures::overlayScrollbarsEnabled())
365 return NSScrollerStyleOverlay;
366 return gPreferredScrollerStyle;
367 }
368
369 // static
370 bool ScrollbarThemeMacCommon::isOverlayAPIAvailable()
371 {
372 static bool apiAvailable =
373 [NSClassFromString(@"NSScrollerImp") respondsToSelector:@selector(scroll erImpWithStyle:controlSize:horizontal:replacingScrollerImp:)]
374 && [NSClassFromString(@"NSScrollerImpPair") instancesRespondToSelector:@ selector(scrollerStyle)];
375 return apiAvailable;
376 }
377
378 } // namespace WebCore 351 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/platform/scroll/ScrollbarThemeMacCommon.h ('k') | Source/platform/scroll/ScrollbarThemeMacOverlayAPI.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698