diff --git a/docs/labwc-config.5.scd b/docs/labwc-config.5.scd index 97cca8ea..fcca2374 100644 --- a/docs/labwc-config.5.scd +++ b/docs/labwc-config.5.scd @@ -965,7 +965,7 @@ extending outward from the snapped edge. yes - sticky + @@ -1035,11 +1035,13 @@ extending outward from the snapped edge. Enable or disable tap-and-drag for this category. Tap-and-drag processes a tap immediately followed by a finger down as the start of a drag. -** [yes|no|sticky] +** [yes|no|timeout] Enable or disable drag lock for this category. Drag lock ignores a temporary - release of a finger during tap-and-dragging. Both *yes* and *sticky* enable - drag lock, but if *yes* is set, the drag lock expires after a timeout. - Default is *sticky*. + release of a finger during tap-and-dragging. + + *timeout* also enables drag lock, but with a timeout: if your fingers are + released for a certain amount of time, the drag gesture is cancelled. + In libinput < 1.27, the behavior of *yes* is equivalent to *timeout*. ** [yes|no|3|4] Enable or disable the three-finger drag feature. When enabled, three diff --git a/docs/rc.xml.all b/docs/rc.xml.all index f9fc6eae..baffc84c 100644 --- a/docs/rc.xml.all +++ b/docs/rc.xml.all @@ -618,7 +618,7 @@ yes - sticky + diff --git a/src/config/libinput.c b/src/config/libinput.c index d6179d0f..c76a9ff9 100644 --- a/src/config/libinput.c +++ b/src/config/libinput.c @@ -1,7 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only #include #include -#include "config.h" #include "common/mem.h" #include "common/list.h" #include "common/string-helpers.h" @@ -19,11 +18,7 @@ libinput_category_init(struct libinput_category *l) l->tap = LIBINPUT_CONFIG_TAP_ENABLED; l->tap_button_map = LIBINPUT_CONFIG_TAP_MAP_LRM; l->tap_and_drag = -1; -#if HAVE_LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY - l->drag_lock = LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY; -#else l->drag_lock = -1; -#endif l->three_finger_drag = -1; l->accel_profile = -1; l->middle_emu = -1; diff --git a/src/config/rcxml.c b/src/config/rcxml.c index 39dec886..cc207603 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -780,23 +780,23 @@ fill_libinput_category(char *nodename, char *content, struct parser_state *state ? LIBINPUT_CONFIG_DRAG_ENABLED : LIBINPUT_CONFIG_DRAG_DISABLED; } else if (!strcasecmp(nodename, "dragLock")) { - if (!strcasecmp(content, "sticky")) { -#if HAVE_LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY + if (!strcasecmp(content, "timeout")) { + /* "timeout" enables drag-lock with timeout */ state->current_libinput_category->drag_lock = - LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY; -#else - wlr_log(WLR_ERROR, "sticky is" - " only supported in libinput >= 1.27"); -#endif + LIBINPUT_CONFIG_DRAG_LOCK_ENABLED; return; } int ret = parse_bool(content, -1); if (ret < 0) { return; } - state->current_libinput_category->drag_lock = ret - ? LIBINPUT_CONFIG_DRAG_LOCK_ENABLED - : LIBINPUT_CONFIG_DRAG_LOCK_DISABLED; + /* "yes" enables drag-lock, without timeout if libinput >= 1.27 */ + int enabled = LIBINPUT_CONFIG_DRAG_LOCK_ENABLED; +#if HAVE_LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY + enabled = LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY; +#endif + state->current_libinput_category->drag_lock = ret ? + enabled : LIBINPUT_CONFIG_DRAG_LOCK_DISABLED; } else if (!strcasecmp(nodename, "threeFingerDrag")) { #if HAVE_LIBINPUT_CONFIG_3FG_DRAG_ENABLED_3FG if (!strcmp(content, "3")) {