magnifier: Include SSD when calculating screen coordinates for events
When calculating the on screen coordinates of events from the window relative coordinates, using the frame rect will include the decorations added by the WM for SSD windows. This was causing the calculated coordinates to be slightly off. Fix this by using the client rect for SSD windows. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2319>
This commit is contained in:
parent
4592337ce5
commit
1952549788
@ -845,14 +845,18 @@ var ZoomRegion = class ZoomRegion {
|
|||||||
throw new Error(`Failed to validate parent window: ${e}`);
|
throw new Error(`Failed to validate parent window: ${e}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const focusWindowRect = global.display.focus_window?.get_frame_rect();
|
const { focusWindow } = global.display;
|
||||||
if (!focusWindowRect)
|
if (!focusWindow)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
let windowRect = focusWindow.get_frame_rect();
|
||||||
|
if (!focusWindow.is_client_decorated())
|
||||||
|
windowRect = focusWindow.frame_rect_to_client_rect(windowRect);
|
||||||
|
|
||||||
const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
const screenSpaceExtents = new Atspi.Rect({
|
const screenSpaceExtents = new Atspi.Rect({
|
||||||
x: focusWindowRect.x + (scaleFactor * extents.x),
|
x: windowRect.x + (scaleFactor * extents.x),
|
||||||
y: focusWindowRect.y + (scaleFactor * extents.y),
|
y: windowRect.y + (scaleFactor * extents.y),
|
||||||
width: scaleFactor * extents.width,
|
width: scaleFactor * extents.width,
|
||||||
height: scaleFactor * extents.height,
|
height: scaleFactor * extents.height,
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user