[PATCH 1/4] shell: block move, rotate, resize in maximized state

Rafal Mielniczuk rafal.mielniczuk2 at gmail.com
Mon Mar 11 11:26:53 PDT 2013


To remain consisten with client side window, which blocks moving and
resizing of window in maximized state, we should do so on the compositor
side as well.

(until there is some unmaximize notification from server, which will
allow window to start drawing shadows and revert itself to toplevel
state)
---
 src/shell.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/shell.c b/src/shell.c
index 3da5321..d8467bd 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1175,7 +1175,8 @@ surface_resize(struct shell_surface *shsurf,
 {
 	struct weston_resize_grab *resize;
 
-	if (shsurf->type == SHELL_SURFACE_FULLSCREEN)
+	if (shsurf->type == SHELL_SURFACE_FULLSCREEN ||
+		shsurf->type == SHELL_SURFACE_MAXIMIZED)
 		return 0;
 
 	if (edges == 0 || edges > 15 ||
@@ -2412,7 +2413,8 @@ move_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
 		return;
 
 	shsurf = get_shell_surface(surface);
-	if (shsurf == NULL || shsurf->type == SHELL_SURFACE_FULLSCREEN)
+	if (shsurf == NULL || shsurf->type == SHELL_SURFACE_FULLSCREEN ||
+		shsurf->type == SHELL_SURFACE_MAXIMIZED)
 		return;
 
 	surface_move(shsurf, (struct weston_seat *) seat);
@@ -2431,7 +2433,8 @@ resize_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
 		return;
 
 	shsurf = get_shell_surface(surface);
-	if (!shsurf || shsurf->type == SHELL_SURFACE_FULLSCREEN)
+	if (!shsurf || shsurf->type == SHELL_SURFACE_FULLSCREEN ||
+		shsurf->type == SHELL_SURFACE_MAXIMIZED)
 		return;
 
 	weston_surface_from_global(surface,
@@ -2690,7 +2693,8 @@ rotate_binding(struct wl_seat *seat, uint32_t time, uint32_t button,
 		return;
 
 	surface = get_shell_surface(base_surface);
-	if (!surface || surface->type == SHELL_SURFACE_FULLSCREEN)
+	if (!surface || surface->type == SHELL_SURFACE_FULLSCREEN ||
+		surface->type == SHELL_SURFACE_MAXIMIZED)
 		return;
 
 	surface_rotate(surface, seat);
-- 
1.8.1.5



More information about the wayland-devel mailing list