Updated the less simple input patch to include fixes from anabasis

This commit is contained in:
Micah N Gorrell 2024-05-12 11:01:52 -06:00
parent 7f93815e9c
commit 529dfa157c

View File

@ -1,7 +1,7 @@
From adc8734017644f44443db30e976cf03147c7c3c4 Mon Sep 17 00:00:00 2001
From: Micah N Gorrell <m@minego.net>
Date: Fri, 9 Feb 2024 17:08:20 -0700
Subject: [PATCH 1/2] Add support for touch screen input devices, and send the
Subject: [PATCH 1/3] Add support for touch screen input devices, and send the
appropriate events to clients
Send notification of touch motition events even if there is no client to focus. This is important for swiping on an OSK.
@ -240,7 +240,7 @@ index 5867b0c..fe447fb 100644
From c2e4ff7253f33c80552abe9126e3c57d0aa23560 Mon Sep 17 00:00:00 2001
From: Micah N Gorrell <m@minego.net>
Date: Thu, 28 Mar 2024 11:25:59 -0600
Subject: [PATCH 2/2] Removed debug
Subject: [PATCH 2/3] Removed debug
---
dwl.c | 1 -
@ -261,3 +261,44 @@ index fe447fb..c26c581 100644
--
2.44.0
From ae64e0c3b51c8600de7c081034ea267c08134635 Mon Sep 17 00:00:00 2001
From: anabasis <anabasis@noreply.codeberg.org>
Date: Sat, 11 May 2024 20:19:18 -0400
Subject: [PATCH 3/3] fix bug and focus client according to sloppyfocus
---
dwl.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/dwl.c b/dwl.c
index c26c581..75b44d7 100644
--- a/dwl.c
+++ b/dwl.c
@@ -2713,6 +2713,8 @@ touchdown(struct wl_listener *listener, void *data)
/* Find the client under the pointer and send the event along. */
xytonode(lx, ly, &surface, &c, NULL, &sx, &sy);
+ if (sloppyfocus)
+ focusclient(c, 0);
if (surface != NULL) {
serial = wlr_seat_touch_notify_down(seat, surface, event->time_msec, event->touch_id, sx, sy);
@@ -2780,9 +2782,13 @@ touchmotion(struct wl_listener *listener, void *data)
wlr_cursor_absolute_to_layout_coords(cursor, &event->touch->base, event->x, event->y, &lx, &ly);
xytonode(lx, ly, &surface, &c, NULL, &sx, &sy);
- if (c != NULL) {
+ if (c != NULL && surface != NULL) {
+ if (sloppyfocus)
+ focusclient(c, 0);
wlr_seat_touch_point_focus(seat, surface, event->time_msec, event->touch_id, sx, sy);
} else {
+ if (sloppyfocus)
+ focusclient(NULL, 0);
wlr_seat_touch_point_clear_focus(seat, event->time_msec, event->touch_id);
}
wlr_seat_touch_notify_motion(seat, event->time_msec, event->touch_id, sx, sy);
--
2.44.0