mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 729528 - Follow-up to fix incorrect calculation. r=Cwiiis
This commit is contained in:
parent
6ea043acbc
commit
8d304ca104
@ -1611,17 +1611,35 @@ Tab.prototype = {
|
|||||||
if (zoom <= 0 || resolution <= 0)
|
if (zoom <= 0 || resolution <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// "zoom" is the user-visible zoom of the "this" tab
|
||||||
|
// "resolution" is the zoom at which we wish gecko to render "this" tab at
|
||||||
|
// these two may be different if we are, for example, trying to render a
|
||||||
|
// large area of the page at low resolution because the user is panning real
|
||||||
|
// fast.
|
||||||
|
// The viewport values (aViewportX and aViewportY) correspond to the
|
||||||
|
// gecko scroll position, and are zoom-multiplied. The display port rect
|
||||||
|
// values (aDisplayPort), however, is in CSS pixels multiplied by the desired
|
||||||
|
// rendering resolution. Therefore care must be taken when doing math with
|
||||||
|
// these sets of values, to ensure that they are normalized to the same coordinate
|
||||||
|
// space first.
|
||||||
|
|
||||||
let element = this.browser.contentDocument.documentElement;
|
let element = this.browser.contentDocument.documentElement;
|
||||||
if (!element)
|
if (!element)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// we should never be drawing background tabs at resolutions other than the user-
|
||||||
|
// visible zoom. for foreground tabs, however, if we are drawing at some other
|
||||||
|
// resolution, we need to set the resolution as specified.
|
||||||
let cwu = window.top.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
|
let cwu = window.top.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
|
||||||
if (BrowserApp.selectedTab == this)
|
if (BrowserApp.selectedTab == this)
|
||||||
cwu.setResolution(resolution, resolution);
|
cwu.setResolution(resolution, resolution);
|
||||||
else if (resolution != zoom)
|
else if (resolution != zoom)
|
||||||
dump("Warning: setDisplayPort resolution did not match zoom for background tab!");
|
dump("Warning: setDisplayPort resolution did not match zoom for background tab!");
|
||||||
cwu.setDisplayPortForElement((aDisplayPort.left - aViewportX) / resolution,
|
|
||||||
(aDisplayPort.top - aViewportY) / resolution,
|
// finally, we set the display port, taking care to convert everything into the CSS-pixel
|
||||||
|
// coordinate space, because that is what the function accepts.
|
||||||
|
cwu.setDisplayPortForElement((aDisplayPort.left / resolution) - (aViewportX / zoom),
|
||||||
|
(aDisplayPort.top / resolution) - (aViewportY / zoom),
|
||||||
(aDisplayPort.right - aDisplayPort.left) / resolution,
|
(aDisplayPort.right - aDisplayPort.left) / resolution,
|
||||||
(aDisplayPort.bottom - aDisplayPort.top) / resolution,
|
(aDisplayPort.bottom - aDisplayPort.top) / resolution,
|
||||||
element);
|
element);
|
||||||
|
Loading…
Reference in New Issue
Block a user