зеркало из https://github.com/mozilla/gecko-dev.git
Bug 868396 - Add pref to enable/disable overlay scrollbars on Mac OSX 10.7+. r=smichaud
This commit is contained in:
Родитель
754efdf384
Коммит
f0cdea178b
|
@ -24,13 +24,13 @@ public:
|
|||
return 0x2022;
|
||||
}
|
||||
|
||||
static bool UseOverlayScrollbars();
|
||||
|
||||
protected:
|
||||
|
||||
// Apple hasn't defined a constant for scollbars with two arrows on each end, so we'll use this one.
|
||||
static const int kThemeScrollBarArrowsBoth = 2;
|
||||
static const int kThemeScrollBarArrowsUpperLeft = 3;
|
||||
|
||||
static bool UseOverlayScrollbars();
|
||||
};
|
||||
|
||||
#endif // nsLookAndFeel_h_
|
||||
|
|
|
@ -2286,13 +2286,15 @@ nsNativeThemeCocoa::DrawWidgetBackground(nsRenderingContext* aContext,
|
|||
|
||||
case NS_THEME_SCROLLBAR_SMALL:
|
||||
case NS_THEME_SCROLLBAR:
|
||||
if (!nsLookAndFeel::UseOverlayScrollbars()) {
|
||||
if (nsLookAndFeel::GetInt(
|
||||
nsLookAndFeel::eIntID_UseOverlayScrollbars) == 0) {
|
||||
DrawScrollbar(cgContext, macRect, aFrame);
|
||||
}
|
||||
break;
|
||||
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
||||
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
|
||||
if (nsLookAndFeel::UseOverlayScrollbars()) {
|
||||
if (nsLookAndFeel::GetInt(
|
||||
nsLookAndFeel::eIntID_UseOverlayScrollbars) != 0) {
|
||||
BOOL isHorizontal = (aWidgetType == NS_THEME_SCROLLBAR_THUMB_HORIZONTAL);
|
||||
BOOL isRolledOver = CheckBooleanAttr(GetParentScrollbarFrame(aFrame),
|
||||
nsGkAtoms::hover);
|
||||
|
@ -2336,7 +2338,8 @@ nsNativeThemeCocoa::DrawWidgetBackground(nsRenderingContext* aContext,
|
|||
break;
|
||||
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
||||
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
||||
if (nsLookAndFeel::UseOverlayScrollbars() &&
|
||||
if (nsLookAndFeel::GetInt(
|
||||
nsLookAndFeel::eIntID_UseOverlayScrollbars) != 0 &&
|
||||
CheckBooleanAttr(GetParentScrollbarFrame(aFrame), nsGkAtoms::hover)) {
|
||||
BOOL isHorizontal = (aWidgetType == NS_THEME_SCROLLBAR_TRACK_HORIZONTAL);
|
||||
const BOOL isOnTopOfBrightBackground = YES; // TODO: detect this properly
|
||||
|
@ -2545,7 +2548,8 @@ nsNativeThemeCocoa::GetWidgetBorder(nsDeviceContext* aContext,
|
|||
}
|
||||
}
|
||||
|
||||
if (nsLookAndFeel::UseOverlayScrollbars()) {
|
||||
if (nsLookAndFeel::GetInt(
|
||||
nsLookAndFeel::eIntID_UseOverlayScrollbars) != 0) {
|
||||
if (isHorizontal) {
|
||||
aResult->SizeTo(1, 2, 1, 1);
|
||||
} else {
|
||||
|
@ -2802,7 +2806,8 @@ nsNativeThemeCocoa::GetMinimumWidgetSize(nsRenderingContext* aContext,
|
|||
{
|
||||
*aIsOverridable = false;
|
||||
|
||||
if (nsLookAndFeel::UseOverlayScrollbars()) {
|
||||
if (nsLookAndFeel::GetInt(
|
||||
nsLookAndFeel::eIntID_UseOverlayScrollbars) != 0) {
|
||||
aResult->SizeTo(16, 16);
|
||||
break;
|
||||
}
|
||||
|
@ -3035,7 +3040,8 @@ nsNativeThemeCocoa::ThemeSupportsWidget(nsPresContext* aPresContext, nsIFrame* a
|
|||
// overriden, and the custom transparent resizer looks better when
|
||||
// scrollbars are not present.
|
||||
nsIScrollableFrame* scrollFrame = do_QueryFrame(parentFrame);
|
||||
return (!nsLookAndFeel::UseOverlayScrollbars() &&
|
||||
return (nsLookAndFeel::GetInt(
|
||||
nsLookAndFeel::eIntID_UseOverlayScrollbars) == 0 &&
|
||||
scrollFrame && scrollFrame->GetScrollbarVisibility());
|
||||
break;
|
||||
}
|
||||
|
@ -3091,7 +3097,9 @@ nsNativeThemeCocoa::GetWidgetTransparency(nsIFrame* aFrame, uint8_t aWidgetType)
|
|||
|
||||
case NS_THEME_SCROLLBAR_SMALL:
|
||||
case NS_THEME_SCROLLBAR:
|
||||
return nsLookAndFeel::UseOverlayScrollbars() ? eTransparent : eOpaque;
|
||||
return nsLookAndFeel::GetInt(
|
||||
nsLookAndFeel::eIntID_UseOverlayScrollbars) != 0 ?
|
||||
eTransparent : eOpaque;
|
||||
|
||||
case NS_THEME_STATUSBAR:
|
||||
// Knowing that scrollbars and statusbars are opaque improves
|
||||
|
|
Загрузка…
Ссылка в новой задаче