Bug 1276183 - Use correct units when interfacing with nsIScreenManager in tabbrowser.xml. r?jfkthame
MozReview-Commit-ID: yEh6cPOChq
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -6121,21 +6121,29 @@
// the tabbar (half a tab)
let endScreenY = bo.screenY + 1.5 * bo.height;
if (eY < endScreenY && eY > window.screenY)
return;
}
// screen.availLeft et. al. only check the screen that this window is on,
// but we want to look at the screen the tab is being dropped onto.
+ var screenManager = Cc["@mozilla.org/gfx/screenmanager;1"]
+ .getService(Ci.nsIScreenManager);
+ var scaleFactor = screenManager.primaryScreen.defaultCSSScaleFactor;
+
var sX = {}, sY = {}, sWidth = {}, sHeight = {};
- Cc["@mozilla.org/gfx/screenmanager;1"]
- .getService(Ci.nsIScreenManager)
- .screenForRect(eX, eY, 1, 1)
- .GetAvailRect(sX, sY, sWidth, sHeight);
+ screenManager.screenForRect(eX * scaleFactor, eY * scaleFactor, 1, 1)
+ .GetAvailRect(sX, sY, sWidth, sHeight);
+
+ sX.value /= scaleFactor;
+ sY.value /= scaleFactor;
+ sWidth.value /= scaleFactor;
+ sHeight.value /= scaleFactor;
+
// ensure new window entirely within screen
var winWidth = Math.min(window.outerWidth, sWidth.value);
var winHeight = Math.min(window.outerHeight, sHeight.value);
var left = Math.min(Math.max(eX - draggedTab._dragData.offsetX, sX.value),
sX.value + sWidth.value - winWidth);
var top = Math.min(Math.max(eY - draggedTab._dragData.offsetY, sY.value),
sY.value + sHeight.value - winHeight);