Merge pull request #1630 from Deiz/consistent-mouse-actions
Make floating window mouse handling consistent with tiled windows
This commit is contained in:
commit
92ffc78e19
14
src/click.c
14
src/click.c
|
@ -180,6 +180,9 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod
|
||||||
if (con->parent->type == CT_DOCKAREA)
|
if (con->parent->type == CT_DOCKAREA)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
const bool is_left_or_right_click = (event->detail == XCB_BUTTON_INDEX_1 ||
|
||||||
|
event->detail == XCB_BUTTON_INDEX_3);
|
||||||
|
|
||||||
/* if the user has bound an action to this click, it should override the
|
/* if the user has bound an action to this click, it should override the
|
||||||
* default behavior. */
|
* default behavior. */
|
||||||
if (dest == CLICK_DECORATION || dest == CLICK_INSIDE) {
|
if (dest == CLICK_DECORATION || dest == CLICK_INSIDE) {
|
||||||
|
@ -278,7 +281,8 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!in_stacked && dest == CLICK_DECORATION) {
|
if (!in_stacked && dest == CLICK_DECORATION &&
|
||||||
|
is_left_or_right_click) {
|
||||||
/* try tiling resize, but continue if it doesn’t work */
|
/* try tiling resize, but continue if it doesn’t work */
|
||||||
DLOG("tiling resize with fallback\n");
|
DLOG("tiling resize with fallback\n");
|
||||||
if (tiling_resize(con, event, dest))
|
if (tiling_resize(con, event, dest))
|
||||||
|
@ -291,7 +295,7 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dest == CLICK_BORDER) {
|
if (dest == CLICK_BORDER && is_left_or_right_click) {
|
||||||
DLOG("floating resize due to border click\n");
|
DLOG("floating resize due to border click\n");
|
||||||
floating_resize_window(floatingcon, proportional, event);
|
floating_resize_window(floatingcon, proportional, event);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -299,7 +303,8 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod
|
||||||
|
|
||||||
/* 6: dragging, if this was a click on a decoration (which did not lead
|
/* 6: dragging, if this was a click on a decoration (which did not lead
|
||||||
* to a resize) */
|
* to a resize) */
|
||||||
if (!in_stacked && dest == CLICK_DECORATION) {
|
if (!in_stacked && dest == CLICK_DECORATION &&
|
||||||
|
(event->detail == XCB_BUTTON_INDEX_1)) {
|
||||||
floating_drag_window(floatingcon, event);
|
floating_drag_window(floatingcon, event);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -320,8 +325,7 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod
|
||||||
}
|
}
|
||||||
/* 8: otherwise, check for border/decoration clicks and resize */
|
/* 8: otherwise, check for border/decoration clicks and resize */
|
||||||
else if ((dest == CLICK_BORDER || dest == CLICK_DECORATION) &&
|
else if ((dest == CLICK_BORDER || dest == CLICK_DECORATION) &&
|
||||||
(event->detail == XCB_BUTTON_INDEX_1 ||
|
is_left_or_right_click) {
|
||||||
event->detail == XCB_BUTTON_INDEX_3)) {
|
|
||||||
DLOG("Trying to resize (tiling)\n");
|
DLOG("Trying to resize (tiling)\n");
|
||||||
tiling_resize(con, event, dest);
|
tiling_resize(con, event, dest);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue