ecore-wl2: Add API function to set if a window is maximized
authorChris Michael <cp.michael@samsung.com>
Mon, 28 Sep 2015 15:28:23 +0000 (11:28 -0400)
committerChris Michael <cp.michael@samsung.com>
Thu, 3 Dec 2015 17:02:40 +0000 (12:02 -0500)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
src/lib/ecore_wl2/Ecore_Wl2.h
src/lib/ecore_wl2/ecore_wl2_window.c

index ff66248..8205dc3 100644 (file)
@@ -398,6 +398,9 @@ EAPI void ecore_wl2_window_opaque_region_set(Ecore_Wl2_Window *window, int x, in
 EAPI Eina_Bool ecore_wl2_window_maximized_get(Ecore_Wl2_Window *window);
 
 /* TODO: doxy */
+EAPI void ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized);
+
+/* TODO: doxy */
 EAPI Eina_Bool ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window);
 
 /* TODO: doxy */
index 1e0e26a..255051e 100644 (file)
@@ -593,6 +593,36 @@ ecore_wl2_window_maximized_get(Ecore_Wl2_Window *window)
    return EINA_FALSE;
 }
 
+EAPI void
+ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized)
+{
+   EINA_SAFETY_ON_NULL_RETURN(window);
+
+   if ((window->type == ECORE_WL2_WINDOW_TYPE_MAXIMIZED) == maximized)
+     return;
+
+   if (window->type == ECORE_WL2_WINDOW_TYPE_TOPLEVEL)
+     {
+        if (window->xdg_surface)
+          xdg_surface_set_maximized(window->xdg_surface);
+        else if (window->wl_shell_surface)
+          wl_shell_surface_set_maximized(window->wl_shell_surface, NULL);
+
+        window->type = ECORE_WL2_WINDOW_TYPE_MAXIMIZED;
+     }
+   else if (window->type == ECORE_WL2_WINDOW_TYPE_MAXIMIZED)
+     {
+        if (window->xdg_surface)
+          xdg_surface_unset_maximized(window->xdg_surface);
+        else if (window->wl_shell_surface)
+          wl_shell_surface_set_toplevel(window->wl_shell_surface);
+
+        window->type = ECORE_WL2_WINDOW_TYPE_TOPLEVEL;
+     }
+
+   /* TODO: send configure ? */
+}
+
 EAPI Eina_Bool
 ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window)
 {