Bug 1421071 - Don't use fallback for invisible overlay scrollbar tracks on Mac with WebRender. r?jrmuizel draft
authorMarkus Stange <mstange@themasta.com>
Mon, 27 Nov 2017 17:35:36 -0500
changeset 703863 a1b2a5126c4321319863028aa15cf75618ff720c
parent 703857 edad7c203e396f5d8d1ba163ee1e9deb54f2eec6
child 705463 977b9b0f80e01c7103cacadec2a53b838fb9f6f6
push id91000
push userbmo:mstange@themasta.com
push dateMon, 27 Nov 2017 22:36:06 +0000
reviewersjrmuizel
bugs1421071
milestone59.0a1
Bug 1421071 - Don't use fallback for invisible overlay scrollbar tracks on Mac with WebRender. r?jrmuizel MozReview-Commit-ID: 5PJVqgGi8uD
widget/cocoa/nsNativeThemeCocoa.mm
--- a/widget/cocoa/nsNativeThemeCocoa.mm
+++ b/widget/cocoa/nsNativeThemeCocoa.mm
@@ -3075,19 +3075,28 @@ nsNativeThemeCocoa::CreateWebRenderComma
     case NS_THEME_TREEHEADERCELL:
     case NS_THEME_TREEITEM:
     case NS_THEME_TREEVIEW:
     case NS_THEME_SCALE_HORIZONTAL:
     case NS_THEME_SCALE_VERTICAL:
     case NS_THEME_RANGE:
     case NS_THEME_SCROLLBARTHUMB_VERTICAL:
     case NS_THEME_SCROLLBARTHUMB_HORIZONTAL:
+      return false;
+
     case NS_THEME_SCROLLBARTRACK_HORIZONTAL:
-    case NS_THEME_SCROLLBARTRACK_VERTICAL:
+    case NS_THEME_SCROLLBARTRACK_VERTICAL: {
+      BOOL isOverlay = nsLookAndFeel::UseOverlayScrollbars();
+      if (isOverlay && !IsParentScrollbarRolledOver(aFrame)) {
+        // There is no scrollbar track, draw nothing and return true.
+        return true;
+      }
+      // There is a scrollbar track and it needs to be drawn using fallback.
       return false;
+    }
 
     case NS_THEME_TEXTFIELD_MULTILINE: {
       if (eventState.HasState(NS_EVENT_STATE_FOCUS)) {
         // We can't draw the focus ring using webrender, so fall back to regular
         // drawing if we're focused.
         return false;
       }