Bug 1351329 - Fix Windows implementation of defaultCSSScaleFactor. r?kanru draft
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Wed, 29 Mar 2017 01:40:47 +0900
changeset 552541 30bec1edd8267131b4ed56d0969cd3a32ec0243d
parent 552445 d4af7ec6cfcd9b81cd1f433a00b412de61e95b62
child 621841 1f1fe516d6527047e9c5ba48fd229d9577acdb98
push id51380
push userVYV03354@nifty.ne.jp
push dateTue, 28 Mar 2017 16:41:48 +0000
reviewerskanru
bugs1351329, 1194751
milestone55.0a1
Bug 1351329 - Fix Windows implementation of defaultCSSScaleFactor. r?kanru Unlike contentsScaleFactor, defaultCSSScaleFactor always uses WinUtils::LogToPhysFactor regardless of the DPI awareness. Bug 1194751 broke the implementation (probably unknowingly). MozReview-Commit-ID: KjtnT2ebgHK
widget/windows/ScreenHelperWin.cpp
--- a/widget/windows/ScreenHelperWin.cpp
+++ b/widget/windows/ScreenHelperWin.cpp
@@ -22,25 +22,26 @@ CollectMonitors(HMONITOR aMon, HDC, LPRE
   BOOL success = FALSE;
   MONITORINFO info;
   info.cbSize = sizeof(MONITORINFO);
   success = ::GetMonitorInfoW(aMon, &info);
   if (!success) {
     MOZ_LOG(sScreenLog, LogLevel::Error, ("GetMonitorInfoW failed"));
     return TRUE; // continue the enumeration
   }
+  double scale = WinUtils::LogToPhysFactor(aMon);
   DesktopToLayoutDeviceScale contentsScaleFactor;
   if (WinUtils::IsPerMonitorDPIAware()) {
     contentsScaleFactor.scale = 1.0;
   } else {
-    contentsScaleFactor.scale = WinUtils::LogToPhysFactor(aMon);
+    contentsScaleFactor.scale = scale;
   }
   CSSToLayoutDeviceScale defaultCssScaleFactor(nsIWidget::DefaultScaleOverride());
   if (defaultCssScaleFactor.scale <= 0.0) {
-    defaultCssScaleFactor.scale = contentsScaleFactor.scale;
+    defaultCssScaleFactor.scale = scale;
   }
   LayoutDeviceIntRect rect(info.rcMonitor.left, info.rcMonitor.top,
                            info.rcMonitor.right - info.rcMonitor.left,
                            info.rcMonitor.bottom - info.rcMonitor.top);
   LayoutDeviceIntRect availRect(info.rcWork.left, info.rcWork.top,
                                 info.rcWork.right - info.rcWork.left,
                                 info.rcWork.bottom - info.rcWork.top);
   //XXX not sure how to get this info for multiple monitors, this might be ok...