aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/seat.c
Commit message (Collapse)AuthorAge
* Implement transient seat managementLibravatar Andri Yngvason2024-03-18
|
* input: Rename WLR_INPUT_DEVICE_TABLET_TOOL to WLR_INPUT_DEVICE_TABLETLibravatar Luofan Chen2024-03-01
| | | | | | | wlroots has changed the naming, causing the following build errors when building: error: ‘WLR_INPUT_DEVICE_TABLET_TOOL’ undeclared
* Convert to new pointer enumsLibravatar Simon Ser2024-02-28
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4575
* Define _POSIX_C_SOURCE globallyLibravatar Simon Ser2024-02-23
| | | | See discussion in https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4555
* seat: Remove dead seatop_render functionLibravatar Alexander Orzechowski2024-01-18
|
* scene_graph: Port ext_session_v1Libravatar Alexander Orzechowski2024-01-18
|
* scene_graph: Port seat drag iconsLibravatar Alexander Orzechowski2024-01-18
|
* input/seat: simplify seat_is_input_allowed()Libravatar Simon Ser2023-12-13
| | | | Use an early return to make the code more readable.
* input/seat: rename seat_set_exclusive_client()Libravatar Simon Ser2023-12-13
|
* input/seat: inline seat_set_exclusive_client() with NULL clientLibravatar Simon Ser2023-12-13
|
* input/seat: drop exclusive_clientLibravatar Simon Ser2023-12-13
| | | | This was a input-inhibit concept.
* seat: Fix reloading cursor theme after changeLibravatar Lina Banik2023-11-21
| | | | | | | | | | | | | This reverts commit afde6369 "seat: avoid unneeded reloading xcursor theme". Always avoiding to reload the xcursor theme prevents reloading the cursor even when this is desired. Instead seat_configure_xcursor can determine whether a full reload is necessary. To stay with the spirit of the reverted change, cursors are only fully reloaded, if the theme has changed. Fixes #6931
* Only reconfigure input mappings on output changeLibravatar Simon Ser2023-11-16
| | | | | | Fully reconfiguring all input devices on output change takes a loooong time. Let's just reconfigure what we need: only mappings depend on outputs.
* input/seat: rename seat_apply_input_configLibravatar Simon Ser2023-11-16
| | | | seat_apply_input_mapping is a lot more descriptive.
* input/seat: don't configure mappings for switchesLibravatar Simon Ser2023-11-16
| | | | | Switch devices cannot be mapped to an output/region, stop trying to do so.
* Drop support for KDE's idle protocolLibravatar Simon Ser2023-10-05
| | | | We support the standard idle-notify protocol since Sway 1.8.
* Deprecate seat idle_wakeLibravatar Simon Ser2023-07-19
| | | | | | | | | | | | | | | | | | | | | | | Sway has two knobs to control idling: - seat idle_inhibit: when the seat is active (ie. not idle), this extends the active state. When the seat is idle, this is ignored. - seat idle_wake: when the seat is idle, this wakes up the seat. When the seat is active, this is ignored. The motivation for the deprecation is two-fold: - The concept of "seat idle state" is ill-defined. Each idle-notify-v1 client will pass a different idle timeout. With the old logic, a seat was declared idle if and only if all idle-notify-v1 timeouts have expired. However, if only a portion of the timeouts have expired, then some clients would wake up, and the rest would stay active. This is inconsistent with the definition of idle_inhibit/idle_wake: idle_inhibit was used for clients which are waking up. - It never worked properly with the new idle-notify-v1 protocol and no-one noticed. Only the legacy KDE idle protocol is taken into account, but that protocol is not used anymore.
* Use "default" XCursor instead of "left_ptr"Libravatar Simon Ser2023-06-25
| | | | | "left_ptr" is the legacy XCursor name. "default" is the cursor spec name.
* Add support for wlr-layer-shell ON_DEMAND keyboard interactivityLibravatar Erik Reider2023-06-06
| | | | | This allows for layer shell surfaces to receive focus while the surface is explicitly focused, i.e allowing text fields to receive keyboard input just like a regular surface.
* chore: chase wlroots map logic unificationLibravatar Kirill Primak2023-06-02
|
* Add support for touch cancel eventsLibravatar hrdl2023-05-04
|
* render: pass rendering state together in a structLibravatar Alexander Orzechowski2023-05-02
| | | | This lets us easily add rendering state that we need in the future
* Constify pixman_region32_t for rendering functionsLibravatar Simon Ser2023-02-22
|
* Implement seatop_touchLibravatar Stacy Harper2023-02-20
| | | | | | | | | | Atm we got issue with the touch position sent to the clients. While holding contact, leaving the initial container will continue to send motion event to the client but with the new local position from the new container. This seatop goal is to send the position of the touch event, relatively to the initial container layout position.
* Fix pointer events for ext-session-lock surfacesLibravatar Simon Ser2023-01-18
| | | | | We were never sending any pointer event to ext-session-lock surfaces.
* input/tablet: handle focusing NULL surfaceLibravatar Kirill Primak2023-01-16
| | | | | Additionally, rename the function responsible for switching focus to match its behavior better.
* seat: Avoid sending redundant keymaps on reloadLibravatar Kenny Levinsen2022-12-04
| | | | | | | | | | | | | | | | | | | When we reload the config, we reset every input device and re-apply configuration from the config file. This means that the keyboard keymap is updated at least once during config reload, more if the config file contains keyboard configuration. When they keyboard keymap changes and is updated through wlr_seat, the keymap ends up sent to every keyboard bound in every client, seemingly multiple times. On an x230 of mine with a keyboard layout set in the config file, I see 42 keymap events sent to foot on config reload. Reduce events from keyboard configurations by skipping all but the currently active keyboard for the seat, and by clearing the active keyboard during input manager device reset. After this change, I only see a single just-in-time keymap event. Fixes: https://github.com/swaywm/sway/issues/6654
* Make libinput backend optionalLibravatar Simon Ser2022-11-28
|
* input/seat: locally compute drag icon offsetLibravatar Simon Ser2022-11-15
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3861
* Fix focus tracking when session lock is activeLibravatar Daniel De Graaf2022-10-28
| | | | | | | | | Remove the incorrect attempt to block focus changes when an input grab is present and replace it with the same logic used for layer_shell-based screen lockers: restore the focus after changing it. This fixes a use-after-free of seat->workspace if outputs are destroyed while a screen lock is enabled.
* Rework session lock keyboard focus handlingLibravatar Daniel De Graaf2022-10-28
| | | | | | | When removing outputs, it is possible to end up in a situation where none of the session lock client's surfaces have keyboard focus, resulting in it not receiving keyboard events. Track the focused surface and update it as needed on surface destroy.
* Add support for ext-idle-notify-v1Libravatar Simon Ser2022-10-14
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3753
* Use keyboard_state.focused_surface directlyLibravatar Ferdinand Schober2022-10-09
|
* use seat directlyLibravatar Ferdinand Schober2022-10-09
|
* allow pointer_constraints on layer_shell surfacesLibravatar Ferdinand Schober2022-10-09
|
* Remove access to wlr_input_device unionLibravatar Simon Ser2022-06-22
| | | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3626 Closes: https://github.com/swaywm/sway/issues/7077
* sway: add bindgesture commandLibravatar Florian Franzen2022-05-30
| | | | Co-authored-by: Michael Weiser <michael.weiser@gmx.de>
* Avoid inspecting a NULL view in seat_set_focusLibravatar Daniel De Graaf2022-04-30
| | | | Fixes #6968
* Implement ext-session-lock-v1Libravatar Daniel De Graaf2022-04-29
|
* sway/input: wlr_seat_keyboard() now takes wlr_keyboardLibravatar Leonardo Hernández Hernández2022-03-23
|
* sway/input: fix bad position of wlr_dragLibravatar Leonardo Hernández Hernández2022-03-22
|
* sway/input: follow up wlroots input device events renamingLibravatar Simon Zeni2022-03-17
|
* sway/input/seat: take output name from specialized input deviceLibravatar Simon Zeni2022-03-17
|
* sway/input: destroy sway_switch properlyLibravatar Moon Sungjoon2022-03-05
| | | | | Fix: #6861 Added seat_device_destroy function to seat_device_destroy function.
* Remove some erroneous apostrophes in commentsLibravatar Thomas Hebb2022-02-22
|
* input/seat: unset has_focus when focus_stack becomes emptyLibravatar Thomas Hebb2022-01-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently track the focus of a seat in two ways: we use a list called focus_stack to track the order in which nodes have been focused, with the first node representing what's currently focused, and we use a variable called has_focus to indicate whether anything has focus--i.e. whether we should actually treat that first node as focused at any given time. In a number of places, we treat has_focus as implying that a focused node exists. If it's true, we attempt to dereference the return value of seat_get_focus(), our helper function for getting the first node in focus_list, with no further checks. But this isn't quite correct with the current implementation of seat_get_focus(): not only does it return NULL when has_focus is false, it also returns NULL when focus_stack contains no items. In most cases, focus_stack never becomes empty and so this doesn't matter at all. Since focus_stack stores a history of focused nodes, we rarely remove nodes from it. The exception to this is when a node itself goes away. In that case, we call seat_node_destroy() to remove it from focus_stack and free it. But we don't unset has_focus if we've removed the final node! This lets us get into a state where has_focus is true but seat_get_focus() returns NULL, leading to a segfault when we try to dereference it. Fix the issue both by updating has_focus in seat_node_destroy() and by adding an assertion in seat_get_focus() that ensures focus_stack and has_focus are in sync, which will make it easier to track down similar issues in the future. Fixes #6395. [1] There's some discussion in #1585 from when this was implemented about whether has_focus is actually necessary; it's possible we could remove it entirely, but for the moment this is the architecture we have.
* use node_is_viewLibravatar siikamiika2021-10-10
|
* focus: beyond fullscreen when focused explicitlyLibravatar lbonn2021-02-25
| | | | | | | When issuing a focus command on a specific container, users expect to proceed it even if is hidden by a fullscreen window. This matches the behavior of i3.
* Automatically map built-in touchscreens/tablets to built-in panelsLibravatar Simon Ser2021-02-25
| | | | | Detect whether an output is built-in via its type. Detect whether a touchscreen or tablet tool is built-in via its ID_PATH property.
* container: Move pending state to state structLibravatar Kenny Levinsen2021-02-16
| | | | | | | | | Pending state is currently inlined directly in the container struct, while the current state is in a state struct. A side-effect of this is that it is not immediately obvious that pending double-buffered state is accessed, nor is it obvious what state is double-buffered. Instead, use the state struct for both current and pending.