From 07c73842727c6a5fd3094dddda5e0b016b123edd Mon Sep 17 00:00:00 2001 From: Orestis Floros Date: Fri, 10 Apr 2020 12:22:24 +0200 Subject: [PATCH 1/2] route_click: Add some const bools for readability --- src/click.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/click.c b/src/click.c index 811f74d50..ee23c9d59 100644 --- a/src/click.c +++ b/src/click.c @@ -160,9 +160,6 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo if (con->parent->type == CT_DOCKAREA) goto done; - const bool is_left_or_right_click = (event->detail == XCB_BUTTON_CLICK_LEFT || - event->detail == XCB_BUTTON_CLICK_RIGHT); - /* if the user has bound an action to this click, it should override the * default behavior. */ if (dest == CLICK_DECORATION || dest == CLICK_INSIDE || dest == CLICK_BORDER) { @@ -207,14 +204,16 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo const bool proportional = (event->state & XCB_KEY_BUT_MASK_SHIFT) == XCB_KEY_BUT_MASK_SHIFT; const bool in_stacked = (con->parent->layout == L_STACKED || con->parent->layout == L_TABBED); const bool was_focused = focused == con; + const bool is_left_click = (event->detail == XCB_BUTTON_CLICK_LEFT); + const bool is_right_click = (event->detail == XCB_BUTTON_CLICK_RIGHT); + const bool is_left_or_right_click = (is_left_click || is_right_click); + const bool is_scroll = (event->detail == XCB_BUTTON_SCROLL_UP || + event->detail == XCB_BUTTON_SCROLL_DOWN || + event->detail == XCB_BUTTON_SCROLL_LEFT || + event->detail == XCB_BUTTON_SCROLL_RIGHT); /* 1: see if the user scrolled on the decoration of a stacked/tabbed con */ - if (in_stacked && - dest == CLICK_DECORATION && - (event->detail == XCB_BUTTON_SCROLL_UP || - event->detail == XCB_BUTTON_SCROLL_DOWN || - event->detail == XCB_BUTTON_SCROLL_LEFT || - event->detail == XCB_BUTTON_SCROLL_RIGHT)) { + if (in_stacked && dest == CLICK_DECORATION && is_scroll) { DLOG("Scrolling on a window decoration\n"); /* Use the focused child of the tabbed / stacked container, not the * container the user scrolled on. */ @@ -235,7 +234,7 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo Con *fs = con_get_fullscreen_covering_ws(ws); if (floatingcon != NULL && fs != con) { /* 4: floating_modifier plus left mouse button drags */ - if (mod_pressed && event->detail == XCB_BUTTON_CLICK_LEFT) { + if (mod_pressed && is_left_click) { floating_drag_window(floatingcon, event, false); return; } @@ -243,7 +242,7 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo /* 5: resize (floating) if this was a (left or right) click on the * left/right/bottom border, or a right click on the decoration. * also try resizing (tiling) if possible */ - if (mod_pressed && event->detail == XCB_BUTTON_CLICK_RIGHT) { + if (mod_pressed && is_right_click) { DLOG("floating resize due to floatingmodifier\n"); floating_resize_window(floatingcon, proportional, event); return; @@ -257,7 +256,7 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo goto done; } - if (dest == CLICK_DECORATION && event->detail == XCB_BUTTON_CLICK_RIGHT) { + if (dest == CLICK_DECORATION && is_right_click) { DLOG("floating resize due to decoration right click\n"); floating_resize_window(floatingcon, proportional, event); return; @@ -271,7 +270,7 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo /* 6: dragging, if this was a click on a decoration (which did not lead * to a resize) */ - if (dest == CLICK_DECORATION && event->detail == XCB_BUTTON_CLICK_LEFT) { + if (dest == CLICK_DECORATION && is_left_click) { floating_drag_window(floatingcon, event, !was_focused); return; } @@ -280,7 +279,7 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo } /* 7: floating modifier pressed, initiate a resize */ - if (dest == CLICK_INSIDE && mod_pressed && event->detail == XCB_BUTTON_CLICK_RIGHT) { + if (dest == CLICK_INSIDE && mod_pressed && is_right_click) { floating_mod_on_tiled_client(con, event); /* Avoid propagating events to clients, since the user expects * $mod + click to be handled by i3. */ From 58d383b1a07a083911343201cb7f9f38a61355a0 Mon Sep 17 00:00:00 2001 From: Orestis Floros Date: Fri, 10 Apr 2020 12:24:18 +0200 Subject: [PATCH 2/2] route_click: Remove condition that is always true For reference: typedef enum { CLICK_BORDER = 0, CLICK_DECORATION = 1, CLICK_INSIDE = 2 } click_destination_t; --- src/click.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/click.c b/src/click.c index ee23c9d59..12e391b53 100644 --- a/src/click.c +++ b/src/click.c @@ -162,21 +162,18 @@ static void route_click(Con *con, xcb_button_press_event_t *event, const bool mo /* if the user has bound an action to this click, it should override the * default behavior. */ - if (dest == CLICK_DECORATION || dest == CLICK_INSIDE || dest == CLICK_BORDER) { - Binding *bind = get_binding_from_xcb_event((xcb_generic_event_t *)event); - - if (bind != NULL && ((dest == CLICK_DECORATION && !bind->exclude_titlebar) || - (dest == CLICK_INSIDE && bind->whole_window) || - (dest == CLICK_BORDER && bind->border))) { - CommandResult *result = run_binding(bind, con); - - /* ASYNC_POINTER eats the event */ - xcb_allow_events(conn, XCB_ALLOW_ASYNC_POINTER, event->time); - xcb_flush(conn); + Binding *bind = get_binding_from_xcb_event((xcb_generic_event_t *)event); + if (bind && ((dest == CLICK_DECORATION && !bind->exclude_titlebar) || + (dest == CLICK_INSIDE && bind->whole_window) || + (dest == CLICK_BORDER && bind->border))) { + CommandResult *result = run_binding(bind, con); + + /* ASYNC_POINTER eats the event */ + xcb_allow_events(conn, XCB_ALLOW_ASYNC_POINTER, event->time); + xcb_flush(conn); - command_result_free(result); - return; - } + command_result_free(result); + return; } /* There is no default behavior for button release events so we are done. */