Bug 1353596 part 2 - Make GTK's GetFontImpl use aDevPixPerCSSPixel param. r?karlt
MozReview-Commit-ID: 3365NcUhoBc
--- a/widget/gtk/ScreenHelperGTK.cpp
+++ b/widget/gtk/ScreenHelperGTK.cpp
@@ -137,18 +137,18 @@ ScreenHelperGTK::GetGTKMonitorScaleFacto
// supports a variable scale factor per display.
GdkScreen *screen = gdk_screen_get_default();
return sGdkScreenGetMonitorScaleFactorPtr(screen, 0);
}
#endif
return 1;
}
-static float
-GetDefaultCssScale()
+float
+ScreenHelperGTK::GetDefaultCssScale()
{
double scale = nsIWidget::DefaultScaleOverride();
if (scale <= 0.0) {
scale = ScreenHelperGTK::GetGTKMonitorScaleFactor() * gfxPlatformGtk::GetDPIScale();
}
return scale;
}
@@ -170,17 +170,17 @@ MakeScreen(GdkWindow* aRootWindow)
{
RefPtr<Screen> screen;
gint scale = ScreenHelperGTK::GetGTKMonitorScaleFactor();
gint width = gdk_screen_width() * scale;
gint height = gdk_screen_height() * scale;
uint32_t pixelDepth = GetGTKPixelDepth();
DesktopToLayoutDeviceScale contentsScale(1.0);
- CSSToLayoutDeviceScale defaultCssScale(GetDefaultCssScale());
+ CSSToLayoutDeviceScale defaultCssScale(ScreenHelperGTK::GetDefaultCssScale());
LayoutDeviceIntRect rect;
LayoutDeviceIntRect availRect;
rect = availRect = LayoutDeviceIntRect(0, 0, width, height);
#ifdef MOZ_X11
// We need to account for the taskbar, etc in the available rect.
// See http://freedesktop.org/Standards/wm-spec/index.html#id2767771
@@ -259,17 +259,17 @@ MakeScreen(GdkWindow* aRootWindow)
static already_AddRefed<Screen>
MakeScreen(const XineramaScreenInfo& aScreenInfo)
{
LayoutDeviceIntRect xineRect(aScreenInfo.x_org, aScreenInfo.y_org,
aScreenInfo.width, aScreenInfo.height);
uint32_t pixelDepth = GetGTKPixelDepth();
DesktopToLayoutDeviceScale contentsScale(1.0);
- CSSToLayoutDeviceScale defaultCssScale(GetDefaultCssScale());
+ CSSToLayoutDeviceScale defaultCssScale(ScreenHelperGTK::GetDefaultCssScale());
MOZ_LOG(sScreenLog, LogLevel::Debug, ("New screen [%d %d %d %d %d %f]",
xineRect.x, xineRect.y,
xineRect.width, xineRect.height,
pixelDepth, defaultCssScale.scale));
RefPtr<Screen> screen = new Screen(xineRect, xineRect,
pixelDepth, pixelDepth,
contentsScale, defaultCssScale);
--- a/widget/gtk/ScreenHelperGTK.h
+++ b/widget/gtk/ScreenHelperGTK.h
@@ -22,16 +22,17 @@ class ScreenHelperGTK final : public Scr
{
public:
ScreenHelperGTK();
~ScreenHelperGTK() override;
float GetSystemDefaultScale() override;
static gint GetGTKMonitorScaleFactor();
+ static float GetDefaultCssScale();
#ifdef MOZ_X11
Atom NetWorkareaAtom() { return mNetWorkareaAtom; }
#endif
// For internal use from signal callback functions
void RefreshScreens();
--- a/widget/gtk/nsLookAndFeel.cpp
+++ b/widget/gtk/nsLookAndFeel.cpp
@@ -926,24 +926,19 @@ GetSystemFontInfo(GtkWidget *aWidget,
// |size| is now either pixels or pango-points (not Mozilla-points!)
if (!pango_font_description_get_size_is_absolute(desc)) {
// |size| is in pango-points, so convert to pixels.
size *= float(gfxPlatformGtk::GetDPI()) / POINTS_PER_INCH_FLOAT;
}
- // Scale fonts up on HiDPI displays.
- // This would be done automatically with cairo, but we manually manage
- // the display scale for platform consistency.
- size *= ScreenHelperGTK::GetGTKMonitorScaleFactor();
-
- // |size| is now pixels
-
- aFontStyle->size = size;
+ // Scale fonts to unzoomed CSS pixel
+ aFontStyle->size = size * ScreenHelperGTK::GetGTKMonitorScaleFactor()
+ / ScreenHelperGTK::GetDefaultCssScale();
pango_font_description_free(desc);
}
static void
GetSystemFontInfo(LookAndFeel::FontID aID,
nsString *aFontName,
gfxFontStyle *aFontStyle)
@@ -1056,16 +1051,17 @@ nsLookAndFeel::GetFontImpl(FontID aID, n
if (!*isCached) {
GetSystemFontInfo(aID, cachedFontName, cachedFontStyle);
*isCached = true;
}
aFontName = *cachedFontName;
aFontStyle = *cachedFontStyle;
+ aFontStyle.size *= aDevPixPerCSSPixel;
return true;
}
void
nsLookAndFeel::EnsureInit()
{
GdkColor colorValue;
GdkColor *colorValuePtr;