gecko-dev/widget/cocoa/nsLookAndFeel.h
Chris Martin 552aa91269 Bug 1652561 - Remote Win32k calls in nsLookAndFeel::GetFontImpl() r=emilio,geckoview-reviewers,agi,froydnj
Content processes will now receive cached values for GetFontImpl() from the
parent process during initialization and whenever the theme changes.

This eliminates the use of several Win32k calls in content.

Differential Revision: https://phabricator.services.mozilla.com/D83406
2020-07-31 16:21:44 +00:00

94 lines
2.8 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsLookAndFeel_h_
#define nsLookAndFeel_h_
#include "nsXPLookAndFeel.h"
class nsLookAndFeel final : public nsXPLookAndFeel {
public:
nsLookAndFeel();
virtual ~nsLookAndFeel();
void NativeInit() final;
virtual void RefreshImpl() override;
virtual nsresult NativeGetColor(ColorID aID, nscolor& aResult) override;
virtual nsresult GetIntImpl(IntID aID, int32_t& aResult) override;
virtual nsresult GetFloatImpl(FloatID aID, float& aResult) override;
virtual bool GetFontImpl(FontID aID, nsString& aFontName,
gfxFontStyle& aFontStyle) override;
virtual char16_t GetPasswordCharacterImpl() override {
// unicode value for the bullet character, used for password textfields.
return 0x2022;
}
static bool UseOverlayScrollbars();
LookAndFeelCache GetCacheImpl() override;
void SetCacheImpl(const LookAndFeelCache& aCache) override;
protected:
static bool SystemWantsOverlayScrollbars();
static bool AllowOverlayScrollbarsOverlap();
static bool SystemWantsDarkTheme();
static nscolor ProcessSelectionBackground(nscolor aColor);
private:
int32_t mUseOverlayScrollbars;
bool mUseOverlayScrollbarsCached;
int32_t mAllowOverlayScrollbarsOverlap;
bool mAllowOverlayScrollbarsOverlapCached;
int32_t mSystemUsesDarkTheme;
bool mSystemUsesDarkThemeCached;
int32_t mPrefersReducedMotion = -1;
bool mPrefersReducedMotionCached = false;
nscolor mColorTextSelectBackground;
nscolor mColorTextSelectBackgroundDisabled;
nscolor mColorHighlight;
nscolor mColorMenuHover;
nscolor mColorTextSelectForeground;
nscolor mColorMenuHoverText;
nscolor mColorButtonText;
bool mHasColorButtonText;
nscolor mColorButtonHoverText;
nscolor mColorText;
nscolor mColorWindowText;
nscolor mColorActiveCaption;
nscolor mColorActiveBorder;
nscolor mColorGrayText;
nscolor mColorInactiveBorder;
nscolor mColorInactiveCaption;
nscolor mColorScrollbar;
nscolor mColorThreeDHighlight;
nscolor mColorMenu;
nscolor mColorWindowFrame;
nscolor mColorFieldText;
nscolor mColorDialog;
nscolor mColorDialogText;
nscolor mColorDragTargetZone;
nscolor mColorChromeActive;
nscolor mColorChromeInactive;
nscolor mColorFocusRing;
nscolor mColorTextSelect;
nscolor mColorDisabledToolbarText;
nscolor mColorMenuSelect;
nscolor mColorCellHighlight;
nscolor mColorEvenTreeRow;
nscolor mColorOddTreeRow;
nscolor mColorActiveSourceListSelection;
bool mInitialized;
void EnsureInit();
};
#endif // nsLookAndFeel_h_