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

Side by Side Diff: third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp

Issue 2426793002: Aura overlay scrollbars adjust color for dark backgrounds (Closed)
Patch Set: fix test Created 4 years, 1 month 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) 2010, Google Inc. All rights reserved. 2 * Copyright (c) 2010, Google Inc. All rights reserved.
3 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. 3 * Copyright (C) 2008, 2011 Apple 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 are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 return kMinFractionToStepWhenPaging; 67 return kMinFractionToStepWhenPaging;
68 } 68 }
69 69
70 int ScrollableArea::maxOverlapBetweenPages() { 70 int ScrollableArea::maxOverlapBetweenPages() {
71 static int maxOverlapBetweenPages = 71 static int maxOverlapBetweenPages =
72 ScrollbarTheme::theme().maxOverlapBetweenPages(); 72 ScrollbarTheme::theme().maxOverlapBetweenPages();
73 return maxOverlapBetweenPages; 73 return maxOverlapBetweenPages;
74 } 74 }
75 75
76 ScrollableArea::ScrollableArea() 76 ScrollableArea::ScrollableArea()
77 : m_scrollbarOverlayStyle(ScrollbarOverlayStyleDefault), 77 : m_scrollbarOverlayColorTheme(ScrollbarOverlayColorThemeDark),
78 m_scrollOriginChanged(false), 78 m_scrollOriginChanged(false),
79 m_horizontalScrollbarNeedsPaintInvalidation(false), 79 m_horizontalScrollbarNeedsPaintInvalidation(false),
80 m_verticalScrollbarNeedsPaintInvalidation(false), 80 m_verticalScrollbarNeedsPaintInvalidation(false),
81 m_scrollCornerNeedsPaintInvalidation(false) {} 81 m_scrollCornerNeedsPaintInvalidation(false) {}
82 82
83 ScrollableArea::~ScrollableArea() {} 83 ScrollableArea::~ScrollableArea() {}
84 84
85 void ScrollableArea::clearScrollAnimators() { 85 void ScrollableArea::clearScrollAnimators() {
86 #if OS(MACOSX) 86 #if OS(MACOSX)
87 if (m_scrollAnimator) 87 if (m_scrollAnimator)
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 356
357 void ScrollableArea::didAddScrollbar(Scrollbar& scrollbar, 357 void ScrollableArea::didAddScrollbar(Scrollbar& scrollbar,
358 ScrollbarOrientation orientation) { 358 ScrollbarOrientation orientation) {
359 if (orientation == VerticalScrollbar) 359 if (orientation == VerticalScrollbar)
360 scrollAnimator().didAddVerticalScrollbar(scrollbar); 360 scrollAnimator().didAddVerticalScrollbar(scrollbar);
361 else 361 else
362 scrollAnimator().didAddHorizontalScrollbar(scrollbar); 362 scrollAnimator().didAddHorizontalScrollbar(scrollbar);
363 363
364 // <rdar://problem/9797253> AppKit resets the scrollbar's style when you 364 // <rdar://problem/9797253> AppKit resets the scrollbar's style when you
365 // attach a scrollbar 365 // attach a scrollbar
366 setScrollbarOverlayStyle(getScrollbarOverlayStyle()); 366 setScrollbarOverlayColorTheme(getScrollbarOverlayColorTheme());
367 } 367 }
368 368
369 void ScrollableArea::willRemoveScrollbar(Scrollbar& scrollbar, 369 void ScrollableArea::willRemoveScrollbar(Scrollbar& scrollbar,
370 ScrollbarOrientation orientation) { 370 ScrollbarOrientation orientation) {
371 if (ScrollAnimatorBase* scrollAnimator = existingScrollAnimator()) { 371 if (ScrollAnimatorBase* scrollAnimator = existingScrollAnimator()) {
372 if (orientation == VerticalScrollbar) 372 if (orientation == VerticalScrollbar)
373 scrollAnimator->willRemoveVerticalScrollbar(scrollbar); 373 scrollAnimator->willRemoveVerticalScrollbar(scrollbar);
374 else 374 else
375 scrollAnimator->willRemoveHorizontalScrollbar(scrollbar); 375 scrollAnimator->willRemoveHorizontalScrollbar(scrollbar);
376 } 376 }
377 } 377 }
378 378
379 void ScrollableArea::contentsResized() { 379 void ScrollableArea::contentsResized() {
380 if (ScrollAnimatorBase* scrollAnimator = existingScrollAnimator()) 380 if (ScrollAnimatorBase* scrollAnimator = existingScrollAnimator())
381 scrollAnimator->contentsResized(); 381 scrollAnimator->contentsResized();
382 } 382 }
383 383
384 bool ScrollableArea::hasOverlayScrollbars() const { 384 bool ScrollableArea::hasOverlayScrollbars() const {
385 Scrollbar* vScrollbar = verticalScrollbar(); 385 Scrollbar* vScrollbar = verticalScrollbar();
386 if (vScrollbar && vScrollbar->isOverlayScrollbar()) 386 if (vScrollbar && vScrollbar->isOverlayScrollbar())
387 return true; 387 return true;
388 Scrollbar* hScrollbar = horizontalScrollbar(); 388 Scrollbar* hScrollbar = horizontalScrollbar();
389 return hScrollbar && hScrollbar->isOverlayScrollbar(); 389 return hScrollbar && hScrollbar->isOverlayScrollbar();
390 } 390 }
391 391
392 void ScrollableArea::setScrollbarOverlayStyle( 392 void ScrollableArea::setScrollbarOverlayColorTheme(
393 ScrollbarOverlayStyle overlayStyle) { 393 ScrollbarOverlayColorTheme overlayTheme) {
394 m_scrollbarOverlayStyle = overlayStyle; 394 m_scrollbarOverlayColorTheme = overlayTheme;
395 395
396 if (Scrollbar* scrollbar = horizontalScrollbar()) { 396 if (Scrollbar* scrollbar = horizontalScrollbar()) {
397 ScrollbarTheme::theme().updateScrollbarOverlayStyle(*scrollbar); 397 ScrollbarTheme::theme().updateScrollbarOverlayColorTheme(*scrollbar);
398 scrollbar->setNeedsPaintInvalidation(AllParts); 398 scrollbar->setNeedsPaintInvalidation(AllParts);
399 } 399 }
400 400
401 if (Scrollbar* scrollbar = verticalScrollbar()) { 401 if (Scrollbar* scrollbar = verticalScrollbar()) {
402 ScrollbarTheme::theme().updateScrollbarOverlayStyle(*scrollbar); 402 ScrollbarTheme::theme().updateScrollbarOverlayColorTheme(*scrollbar);
403 scrollbar->setNeedsPaintInvalidation(AllParts); 403 scrollbar->setNeedsPaintInvalidation(AllParts);
404 } 404 }
405 } 405 }
406 406
407 void ScrollableArea::recalculateScrollbarOverlayStyle(Color backgroundColor) { 407 void ScrollableArea::recalculateScrollbarOverlayColorTheme(
408 ScrollbarOverlayStyle oldOverlayStyle = getScrollbarOverlayStyle(); 408 Color backgroundColor) {
409 ScrollbarOverlayStyle overlayStyle = ScrollbarOverlayStyleDefault; 409 ScrollbarOverlayColorTheme oldOverlayTheme = getScrollbarOverlayColorTheme();
410 ScrollbarOverlayColorTheme overlayTheme = ScrollbarOverlayColorThemeDark;
410 411
411 // Reduce the background color from RGB to a lightness value 412 // Reduce the background color from RGB to a lightness value
412 // and determine which scrollbar style to use based on a lightness 413 // and determine which scrollbar style to use based on a lightness
413 // heuristic. 414 // heuristic.
414 double hue, saturation, lightness; 415 double hue, saturation, lightness;
415 backgroundColor.getHSL(hue, saturation, lightness); 416 backgroundColor.getHSL(hue, saturation, lightness);
416 if (lightness <= .5) 417 if (lightness <= .5)
417 overlayStyle = ScrollbarOverlayStyleLight; 418 overlayTheme = ScrollbarOverlayColorThemeLight;
418 419
419 if (oldOverlayStyle != overlayStyle) 420 if (oldOverlayTheme != overlayTheme)
420 setScrollbarOverlayStyle(overlayStyle); 421 setScrollbarOverlayColorTheme(overlayTheme);
421 } 422 }
422 423
423 void ScrollableArea::setScrollbarNeedsPaintInvalidation( 424 void ScrollableArea::setScrollbarNeedsPaintInvalidation(
424 ScrollbarOrientation orientation) { 425 ScrollbarOrientation orientation) {
425 if (orientation == HorizontalScrollbar) { 426 if (orientation == HorizontalScrollbar) {
426 if (GraphicsLayer* graphicsLayer = layerForHorizontalScrollbar()) { 427 if (GraphicsLayer* graphicsLayer = layerForHorizontalScrollbar()) {
427 graphicsLayer->setNeedsDisplay(); 428 graphicsLayer->setNeedsDisplay();
428 graphicsLayer->setContentsNeedsDisplay(); 429 graphicsLayer->setContentsNeedsDisplay();
429 } 430 }
430 m_horizontalScrollbarNeedsPaintInvalidation = true; 431 m_horizontalScrollbarNeedsPaintInvalidation = true;
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 return IntSize(std::max(0, size.width() - verticalScrollbarWidth()), 592 return IntSize(std::max(0, size.width() - verticalScrollbarWidth()),
592 std::max(0, size.height() - horizontalScrollbarHeight())); 593 std::max(0, size.height() - horizontalScrollbarHeight()));
593 } 594 }
594 595
595 DEFINE_TRACE(ScrollableArea) { 596 DEFINE_TRACE(ScrollableArea) {
596 visitor->trace(m_scrollAnimator); 597 visitor->trace(m_scrollAnimator);
597 visitor->trace(m_programmaticScrollAnimator); 598 visitor->trace(m_programmaticScrollAnimator);
598 } 599 }
599 600
600 } // namespace blink 601 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698