diff options
Diffstat (limited to 'sway/handlers.c')
-rw-r--r-- | sway/handlers.c | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/sway/handlers.c b/sway/handlers.c index b82456e2..67275575 100644 --- a/sway/handlers.c +++ b/sway/handlers.c | |||
@@ -723,26 +723,11 @@ static bool handle_pointer_button(wlc_handle view, uint32_t time, const struct w | |||
723 | bool handle_pointer_scroll(wlc_handle view, uint32_t time, const struct wlc_modifiers* modifiers, | 723 | bool handle_pointer_scroll(wlc_handle view, uint32_t time, const struct wlc_modifiers* modifiers, |
724 | uint8_t axis_bits, double _amount[2]) { | 724 | uint8_t axis_bits, double _amount[2]) { |
725 | if (!(modifiers->mods ^ config->floating_mod)) { | 725 | if (!(modifiers->mods ^ config->floating_mod)) { |
726 | switch (config->floating_scroll) { | 726 | int amount = (int)_amount[0]; |
727 | case FSB_GAPS_INNER: | 727 | if (amount > 0) { |
728 | case FSB_GAPS_OUTER: | 728 | handle_command(config->floating_scroll_up_cmd); |
729 | { | 729 | } else if (amount < 0) { |
730 | int amount = (int)_amount[0]; | 730 | handle_command(config->floating_scroll_down_cmd); |
731 | int i,j; | ||
732 | for (i = 0; i < root_container.children->length; ++i) { | ||
733 | swayc_t *op = root_container.children->items[i]; | ||
734 | for (j = 0; j < op->children->length; ++j) { | ||
735 | swayc_t *ws = op->children->items[j]; | ||
736 | if (config->floating_scroll == FSB_GAPS_INNER) { | ||
737 | container_map(ws, add_gaps, &amount); | ||
738 | } else { | ||
739 | ws->gaps += amount; | ||
740 | } | ||
741 | } | ||
742 | } | ||
743 | arrange_windows(&root_container, -1, -1); | ||
744 | break; | ||
745 | } | ||
746 | } | 731 | } |
747 | } | 732 | } |
748 | return EVENT_PASSTHROUGH; | 733 | return EVENT_PASSTHROUGH; |