diff options
Diffstat (limited to 'src/event.c')
| -rw-r--r-- | src/event.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/event.c b/src/event.c index 5e8d7d5..b4e1975 100644 --- a/src/event.c +++ b/src/event.c @@ -81,7 +81,7 @@ static void event_dispatch_callback(event_state_t *state, layout_t *layout, even "b:action", layout->block->actions != NULL, "b:callback", event_fn != NULL); - if (layout->block->actions != NULL) { + if (event_is_click(event) && layout->block->actions != NULL) { action_perform(layout->block->actions, layout->block, state->config); } @@ -123,9 +123,15 @@ static bool event_dispatch_mouse(event_state_t *state, layout_t *layout, event_t if (event_is_hover(event)) { // Compare only the part related to position and size // - bool update = !memcmp(&state->hovered, layout, offsetof(layout_t, line_width)) - && event.x == state->hover_x - && event.y == state->hover_y; + bool update = event.x == state->hover_x + && event.y == state->hover_y + && state->hovered.x == layout->x + && state->hovered.y == layout->y + && state->hovered.x_padding == layout->x_padding + && state->hovered.y_padding == layout->y_padding + && state->hovered.width == layout->width + && state->hovered.height == layout->height + && state->hovered.line_width == layout->line_width; state->hover_x = event.x; state->hover_y = event.y; |
