aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sway/input/cursor.h1
-rw-r--r--sway/input/cursor.c9
2 files changed, 9 insertions, 1 deletions
diff --git a/include/sway/input/cursor.h b/include/sway/input/cursor.h
index 35738894..3f46c548 100644
--- a/include/sway/input/cursor.h
+++ b/include/sway/input/cursor.h
@@ -55,6 +55,7 @@ struct sway_cursor {
55 struct wl_listener tool_tip; 55 struct wl_listener tool_tip;
56 struct wl_listener tool_proximity; 56 struct wl_listener tool_proximity;
57 struct wl_listener tool_button; 57 struct wl_listener tool_button;
58 bool simulated_tool_tip_down;
58 uint32_t tool_buttons; 59 uint32_t tool_buttons;
59 60
60 struct wl_listener request_set_cursor; 61 struct wl_listener request_set_cursor;
diff --git a/sway/input/cursor.c b/sway/input/cursor.c
index 0649f468..a28da999 100644
--- a/sway/input/cursor.c
+++ b/sway/input/cursor.c
@@ -618,8 +618,9 @@ static void handle_tool_tip(struct wl_listener *listener, void *data) {
618 wlr_tablet_v2_tablet_tool_notify_up(sway_tool->tablet_v2_tool); 618 wlr_tablet_v2_tablet_tool_notify_up(sway_tool->tablet_v2_tool);
619 } 619 }
620 620
621 cursor->simulated_tool_tip_down = event->state == WLR_TABLET_TOOL_TIP_DOWN;
621 dispatch_cursor_button(cursor, event->device, event->time_msec, 622 dispatch_cursor_button(cursor, event->device, event->time_msec,
622 BTN_LEFT, event->state == WLR_TABLET_TOOL_TIP_DOWN ? 623 BTN_LEFT, cursor->simulated_tool_tip_down ?
623 WLR_BUTTON_PRESSED : WLR_BUTTON_RELEASED); 624 WLR_BUTTON_PRESSED : WLR_BUTTON_RELEASED);
624 wlr_seat_pointer_notify_frame(cursor->seat->wlr_seat); 625 wlr_seat_pointer_notify_frame(cursor->seat->wlr_seat);
625 transaction_commit_dirty(); 626 transaction_commit_dirty();
@@ -630,6 +631,12 @@ static void handle_tool_tip(struct wl_listener *listener, void *data) {
630 wlr_tablet_v2_tablet_tool_notify_down(sway_tool->tablet_v2_tool); 631 wlr_tablet_v2_tablet_tool_notify_down(sway_tool->tablet_v2_tool);
631 wlr_tablet_tool_v2_start_implicit_grab(sway_tool->tablet_v2_tool); 632 wlr_tablet_tool_v2_start_implicit_grab(sway_tool->tablet_v2_tool);
632 } else { 633 } else {
634 if (cursor->simulated_tool_tip_down) {
635 dispatch_cursor_button(cursor, event->device, event->time_msec, BTN_LEFT,
636 WLR_BUTTON_RELEASED);
637 cursor->simulated_tool_tip_down = false;
638 }
639
633 wlr_tablet_v2_tablet_tool_notify_up(sway_tool->tablet_v2_tool); 640 wlr_tablet_v2_tablet_tool_notify_up(sway_tool->tablet_v2_tool);
634 } 641 }
635} 642}