Bug 1421071 - Don't use fallback for invisible overlay scrollbar tracks on Mac with WebRender. r?jrmuizel
MozReview-Commit-ID: 5PJVqgGi8uD
--- 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;
}