mutter/src/ui
Sebastian Keller ff4f8d2aa0 frames: Consider events on fullscreen windows to be on the client area
Fullscreen X11 windows that attempt to change the resolution on Wayland
use a surface viewport to achieve this without affecting the resolution
of the display. This however also means that pointer events will be
delivered in the display coordinates while the code handling the window
frame is not aware of any such viewport scaling. So a right click
outside of the area corresponding to the new resolution will not be
considered to be on the client area. And since the only area that is
ignored when determining whether to perform the right click action, such
as opening the context menu, is the client area, this will result in the
action being performed, despite happening on the (scaled) client area.

While it would be possible to scale the event coordinates so that
get_control() correctly determines the frame element the cursor is on,
viewport scaling only affects fullscreen windows. Since fullscreen
windows have no frame, we can always assume that if the window gets
delivered an event for a fullscreen window, it is on the client area
without doing any additional calculations.

Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/1592

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1661>
2021-01-28 15:30:29 +00:00
..
frames.c frames: Consider events on fullscreen windows to be on the client area 2021-01-28 15:30:29 +00:00
frames.h frame: Pass the frame area for get_mask() 2020-01-29 10:44:50 +00:00
theme-private.h ui: Remove fallback app menu 2019-01-30 18:39:42 +00:00
theme.c Make meta_* logging utilities not require line break 2020-10-08 16:38:41 +02:00
ui.c *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
ui.h meta: Hide libmutter symbols by default and selectively export them 2019-01-23 14:18:13 +01:00