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")) {