} Ecore_Wl2_Clipboard_State;
//
+// TIZEN_ONLY(20221121): support a maximize direction
+typedef enum _Ecore_Wl2_Maximize_Direction
+{
+ ECORE_WL2_MAXIMIZE_DIRECTION_NONE, // unmaximize
+ ECORE_WL2_MAXIMIZE_DIRECTION_ALL, // maximize to full screen
+ ECORE_WL2_MAXIMIZE_DIRECTION_LEFT, // maximize to left side of screen
+ ECORE_WL2_MAXIMIZE_DIRECTION_RIGHT, // maximize to right side of screen
+} Ecore_Wl2_Maximize_Direction;
+//
+
/** @internal */
typedef struct _Ecore_Wl2_Event_Aux_Hint_Allowed
{
*/
EAPI void ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized);
+// TIZEN_ONLY(20221121): support a maximize direction
+/**
+ * @internal
+ *
+ * Set the maximized state of a given window with a maximize direction
+ * If the type is ECORE_WL2_MAXIMIZE_DIRECTION_NONE, this means unmaximizing window.
+ * This is same to call ecore_wl2_window_maximized_set(window, EINA_FALSE).
+ * If the type is ECORE_WL2_MAXIMIZE_DIRECTION_ALL, this is same to call ecore_wl2_window_maximized_set(window, EINA_TRUE).
+ *
+ * @param window The window to set the maximized state of
+ * @param direction ECORE_WL2_MAXIMIZE_DIRECTION_NONE to unmaximize, otherwise maximize to specific direction
+ *
+ * @see ecore_wl2_window_maximized_set
+ * @ingroup Ecore_Wl2_Window_Group
+ */
+EAPI void ecore_wl2_window_maximized_set_with_direction(Ecore_Wl2_Window *window, Ecore_Wl2_Maximize_Direction direction);
+//
+
/**
* @internal
*
return window->set_config.maximized;
}
+static Eina_Bool
+_ecore_wl2_window_maximized_direction_set(Ecore_Wl2_Window *window, Ecore_Wl2_Maximize_Direction direction)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(window, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(window->surface, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(window->display->wl.tz_policy, EINA_FALSE);
+
+ window->maximize_direction = direction;
+
+ uint32_t ver = wl_proxy_get_version((struct wl_proxy *)window->display->wl.tz_policy);
+
+#ifdef TIZEN_POLICY_SET_MAXIMIZE_DIRECTION_SINCE_VERSION
+ if (ver < TIZEN_POLICY_SET_MAXIMIZE_DIRECTION_SINCE_VERSION)
+ {
+ ERR("[WINDOW] Maximize direction is not supported on this version(%d). It is supported since version %d.",
+ ver, TIZEN_POLICY_SET_MAXIMIZE_DIRECTION_SINCE_VERSION);
+ return EINA_FALSE;
+ }
+
+ tizen_policy_set_maximize_direction(window->display->wl.tz_policy, window->surface, direction);
+
+ return EINA_TRUE;
+#else
+ return EINA_FALSE;
+#endif
+}
+
EAPI void
-ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized)
+ecore_wl2_window_maximized_set_with_direction(Ecore_Wl2_Window *window, Ecore_Wl2_Maximize_Direction direction)
{
- Eina_Bool prev;
+ Eina_Bool maximized = EINA_TRUE;
+ Eina_Bool changed_maximize_state = EINA_FALSE;
EINA_SAFETY_ON_NULL_RETURN(window);
- prev = window->set_config.maximized;
- maximized = !!maximized;
- if (prev == maximized) return;
+ if (window->maximize_direction == direction)
+ {
+ ERR("[WINDOW] win:%d, SAME direction:%d... so return.......", window->resource_id, direction);
+ return;
+ }
+
+ _ecore_wl2_window_maximized_direction_set(window, direction);
+
+ if (direction == ECORE_WL2_MAXIMIZE_DIRECTION_NONE)
+ maximized = EINA_FALSE;
+
+ if (window->set_config.maximized != maximized)
+ changed_maximize_state = EINA_TRUE;
window->set_config.maximized = maximized;
if (window->updating)
return;
}
- if (maximized)
+ if (changed_maximize_state)
{
- if (!window->set_config.fullscreen)
- window->saved = window->set_config.geometry;
+ if (maximized)
+ {
+ if (!window->set_config.fullscreen)
+ window->saved = window->set_config.geometry;
- if (window->xdg_toplevel)
- xdg_toplevel_set_maximized(window->xdg_toplevel);
- if (window->zxdg_toplevel)
- zxdg_toplevel_v6_set_maximized(window->zxdg_toplevel);
- }
- else
- {
- if (window->xdg_toplevel)
- xdg_toplevel_unset_maximized(window->xdg_toplevel);
- if (window->zxdg_toplevel)
- zxdg_toplevel_v6_unset_maximized(window->zxdg_toplevel);
+ if (window->xdg_toplevel)
+ xdg_toplevel_set_maximized(window->xdg_toplevel);
+ if (window->zxdg_toplevel)
+ zxdg_toplevel_v6_set_maximized(window->zxdg_toplevel);
+ }
+ else
+ {
+ if (window->xdg_toplevel)
+ xdg_toplevel_unset_maximized(window->xdg_toplevel);
+ if (window->zxdg_toplevel)
+ zxdg_toplevel_v6_unset_maximized(window->zxdg_toplevel);
+ }
}
+
/* TIZEN_ONLY(20190522): The window properties of ecore_evas are updated in
* _ecore_evas_wl_common_cb_window_configure.
* To call _ecore_evas_wl_common_cb_window_configure,
ecore_wl2_display_flush(window->display);
}
+EAPI void
+ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized)
+{
+ if (maximized)
+ ecore_wl2_window_maximized_set_with_direction(window, ECORE_WL2_MAXIMIZE_DIRECTION_ALL);
+ else
+ ecore_wl2_window_maximized_set_with_direction(window, ECORE_WL2_MAXIMIZE_DIRECTION_NONE);
+}
+
EAPI Eina_Bool
ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window)
{