OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. |
3 * Copyright (C) 2011 Google Inc. All Rights Reserved. | 3 * Copyright (C) 2011 Google Inc. All Rights Reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 @interface NSScrollerImp : NSObject | 53 @interface NSScrollerImp : NSObject |
54 | 54 |
55 + (id)scrollerImpWithStyle:(NSScrollerStyle)style | 55 + (id)scrollerImpWithStyle:(NSScrollerStyle)style |
56 controlSize:(NSControlSize)size | 56 controlSize:(NSControlSize)size |
57 horizontal:(BOOL)horizontal | 57 horizontal:(BOOL)horizontal |
58 replacingScrollerImp:(id)scroller; | 58 replacingScrollerImp:(id)scroller; |
59 | 59 |
60 @property CGFloat knobAlpha; | 60 @property CGFloat knobAlpha; |
61 @property CGFloat trackAlpha; | 61 @property CGFloat trackAlpha; |
62 @property CGFloat knobProportion; | 62 @property CGFloat knobProportion; |
| 63 @property NSInteger knobStyle; |
63 @property(getter=isEnabled) BOOL enabled; | 64 @property(getter=isEnabled) BOOL enabled; |
64 @property(getter=isHorizontal) BOOL horizontal; | 65 @property(getter=isHorizontal) BOOL horizontal; |
65 @property double doubleValue; | 66 @property double doubleValue; |
66 @property(assign) id delegate; | 67 @property(assign) id delegate; |
67 | 68 |
68 - (CGFloat)knobMinLength; | 69 - (CGFloat)knobMinLength; |
69 - (CGFloat)trackBoxWidth; | 70 - (CGFloat)trackBoxWidth; |
70 - (CGFloat)trackWidth; | 71 - (CGFloat)trackWidth; |
71 - (void)setBoundsSize:(NSSize)size; | 72 - (void)setBoundsSize:(NSSize)size; |
72 - (void)drawKnobSlotInRect:(NSRect)rect | 73 - (void)drawKnobSlotInRect:(NSRect)rect |
73 highlight:(BOOL)flag; | 74 highlight:(BOOL)flag; |
74 - (void)drawKnob; | 75 - (void)drawKnob; |
75 - (void)setOverlayScrollerState:(NSScrollerStyle)state | 76 - (void)setOverlayScrollerState:(NSScrollerStyle)state |
76 forceImmediately:(BOOL)flag; | 77 forceImmediately:(BOOL)flag; |
77 - (void)setDelegate:(id)delegate; | 78 - (void)setDelegate:(id)delegate; |
| 79 - (NSRect)rectForPart:(NSUInteger)arg1; |
78 | 80 |
79 @end | 81 @end |
80 | 82 |
81 // These are private APIs to manage overlay scrollbars. | 83 // These are private APIs to manage overlay scrollbars. |
82 @interface NSScrollerImpPair : NSObject | 84 @interface NSScrollerImpPair : NSObject |
83 | 85 |
84 @property NSScrollerStyle scrollerStyle; | 86 @property NSScrollerStyle scrollerStyle; |
85 @property(retain) NSScrollerImp *horizontalScrollerImp; | 87 @property(retain) NSScrollerImp *horizontalScrollerImp; |
86 @property(retain) NSScrollerImp *verticalScrollerImp; | 88 @property(retain) NSScrollerImp *verticalScrollerImp; |
87 @property(assign) id delegate; | 89 @property(assign) id delegate; |
(...skipping 27 matching lines...) Expand all Loading... |
115 return result; | 117 return result; |
116 } | 118 } |
117 | 119 |
118 static NSControlSize scrollbarControlSizeToNSControlSize(int controlSize) | 120 static NSControlSize scrollbarControlSizeToNSControlSize(int controlSize) |
119 { | 121 { |
120 return controlSize == WebCore::RegularScrollbar ? NSRegularControlSize : NSS
mallControlSize; | 122 return controlSize == WebCore::RegularScrollbar ? NSRegularControlSize : NSS
mallControlSize; |
121 } | 123 } |
122 | 124 |
123 static NSScrollerStyle preferredScrollerStyle() | 125 static NSScrollerStyle preferredScrollerStyle() |
124 { | 126 { |
| 127 // TODO(sail): Disable overlay scrollbars for now until the following issues
are fixed: |
| 128 // #1: Invalidation issues causes the scrollbar to leave trailing artifacts. |
| 129 // #2: Find tick marks need to be drawn on the scrollbar track. |
| 130 return NSScrollerStyleLegacy; |
| 131 |
125 if ([NSScroller respondsToSelector:@selector(preferredScrollerStyle)]) | 132 if ([NSScroller respondsToSelector:@selector(preferredScrollerStyle)]) |
126 return [NSScroller preferredScrollerStyle]; | 133 return [NSScroller preferredScrollerStyle]; |
127 return NSScrollerStyleLegacy; | 134 return NSScrollerStyleLegacy; |
128 } | 135 } |
129 | 136 |
130 bool wkScrollbarPainterUsesOverlayScrollers(void) | 137 bool wkScrollbarPainterUsesOverlayScrollers(void) |
131 { | 138 { |
132 return preferredScrollerStyle() == NSScrollerStyleOverlay; | 139 return preferredScrollerStyle() == NSScrollerStyleOverlay; |
133 } | 140 } |
134 | 141 |
(...skipping 17 matching lines...) Expand all Loading... |
152 { | 159 { |
153 [painter setEnabled:enabled]; | 160 [painter setEnabled:enabled]; |
154 [painter setBoundsSize:frameRect.size]; | 161 [painter setBoundsSize:frameRect.size]; |
155 [painter setDoubleValue:value]; | 162 [painter setDoubleValue:value]; |
156 [painter setKnobProportion:proportion]; | 163 [painter setKnobProportion:proportion]; |
157 | 164 |
158 if ([painter isHorizontal]) | 165 if ([painter isHorizontal]) |
159 frameRect.size.height = [painter trackWidth]; | 166 frameRect.size.height = [painter trackWidth]; |
160 else | 167 else |
161 frameRect.size.width = [painter trackWidth]; | 168 frameRect.size.width = [painter trackWidth]; |
| 169 frameRect.origin = NSZeroPoint; |
162 | 170 |
163 [painter drawKnobSlotInRect:frameRect highlight:NO]; | 171 [painter drawKnobSlotInRect:frameRect highlight:NO]; |
164 [painter drawKnob]; | 172 [painter drawKnob]; |
165 } | 173 } |
166 | 174 |
167 int wkScrollbarMinimumThumbLength(WKScrollbarPainterRef painter) | 175 int wkScrollbarMinimumThumbLength(WKScrollbarPainterRef painter) |
168 { | 176 { |
169 return [painter knobMinLength]; | 177 return [painter knobMinLength]; |
170 } | 178 } |
171 | 179 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 [controller setVerticalScrollerImp:painter]; | 231 [controller setVerticalScrollerImp:painter]; |
224 } | 232 } |
225 | 233 |
226 void wkSetScrollbarPainterControllerStyle(WKScrollbarPainterControllerRef painte
r, int newStyle) | 234 void wkSetScrollbarPainterControllerStyle(WKScrollbarPainterControllerRef painte
r, int newStyle) |
227 { | 235 { |
228 [painter setScrollerStyle:newStyle]; | 236 [painter setScrollerStyle:newStyle]; |
229 } | 237 } |
230 | 238 |
231 CGRect wkScrollbarPainterKnobRect(WKScrollbarPainterRef painter) | 239 CGRect wkScrollbarPainterKnobRect(WKScrollbarPainterRef painter) |
232 { | 240 { |
233 return NSRectToCGRect(NSZeroRect); | 241 return NSRectToCGRect([painter rectForPart:NSScrollerKnob]); |
234 } | 242 } |
235 | 243 |
236 void wkSetScrollbarPainterKnobAlpha(WKScrollbarPainterRef painter, CGFloat alpha
) | 244 void wkSetScrollbarPainterKnobAlpha(WKScrollbarPainterRef painter, CGFloat alpha
) |
237 { | 245 { |
238 [painter setKnobAlpha:alpha]; | 246 [painter setKnobAlpha:alpha]; |
239 } | 247 } |
240 | 248 |
241 void wkSetScrollbarPainterTrackAlpha(WKScrollbarPainterRef painter, CGFloat alph
a) | 249 void wkSetScrollbarPainterTrackAlpha(WKScrollbarPainterRef painter, CGFloat alph
a) |
242 { | 250 { |
243 [painter setTrackAlpha:alpha]; | 251 [painter setTrackAlpha:alpha]; |
244 } | 252 } |
245 | 253 |
246 void wkSetScrollbarPainterKnobStyle(WKScrollbarPainterRef painter, wkScrollerKno
bStyle style) | 254 void wkSetScrollbarPainterKnobStyle(WKScrollbarPainterRef painter, wkScrollerKno
bStyle style) |
247 { | 255 { |
248 // TODO(sail): A knob style API doesn't exist in the seeds currently availab
le. | 256 [painter setKnobStyle:style]; |
249 } | 257 } |
250 | 258 |
251 WKScrollbarPainterControllerRef wkMakeScrollbarPainterController(id painterContr
ollerDelegate) | 259 WKScrollbarPainterControllerRef wkMakeScrollbarPainterController(id painterContr
ollerDelegate) |
252 { | 260 { |
253 if (!isScrollbarOverlayAPIAvailable()) | 261 if (!isScrollbarOverlayAPIAvailable()) |
254 return nil; | 262 return nil; |
255 NSScrollerImpPair* controller = [[[lookUpNSScrollerImpPairClass() alloc] ini
t] autorelease]; | 263 NSScrollerImpPair* controller = [[[lookUpNSScrollerImpPairClass() alloc] ini
t] autorelease]; |
256 [controller setDelegate:painterControllerDelegate]; | 264 [controller setDelegate:painterControllerDelegate]; |
257 [controller setScrollerStyle:preferredScrollerStyle()]; | 265 [controller setScrollerStyle:preferredScrollerStyle()]; |
258 return controller; | 266 return controller; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 [controller endScrollGesture]; | 326 [controller endScrollGesture]; |
319 } | 327 } |
320 | 328 |
321 void wkScrollbarPainterForceFlashScrollers(WKScrollbarPainterControllerRef contr
oller) | 329 void wkScrollbarPainterForceFlashScrollers(WKScrollbarPainterControllerRef contr
oller) |
322 { | 330 { |
323 [controller flashScrollers]; | 331 [controller flashScrollers]; |
324 } | 332 } |
325 | 333 |
326 bool isScrollbarOverlayAPIAvailable() | 334 bool isScrollbarOverlayAPIAvailable() |
327 { | 335 { |
328 // TODO(sail): Disable overlay scrollbars for now until the following issues
are fixed: | |
329 // #1: Invalidation issues causes the scrollbar to leave trailing artifacts. | |
330 // #2: Various messages such as live resize started/ended need to be piped f
rom the UI. | |
331 // #3: Find tick marks need to be drawn on the scrollbar track. | |
332 // #4: Need to have the theme engine draw the thumb. | |
333 return false; | |
334 | |
335 static bool apiAvailable = [lookUpNSScrollerImpClass() respondsToSelector:@s
elector(scrollerImpWithStyle:controlSize:horizontal:replacingScrollerImp:)] && | 336 static bool apiAvailable = [lookUpNSScrollerImpClass() respondsToSelector:@s
elector(scrollerImpWithStyle:controlSize:horizontal:replacingScrollerImp:)] && |
336 [lookUpNSScrollerImpPairClass() instancesRespondT
oSelector:@selector(scrollerStyle)]; | 337 [lookUpNSScrollerImpPairClass() instancesRespondT
oSelector:@selector(scrollerStyle)]; |
337 return apiAvailable; | 338 return apiAvailable; |
338 } | 339 } |
339 | 340 |
340 #endif // USE(WK_SCROLLBAR_PAINTER) | 341 #endif // USE(WK_SCROLLBAR_PAINTER) |
OLD | NEW |