libweston-desktop/xdg_shell_v6: Raise errors on not-yet-possible requests

These requests need a mapped surface, which can only happen after the
initial configure event.

Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Jonas Ã…dahl <jadahl@gmail.com>
diff --git a/libweston-desktop/xdg-shell-v6.c b/libweston-desktop/xdg-shell-v6.c
index fbf3e69..d4d0112 100644
--- a/libweston-desktop/xdg-shell-v6.c
+++ b/libweston-desktop/xdg-shell-v6.c
@@ -349,6 +349,13 @@
 	struct weston_desktop_xdg_toplevel *toplevel =
 		weston_desktop_surface_get_implementation_data(dsurface);
 
+	if (!toplevel->base.configured) {
+		wl_resource_post_error(toplevel->resource,
+				       ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED,
+				       "Surface has not been configured yet");
+		return;
+	}
+
 	weston_desktop_api_show_window_menu(toplevel->base.desktop,
 					    dsurface, seat, x, y);
 }
@@ -366,6 +373,13 @@
 	struct weston_desktop_xdg_toplevel *toplevel =
 		weston_desktop_surface_get_implementation_data(dsurface);
 
+	if (!toplevel->base.configured) {
+		wl_resource_post_error(toplevel->resource,
+				       ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED,
+				       "Surface has not been configured yet");
+		return;
+	}
+
 	weston_desktop_api_move(toplevel->base.desktop, dsurface, seat, serial);
 }
 
@@ -383,6 +397,13 @@
 	struct weston_desktop_xdg_toplevel *toplevel =
 		weston_desktop_surface_get_implementation_data(dsurface);
 
+	if (!toplevel->base.configured) {
+		wl_resource_post_error(toplevel->resource,
+				       ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED,
+				       "Surface has not been configured yet");
+		return;
+	}
+
 	weston_desktop_api_resize(toplevel->base.desktop,
 				  dsurface, seat, serial, edges);
 }