Merge pull request #1630 from Deiz/consistent-mouse-actions

Make floating window mouse handling consistent with tiled windows
This commit is contained in:
Michael Stapelberg 2015-04-02 00:09:13 -07:00
commit 92ffc78e19
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)
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
* default behavior. */
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;
}
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 */
DLOG("tiling resize with fallback\n");
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;
}
if (dest == CLICK_BORDER) {
if (dest == CLICK_BORDER && is_left_or_right_click) {
DLOG("floating resize due to border click\n");
floating_resize_window(floatingcon, proportional, event);
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
* 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);
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 */
else if ((dest == CLICK_BORDER || dest == CLICK_DECORATION) &&
(event->detail == XCB_BUTTON_INDEX_1 ||
event->detail == XCB_BUTTON_INDEX_3)) {
is_left_or_right_click) {
DLOG("Trying to resize (tiling)\n");
tiling_resize(con, event, dest);
}