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

Side by Side Diff: third_party/WebKit/Source/platform/scroll/ScrollbarThemeMacNonOverlayAPI.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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 61
62 void ScrollbarThemeMacNonOverlayAPI::updateButtonPlacement(ScrollbarButtonsPlace ment buttonPlacement) 62 void ScrollbarThemeMacNonOverlayAPI::updateButtonPlacement(ScrollbarButtonsPlace ment buttonPlacement)
63 { 63 {
64 gButtonPlacement = buttonPlacement; 64 gButtonPlacement = buttonPlacement;
65 } 65 }
66 66
67 // Override ScrollbarThemeMacCommon::paint() to add support for the following: 67 // Override ScrollbarThemeMacCommon::paint() to add support for the following:
68 // - drawing using WebThemeEngine functions 68 // - drawing using WebThemeEngine functions
69 // - drawing tickmarks 69 // - drawing tickmarks
70 // - Skia specific changes 70 // - Skia specific changes
71 bool ScrollbarThemeMacNonOverlayAPI::paint(const ScrollbarThemeClient* scrollbar , GraphicsContext* context, const CullRect& cullRect) 71 bool ScrollbarThemeMacNonOverlayAPI::paint(const ScrollbarThemeClient& scrollbar , GraphicsContext& context, const CullRect& cullRect)
72 { 72 {
73 DisplayItem::Type displayItemType = scrollbar->orientation() == HorizontalSc rollbar ? DisplayItem::ScrollbarHorizontal : DisplayItem::ScrollbarVertical; 73 DisplayItem::Type displayItemType = scrollbar.orientation() == HorizontalScr ollbar ? DisplayItem::ScrollbarHorizontal : DisplayItem::ScrollbarVertical;
74 if (DrawingRecorder::useCachedDrawingIfPossible(*context, *scrollbar, displa yItemType)) 74 if (DrawingRecorder::useCachedDrawingIfPossible(context, scrollbar, displayI temType))
75 return true; 75 return true;
76 76
77 DrawingRecorder recorder(*context, *scrollbar, displayItemType, scrollbar->f rameRect()); 77 DrawingRecorder recorder(context, scrollbar, displayItemType, scrollbar.fram eRect());
78 78
79 // Get the tickmarks for the frameview. 79 // Get the tickmarks for the frameview.
80 Vector<IntRect> tickmarks; 80 Vector<IntRect> tickmarks;
81 scrollbar->getTickmarks(tickmarks); 81 scrollbar.getTickmarks(tickmarks);
82 82
83 HIThemeTrackDrawInfo trackInfo; 83 HIThemeTrackDrawInfo trackInfo;
84 trackInfo.version = 0; 84 trackInfo.version = 0;
85 trackInfo.kind = scrollbar->controlSize() == RegularScrollbar ? kThemeMedium ScrollBar : kThemeSmallScrollBar; 85 trackInfo.kind = scrollbar.controlSize() == RegularScrollbar ? kThemeMediumS crollBar : kThemeSmallScrollBar;
86 trackInfo.bounds = scrollbar->frameRect(); 86 trackInfo.bounds = scrollbar.frameRect();
87 trackInfo.min = 0; 87 trackInfo.min = 0;
88 trackInfo.max = scrollbar->maximum(); 88 trackInfo.max = scrollbar.maximum();
89 trackInfo.value = scrollbar->currentPos(); 89 trackInfo.value = scrollbar.currentPos();
90 trackInfo.trackInfo.scrollbar.viewsize = scrollbar->visibleSize(); 90 trackInfo.trackInfo.scrollbar.viewsize = scrollbar.visibleSize();
91 trackInfo.attributes = hasThumb(scrollbar) ? kThemeTrackShowThumb : 0; 91 trackInfo.attributes = hasThumb(scrollbar) ? kThemeTrackShowThumb : 0;
92 92
93 if (scrollbar->orientation() == HorizontalScrollbar) 93 if (scrollbar.orientation() == HorizontalScrollbar)
94 trackInfo.attributes |= kThemeTrackHorizontal; 94 trackInfo.attributes |= kThemeTrackHorizontal;
95 95
96 if (!scrollbar->enabled()) 96 if (!scrollbar.enabled())
97 trackInfo.enableState = kThemeTrackDisabled; 97 trackInfo.enableState = kThemeTrackDisabled;
98 else 98 else
99 trackInfo.enableState = scrollbar->isScrollableAreaActive() ? kThemeTrac kActive : kThemeTrackInactive; 99 trackInfo.enableState = scrollbar.isScrollableAreaActive() ? kThemeTrack Active : kThemeTrackInactive;
100 100
101 if (!hasButtons(scrollbar)) 101 if (!hasButtons(scrollbar))
102 trackInfo.enableState = kThemeTrackNothingToScroll; 102 trackInfo.enableState = kThemeTrackNothingToScroll;
103 trackInfo.trackInfo.scrollbar.pressState = scrollbarPartToHIPressedState(scr ollbar->pressedPart()); 103 trackInfo.trackInfo.scrollbar.pressState = scrollbarPartToHIPressedState(scr ollbar.pressedPart());
104 104
105 SkCanvas* canvas = context->canvas(); 105 SkCanvas* canvas = context.canvas();
106 CGAffineTransform currentCTM = gfx::SkMatrixToCGAffineTransform(canvas->getT otalMatrix()); 106 CGAffineTransform currentCTM = gfx::SkMatrixToCGAffineTransform(canvas->getT otalMatrix());
107 107
108 // The Aqua scrollbar is buggy when rotated and scaled. We will just draw i nto a bitmap if we detect a scale or rotation. 108 // The Aqua scrollbar is buggy when rotated and scaled. We will just draw i nto a bitmap if we detect a scale or rotation.
109 bool canDrawDirectly = currentCTM.a == 1.0f && currentCTM.b == 0.0f && curre ntCTM.c == 0.0f && (currentCTM.d == 1.0f || currentCTM.d == -1.0f); 109 bool canDrawDirectly = currentCTM.a == 1.0f && currentCTM.b == 0.0f && curre ntCTM.c == 0.0f && (currentCTM.d == 1.0f || currentCTM.d == -1.0f);
110 OwnPtr<ImageBuffer> imageBuffer; 110 OwnPtr<ImageBuffer> imageBuffer;
111 SkCanvas* drawingCanvas; 111 SkCanvas* drawingCanvas;
112 if (!canDrawDirectly) { 112 if (!canDrawDirectly) {
113 trackInfo.bounds = IntRect(IntPoint(), scrollbar->frameRect().size()); 113 trackInfo.bounds = IntRect(IntPoint(), scrollbar.frameRect().size());
114 114
115 IntRect bufferRect(scrollbar->frameRect()); 115 IntRect bufferRect(scrollbar.frameRect());
116 bufferRect.intersect(cullRect.m_rect); 116 bufferRect.intersect(cullRect.m_rect);
117 bufferRect.move(-scrollbar->frameRect().x(), -scrollbar->frameRect().y() ); 117 bufferRect.move(-scrollbar.frameRect().x(), -scrollbar.frameRect().y());
118 118
119 imageBuffer = ImageBuffer::create(bufferRect.size()); 119 imageBuffer = ImageBuffer::create(bufferRect.size());
120 if (!imageBuffer) 120 if (!imageBuffer)
121 return true; 121 return true;
122 122
123 drawingCanvas = imageBuffer->canvas(); 123 drawingCanvas = imageBuffer->canvas();
124 } else { 124 } else {
125 drawingCanvas = canvas; 125 drawingCanvas = canvas;
126 } 126 }
127 127
128 // Draw the track and its thumb. 128 // Draw the track and its thumb.
129 gfx::SkiaBitLocker bitLocker( 129 gfx::SkiaBitLocker bitLocker(
130 drawingCanvas, 130 drawingCanvas,
131 ThemeMac::inflateRectForAA(scrollbar->frameRect()), 131 ThemeMac::inflateRectForAA(scrollbar.frameRect()),
132 canDrawDirectly ? context->deviceScaleFactor() : 1.0f); 132 canDrawDirectly ? context.deviceScaleFactor() : 1.0f);
133 CGContextRef cgContext = bitLocker.cgContext(); 133 CGContextRef cgContext = bitLocker.cgContext();
134 HIThemeDrawTrack(&trackInfo, 0, cgContext, kHIThemeOrientationNormal); 134 HIThemeDrawTrack(&trackInfo, 0, cgContext, kHIThemeOrientationNormal);
135 135
136 IntRect tickmarkTrackRect = trackRect(scrollbar, false); 136 IntRect tickmarkTrackRect = trackRect(scrollbar, false);
137 if (!canDrawDirectly) { 137 if (!canDrawDirectly) {
138 tickmarkTrackRect.setX(0); 138 tickmarkTrackRect.setX(0);
139 tickmarkTrackRect.setY(0); 139 tickmarkTrackRect.setY(0);
140 } 140 }
141 // The ends are rounded and the thumb doesn't go there. 141 // The ends are rounded and the thumb doesn't go there.
142 tickmarkTrackRect.inflateY(-tickmarkTrackRect.width()); 142 tickmarkTrackRect.inflateY(-tickmarkTrackRect.width());
143 // Inset a bit. 143 // Inset a bit.
144 tickmarkTrackRect.setX(tickmarkTrackRect.x() + 2); 144 tickmarkTrackRect.setX(tickmarkTrackRect.x() + 2);
145 tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 5); 145 tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 5);
146 paintGivenTickmarks(drawingCanvas, scrollbar, tickmarkTrackRect, tickmarks); 146 paintGivenTickmarks(drawingCanvas, scrollbar, tickmarkTrackRect, tickmarks);
147 147
148 if (!canDrawDirectly) { 148 if (!canDrawDirectly) {
149 ASSERT(imageBuffer); 149 ASSERT(imageBuffer);
150 if (!context->contextDisabled()) { 150 if (!context.contextDisabled()) {
151 imageBuffer->draw(context, FloatRect(scrollbar->frameRect().location (), FloatSize(imageBuffer->size())), 151 imageBuffer->draw(&context, FloatRect(scrollbar.frameRect().location (), FloatSize(imageBuffer->size())),
152 nullptr, SkXfermode::kSrcOver_Mode); 152 nullptr, SkXfermode::kSrcOver_Mode);
153 } 153 }
154 } 154 }
155 155
156 return true; 156 return true;
157 } 157 }
158 158
159 int ScrollbarThemeMacNonOverlayAPI::scrollbarThickness(ScrollbarControlSize cont rolSize) 159 int ScrollbarThemeMacNonOverlayAPI::scrollbarThickness(ScrollbarControlSize cont rolSize)
160 { 160 {
161 return cScrollbarThickness[controlSize]; 161 return cScrollbarThickness[controlSize];
162 } 162 }
163 163
164 ScrollbarButtonsPlacement ScrollbarThemeMacNonOverlayAPI::buttonsPlacement() con st 164 ScrollbarButtonsPlacement ScrollbarThemeMacNonOverlayAPI::buttonsPlacement() con st
165 { 165 {
166 return gButtonPlacement; 166 return gButtonPlacement;
167 } 167 }
168 168
169 bool ScrollbarThemeMacNonOverlayAPI::hasButtons(const ScrollbarThemeClient* scro llbar) 169 bool ScrollbarThemeMacNonOverlayAPI::hasButtons(const ScrollbarThemeClient& scro llbar)
170 { 170 {
171 return scrollbar->enabled() && buttonsPlacement() != ScrollbarButtonsPlaceme ntNone 171 return scrollbar.enabled() && buttonsPlacement() != ScrollbarButtonsPlacemen tNone
172 && (scrollbar->orientation() == HorizontalScrollbar 172 && (scrollbar.orientation() == HorizontalScrollbar
173 ? scrollbar->width() 173 ? scrollbar.width()
174 : scrollbar->height()) >= 2 * (cRealButtonLength[scrollbar->control Size()] - cButtonHitInset[scrollbar->controlSize()]); 174 : scrollbar.height()) >= 2 * (cRealButtonLength[scrollbar.controlSi ze()] - cButtonHitInset[scrollbar.controlSize()]);
175 } 175 }
176 176
177 bool ScrollbarThemeMacNonOverlayAPI::hasThumb(const ScrollbarThemeClient* scroll bar) 177 bool ScrollbarThemeMacNonOverlayAPI::hasThumb(const ScrollbarThemeClient& scroll bar)
178 { 178 {
179 int minLengthForThumb = 2 * cButtonInset[scrollbar->controlSize()] + cThumbM inLength[scrollbar->controlSize()] + 1; 179 int minLengthForThumb = 2 * cButtonInset[scrollbar.controlSize()] + cThumbMi nLength[scrollbar.controlSize()] + 1;
180 return scrollbar->enabled() && (scrollbar->orientation() == HorizontalScroll bar ? 180 return scrollbar.enabled() && (scrollbar.orientation() == HorizontalScrollba r ?
181 scrollbar->width() : 181 scrollbar.width() :
182 scrollbar->height()) >= minLengthForThumb; 182 scrollbar.height()) >= minLengthForThumb;
183 } 183 }
184 184
185 static IntRect buttonRepaintRect(const IntRect& buttonRect, ScrollbarOrientation orientation, ScrollbarControlSize controlSize, bool start) 185 static IntRect buttonRepaintRect(const IntRect& buttonRect, ScrollbarOrientation orientation, ScrollbarControlSize controlSize, bool start)
186 { 186 {
187 ASSERT(gButtonPlacement != ScrollbarButtonsPlacementNone); 187 ASSERT(gButtonPlacement != ScrollbarButtonsPlacementNone);
188 188
189 IntRect paintRect(buttonRect); 189 IntRect paintRect(buttonRect);
190 if (orientation == HorizontalScrollbar) { 190 if (orientation == HorizontalScrollbar) {
191 paintRect.setWidth(cRealButtonLength[controlSize]); 191 paintRect.setWidth(cRealButtonLength[controlSize]);
192 if (!start) 192 if (!start)
193 paintRect.setX(buttonRect.x() - (cRealButtonLength[controlSize] - bu ttonRect.width())); 193 paintRect.setX(buttonRect.x() - (cRealButtonLength[controlSize] - bu ttonRect.width()));
194 } else { 194 } else {
195 paintRect.setHeight(cRealButtonLength[controlSize]); 195 paintRect.setHeight(cRealButtonLength[controlSize]);
196 if (!start) 196 if (!start)
197 paintRect.setY(buttonRect.y() - (cRealButtonLength[controlSize] - bu ttonRect.height())); 197 paintRect.setY(buttonRect.y() - (cRealButtonLength[controlSize] - bu ttonRect.height()));
198 } 198 }
199 199
200 return paintRect; 200 return paintRect;
201 } 201 }
202 202
203 IntRect ScrollbarThemeMacNonOverlayAPI::backButtonRect(const ScrollbarThemeClien t* scrollbar, ScrollbarPart part, bool painting) 203 IntRect ScrollbarThemeMacNonOverlayAPI::backButtonRect(const ScrollbarThemeClien t& scrollbar, ScrollbarPart part, bool painting)
204 { 204 {
205 IntRect result; 205 IntRect result;
206 206
207 if (part == BackButtonStartPart && (buttonsPlacement() == ScrollbarButtonsPl acementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleEnd)) 207 if (part == BackButtonStartPart && (buttonsPlacement() == ScrollbarButtonsPl acementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleEnd))
208 return result; 208 return result;
209 209
210 if (part == BackButtonEndPart && (buttonsPlacement() == ScrollbarButtonsPlac ementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleStart || butto nsPlacement() == ScrollbarButtonsPlacementSingle)) 210 if (part == BackButtonEndPart && (buttonsPlacement() == ScrollbarButtonsPlac ementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleStart || butto nsPlacement() == ScrollbarButtonsPlacementSingle))
211 return result; 211 return result;
212 212
213 int thickness = scrollbarThickness(scrollbar->controlSize()); 213 int thickness = scrollbarThickness(scrollbar.controlSize());
214 bool outerButton = part == BackButtonStartPart && (buttonsPlacement() == Scr ollbarButtonsPlacementDoubleStart || buttonsPlacement() == ScrollbarButtonsPlace mentDoubleBoth); 214 bool outerButton = part == BackButtonStartPart && (buttonsPlacement() == Scr ollbarButtonsPlacementDoubleStart || buttonsPlacement() == ScrollbarButtonsPlace mentDoubleBoth);
215 if (outerButton) { 215 if (outerButton) {
216 if (scrollbar->orientation() == HorizontalScrollbar) 216 if (scrollbar.orientation() == HorizontalScrollbar)
217 result = IntRect(scrollbar->x(), scrollbar->y(), cOuterButtonLength[ scrollbar->controlSize()] + (painting ? cOuterButtonOverlap : 0), thickness); 217 result = IntRect(scrollbar.x(), scrollbar.y(), cOuterButtonLength[sc rollbar.controlSize()] + (painting ? cOuterButtonOverlap : 0), thickness);
218 else 218 else
219 result = IntRect(scrollbar->x(), scrollbar->y(), thickness, cOuterBu ttonLength[scrollbar->controlSize()] + (painting ? cOuterButtonOverlap : 0)); 219 result = IntRect(scrollbar.x(), scrollbar.y(), thickness, cOuterButt onLength[scrollbar.controlSize()] + (painting ? cOuterButtonOverlap : 0));
220 return result; 220 return result;
221 } 221 }
222 222
223 // Our repaint rect is slightly larger, since we are a button that is adjace nt to the track. 223 // Our repaint rect is slightly larger, since we are a button that is adjace nt to the track.
224 if (scrollbar->orientation() == HorizontalScrollbar) { 224 if (scrollbar.orientation() == HorizontalScrollbar) {
225 int start = part == BackButtonStartPart ? scrollbar->x() : scrollbar->x( ) + scrollbar->width() - cOuterButtonLength[scrollbar->controlSize()] - cButtonL ength[scrollbar->controlSize()]; 225 int start = part == BackButtonStartPart ? scrollbar.x() : scrollbar.x() + scrollbar.width() - cOuterButtonLength[scrollbar.controlSize()] - cButtonLengt h[scrollbar.controlSize()];
226 result = IntRect(start, scrollbar->y(), cButtonLength[scrollbar->control Size()], thickness); 226 result = IntRect(start, scrollbar.y(), cButtonLength[scrollbar.controlSi ze()], thickness);
227 } else { 227 } else {
228 int start = part == BackButtonStartPart ? scrollbar->y() : scrollbar->y( ) + scrollbar->height() - cOuterButtonLength[scrollbar->controlSize()] - cButton Length[scrollbar->controlSize()]; 228 int start = part == BackButtonStartPart ? scrollbar.y() : scrollbar.y() + scrollbar.height() - cOuterButtonLength[scrollbar.controlSize()] - cButtonLeng th[scrollbar.controlSize()];
229 result = IntRect(scrollbar->x(), start, thickness, cButtonLength[scrollb ar->controlSize()]); 229 result = IntRect(scrollbar.x(), start, thickness, cButtonLength[scrollba r.controlSize()]);
230 } 230 }
231 231
232 if (painting) 232 if (painting)
233 return buttonRepaintRect(result, scrollbar->orientation(), scrollbar->co ntrolSize(), part == BackButtonStartPart); 233 return buttonRepaintRect(result, scrollbar.orientation(), scrollbar.cont rolSize(), part == BackButtonStartPart);
234 return result; 234 return result;
235 } 235 }
236 236
237 IntRect ScrollbarThemeMacNonOverlayAPI::forwardButtonRect(const ScrollbarThemeCl ient* scrollbar, ScrollbarPart part, bool painting) 237 IntRect ScrollbarThemeMacNonOverlayAPI::forwardButtonRect(const ScrollbarThemeCl ient& scrollbar, ScrollbarPart part, bool painting)
238 { 238 {
239 IntRect result; 239 IntRect result;
240 240
241 if (part == ForwardButtonEndPart && (buttonsPlacement() == ScrollbarButtonsP lacementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleStart)) 241 if (part == ForwardButtonEndPart && (buttonsPlacement() == ScrollbarButtonsP lacementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleStart))
242 return result; 242 return result;
243 243
244 if (part == ForwardButtonStartPart && (buttonsPlacement() == ScrollbarButton sPlacementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleEnd || bu ttonsPlacement() == ScrollbarButtonsPlacementSingle)) 244 if (part == ForwardButtonStartPart && (buttonsPlacement() == ScrollbarButton sPlacementNone || buttonsPlacement() == ScrollbarButtonsPlacementDoubleEnd || bu ttonsPlacement() == ScrollbarButtonsPlacementSingle))
245 return result; 245 return result;
246 246
247 int thickness = scrollbarThickness(scrollbar->controlSize()); 247 int thickness = scrollbarThickness(scrollbar.controlSize());
248 int outerButtonLength = cOuterButtonLength[scrollbar->controlSize()]; 248 int outerButtonLength = cOuterButtonLength[scrollbar.controlSize()];
249 int buttonLength = cButtonLength[scrollbar->controlSize()]; 249 int buttonLength = cButtonLength[scrollbar.controlSize()];
250 250
251 bool outerButton = part == ForwardButtonEndPart && (buttonsPlacement() == Sc rollbarButtonsPlacementDoubleEnd || buttonsPlacement() == ScrollbarButtonsPlacem entDoubleBoth); 251 bool outerButton = part == ForwardButtonEndPart && (buttonsPlacement() == Sc rollbarButtonsPlacementDoubleEnd || buttonsPlacement() == ScrollbarButtonsPlacem entDoubleBoth);
252 if (outerButton) { 252 if (outerButton) {
253 if (scrollbar->orientation() == HorizontalScrollbar) { 253 if (scrollbar.orientation() == HorizontalScrollbar) {
254 result = IntRect(scrollbar->x() + scrollbar->width() - outerButtonLe ngth, scrollbar->y(), outerButtonLength, thickness); 254 result = IntRect(scrollbar.x() + scrollbar.width() - outerButtonLeng th, scrollbar.y(), outerButtonLength, thickness);
255 if (painting) 255 if (painting)
256 result.inflateX(cOuterButtonOverlap); 256 result.inflateX(cOuterButtonOverlap);
257 } else { 257 } else {
258 result = IntRect(scrollbar->x(), scrollbar->y() + scrollbar->height( ) - outerButtonLength, thickness, outerButtonLength); 258 result = IntRect(scrollbar.x(), scrollbar.y() + scrollbar.height() - outerButtonLength, thickness, outerButtonLength);
259 if (painting) 259 if (painting)
260 result.inflateY(cOuterButtonOverlap); 260 result.inflateY(cOuterButtonOverlap);
261 } 261 }
262 return result; 262 return result;
263 } 263 }
264 264
265 if (scrollbar->orientation() == HorizontalScrollbar) { 265 if (scrollbar.orientation() == HorizontalScrollbar) {
266 int start = part == ForwardButtonEndPart ? scrollbar->x() + scrollbar->w idth() - buttonLength : scrollbar->x() + outerButtonLength; 266 int start = part == ForwardButtonEndPart ? scrollbar.x() + scrollbar.wid th() - buttonLength : scrollbar.x() + outerButtonLength;
267 result = IntRect(start, scrollbar->y(), buttonLength, thickness); 267 result = IntRect(start, scrollbar.y(), buttonLength, thickness);
268 } else { 268 } else {
269 int start = part == ForwardButtonEndPart ? scrollbar->y() + scrollbar->h eight() - buttonLength : scrollbar->y() + outerButtonLength; 269 int start = part == ForwardButtonEndPart ? scrollbar.y() + scrollbar.hei ght() - buttonLength : scrollbar.y() + outerButtonLength;
270 result = IntRect(scrollbar->x(), start, thickness, buttonLength); 270 result = IntRect(scrollbar.x(), start, thickness, buttonLength);
271 } 271 }
272 if (painting) 272 if (painting)
273 return buttonRepaintRect(result, scrollbar->orientation(), scrollbar->co ntrolSize(), part == ForwardButtonStartPart); 273 return buttonRepaintRect(result, scrollbar.orientation(), scrollbar.cont rolSize(), part == ForwardButtonStartPart);
274 return result; 274 return result;
275 } 275 }
276 276
277 IntRect ScrollbarThemeMacNonOverlayAPI::trackRect(const ScrollbarThemeClient* sc rollbar, bool painting) 277 IntRect ScrollbarThemeMacNonOverlayAPI::trackRect(const ScrollbarThemeClient& sc rollbar, bool painting)
278 { 278 {
279 if (painting || !hasButtons(scrollbar)) 279 if (painting || !hasButtons(scrollbar))
280 return scrollbar->frameRect(); 280 return scrollbar.frameRect();
281 281
282 IntRect result; 282 IntRect result;
283 int thickness = scrollbarThickness(scrollbar->controlSize()); 283 int thickness = scrollbarThickness(scrollbar.controlSize());
284 int startWidth = 0; 284 int startWidth = 0;
285 int endWidth = 0; 285 int endWidth = 0;
286 int outerButtonLength = cOuterButtonLength[scrollbar->controlSize()]; 286 int outerButtonLength = cOuterButtonLength[scrollbar.controlSize()];
287 int buttonLength = cButtonLength[scrollbar->controlSize()]; 287 int buttonLength = cButtonLength[scrollbar.controlSize()];
288 int doubleButtonLength = outerButtonLength + buttonLength; 288 int doubleButtonLength = outerButtonLength + buttonLength;
289 switch (buttonsPlacement()) { 289 switch (buttonsPlacement()) {
290 case ScrollbarButtonsPlacementSingle: 290 case ScrollbarButtonsPlacementSingle:
291 startWidth = buttonLength; 291 startWidth = buttonLength;
292 endWidth = buttonLength; 292 endWidth = buttonLength;
293 break; 293 break;
294 case ScrollbarButtonsPlacementDoubleStart: 294 case ScrollbarButtonsPlacementDoubleStart:
295 startWidth = doubleButtonLength; 295 startWidth = doubleButtonLength;
296 break; 296 break;
297 case ScrollbarButtonsPlacementDoubleEnd: 297 case ScrollbarButtonsPlacementDoubleEnd:
298 endWidth = doubleButtonLength; 298 endWidth = doubleButtonLength;
299 break; 299 break;
300 case ScrollbarButtonsPlacementDoubleBoth: 300 case ScrollbarButtonsPlacementDoubleBoth:
301 startWidth = doubleButtonLength; 301 startWidth = doubleButtonLength;
302 endWidth = doubleButtonLength; 302 endWidth = doubleButtonLength;
303 break; 303 break;
304 default: 304 default:
305 break; 305 break;
306 } 306 }
307 307
308 int totalWidth = startWidth + endWidth; 308 int totalWidth = startWidth + endWidth;
309 if (scrollbar->orientation() == HorizontalScrollbar) 309 if (scrollbar.orientation() == HorizontalScrollbar)
310 return IntRect(scrollbar->x() + startWidth, scrollbar->y(), scrollbar->w idth() - totalWidth, thickness); 310 return IntRect(scrollbar.x() + startWidth, scrollbar.y(), scrollbar.widt h() - totalWidth, thickness);
311 return IntRect(scrollbar->x(), scrollbar->y() + startWidth, thickness, scrol lbar->height() - totalWidth); 311 return IntRect(scrollbar.x(), scrollbar.y() + startWidth, thickness, scrollb ar.height() - totalWidth);
312 } 312 }
313 313
314 int ScrollbarThemeMacNonOverlayAPI::minimumThumbLength(const ScrollbarThemeClien t* scrollbar) 314 int ScrollbarThemeMacNonOverlayAPI::minimumThumbLength(const ScrollbarThemeClien t& scrollbar)
315 { 315 {
316 return cThumbMinLength[scrollbar->controlSize()]; 316 return cThumbMinLength[scrollbar.controlSize()];
317 } 317 }
318 318
319 } 319 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698