From a0bdbc92ba7059d3abaa69d170bf9ce5165d1795 Mon Sep 17 00:00:00 2001
From: Tony Crisci <tony@dubstepdish.com>
Date: Thu, 14 Sep 2017 16:27:14 -0400
Subject: xdg-shell-toplevel configure requests

---
 include/wlr/types/wlr_xdg_shell_v6.h | 53 +++++++++++++++++++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

(limited to 'include')

diff --git a/include/wlr/types/wlr_xdg_shell_v6.h b/include/wlr/types/wlr_xdg_shell_v6.h
index 6e2f43c4..e13af137 100644
--- a/include/wlr/types/wlr_xdg_shell_v6.h
+++ b/include/wlr/types/wlr_xdg_shell_v6.h
@@ -23,6 +23,9 @@ struct wlr_xdg_toplevel_v6_state {
 	bool resizing;
 	bool activated;
 
+	uint32_t width;
+	uint32_t height;
+
 	uint32_t max_width;
 	uint32_t max_height;
 
@@ -31,17 +34,31 @@ struct wlr_xdg_toplevel_v6_state {
 };
 
 struct wlr_xdg_toplevel_v6 {
-	struct wlr_xdg_toplevel_v6_state next;
+	struct wl_resource *resource;
+	struct wlr_xdg_surface_v6 *base;
+	struct wlr_xdg_toplevel_v6_state next; // client protocol requests
+	struct wlr_xdg_toplevel_v6_state pending; // user configure requests
 	struct wlr_xdg_toplevel_v6_state current;
 };
 
+// TODO split up into toplevel and popup configure
+struct wlr_xdg_surface_v6_configure {
+	struct wl_list link; // wlr_xdg_surface_v6::configure_list
+	uint32_t serial;
+	struct wlr_xdg_toplevel_v6_state *state;
+};
+
 struct wlr_xdg_surface_v6 {
+	struct wl_client *client;
 	struct wl_resource *resource;
 	struct wlr_surface *surface;
 	struct wl_list link;
 	enum wlr_xdg_surface_v6_role role;
 	struct wlr_xdg_toplevel_v6 *toplevel_state;
 
+	struct wl_event_source *configure_idle;
+	struct wl_list configure_list;
+
 	char *title;
 	char *app_id;
 
@@ -64,4 +81,38 @@ struct wlr_xdg_surface_v6 {
 struct wlr_xdg_shell_v6 *wlr_xdg_shell_v6_create(struct wl_display *display);
 void wlr_xdg_shell_v6_destroy(struct wlr_xdg_shell_v6 *xdg_shell);
 
+/**
+ * Request that this toplevel surface be the given size.
+ */
+void wlr_xdg_toplevel_v6_set_size(struct wlr_xdg_surface_v6 *surface,
+		uint32_t width, uint32_t height);
+
+/**
+ * Request that this toplevel surface show itself in an activated or deactivated
+ * state.
+ */
+void wlr_xdg_toplevel_v6_set_activated(struct wlr_xdg_surface_v6 *surface,
+		bool activated);
+
+/**
+ * Request that this toplevel surface consider itself maximized or not
+ * maximized.
+ */
+void wlr_xdg_toplevel_v6_set_maximized(struct wlr_xdg_surface_v6 *surface,
+		bool maximized);
+
+/**
+ * Request that this toplevel surface consider itself fullscreen or not
+ * fullscreen.
+ */
+void wlr_xdg_toplevel_v6_set_fullscreen(struct wlr_xdg_surface_v6 *surface,
+		bool fullscreen);
+
+/**
+ * Request that this toplevel surface consider itself to be resizing or not
+ * resizing.
+ */
+void wlr_xdg_toplevel_v6_set_resizing(struct wlr_xdg_surface_v6 *surface,
+		bool resizing);
+
 #endif
-- 
cgit v1.2.3