From ba6ccdfbd1c39af9b4dfbe289b7448d6a5959045 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 1 Oct 2026 22:38:53 -0500 Subject: [PATCH] Clear reported drag state on controller release --- screens/controller-click.h | 2 +- screens/tests/controller-click-test.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/screens/controller-click.h b/screens/controller-click.h index 2a49c8c..077f355 100644 --- a/screens/controller-click.h +++ b/screens/controller-click.h @@ -36,7 +36,7 @@ static inline bool ft_controller_click_filter(struct ft_controller_click *c, e->screen = c->screen; e->x = c->x; e->y = c->y; ++c->clicks; } - c->held = false; + c->held = false; c->dragging = false; } else if (e->type == FT_LEAVE && c->held) { return false; // Preserve the implicit grab through tiny edge excursions. } diff --git a/screens/tests/controller-click-test.c b/screens/tests/controller-click-test.c index c38d6fc..a807fe4 100644 --- a/screens/tests/controller-click-test.c +++ b/screens/tests/controller-click-test.c @@ -18,7 +18,7 @@ int main(void) { assert(c.dragging && c.drags==1); e=event(FT_MOTION,false,101,100);assert(ft_controller_click_filter(&c,&e,1)); e=event(FT_BUTTON,false,103,100);assert(ft_controller_click_filter(&c,&e,1)); - assert(e.x==103 && c.clicks==1 && !c.held); + assert(e.x==103 && c.clicks==1 && !c.held && !c.dragging); e=event(FT_BUTTON,true,100,100);ft_controller_click_filter(&c,&e,1); e=event(FT_LEAVE,false,0,0);assert(!ft_controller_click_filter(&c,&e,1)); e=event(FT_BUTTON,false,800,900);e.screen=1;ft_controller_click_filter(&c,&e,1);