diff options
author | Michael Stapelberg <michael@stapelberg.de> | 2022-10-16 17:21:01 +0200 |
---|---|---|
committer | Michael Stapelberg <stapelberg@users.noreply.github.com> | 2022-10-16 18:21:08 +0200 |
commit | 2ba393f08493c8efedca300dfdbfbfe1cc712f0c (patch) | |
tree | b94cd1ed9dd34ca3010064c4dc3d4e2a316e27c4 | |
parent | 6479cb7debd8a6134723e85c75295c72a93400d0 (diff) | |
download | i3-2ba393f08493c8efedca300dfdbfbfe1cc712f0c.tar.gz i3-2ba393f08493c8efedca300dfdbfbfe1cc712f0c.zip |
tiling drag: left-click needs threshold, mod-click doesn’t
related to https://github.com/i3/i3/issues/5155
-rw-r--r-- | include/tiling_drag.h | 2 | ||||
-rw-r--r-- | src/click.c | 6 | ||||
-rw-r--r-- | src/tiling_drag.c | 3 |
3 files changed, 6 insertions, 5 deletions
diff --git a/include/tiling_drag.h b/include/tiling_drag.h index ab002d43..ac9679b2 100644 --- a/include/tiling_drag.h +++ b/include/tiling_drag.h @@ -13,4 +13,4 @@ * Initiates a mouse drag operation on a tiled window. * */ -void tiling_drag(Con *con, xcb_button_press_event_t *event); +void tiling_drag(Con *con, xcb_button_press_event_t *event, bool use_threshold); diff --git a/src/click.c b/src/click.c index 6f41d559..5b0cc2e8 100644 --- a/src/click.c +++ b/src/click.c @@ -229,7 +229,8 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo /* 2: floating modifier pressed, initiate a drag */ if (mod_pressed && event->detail == XCB_BUTTON_INDEX_1 && !floatingcon) { - tiling_drag(con, event); + const bool use_threshold = !mod_pressed; + tiling_drag(con, event, use_threshold); allow_replay_pointer(event->time); return; } @@ -307,7 +308,8 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo /* 8: floating modifier pressed, initiate a drag */ if ((mod_pressed || dest == CLICK_DECORATION) && event->detail == XCB_BUTTON_INDEX_1) { allow_replay_pointer(event->time); - tiling_drag(con, event); + const bool use_threshold = !mod_pressed; + tiling_drag(con, event, use_threshold); return; } diff --git a/src/tiling_drag.c b/src/tiling_drag.c index 6e2a3a31..2caa7f03 100644 --- a/src/tiling_drag.c +++ b/src/tiling_drag.c @@ -267,7 +267,7 @@ static xcb_window_t create_drop_indicator(Rect rect) { * Initiates a mouse drag operation on a tiled window. * */ -void tiling_drag(Con *con, xcb_button_press_event_t *event) { +void tiling_drag(Con *con, xcb_button_press_event_t *event, bool use_threshold) { DLOG("Start dragging tiled container: con = %p\n", con); bool set_focus = (con == focused); bool set_fs = con->fullscreen_mode != CF_NONE; @@ -283,7 +283,6 @@ void tiling_drag(Con *con, xcb_button_press_event_t *event) { xcb_window_t indicator = 0; const struct callback_params params = {&indicator, &target, &direction, &drop_type}; - const bool use_threshold = true; drag_result_t drag_result = drag_pointer(con, event, XCB_NONE, XCURSOR_CURSOR_MOVE, use_threshold, drag_callback, ¶ms); /* Dragging is done. We don't need the indicator window any more. */ |