magnifier: Update screen position on activation
The default ZoomRegion is created at startup and only updated if it is active when the monitor setup changes. Thus when reactivating the magnifier after a display change, the viewport used is still the one that been computed with the old screen geometry values. Move screen update code inside a function and call it both when activating the zoom region and when the monitor changes during a zoom session. Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1120
This commit is contained in:
parent
df9ddf96a5
commit
a298943fac
@ -763,6 +763,18 @@ var ZoomRegion = class ZoomRegion {
|
|||||||
this._updateFocus.bind(this));
|
this._updateFocus.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_updateScreenPosition() {
|
||||||
|
if (this._screenPosition == GDesktopEnums.MagnifierScreenPosition.NONE)
|
||||||
|
this._setViewPort({
|
||||||
|
x: this._viewPortX,
|
||||||
|
y: this._viewPortY,
|
||||||
|
width: this._viewPortWidth,
|
||||||
|
height: this._viewPortHeight
|
||||||
|
});
|
||||||
|
else
|
||||||
|
this.setScreenPosition(this._screenPosition);
|
||||||
|
}
|
||||||
|
|
||||||
_updateFocus(caller, event) {
|
_updateFocus(caller, event) {
|
||||||
let component = event.source.get_component_iface();
|
let component = event.source.get_component_iface();
|
||||||
if (!component || event.detail1 != 1)
|
if (!component || event.detail1 != 1)
|
||||||
@ -808,6 +820,7 @@ var ZoomRegion = class ZoomRegion {
|
|||||||
this._createActors();
|
this._createActors();
|
||||||
if (this._isMouseOverRegion())
|
if (this._isMouseOverRegion())
|
||||||
this._magnifier.hideSystemCursor();
|
this._magnifier.hideSystemCursor();
|
||||||
|
this._updateScreenPosition();
|
||||||
this._updateMagViewGeometry();
|
this._updateMagViewGeometry();
|
||||||
this._updateCloneGeometry();
|
this._updateCloneGeometry();
|
||||||
this._updateMousePosition();
|
this._updateMousePosition();
|
||||||
@ -1565,14 +1578,7 @@ var ZoomRegion = class ZoomRegion {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
this._background.set_size(global.screen_width, global.screen_height);
|
this._background.set_size(global.screen_width, global.screen_height);
|
||||||
|
this._updateScreenPosition();
|
||||||
if (this._screenPosition == GDesktopEnums.MagnifierScreenPosition.NONE)
|
|
||||||
this._setViewPort({ x: this._viewPortX,
|
|
||||||
y: this._viewPortY,
|
|
||||||
width: this._viewPortWidth,
|
|
||||||
height: this._viewPortHeight });
|
|
||||||
else
|
|
||||||
this.setScreenPosition(this._screenPosition);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user