From: Etaash Mathamsetty <etaash.mathamsetty@gmail.com> --- dlls/winewayland.drv/waylanddrv.h | 3 ++- dlls/winewayland.drv/window.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dlls/winewayland.drv/waylanddrv.h b/dlls/winewayland.drv/waylanddrv.h index ad41a1b474e..8eccebb11a7 100644 --- a/dlls/winewayland.drv/waylanddrv.h +++ b/dlls/winewayland.drv/waylanddrv.h @@ -74,7 +74,8 @@ enum wayland_surface_config_state WAYLAND_SURFACE_CONFIG_STATE_MAXIMIZED = (1 << 0), WAYLAND_SURFACE_CONFIG_STATE_RESIZING = (1 << 1), WAYLAND_SURFACE_CONFIG_STATE_TILED = (1 << 2), - WAYLAND_SURFACE_CONFIG_STATE_FULLSCREEN = (1 << 3) + WAYLAND_SURFACE_CONFIG_STATE_FULLSCREEN = (1 << 3), + WAYLAND_SURFACE_CONFIG_STATE_RESIZEABLE = (1 << 4) }; enum wayland_surface_role diff --git a/dlls/winewayland.drv/window.c b/dlls/winewayland.drv/window.c index 2c3d1f87408..b63002204b1 100644 --- a/dlls/winewayland.drv/window.c +++ b/dlls/winewayland.drv/window.c @@ -172,6 +172,9 @@ static void wayland_win_data_get_config(struct wayland_win_data *data, window_state |= WAYLAND_SURFACE_CONFIG_STATE_MAXIMIZED; } + if (style & WS_THICKFRAME) + window_state |= WAYLAND_SURFACE_CONFIG_STATE_RESIZEABLE; + conf->state = window_state; conf->scale = NtUserGetSystemDpiForProcess(0) / 96.0; conf->visible = (style & WS_VISIBLE) == WS_VISIBLE; @@ -254,6 +257,7 @@ static void wayland_surface_update_state_toplevel(struct wayland_surface *surfac { BOOL processing_config = surface->processing.serial && !surface->processing.processed; + const RECT *rect = &surface->window.rect; TRACE("hwnd=%p window_state=%#x %s->state=%#x\n", surface->hwnd, surface->window.state, @@ -287,6 +291,17 @@ static void wayland_surface_update_state_toplevel(struct wayland_surface *surfac { xdg_toplevel_set_fullscreen(surface->xdg_toplevel, NULL); } + if (surface->window.state & WAYLAND_SURFACE_CONFIG_STATE_RESIZEABLE) + { + xdg_toplevel_set_min_size(surface->xdg_toplevel, 0, 0); + xdg_toplevel_set_max_size(surface->xdg_toplevel, 0, 0); + } + else + { + int width = rect->right - rect->left, height = rect->bottom - rect->top; + xdg_toplevel_set_min_size(surface->xdg_toplevel, width, height); + xdg_toplevel_set_max_size(surface->xdg_toplevel, width, height); + } } else { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10265