Make floating window mouse handling consistent with tiled windows

It seems that this was the intended behaviour all along, according to
the comments.
This commit is contained in:
Deiz 2015-04-01 16:17:26 -04:00
parent d689827613
commit bb95571516
1 changed files with 9 additions and 5 deletions

View File

@ -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 doesnt work */ /* try tiling resize, but continue if it doesnt 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);
} }