mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-17 23:24:51 +00:00
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
1 changed files with 8 additions and 4 deletions
|
|
@ -845,14 +845,18 @@ var ZoomRegion = class ZoomRegion {
|
|||
throw new Error(`Failed to validate parent window: ${e}`);
|
||||
}
|
||||
|
||||
const focusWindowRect = global.display.focus_window?.get_frame_rect();
|
||||
if (!focusWindowRect)
|
||||
const { focusWindow } = global.display;
|
||||
if (!focusWindow)
|
||||
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 screenSpaceExtents = new Atspi.Rect({
|
||||
x: focusWindowRect.x + (scaleFactor * extents.x),
|
||||
y: focusWindowRect.y + (scaleFactor * extents.y),
|
||||
x: windowRect.x + (scaleFactor * extents.x),
|
||||
y: windowRect.y + (scaleFactor * extents.y),
|
||||
width: scaleFactor * extents.width,
|
||||
height: scaleFactor * extents.height,
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue