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

Side by Side Diff: third_party/WebKit/Source/core/frame/FrameView.cpp

Issue 2509843004: Disable overlay scrollbars to hide them on non-Mac. (Closed)
Patch Set: Renamed to shouldDisableInvisibleScrollbars 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) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 2445 matching lines...) Expand 10 before | Expand all | Expand 10 after
2456 } 2456 }
2457 2457
2458 bool FrameView::scrollbarsCanBeActive() const { 2458 bool FrameView::scrollbarsCanBeActive() const {
2459 if (m_frame->view() != this) 2459 if (m_frame->view() != this)
2460 return false; 2460 return false;
2461 2461
2462 return !!m_frame->document(); 2462 return !!m_frame->document();
2463 } 2463 }
2464 2464
2465 void FrameView::scrollbarVisibilityChanged() { 2465 void FrameView::scrollbarVisibilityChanged() {
2466 updateScrollbarEnabledState();
2466 LayoutViewItem viewItem = layoutViewItem(); 2467 LayoutViewItem viewItem = layoutViewItem();
2467 if (!viewItem.isNull()) 2468 if (!viewItem.isNull())
2468 viewItem.clearHitTestCache(); 2469 viewItem.clearHitTestCache();
2469 } 2470 }
2470 2471
2471 IntRect FrameView::scrollableAreaBoundingBox() const { 2472 IntRect FrameView::scrollableAreaBoundingBox() const {
2472 LayoutPartItem ownerLayoutItem = frame().ownerLayoutItem(); 2473 LayoutPartItem ownerLayoutItem = frame().ownerLayoutItem();
2473 if (ownerLayoutItem.isNull()) 2474 if (ownerLayoutItem.isNull())
2474 return frameRect(); 2475 return frameRect();
2475 2476
(...skipping 1341 matching lines...) Expand 10 before | Expand all | Expand 10 after
3817 (option == FirstPass && docSize.width() <= fullVisibleSize.width() && 3818 (option == FirstPass && docSize.width() <= fullVisibleSize.width() &&
3818 docSize.height() <= fullVisibleSize.height()); 3819 docSize.height() <= fullVisibleSize.height());
3819 if (attemptToRemoveScrollbars) { 3820 if (attemptToRemoveScrollbars) {
3820 if (hScroll == ScrollbarAuto) 3821 if (hScroll == ScrollbarAuto)
3821 newHasHorizontalScrollbar = false; 3822 newHasHorizontalScrollbar = false;
3822 if (vScroll == ScrollbarAuto) 3823 if (vScroll == ScrollbarAuto)
3823 newHasVerticalScrollbar = false; 3824 newHasVerticalScrollbar = false;
3824 } 3825 }
3825 } 3826 }
3826 3827
3828 void FrameView::updateScrollbarEnabledState() {
3829 bool forceDisabled =
3830 ScrollbarTheme::theme().shouldDisableInvisibleScrollbars() &&
3831 scrollbarsHidden();
3832
3833 if (horizontalScrollbar()) {
3834 horizontalScrollbar()->setEnabled(contentsWidth() > visibleWidth() &&
3835 !forceDisabled);
3836 }
3837 if (verticalScrollbar()) {
3838 verticalScrollbar()->setEnabled(contentsHeight() > visibleHeight() &&
3839 !forceDisabled);
3840 }
3841 }
3842
3827 void FrameView::updateScrollbarGeometry() { 3843 void FrameView::updateScrollbarGeometry() {
3844 updateScrollbarEnabledState();
3828 if (horizontalScrollbar()) { 3845 if (horizontalScrollbar()) {
3829 int thickness = horizontalScrollbar()->scrollbarThickness(); 3846 int thickness = horizontalScrollbar()->scrollbarThickness();
3830 int clientWidth = visibleWidth();
3831 IntRect oldRect(horizontalScrollbar()->frameRect()); 3847 IntRect oldRect(horizontalScrollbar()->frameRect());
3832 IntRect hBarRect( 3848 IntRect hBarRect(
3833 (shouldPlaceVerticalScrollbarOnLeft() && verticalScrollbar()) 3849 (shouldPlaceVerticalScrollbarOnLeft() && verticalScrollbar())
3834 ? verticalScrollbar()->width() 3850 ? verticalScrollbar()->width()
3835 : 0, 3851 : 0,
3836 height() - thickness, 3852 height() - thickness,
3837 width() - (verticalScrollbar() ? verticalScrollbar()->width() : 0), 3853 width() - (verticalScrollbar() ? verticalScrollbar()->width() : 0),
3838 thickness); 3854 thickness);
3839 horizontalScrollbar()->setFrameRect(hBarRect); 3855 horizontalScrollbar()->setFrameRect(hBarRect);
3840 if (oldRect != horizontalScrollbar()->frameRect()) 3856 if (oldRect != horizontalScrollbar()->frameRect())
3841 setScrollbarNeedsPaintInvalidation(HorizontalScrollbar); 3857 setScrollbarNeedsPaintInvalidation(HorizontalScrollbar);
3842 3858
3843 horizontalScrollbar()->setEnabled(contentsWidth() > clientWidth); 3859 horizontalScrollbar()->setProportion(visibleWidth(), contentsWidth());
3844 horizontalScrollbar()->setProportion(clientWidth, contentsWidth());
3845 horizontalScrollbar()->offsetDidChange(); 3860 horizontalScrollbar()->offsetDidChange();
3846 } 3861 }
3847 3862
3848 if (verticalScrollbar()) { 3863 if (verticalScrollbar()) {
3849 int thickness = verticalScrollbar()->scrollbarThickness(); 3864 int thickness = verticalScrollbar()->scrollbarThickness();
3850 int clientHeight = visibleHeight();
3851 IntRect oldRect(verticalScrollbar()->frameRect()); 3865 IntRect oldRect(verticalScrollbar()->frameRect());
3852 IntRect vBarRect( 3866 IntRect vBarRect(
3853 shouldPlaceVerticalScrollbarOnLeft() ? 0 : (width() - thickness), 0, 3867 shouldPlaceVerticalScrollbarOnLeft() ? 0 : (width() - thickness), 0,
3854 thickness, 3868 thickness,
3855 height() - 3869 height() -
3856 (horizontalScrollbar() ? horizontalScrollbar()->height() : 0)); 3870 (horizontalScrollbar() ? horizontalScrollbar()->height() : 0));
3857 verticalScrollbar()->setFrameRect(vBarRect); 3871 verticalScrollbar()->setFrameRect(vBarRect);
3858 if (oldRect != verticalScrollbar()->frameRect()) 3872 if (oldRect != verticalScrollbar()->frameRect())
3859 setScrollbarNeedsPaintInvalidation(VerticalScrollbar); 3873 setScrollbarNeedsPaintInvalidation(VerticalScrollbar);
3860 3874
3861 verticalScrollbar()->setEnabled(contentsHeight() > clientHeight); 3875 verticalScrollbar()->setProportion(visibleHeight(), contentsHeight());
3862 verticalScrollbar()->setProportion(clientHeight, contentsHeight());
3863 verticalScrollbar()->offsetDidChange(); 3876 verticalScrollbar()->offsetDidChange();
3864 } 3877 }
3865 } 3878 }
3866 3879
3867 bool FrameView::adjustScrollbarExistence( 3880 bool FrameView::adjustScrollbarExistence(
3868 ComputeScrollbarExistenceOption option) { 3881 ComputeScrollbarExistenceOption option) {
3869 ASSERT(m_inUpdateScrollbars); 3882 ASSERT(m_inUpdateScrollbars);
3870 3883
3871 // If we came in here with the view already needing a layout, then go ahead 3884 // If we came in here with the view already needing a layout, then go ahead
3872 // and do that first. (This will be the common case, e.g., when the page 3885 // and do that first. (This will be the common case, e.g., when the page
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after
4613 DCHECK(m_frame->isMainFrame()); 4626 DCHECK(m_frame->isMainFrame());
4614 return m_initialViewportSize.width(); 4627 return m_initialViewportSize.width();
4615 } 4628 }
4616 4629
4617 int FrameView::initialViewportHeight() const { 4630 int FrameView::initialViewportHeight() const {
4618 DCHECK(m_frame->isMainFrame()); 4631 DCHECK(m_frame->isMainFrame());
4619 return m_initialViewportSize.height(); 4632 return m_initialViewportSize.height();
4620 } 4633 }
4621 4634
4622 } // namespace blink 4635 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/frame/FrameView.h ('k') | third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698