Bug 1439857 - Fix too big fonts when devPixelsPerPx is set; r?stransky draft
authorJan Horak <jhorak@redhat.com>
Thu, 22 Feb 2018 10:41:30 +0100
changeset 758314 67d9be602f766a932884bc6e3b139fb36df7d026
parent 757856 dd6caba141428343fb26f3ec23a3ee1844a4b241
child 758433 59e7937022367c876aee1292dbc15784b3157d78
push id100023
push userbmo:jhorak@redhat.com
push dateThu, 22 Feb 2018 09:42:51 +0000
reviewersstransky
bugs1439857, 1431337
milestone60.0a1
Bug 1439857 - Fix too big fonts when devPixelsPerPx is set; r?stransky This fixes regression introduced by hidpi support for wayland in case devPixelsPerPx is set (bug 1431337). MozReview-Commit-ID: DOh0aTcxbVG
browser/base/content/test/performance/hidpi/browser.ini
widget/gtk/nsLookAndFeel.cpp
widget/gtk/nsNativeThemeGTK.cpp
--- a/browser/base/content/test/performance/hidpi/browser.ini
+++ b/browser/base/content/test/performance/hidpi/browser.ini
@@ -1,6 +1,6 @@
 [DEFAULT]
 prefs =
   layout.css.devPixelsPerPx='2'
 
 [../browser_startup_images.js]
-skip-if = !debug || ((os == 'win' && (os_version == '6.1')) || os == 'linux')  # hidpi results in the toolbar overflowing on Win 7 and Linux
+skip-if = !debug || (os == 'win' && (os_version == '6.1'))  # hidpi results in the toolbar overflowing on Win 7
--- a/widget/gtk/nsLookAndFeel.cpp
+++ b/widget/gtk/nsLookAndFeel.cpp
@@ -785,17 +785,17 @@ nsLookAndFeel::GetFontImpl(FontID aID, n
     default:
       aFontName = mDefaultFontName;
       aFontStyle = mDefaultFontStyle;
       break;
   }
   // Scale the font for the current monitor
   double scaleFactor = nsIWidget::DefaultScaleOverride();
   if (scaleFactor > 0) {
-    aFontStyle.size *= aDevPixPerCSSPixel;
+    aFontStyle.size *= mozilla::widget::ScreenHelperGTK::GetGTKMonitorScaleFactor();
   } else {
     // Remove effect of font scale because it has been already applied in
     // GetSystemFontInfo
     aFontStyle.size *= aDevPixPerCSSPixel / gfxPlatformGtk::GetFontScaleFactor();
   }
   return true;
 }
 
--- a/widget/gtk/nsNativeThemeGTK.cpp
+++ b/widget/gtk/nsNativeThemeGTK.cpp
@@ -74,18 +74,18 @@ GetMonitorScaleFactor(nsIFrame* aFrame)
         // We need to use GetDefaultScale() despite it returns monitor scale
         // factor multiplied by font scale factor because it is the only scale
         // updated in nsPuppetWidget.
         // Since we don't want to apply font scale factor for UI elements
         // (because GTK does not do so) we need to remove that from returned value.
         return rootWidget->GetDefaultScale().scale / gfxPlatformGtk::GetFontScaleFactor();
     }
   }
-  // We cannot return zero scale because that would lead to divide by zero
-  return (scale < 1) ? 1 : int(round(scale));
+  // Use monitor scaling factor where devPixelsPerPx is set
+  return ScreenHelperGTK::GetGTKMonitorScaleFactor();
 }
 
 nsNativeThemeGTK::nsNativeThemeGTK()
 {
   if (moz_gtk_init() != MOZ_GTK_SUCCESS) {
     memset(mDisabledWidgetTypes, 0xff, sizeof(mDisabledWidgetTypes));
     return;
   }