sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit bbadf9b8b10d171a6d5196da7716ea50ee7a6062
parent e2409aa49611bee1e1b99033461bfab0a7550c48
Author: Simon Ser <contact@emersion.fr>
Date:   Wed, 20 Nov 2024 20:50:27 +0100

Add support for LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY

Use it as the default, as recommended by the libinput release
notes:
https://lists.freedesktop.org/archives/wayland-devel/2024-November/043860.html

Diffstat:
Msway/commands/input/drag_lock.c | 5+++++
Msway/input/libinput.c | 8++++++++
Msway/sway-input.5.scd | 5+++--
Msway/sway-ipc.7.scd | 3++-
4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/sway/commands/input/drag_lock.c b/sway/commands/input/drag_lock.c @@ -15,6 +15,11 @@ struct cmd_results *input_cmd_drag_lock(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "No input device defined."); } +#if HAVE_LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY + if (strcmp(argv[0], "enabled_sticky")) { + ic->drag_lock = LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY; + } else +#endif if (parse_boolean(argv[0], true)) { ic->drag_lock = LIBINPUT_CONFIG_DRAG_LOCK_ENABLED; } else { diff --git a/sway/input/libinput.c b/sway/input/libinput.c @@ -272,6 +272,10 @@ bool sway_input_configure_libinput_device(struct sway_input_device *input_device } if (ic->drag_lock != INT_MIN) { changed |= set_tap_drag_lock(device, ic->drag_lock); + } else { +#if HAVE_LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY + changed |= set_tap_drag_lock(device, LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY); +#endif } if (ic->pointer_accel != FLT_MIN) { changed |= set_accel_speed(device, ic->pointer_accel); @@ -354,8 +358,12 @@ void sway_input_reset_libinput_device(struct sway_input_device *input_device) { libinput_device_config_tap_get_default_button_map(device)); changed |= set_tap_drag(device, libinput_device_config_tap_get_default_drag_enabled(device)); +#if HAVE_LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY + changed |= set_tap_drag_lock(device, LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY); +#else changed |= set_tap_drag_lock(device, libinput_device_config_tap_get_default_drag_lock_enabled(device)); +#endif changed |= set_accel_speed(device, libinput_device_config_accel_get_default_speed(device)); changed |= set_rotation_angle(device, diff --git a/sway/sway-input.5.scd b/sway/sway-input.5.scd @@ -152,8 +152,9 @@ The following commands may only be used in the configuration file. *input* <identifier> drag enabled|disabled Enables or disables tap-and-drag for specified input device. -*input* <identifier> drag_lock enabled|disabled - Enables or disables drag lock for specified input device. +*input* <identifier> drag_lock enabled|disabled|enabled_sticky + Enables or disables drag lock for specified input device. The default is + _enabled_sticky_. *input* <identifier> dwt enabled|disabled Enables or disables disable-while-typing for the specified input device. diff --git a/sway/sway-ipc.7.scd b/sway/sway-ipc.7.scd @@ -1174,7 +1174,8 @@ following properties will be included for devices that support them: : Whether tap-and-drag is enabled. It can be _enabled_ or _disabled_ |- tap_drag_lock : string -: Whether drag-lock is enabled. It can be _enabled_ or _disabled_ +: Whether drag-lock is enabled. It can be _enabled_, _disabled_ or + _enabled_sticky_ |- accel_speed : double : The pointer-acceleration in use