Simon Ser
319e4125ab
xdg-shell: add wlr_xdg_{toplevel,popup}_try_from_wlr_surface()
...
Convenience helpers for compositors. Saves them the trouble of
manually checking the role (and if they forget to do so, prevents
an invalid cast).
2023-11-13 10:31:00 +01:00
Kirill Primak
5fac9b1beb
xdg-toplevel: don't send maximized if tiled is requested but not supported
...
This is a bit too magical and may break compositors which try not to
send duplicate configure events.
2023-10-29 15:51:12 +00:00
Kirill Primak
d253d70786
xdg-shell: use wlr_surface.unmap_commit
2023-10-26 19:06:40 +03:00
Kirill Primak
0de3659698
Drop wl_client and user data assertions in bind handlers
...
A client can never be NULL and user data assertions aren't really
useful there.
2023-10-10 20:10:00 +03:00
Kirill Primak
86c30b8715
seat: remove wlr_seat_validate_grab_serial()
...
It makes little sense to have a catch-all grab vaildation function,
considering that e.g. tablet tool implicit grabs are possible as well.
Besides, the function has always returned true anyway.
2023-10-06 08:51:47 +00:00
Alexander Orzechowski
1b0694b794
treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical
2023-10-03 01:51:07 -04:00
Kirill Primak
0fdbdc36c0
xdg-surface: fix init state flow
...
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3677
2023-10-02 18:37:09 +00:00
Kirill Primak
016494af1b
xdg-surface: assert that xdg_surface isn't inert
2023-10-02 18:37:09 +00:00
Kirill Primak
e315068b98
xdg-popup: validate parent
...
This matches Mutter's behavior.
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3576
2023-09-01 12:48:36 +03:00
Kirill Primak
bd5c4f4a4a
xdg-shell: rework roles
2023-08-21 16:30:29 +00:00
Kirill Primak
e5300c225e
xdg-popup: avoid using wlr_surface_destroy_role_object()
2023-08-21 16:30:29 +00:00
Kirill Primak
10ba8ebc70
Don't assume xdg_surface.{toplevel,popup} is non-NULL
...
This assumption will become incorrect with future commits.
2023-08-21 16:30:29 +00:00
Kirill Primak
f0cc712af1
xdg-shell: don't return anything from create_xdg_surface()
2023-08-21 16:30:29 +00:00
Leonardo Hernández Hernández
e8d545a977
xdg-shell: add support for v6
...
This adds the suspended toplevel state
2023-07-23 20:30:43 -06:00
Simon Ser
89cb484220
compositor: replace role_data with role_resource
...
This increases type safety, makes it more obvious that role_data
must represent the role object, and will allow for automatic
cleanup when the resource is destroyed.
2023-06-23 14:23:27 +02:00
Kirill Primak
0f67580aab
compositor: introduce wlr_surface_set_role_object()
2023-06-23 11:54:05 +00:00
Väinö Mäkelä
07e27ba854
xdg-popup: Handle inert seats
...
According to the protocol text, the popup will be immediately dismissed
when the grab is rejected. Because the grab can't be executed with a
destroyed seat, the popup is dismissed when one is provided.
2023-06-03 10:43:12 +00:00
Kirill Primak
b0437fc416
xdg-shell: use unified map logic
2023-06-02 17:26:18 +00:00
Kirill Primak
a3489f2c64
xdg-shell: improve unmapping logic slightly
2023-03-12 11:09:36 +00:00
Isaac Freund
5ae17de23f
xdg-shell: improve validation of resize edges
...
The current validation doesn't catch some invalid values such as 3 or 7.
2023-03-02 21:31:51 +01:00
Simon Ser
711a1a3ed4
xdg-shell: convert to try_from
...
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/884
2023-02-01 20:12:49 +01:00
Simon Ser
0f24d27e0b
xdg-shell: rename wlr_xdg_popup.committed to sent_initial_configure
...
We made a similar change to wlr_xdg_toplevel.
2023-01-31 16:27:05 +01:00
Simon Ser
df0c926a7a
xdg-shell: rename wlr_xdg_toplevel.added to sent_initial_configure
...
This is more descriptive, and avoids the confusion with
wlr_xdg_surface.added.
2023-01-31 16:20:33 +01:00
Simon Ser
e1a1dc4be5
xdg-shell: remove unnecessary return
...
We're at the end of the function anyways.
2023-01-31 16:20:33 +01:00
Simon Ser
e69dd909f7
xdg-shell: reset added/committed flag on unmap
...
When a client attaches a NULL buffer to its wl_surface, it's
unmapped. This resets the xdg_surface in its initial state. An
extra NULL commit makes the compositor send an initial configure
event.
Note, wlr_xdg_toplevel.added is separate from wlr_xdg_surface.added.
Closes: https://github.com/swaywm/sway/issues/7397
2023-01-31 16:20:10 +01:00
Simon Ser
0e54b861e9
seat/keyboard: constify wlr_seat_keyboard_notify_enter()
2023-01-26 15:06:45 +00:00
Simon Ser
695d28c250
seat/keyboard: constify wlr_seat_keyboard_notify_modifiers()
2023-01-26 15:06:45 +00:00
Kirill Primak
79248e4961
xdg-shell: use defunct_role_object error
2022-12-07 13:54:31 +00:00
Kirill Primak
c2fb5289c2
xdg-shell: send invalid_size errors
2022-11-17 10:03:52 +00:00
Kirill Primak
099b9de752
compositor: drop role object NULL checks in handlers
...
Instead, move the check to the caller.
2022-11-06 17:00:00 +03:00
Kirill Primak
acd5a64fd1
xdg-shell: use role object destroy handler
2022-11-06 17:00:00 +03:00
Kirill Primak
1243a855d4
xdg-shell: fix geometry types
2022-11-05 18:30:09 +00:00
Kirill Primak
a049d66dd7
xdg-toplevel: send invalid_parent error
2022-10-14 10:57:49 +00:00
Kirill Primak
ebd4c83cd6
xdg-toplevel: validate resize_edge
2022-09-17 08:20:24 +00:00
Alexander Orzechowski
ef4baea0e2
Use wl_signal_emit_mutable
2022-08-18 07:16:16 -04:00
Kenny Levinsen
7abe8352db
xdg_shell: Destroy popups after unmap event
...
This aligns with wlr_layer_shell_v1, and better matches how we normally use
teardown signals.
2022-08-06 00:20:42 +02:00
Kenny Levinsen
668b2740ff
Set mapped before firing map/unmap events
...
This allows whatever the user calls from the signal handlers to react to observe
the new state rather than the old, e.g. that a surface is no longer mapped in
the unmap handler.
2022-08-06 00:19:38 +02:00
Simon Ser
f1e05a6493
xdg-shell: add support for v5
...
This version adds a wm_capabilities event.
2022-08-01 18:50:16 +02:00
Kirill Primak
5c4384a133
xdg-popup: use configure fields
2022-06-21 15:14:37 +00:00
Kirill Primak
8d2fa15e9d
xdg-toplevel: post no memory on strdup() fail
2022-06-21 17:37:45 +03:00
Kirill Primak
e7b217efb9
xdg-shell: improve shell version check
2022-06-11 20:22:54 +03:00
Simon Ser
e383c1f1db
xdg-shell: add support for v4
...
This adds a configure_bounds event to let the client know of the
preferred maximum window geometry size.
2022-06-01 18:18:54 +02:00
Kirill Primak
c1ec71903c
xdg-shell: bump version to 3
2022-05-27 13:31:30 +00:00
Kirill Primak
1761c3bbe2
xdg-popup: add reposition support
2022-05-27 13:31:30 +00:00
Kirill Primak
8a0835c59c
xdg-positioner: add v3 parameters
2022-05-27 13:31:30 +00:00
Kirill Primak
6f1fce9cb4
xdg-popup: use current/pending state pattern
2022-05-27 13:31:30 +00:00
Kirill Primak
4a968576e4
xdg-popup: add proper configure flow
2022-05-27 13:31:30 +00:00
Simon Ser
8fe3aa29da
xdg-shell: specify version in wlr_xdg_shell_create
...
With protocol additions such as [1], compositors currently have no
way to opt out of the version upgrade. The protocol upgrade will
always be backwards-compatible but may require new compositor
features.
The status quo doesn't make it possible to ship a protocol addition
without breaking the wlroots API. This will be an issue for API
stabilization [2].
To address this, let compositors provide a maximum version in the
function creating the global. We need to support all previous versions
of the interface anyways because of older clients.
This mechanism works the same way as Wayland clients passing a version
in wl_global.bind.
[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3514
[2]: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1008
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3397
2022-05-15 15:44:40 +00:00
Kirill Primak
8b0d4947cc
xdg-toplevel: store states on the stack
2022-05-10 19:19:08 +03:00
Kirill Primak
dec2565f2b
xdg-toplevel: don't schedule configures on state requests
2022-04-13 17:00:06 +00:00