Bug 1749531 - Allow to override native theme scrollbar styles. r=mstange

Depends on D136129

Differential Revision: https://phabricator.services.mozilla.com/D136130
This commit is contained in:
Emilio Cobos Álvarez 2022-01-25 21:31:44 +00:00
parent 94586650a4
commit f39ab4f51a
5 changed files with 9 additions and 11 deletions

View File

@ -177,7 +177,10 @@ void Theme::Shutdown() {
void Theme::LookAndFeelChanged() {
ThemeColors::RecomputeAccentColors();
if (gNonNativeInstance) {
gNonNativeInstance->SetScrollbarDrawing(Theme::ScrollbarStyle());
gNonNativeInstance->SetScrollbarDrawing(ScrollbarStyle());
}
if (gNativeInstance) {
gNativeInstance->SetScrollbarDrawing(ScrollbarStyle());
}
}
@ -1400,12 +1403,8 @@ UniquePtr<ScrollbarDrawing> Theme::ScrollbarStyle() {
case 5:
return MakeUnique<ScrollbarDrawingWin11>();
default:
return DefaultPlatformScrollbarStyle();
break;
}
}
/* static */
UniquePtr<ScrollbarDrawing> Theme::DefaultPlatformScrollbarStyle() {
// Default to native scrollbar style for each platform.
#ifdef XP_WIN
if (IsWin11OrLater()) {

View File

@ -95,7 +95,6 @@ class Theme : protected nsNativeTheme, public nsITheme {
nscoord GetCheckboxRadioPrefSize() override;
static UniquePtr<ScrollbarDrawing> DefaultPlatformScrollbarStyle();
static UniquePtr<ScrollbarDrawing> ScrollbarStyle();
protected:

View File

@ -399,7 +399,7 @@ static bool IsInSourceList(nsIFrame* aFrame) {
NS_IMPL_ISUPPORTS_INHERITED(nsNativeThemeCocoa, nsNativeTheme, nsITheme)
nsNativeThemeCocoa::nsNativeThemeCocoa() : ThemeCocoa(DefaultPlatformScrollbarStyle()) {
nsNativeThemeCocoa::nsNativeThemeCocoa() : ThemeCocoa(ScrollbarStyle()) {
NS_OBJC_BEGIN_TRY_IGNORE_BLOCK;
kMaxFocusRingWidth = 7;

View File

@ -94,7 +94,7 @@ static inline gint GetMonitorScaleFactor(nsIFrame* aFrame) {
return GetMonitorScaleFactor(aFrame->PresContext());
}
nsNativeThemeGTK::nsNativeThemeGTK() : Theme(DefaultPlatformScrollbarStyle()) {
nsNativeThemeGTK::nsNativeThemeGTK() : Theme(ScrollbarStyle()) {
if (moz_gtk_init() != MOZ_GTK_SUCCESS) {
memset(mDisabledWidgetTypes, 0xff, sizeof(mDisabledWidgetTypes));
return;
@ -1670,7 +1670,7 @@ nsITheme::Transparency nsNativeThemeGTK::GetWidgetTransparency(
already_AddRefed<Theme> do_CreateNativeThemeDoNotUseDirectly() {
if (gfxPlatform::IsHeadless()) {
return do_AddRef(new Theme(Theme::DefaultPlatformScrollbarStyle()));
return do_AddRef(new Theme(Theme::ScrollbarStyle()));
}
return do_AddRef(new nsNativeThemeGTK());
}

View File

@ -51,7 +51,7 @@ extern mozilla::LazyLogModule gWindowsLog;
namespace mozilla::widget {
nsNativeThemeWin::nsNativeThemeWin()
: Theme(DefaultPlatformScrollbarStyle()),
: Theme(ScrollbarStyle()),
mProgressDeterminateTimeStamp(TimeStamp::Now()),
mProgressIndeterminateTimeStamp(TimeStamp::Now()),
mBorderCacheValid(),