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

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

Issue 1511003003: Use refs for non-null GraphicsContext, Scrollbar, etc. in scrollbar related code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ScrollbarRemove
Patch Set: yet another mac fix Created 5 years 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
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 { 62 {
63 DEFINE_STATIC_LOCAL(ScrollbarSet, set, ()); 63 DEFINE_STATIC_LOCAL(ScrollbarSet, set, ());
64 return set; 64 return set;
65 } 65 }
66 66
67 static float gInitialButtonDelay = 0.5f; 67 static float gInitialButtonDelay = 0.5f;
68 static float gAutoscrollButtonDelay = 0.05f; 68 static float gAutoscrollButtonDelay = 0.05f;
69 static NSScrollerStyle gPreferredScrollerStyle = NSScrollerStyleLegacy; 69 static NSScrollerStyle gPreferredScrollerStyle = NSScrollerStyleLegacy;
70 static bool gScrollAnimationEnabledForSystem = false; 70 static bool gScrollAnimationEnabledForSystem = false;
71 71
72 ScrollbarTheme* ScrollbarTheme::nativeTheme() 72 ScrollbarTheme& ScrollbarTheme::nativeTheme()
73 { 73 {
74 static ScrollbarThemeMacCommon* theme = NULL;
75 if (theme)
76 return theme;
77 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { 74 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) {
78 DEFINE_STATIC_LOCAL(ScrollbarThemeMacOverlayAPI, overlayTheme, ()); 75 DEFINE_STATIC_LOCAL(ScrollbarThemeMacOverlayAPI, overlayTheme, ());
79 theme = &overlayTheme; 76 return overlayTheme;
80 } else { 77 }
78 {
81 DEFINE_STATIC_LOCAL(ScrollbarThemeMacNonOverlayAPI, nonOverlayTheme, ()) ; 79 DEFINE_STATIC_LOCAL(ScrollbarThemeMacNonOverlayAPI, nonOverlayTheme, ()) ;
82 theme = &nonOverlayTheme; 80 return nonOverlayTheme;
83 } 81 }
84 return theme;
85 } 82 }
86 83
87 void ScrollbarThemeMacCommon::registerScrollbar(ScrollbarThemeClient* scrollbar) 84 void ScrollbarThemeMacCommon::registerScrollbar(ScrollbarThemeClient& scrollbar)
88 { 85 {
89 scrollbarSet().add(scrollbar); 86 scrollbarSet().add(&scrollbar);
90 } 87 }
91 88
92 void ScrollbarThemeMacCommon::unregisterScrollbar(ScrollbarThemeClient* scrollba r) 89 void ScrollbarThemeMacCommon::unregisterScrollbar(ScrollbarThemeClient& scrollba r)
93 { 90 {
94 scrollbarSet().remove(scrollbar); 91 scrollbarSet().remove(&scrollbar);
95 } 92 }
96 93
97 void ScrollbarThemeMacCommon::paintGivenTickmarks(SkCanvas* canvas, const Scroll barThemeClient* scrollbar, const IntRect& rect, const Vector<IntRect>& tickmarks ) 94 void ScrollbarThemeMacCommon::paintGivenTickmarks(SkCanvas* canvas, const Scroll barThemeClient& scrollbar, const IntRect& rect, const Vector<IntRect>& tickmarks )
98 { 95 {
99 if (scrollbar->orientation() != VerticalScrollbar) 96 if (scrollbar.orientation() != VerticalScrollbar)
100 return; 97 return;
101 98
102 if (rect.height() <= 0 || rect.width() <= 0) 99 if (rect.height() <= 0 || rect.width() <= 0)
103 return; // nothing to draw on. 100 return; // nothing to draw on.
104 101
105 if (!tickmarks.size()) 102 if (!tickmarks.size())
106 return; 103 return;
107 104
108 SkAutoCanvasRestore stateSaver(canvas, true); 105 SkAutoCanvasRestore stateSaver(canvas, true);
109 106
110 SkPaint strokePaint; 107 SkPaint strokePaint;
111 strokePaint.setAntiAlias(false); 108 strokePaint.setAntiAlias(false);
112 strokePaint.setColor(SkColorSetRGB(0xCC, 0xAA, 0x00)); 109 strokePaint.setColor(SkColorSetRGB(0xCC, 0xAA, 0x00));
113 strokePaint.setStyle(SkPaint::kStroke_Style); 110 strokePaint.setStyle(SkPaint::kStroke_Style);
114 111
115 SkPaint fillPaint; 112 SkPaint fillPaint;
116 fillPaint.setAntiAlias(false); 113 fillPaint.setAntiAlias(false);
117 fillPaint.setColor(SkColorSetRGB(0xFF, 0xDD, 0x00)); 114 fillPaint.setColor(SkColorSetRGB(0xFF, 0xDD, 0x00));
118 fillPaint.setStyle(SkPaint::kFill_Style); 115 fillPaint.setStyle(SkPaint::kFill_Style);
119 116
120 for (Vector<IntRect>::const_iterator i = tickmarks.begin(); i != tickmarks.e nd(); ++i) { 117 for (Vector<IntRect>::const_iterator i = tickmarks.begin(); i != tickmarks.e nd(); ++i) {
121 // Calculate how far down (in %) the tick-mark should appear. 118 // Calculate how far down (in %) the tick-mark should appear.
122 const float percent = static_cast<float>(i->y()) / scrollbar->totalSize( ); 119 const float percent = static_cast<float>(i->y()) / scrollbar.totalSize() ;
123 if (percent < 0.0 || percent > 1.0) 120 if (percent < 0.0 || percent > 1.0)
124 continue; 121 continue;
125 122
126 // Calculate how far down (in pixels) the tick-mark should appear. 123 // Calculate how far down (in pixels) the tick-mark should appear.
127 const int yPos = rect.y() + (rect.height() * percent); 124 const int yPos = rect.y() + (rect.height() * percent);
128 125
129 // Paint. 126 // Paint.
130 FloatRect tickRect(rect.x(), yPos, rect.width(), 2); 127 FloatRect tickRect(rect.x(), yPos, rect.width(), 2);
131 canvas->drawRect(tickRect, fillPaint); 128 canvas->drawRect(tickRect, fillPaint);
132 canvas->drawRect(tickRect, strokePaint); 129 canvas->drawRect(tickRect, strokePaint);
133 } 130 }
134 } 131 }
135 132
136 void ScrollbarThemeMacCommon::paintTickmarks(GraphicsContext* context, const Scr ollbarThemeClient* scrollbar, const IntRect& rect) 133 void ScrollbarThemeMacCommon::paintTickmarks(GraphicsContext& context, const Scr ollbarThemeClient& scrollbar, const IntRect& rect)
137 { 134 {
138 // Note: This is only used for css-styled scrollbars on mac. 135 // Note: This is only used for css-styled scrollbars on mac.
139 if (scrollbar->orientation() != VerticalScrollbar) 136 if (scrollbar.orientation() != VerticalScrollbar)
140 return; 137 return;
141 138
142 if (rect.height() <= 0 || rect.width() <= 0) 139 if (rect.height() <= 0 || rect.width() <= 0)
143 return; 140 return;
144 141
145 Vector<IntRect> tickmarks; 142 Vector<IntRect> tickmarks;
146 scrollbar->getTickmarks(tickmarks); 143 scrollbar.getTickmarks(tickmarks);
147 if (!tickmarks.size()) 144 if (!tickmarks.size())
148 return; 145 return;
149 146
150 if (DrawingRecorder::useCachedDrawingIfPossible(*context, *scrollbar, Displa yItem::ScrollbarTickmarks)) 147 if (DrawingRecorder::useCachedDrawingIfPossible(context, scrollbar, DisplayI tem::ScrollbarTickmarks))
151 return; 148 return;
152 149
153 DrawingRecorder recorder(*context, *scrollbar, DisplayItem::ScrollbarTickmar ks, rect); 150 DrawingRecorder recorder(context, scrollbar, DisplayItem::ScrollbarTickmarks , rect);
154 151
155 // Inset a bit. 152 // Inset a bit.
156 IntRect tickmarkTrackRect = rect; 153 IntRect tickmarkTrackRect = rect;
157 tickmarkTrackRect.setX(tickmarkTrackRect.x() + 1); 154 tickmarkTrackRect.setX(tickmarkTrackRect.x() + 1);
158 tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 2); 155 tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 2);
159 paintGivenTickmarks(context->canvas(), scrollbar, tickmarkTrackRect, tickmar ks); 156 paintGivenTickmarks(context.canvas(), scrollbar, tickmarkTrackRect, tickmark s);
160 } 157 }
161 158
162 ScrollbarThemeMacCommon::~ScrollbarThemeMacCommon() 159 ScrollbarThemeMacCommon::~ScrollbarThemeMacCommon()
163 { 160 {
164 } 161 }
165 162
166 void ScrollbarThemeMacCommon::preferencesChanged(float initialButtonDelay, float autoscrollButtonDelay, NSScrollerStyle preferredScrollerStyle, bool redraw, boo l scrollAnimationEnabled, ScrollbarButtonsPlacement buttonPlacement) 163 void ScrollbarThemeMacCommon::preferencesChanged(float initialButtonDelay, float autoscrollButtonDelay, NSScrollerStyle preferredScrollerStyle, bool redraw, boo l scrollAnimationEnabled, ScrollbarButtonsPlacement buttonPlacement)
167 { 164 {
168 updateButtonPlacement(buttonPlacement); 165 updateButtonPlacement(buttonPlacement);
169 gInitialButtonDelay = initialButtonDelay; 166 gInitialButtonDelay = initialButtonDelay;
(...skipping 24 matching lines...) Expand all
194 double ScrollbarThemeMacCommon::initialAutoscrollTimerDelay() 191 double ScrollbarThemeMacCommon::initialAutoscrollTimerDelay()
195 { 192 {
196 return gInitialButtonDelay; 193 return gInitialButtonDelay;
197 } 194 }
198 195
199 double ScrollbarThemeMacCommon::autoscrollTimerDelay() 196 double ScrollbarThemeMacCommon::autoscrollTimerDelay()
200 { 197 {
201 return gAutoscrollButtonDelay; 198 return gAutoscrollButtonDelay;
202 } 199 }
203 200
204 bool ScrollbarThemeMacCommon::shouldDragDocumentInsteadOfThumb(const ScrollbarTh emeClient*, const PlatformMouseEvent& event) 201 bool ScrollbarThemeMacCommon::shouldDragDocumentInsteadOfThumb(const ScrollbarTh emeClient&, const PlatformMouseEvent& event)
205 { 202 {
206 return event.altKey(); 203 return event.altKey();
207 } 204 }
208 205
209 int ScrollbarThemeMacCommon::scrollbarPartToHIPressedState(ScrollbarPart part) 206 int ScrollbarThemeMacCommon::scrollbarPartToHIPressedState(ScrollbarPart part)
210 { 207 {
211 switch (part) { 208 switch (part) {
212 case BackButtonStartPart: 209 case BackButtonStartPart:
213 return kThemeTopOutsideArrowPressed; 210 return kThemeTopOutsideArrowPressed;
214 case BackButtonEndPart: 211 case BackButtonEndPart:
(...skipping 20 matching lines...) Expand all
235 // static 232 // static
236 bool ScrollbarThemeMacCommon::isOverlayAPIAvailable() 233 bool ScrollbarThemeMacCommon::isOverlayAPIAvailable()
237 { 234 {
238 static bool apiAvailable = 235 static bool apiAvailable =
239 [NSClassFromString(@"NSScrollerImp") respondsToSelector:@selector(scroll erImpWithStyle:controlSize:horizontal:replacingScrollerImp:)] 236 [NSClassFromString(@"NSScrollerImp") respondsToSelector:@selector(scroll erImpWithStyle:controlSize:horizontal:replacingScrollerImp:)]
240 && [NSClassFromString(@"NSScrollerImpPair") instancesRespondToSelector:@ selector(scrollerStyle)]; 237 && [NSClassFromString(@"NSScrollerImpPair") instancesRespondToSelector:@ selector(scrollerStyle)];
241 return apiAvailable; 238 return apiAvailable;
242 } 239 }
243 240
244 } // namespace blink 241 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698