From b279ebde1c77d14ea34637423293415e09b9197b Mon Sep 17 00:00:00 2001 From: A Frederick Christensen Date: Wed, 1 Jan 2025 16:51:07 -0600 Subject: [PATCH] tablet-input: Update patch and squash commits --- patches/touch-input/README.md | 2 +- patches/touch-input/touch-input.patch | 122 ++++++-------------------- 2 files changed, 29 insertions(+), 95 deletions(-) diff --git a/patches/touch-input/README.md b/patches/touch-input/README.md index 1b9818a..f0c26a8 100644 --- a/patches/touch-input/README.md +++ b/patches/touch-input/README.md @@ -6,7 +6,7 @@ KNOWN BUGS: ### Download - [git branch](https://codeberg.org/fauxmight/dwl/src/branch/touch-input) -- [2024-03-26](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/less-simple-touch-input/less-simple-touch-input.patch) +- [2025-01-01](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/less-simple-touch-input/less-simple-touch-input.patch) ### Authors - [fauxmight](https://codeberg.org/fauxmight) diff --git a/patches/touch-input/touch-input.patch b/patches/touch-input/touch-input.patch index 1a8083d..f000dc3 100644 --- a/patches/touch-input/touch-input.patch +++ b/patches/touch-input/touch-input.patch @@ -1,23 +1,18 @@ -From adc8734017644f44443db30e976cf03147c7c3c4 Mon Sep 17 00:00:00 2001 +From 0eda173488e6ef3b0c7744e8cef0b3e0dfc81605 Mon Sep 17 00:00:00 2001 From: Micah N Gorrell Date: Fri, 9 Feb 2024 17:08:20 -0700 -Subject: [PATCH 1/3] Add support for touch screen input devices, and send the +Subject: [PATCH] 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. - -Add support for touch screen input devices, and send the appropriate events to clients - -Removed #ifdef around code that needs pointer constraints now that that is merged to upstream --- - dwl.c | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 145 insertions(+) + dwl.c | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 150 insertions(+) diff --git a/dwl.c b/dwl.c -index 5867b0c..fe447fb 100644 +index 0eba3e9..c9eb7fb 100644 --- a/dwl.c +++ b/dwl.c -@@ -47,6 +47,7 @@ +@@ -51,6 +51,7 @@ #include #include #include @@ -25,8 +20,8 @@ index 5867b0c..fe447fb 100644 #include #include #include -@@ -161,6 +162,12 @@ typedef struct { - struct wl_listener key; +@@ -165,6 +166,12 @@ typedef struct { + struct wl_listener destroy; } KeyboardGroup; +typedef struct TouchGroup { @@ -36,19 +31,19 @@ index 5867b0c..fe447fb 100644 +} TouchGroup; + typedef struct { - /* Must keep these three elements in this order */ + /* Must keep this field first */ unsigned int type; /* LayerShell */ -@@ -264,7 +271,9 @@ static void createmon(struct wl_listener *listener, void *data); - static void createnotify(struct wl_listener *listener, void *data); +@@ -271,7 +278,9 @@ static void createnotify(struct wl_listener *listener, void *data); static void createpointer(struct wlr_pointer *pointer); static void createpointerconstraint(struct wl_listener *listener, void *data); + static void createpopup(struct wl_listener *listener, void *data); +static void createtouch(struct wlr_touch *touch); static void cursorconstrain(struct wlr_pointer_constraint_v1 *constraint); +static void createtouch(struct wlr_touch *touch); static void cursorframe(struct wl_listener *listener, void *data); static void cursorwarptohint(void); static void destroydecoration(struct wl_listener *listener, void *data); -@@ -334,6 +343,10 @@ static void togglefloating(const Arg *arg); +@@ -342,6 +351,10 @@ static void togglefloating(const Arg *arg); static void togglefullscreen(const Arg *arg); static void toggletag(const Arg *arg); static void toggleview(const Arg *arg); @@ -59,7 +54,7 @@ index 5867b0c..fe447fb 100644 static void unlocksession(struct wl_listener *listener, void *data); static void unmaplayersurfacenotify(struct wl_listener *listener, void *data); static void unmapnotify(struct wl_listener *listener, void *data); -@@ -404,6 +417,7 @@ static struct wlr_output_layout *output_layout; +@@ -410,6 +423,7 @@ static struct wlr_output_layout *output_layout; static struct wlr_box sgeom; static struct wl_list mons; static Monitor *selmon; @@ -67,8 +62,8 @@ index 5867b0c..fe447fb 100644 #ifdef XWAYLAND static void activatex11(struct wl_listener *listener, void *data); -@@ -1041,6 +1055,16 @@ createpointerconstraint(struct wl_listener *listener, void *data) - &pointer_constraint->destroy, destroypointerconstraint); +@@ -1129,6 +1143,16 @@ createpopup(struct wl_listener *listener, void *data) + LISTEN_STATIC(&popup->base->surface->events.commit, commitpopup); } +void @@ -84,7 +79,7 @@ index 5867b0c..fe447fb 100644 void cursorconstrain(struct wlr_pointer_constraint_v1 *constraint) { -@@ -1412,6 +1436,9 @@ inputdevice(struct wl_listener *listener, void *data) +@@ -1534,6 +1558,9 @@ inputdevice(struct wl_listener *listener, void *data) case WLR_INPUT_DEVICE_POINTER: createpointer(wlr_pointer_from_input_device(device)); break; @@ -94,16 +89,16 @@ index 5867b0c..fe447fb 100644 default: /* TODO handle other input device types */ break; -@@ -1424,6 +1451,8 @@ inputdevice(struct wl_listener *listener, void *data) +@@ -1546,6 +1573,8 @@ inputdevice(struct wl_listener *listener, void *data) caps = WL_SEAT_CAPABILITY_POINTER; - if (!wl_list_empty(&kb_group.wlr_group->devices)) + if (!wl_list_empty(&kb_group->wlr_group->devices)) caps |= WL_SEAT_CAPABILITY_KEYBOARD; + if (!wl_list_empty(&touches)) + caps |= WL_SEAT_CAPABILITY_TOUCH; wlr_seat_set_capabilities(seat, caps); } -@@ -2431,6 +2460,13 @@ setup(void) +@@ -2557,6 +2586,13 @@ setup(void) LISTEN_STATIC(&cursor->events.axis, axisnotify); LISTEN_STATIC(&cursor->events.frame, cursorframe); @@ -117,7 +112,7 @@ index 5867b0c..fe447fb 100644 cursor_shape_mgr = wlr_cursor_shape_manager_v1_create(dpy, 1); LISTEN_STATIC(&cursor_shape_mgr->events.request_set_shape, setcursorshape); -@@ -2647,6 +2683,115 @@ toggleview(const Arg *arg) +@@ -2727,6 +2763,120 @@ toggleview(const Arg *arg) printstatus(); } @@ -151,7 +146,8 @@ index 5867b0c..fe447fb 100644 + + /* Find the client under the pointer and send the event along. */ + xytonode(lx, ly, &surface, &c, NULL, &sx, &sy); -+ // fprintf(stderr, "touch_down at %lf, %lf\n", lx, ly); ++ if (sloppyfocus) ++ focusclient(c, 0); + + if (surface != NULL) { + serial = wlr_seat_touch_notify_down(seat, surface, event->time_msec, event->touch_id, sx, sy); @@ -219,9 +215,13 @@ index 5867b0c..fe447fb 100644 + 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); @@ -234,71 +234,5 @@ index 5867b0c..fe447fb 100644 unlocksession(struct wl_listener *listener, void *data) { -- -2.44.0 - - -From c2e4ff7253f33c80552abe9126e3c57d0aa23560 Mon Sep 17 00:00:00 2001 -From: Micah N Gorrell -Date: Thu, 28 Mar 2024 11:25:59 -0600 -Subject: [PATCH 2/3] Removed debug - ---- - dwl.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/dwl.c b/dwl.c -index fe447fb..c26c581 100644 ---- a/dwl.c -+++ b/dwl.c -@@ -2713,7 +2713,6 @@ 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); -- // fprintf(stderr, "touch_down at %lf, %lf\n", lx, ly); - - if (surface != NULL) { - serial = wlr_seat_touch_notify_down(seat, surface, event->time_msec, event->touch_id, sx, sy); --- -2.44.0 - - -From ae64e0c3b51c8600de7c081034ea267c08134635 Mon Sep 17 00:00:00 2001 -From: anabasis -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 +2.47.0