magnifier: Clip all crosshair lines at even distances

If the crosshair is clipped so it doesn't cover the pointer cursor,
the clip rectangle is skewed towards the bottom/right. This was
made so to accomodate the default pointer, but the unevenness stays
on other pointer cursors, and it makes the crosshair look odd on
short crosshair length.

Make all lines clip to an even distance from the center instead.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/984
This commit is contained in:
Carlos Garnacho 2020-02-06 10:38:50 +01:00 committed by Florian Müllner
parent c150fe95b9
commit bda18888c0

View File

@ -1809,12 +1809,10 @@ class Crosshairs extends Clutter.Actor {
let clipWidth = this._clipSize[0]; let clipWidth = this._clipSize[0];
let clipHeight = this._clipSize[1]; let clipHeight = this._clipSize[1];
// Note that clip, if present, is not centred on the cross hair let left = groupWidth / 2 - clipWidth / 2 - leftLength - thickness / 2;
// intersection, but biased towards the top left. let right = groupWidth / 2 + clipWidth / 2 + thickness / 2;
let left = groupWidth / 2 - clipWidth * 0.25 - leftLength; let top = groupHeight / 2 - clipHeight / 2 - topLength - thickness / 2;
let right = groupWidth / 2 + clipWidth * 0.75; let bottom = groupHeight / 2 + clipHeight / 2 + thickness / 2;
let top = groupHeight / 2 - clipHeight * 0.25 - topLength - thickness / 2;
let bottom = groupHeight / 2 + clipHeight * 0.75 + thickness / 2;
this._horizLeftHair.set_position(left, (groupHeight - thickness) / 2); this._horizLeftHair.set_position(left, (groupHeight - thickness) / 2);
this._horizRightHair.set_position(right, (groupHeight - thickness) / 2); this._horizRightHair.set_position(right, (groupHeight - thickness) / 2);
this._vertTopHair.set_position((groupWidth - thickness) / 2, top); this._vertTopHair.set_position((groupWidth - thickness) / 2, top);