diff --git a/src/core/policy.c b/src/core/policy.c index a8475e3..a3ea72f 100644 --- a/src/core/policy.c +++ b/src/core/policy.c @@ -540,6 +540,7 @@ static void route_pointer_motion( } break; case ZDWM_WINDOW_INTERACTION_RESIZE: { auto window = state_window_get(ctx->state, window_id); + if (!window_can_resize(window)) break; auto rect = interaction->origin_rect; auto start = interaction->start_coordinate; diff --git a/src/core/window.c b/src/core/window.c index 8d74c16..d6d5ff7 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -171,3 +171,10 @@ bool window_should_fix_size(const window_t *window) { auto min = window->min_size; return max.width == min.width && max.height == min.height; } + +bool window_can_resize(const window_t *window) { + if (window->fullscreen || window->maximized) return false; + if (window_should_fix_size(window)) return false; + + return true; +} diff --git a/src/core/window.h b/src/core/window.h index 2bf70b2..fab3396 100644 --- a/src/core/window.h +++ b/src/core/window.h @@ -130,3 +130,4 @@ bool window_need_move(const window_t *window, int32_t x, int32_t y); bool window_need_resize(const window_t *window, int32_t width, int32_t height); bool window_should_has_border(const window_t *window); bool window_should_fix_size(const window_t *window); +bool window_can_resize(const window_t *window);