Home | History | Annotate | Download | only in scroll

Lines Matching refs:scrollbar

50 bool ScrollbarTheme::paint(ScrollbarThemeClient* scrollbar, GraphicsContext* graphicsContext, const IntRect& damageRect)
59 if (hasButtons(scrollbar)) {
60 backButtonStartPaintRect = backButtonRect(scrollbar, BackButtonStartPart, true);
63 backButtonEndPaintRect = backButtonRect(scrollbar, BackButtonEndPart, true);
66 forwardButtonStartPaintRect = forwardButtonRect(scrollbar, ForwardButtonStartPart, true);
69 forwardButtonEndPaintRect = forwardButtonRect(scrollbar, ForwardButtonEndPart, true);
77 IntRect trackPaintRect = trackRect(scrollbar, true);
80 bool thumbPresent = hasThumb(scrollbar);
82 IntRect track = trackRect(scrollbar);
83 splitTrack(scrollbar, track, startTrackRect, thumbRect, endTrackRect);
92 // Paint the scrollbar background (only used by custom CSS scrollbars).
93 paintScrollbarBackground(graphicsContext, scrollbar);
97 paintButton(graphicsContext, scrollbar, backButtonStartPaintRect, BackButtonStartPart);
99 paintButton(graphicsContext, scrollbar, backButtonEndPaintRect, BackButtonEndPart);
101 paintButton(graphicsContext, scrollbar, forwardButtonStartPaintRect, ForwardButtonStartPart);
103 paintButton(graphicsContext, scrollbar, forwardButtonEndPaintRect, ForwardButtonEndPart);
106 paintTrackBackground(graphicsContext, scrollbar, trackPaintRect);
111 paintTrackPiece(graphicsContext, scrollbar, startTrackRect, BackTrackPart);
113 paintTrackPiece(graphicsContext, scrollbar, endTrackRect, ForwardTrackPart);
115 paintTickmarks(graphicsContext, scrollbar, trackPaintRect);
120 paintThumb(graphicsContext, scrollbar, thumbRect);
125 ScrollbarPart ScrollbarTheme::hitTest(ScrollbarThemeClient* scrollbar, const IntPoint& position)
128 if (!scrollbar->enabled())
131 IntPoint testPosition = scrollbar->convertFromContainingWindow(position);
132 testPosition.move(scrollbar->x(), scrollbar->y());
134 if (!scrollbar->frameRect().contains(testPosition))
139 IntRect track = trackRect(scrollbar);
144 splitTrack(scrollbar, track, beforeThumbRect, thumbRect, afterThumbRect);
153 } else if (backButtonRect(scrollbar, BackButtonStartPart).contains(testPosition)) {
155 } else if (backButtonRect(scrollbar, BackButtonEndPart).contains(testPosition)) {
157 } else if (forwardButtonRect(scrollbar, ForwardButtonStartPart).contains(testPosition)) {
159 } else if (forwardButtonRect(scrollbar, ForwardButtonEndPart).contains(testPosition)) {
165 void ScrollbarTheme::invalidatePart(ScrollbarThemeClient* scrollbar, ScrollbarPart part)
173 result = backButtonRect(scrollbar, BackButtonStartPart, true);
176 result = backButtonRect(scrollbar, BackButtonEndPart, true);
179 result = forwardButtonRect(scrollbar, ForwardButtonStartPart, true);
182 result = forwardButtonRect(scrollbar, ForwardButtonEndPart, true);
185 result = trackRect(scrollbar, true);
188 result = scrollbar->frameRect();
192 splitTrack(scrollbar, trackRect(scrollbar), beforeThumbRect, thumbRect, afterThumbRect);
201 result.moveBy(-scrollbar->location());
202 scrollbar->invalidateRect(result);
228 bool ScrollbarTheme::shouldCenterOnThumb(ScrollbarThemeClient* scrollbar, const PlatformMouseEvent& evt)
233 bool ScrollbarTheme::shouldSnapBackToDragOrigin(ScrollbarThemeClient* scrollbar, const PlatformMouseEvent& evt)
235 IntPoint mousePosition = scrollbar->convertFromContainingWindow(evt.position());
236 mousePosition.move(scrollbar->x(), scrollbar->y());
237 return blink::Platform::current()->scrollbarBehavior()->shouldSnapBackToDragOrigin(mousePosition, trackRect(scrollbar), scrollbar->orientation() == HorizontalScrollbar);
242 static float usedTotalSize(ScrollbarThemeClient* scrollbar)
244 float overhangAtStart = -scrollbar->currentPos();
245 float overhangAtEnd = scrollbar->currentPos() + scrollbar->visibleSize() - scrollbar->totalSize();
247 return scrollbar->totalSize() + overhang;
250 int ScrollbarTheme::thumbPosition(ScrollbarThemeClient* scrollbar)
252 if (scrollbar->enabled()) {
253 float size = usedTotalSize(scrollbar) - scrollbar->visibleSize();
257 float pos = std::max(0.0f, scrollbar->currentPos()) * (trackLength(scrollbar) - thumbLength(scrollbar)) / size;
263 int ScrollbarTheme::thumbLength(ScrollbarThemeClient* scrollbar)
265 if (!scrollbar->enabled())
269 if (scrollbar->currentPos() < 0)
270 overhang = -scrollbar->currentPos();
271 else if (scrollbar->visibleSize() + scrollbar->currentPos() > scrollbar->totalSize())
272 overhang = scrollbar->currentPos() + scrollbar->visibleSize() - scrollbar->totalSize();
273 float proportion = (scrollbar->visibleSize() - overhang) / usedTotalSize(scrollbar);
274 int trackLen = trackLength(scrollbar);
276 length = std::max(length, minimumThumbLength(scrollbar));
282 int ScrollbarTheme::trackPosition(ScrollbarThemeClient* scrollbar)
284 IntRect constrainedTrackRect = constrainTrackRectToTrackPieces(scrollbar, trackRect(scrollbar));
285 return (scrollbar->orientation() == HorizontalScrollbar) ? constrainedTrackRect.x() - scrollbar->x() : constrainedTrackRect.y() - scrollbar->y();
288 int ScrollbarTheme::trackLength(ScrollbarThemeClient* scrollbar)
290 IntRect constrainedTrackRect = constrainTrackRectToTrackPieces(scrollbar, trackRect(scrollbar));
291 return (scrollbar->orientation() == HorizontalScrollbar) ? constrainedTrackRect.width() : constrainedTrackRect.height();
294 IntRect ScrollbarTheme::thumbRect(ScrollbarThemeClient* scrollbar)
296 if (!hasThumb(scrollbar))
299 IntRect track = trackRect(scrollbar);
303 splitTrack(scrollbar, track, startTrackRect, thumbRect, endTrackRect);
308 int ScrollbarTheme::thumbThickness(ScrollbarThemeClient* scrollbar)
310 IntRect track = trackRect(scrollbar);
311 return scrollbar->orientation() == HorizontalScrollbar ? track.height() : track.width();
314 int ScrollbarTheme::minimumThumbLength(ScrollbarThemeClient* scrollbar)
316 return scrollbarThickness(scrollbar->controlSize());
319 void ScrollbarTheme::splitTrack(ScrollbarThemeClient* scrollbar, const IntRect& unconstrainedTrackRect, IntRect& beforeThumbRect, IntRect& thumbRect, IntRect& afterThumbRect)
323 IntRect trackRect = constrainTrackRectToTrackPieces(scrollbar, unconstrainedTrackRect);
324 int thumbPos = thumbPosition(scrollbar);
325 if (scrollbar->orientation() == HorizontalScrollbar) {
326 thumbRect = IntRect(trackRect.x() + thumbPos, trackRect.y(), thumbLength(scrollbar), scrollbar->height());
330 thumbRect = IntRect(trackRect.x(), trackRect.y() + thumbPos, scrollbar->width(), thumbLength(scrollbar));