Carlos Garnacho
feec896d85
core: Simplify meta_display_handle_event()
...
With all early "goto out" paths bypassing wayland, we can pretty
much avoid the goto and use early returns in this function. This
will hopefully improve readability.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3420 >
2024-02-13 12:36:27 +01:00
Carlos Garnacho
c496b17b3d
core: Move display->current_time out of meta_display_handle_event()
...
While this updates the display current time a bit earlier, it allows
for early returns in the big bad function.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3420 >
2024-02-13 12:36:26 +01:00
Carlos Garnacho
93a9e7f3f4
core: Move code ignoring events on windows with modals to Wayland
...
This is Wayland specific code, handle it directly in MetaWaylandPointer.
This also fixes issues with the crossing event itself managing to reach
the window occluded by modals.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3420 >
2024-02-13 12:36:26 +01:00
Carlos Garnacho
e7f436bc39
compositor: Refactor MetaDnD wayland event handling
...
Hook MetaDnD event delivery in the case of Wayland DnD ops
directly in the Wayland code, instead of indirectly in core/
code.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3420 >
2024-02-13 12:36:26 +01:00
Carlos Garnacho
2a584a8f01
wayland: Make use of Wayland event grabbing mechanism
...
Enable grabbing input for popups, and drag-and-drop. Since the very
switch to using ClutterGrab underneath Wayland grabs will challenge
assumptions in existing code, these had to change in one go. A notable
one is that meta_display_windows_are_interactable() is not 100% true
anymore for xdg_popups, at least not the same.
Another change happening in lockstep is MetaDnD no longer having
to funnel events to Wayland, since the grab triggered by Wayland DnD
is now a cause of "compositor grabs", and will naturally receive events
as long as it hold. while "modal".
A number of ad-hoc checks for grabbing state has also been dropped
from src/wayland/ internals, since again Wayland grabs are a reason
for Clutter grabs, plus the mechanism itself will already take care
of focus loss and restoration.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3420 >
2024-02-13 12:36:26 +01:00
Bilal Elmoussaoui
fa59796afd
meta: Drop deprecated methods
...
Both functions were deprecated 20months ago, so should be safe
to remove now
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3573 >
2024-02-09 18:03:09 +01:00
Bilal Elmoussaoui
cd245bce0c
core/stack: Check client type before getting group
...
Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/3283
Fixes: 43351b483
("window: Move group to WindowX11")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3572 >
2024-02-08 22:05:39 +01:00
Bilal Elmoussaoui
5d4cfb607c
core/stack-tracker: Guard X11 usages
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3555 >
2024-02-08 16:55:06 +01:00
Bilal Elmoussaoui
e1e6534eb2
group: Move various functions to MetaWindowX11
...
Except meta_window_x11_get_group, which is still used by GNOME Shell
and we can't make it a private API for now.
Will need further investigation and could be done as a future
step
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3555 >
2024-02-08 16:55:06 +01:00
Bilal Elmoussaoui
f0c22cb3bc
core: Guard MetaGroup usage
...
For now, we just guard part of the group header as it is
consumed by gnome-shell. Ideally, we would drop that use case and make
the whole header private.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3555 >
2024-02-08 16:54:50 +01:00
Bilal Elmoussaoui
43351b483f
window: Move group to WindowX11
...
Which means meta_window_get_group now requires a x11 client type,
so ensure we don't call it on a wayland client
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3555 >
2024-02-08 16:24:58 +01:00
Bilal Elmoussaoui
e17d20191e
display: Refactor IN_TAB_CHAIN macro
...
The macro used to call into a bunch of other macros so let us turn it
into a single function.
This would simplify things for the next commit that puts the MetaGroup
usage behind a X11 ifdef
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3555 >
2024-02-08 16:24:58 +01:00
Peter Hutterer
e928128743
core: Handle Alt in the MetaPadActionMapper
...
In the parser we set MOD1 if we encounter <Alt>, so let's send the
respective key event here.
Closes: gnome-control-center#2593
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3522 >
2024-02-01 10:22:22 +00:00
Bilal Elmoussaoui
3774554028
core/window: Guard some x11 calls
...
Also drops an unused x11 header
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3540 >
2024-01-31 12:25:39 +00:00
Bilal Elmoussaoui
e68a8a0a17
core/launch-context: Guard X11 calls
...
Also make use of display where possible to avoid a warning
about an unused display variable if one tries to build without x11
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3540 >
2024-01-31 12:25:39 +00:00
Bilal Elmoussaoui
8922ada681
core/context: Guard X11 calls
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3540 >
2024-01-31 12:25:39 +00:00
Bilal Elmoussaoui
c388abe1e3
core/context: Make notify_ready vfunc optional
...
As it is used only in a X11 build for session management
See next commit
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3540 >
2024-01-31 12:25:39 +00:00
Peter Hutterer
a26d08d3bc
core: Detect pad ring wraparound values
...
A ring will naturally go from 355 degrees to 5 degrees (or vice versa),
giving us the illusion of a direction change. Avoid this by assuming
that any change larger than 180 degrees is actually the equivalent
smaller change in the other direction.
Closes #1885
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3545 >
2024-01-27 10:44:51 +00:00
Bilal Elmoussaoui
92ef543a44
window: Clarify rectangle type
...
It is no longer a cairo rectangle
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3530 >
2024-01-27 10:03:15 +00:00
Florian Müllner
1ab4faaf18
place: Fix centering transients over parent
...
Transient dialogs are meant to be placed centered over their
parent. However as we don't use the DIALOG window type on
wayland, this currently only works for modal dialogs.
To fix this, also apply the policy to NORMAL windows for
wayland clients.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3533 >
2024-01-18 16:07:15 +00:00
Bilal Elmoussaoui
d90a938c17
core: Use subclassing macros for GestureTracker
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3520 >
2024-01-13 17:22:26 +00:00
Simon McVittie
ecdd2aeb85
workspace: Don't crash on invalid argument to meta_workspace_index
...
Mitigates: https://gitlab.gnome.org/GNOME/mutter/-/issues/2559
Mitigates: https://bugs.debian.org/1024438
Signed-off-by: Simon McVittie <smcv@debian.org>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2774 >
2024-01-12 15:24:14 +00:00
Carlos Garnacho
962eb9e054
wayland: Hook focus synchronization to MetaDisplay signals
...
Instead of letting the MetaDisplay be aware of the Wayland compositor,
and take care of updating its focus. This makes the MetaWaylandCompositor
able to track focus changes by itself, using MetaDisplay as the source
of truth.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3511 >
2024-01-12 14:39:17 +00:00
Carlos Garnacho
9383171958
wayland: Move Wayland focus synchronization code out of core
...
Handle focus synchronization in MetaWaylandCompositor itself. This
is so far plumbed so that MetaDisplay still drives focus synchronization
directly.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3511 >
2024-01-12 14:39:17 +00:00
Bilal Elmoussaoui
94f9d88371
x11: Drop error trap helpers
...
They are no longer that useful as they end up calling
mtk functions nowadays
Followup of https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3230
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3483 >
2024-01-10 13:58:18 +00:00
Bilal Elmoussaoui
0236506cff
window: Move has_pointer_x11 to WindowX11
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
19a36b8879
window: Stop storing xtransient_for field
...
Instead retrieve the associated Window from the xwindow property.
Avoids having a vfunc to handle the get_transient_for differences
between Wayland and x11
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
5e098eadce
window: Move user_time_window to WindowX11
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
9e150fda42
window: Move xgroup_leader to WindowX11
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
7d6e7773bf
window: Make Window.set_transient_for a vfunc
...
So we can move the xgroup_leader to WindowX11. See next commit
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
c0685fe29b
window: Move xclient_leader to WindowX11
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
bc9cd123e9
window: Move xwindow to WindowX11
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
d98b0eb71e
window: Move xvisual to WindowX11
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3211 >
2024-01-09 18:59:36 +00:00
Bilal Elmoussaoui
6f9e75b6f2
boxes: Move Rectangle.is_adjacent_to to Mtk
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3501 >
2024-01-09 18:47:34 +00:00
Bilal Elmoussaoui
fcc8cfff11
boxes: Move Rectangle.scale_double to Mtk
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3501 >
2024-01-09 18:47:34 +00:00
Bilal Elmoussaoui
59457dff81
boxes: Move Rectangle.crop_and_scale to Mtk
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3501 >
2024-01-09 18:47:34 +00:00
Zander Brown
b1dd6973df
workspace-manager: Accessors for layout-{columns,rows}
...
This will allow C code in shell to avoid going though `g_object_get`,
and in future GJS will also be able to take advantage giving a slender
yet not unwelcome boost to perf in some animations
(Semi relates to https://gitlab.gnome.org/GNOME/mutter/-/issues/3083 )
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3351 >
2024-01-09 16:38:25 +00:00
Bilal Elmoussaoui
346e9a7f2c
docs: Remove remaining SECTIONs
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3489 >
2024-01-09 15:23:04 +00:00
Bilal Elmoussaoui
74cab06b72
core: Drop unused private functions
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3492 >
2024-01-09 13:14:35 +00:00
Bilal Elmoussaoui
9e4d1f51ee
misc: Drop remaining nick/blurbs
...
Those were added again after we dropped their usage in the codebase
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3498 >
2024-01-08 11:54:58 +00:00
Bilal Elmoussaoui
5964ccb385
wayland: Fix building without native backend
...
Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/1026
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3480 >
2024-01-03 14:46:41 +01:00
Mart Raudsepp
d7db784b54
build: Fix building without wayland headers
...
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3046
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3471 >
2024-01-03 10:48:00 +00:00
Carlos Garnacho
4081d409c6
core: Avoid checks for no_focus_window
...
This window is set as the key focus in the MetaX11Display when the
MetaDisplay focus is NULL, we can check for that directly instead of
its aftereffects.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3269 >
2023-12-18 17:55:27 +00:00
Carlos Garnacho
7fbc0ccc01
x11: Hook X11 focus management to MetaDisplay signal
...
This makes the MetaX11Display indirectly react to MetaDisplay changes,
rather than having the MetaDisplay also drive the MetaX11Display focus.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3269 >
2023-12-18 17:55:27 +00:00
Carlos Garnacho
24344d8141
core: Add ::focus-window signal
...
This will be triggered whenever the input focus changes, so that
other pieces may hook to this place.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3269 >
2023-12-18 17:55:27 +00:00
Carlos Garnacho
a36616f81d
core: Drop focus_frame argument from meta_display_set_input_focus()
...
Sort that out in the X11 display, where it matters, without the need
of this argument in generic API.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3269 >
2023-12-18 17:55:27 +00:00
Florian Müllner
25d6e4524c
window: Remove window icon properties
...
Window icons are X11 specific, and gnome-shell stopped using them
even as fallback.
Time for some cleanup …
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3452 >
2023-12-15 14:14:33 +00:00
Ivan Molodetskikh
ff1ee92aa7
events: Add event name to trace description
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3417 >
2023-12-06 16:12:58 +00:00
Jonas Ådahl
adc5489ba7
Add debug controller
...
The debug controller can optionally, when passing --debug-control,
enable manipulating debug state, so far enabling/disabling HDR, via
D-Bus.
It's always created, in order to have a place to store debug state and
emit signals etc when it changes, but so far, it doesn't have its own
state it tracks, it just mirrors that of the monitor manager.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3432 >
2023-12-01 14:25:08 +00:00
Carlos Garnacho
8de30c3b6e
core: Disconnect notify::is-grabbed signal when closing display
...
Given destruction order, the display goes away before the stage, so
this lingering signal connection may trigger unintended crashes.
Fixes: 05eeb684d1
("window: Postpone focusing until grab ended if uninteractable")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3422 >
2023-11-24 13:54:05 +01:00