# include <Eina.h>
# include <Ecore.h>
-# include <wayland-client.h>
-# include <wayland-cursor.h>
-# include <xkbcommon/xkbcommon.h>
-
-# define WL_HIDE_DEPRECATED
-# include <wayland-server.h>
# ifdef EAPI
# undef EAPI
#define ECORE_WL2_SURFACE_INTERFACE_VERSION 1
-typedef struct _Ecore_Wl2_Subsurface Ecore_Wl2_Subsurface;
# ifndef _ECORE_WL2_WINDOW_PREDEF
typedef struct _Ecore_Wl2_Window Ecore_Wl2_Window;
typedef struct _Ecore_Wl2_Output Ecore_Wl2_Output;
typedef struct _Ecore_Wl2_Input Ecore_Wl2_Input;
typedef struct _Ecore_Wl2_Seat Ecore_Wl2_Seat;
-typedef struct _Ecore_Wl2_Pointer Ecore_Wl2_Pointer;
-typedef struct _Ecore_Wl2_Keyboard Ecore_Wl2_Keyboard;
-typedef struct _Ecore_Wl2_Touch Ecore_Wl2_Touch;
typedef struct _Ecore_Wl2_Offer Ecore_Wl2_Offer;
typedef struct _Ecore_Wl2_Surface Ecore_Wl2_Surface;
-// TIZEN_ONLY(20171109): support a tizen_input_device_manager interface
-typedef struct _Ecore_Wl2_Tizen_Input_Eo_Device Ecore_Wl2_Tizen_Input_Eo_Device;
-typedef struct _Ecore_Wl2_Tizen_Input_Device Ecore_Wl2_Tizen_Input_Device;
-
-//
// TIZEN_ONLY(20190807): Support for wl_egl interface
typedef struct _Ecore_Wl2_Egl_Window Ecore_Wl2_Egl_Window;
//
} Ecore_Wl2_Window_Keygrab_Info;
//
-typedef void (*Ecore_Wl2_Bind_Cb)(struct wl_client *client, void *data, uint32_t version, uint32_t id);
-typedef void (*Ecore_Wl2_Unbind_Cb)(struct wl_resource *resource);
typedef void (*Ecore_Wl2_Frame_Cb)(Ecore_Wl2_Window *win, uint32_t timestamp, void *data);
typedef struct _Ecore_Wl2_Frame_Cb_Handle Ecore_Wl2_Frame_Cb_Handle;
*/
/**
- * Create a new Wayland display
- *
- * @brief This function is typically used to create a new display for
- * use with compositors, or to create a new display for use in nested
- * compositors.
- *
- * @param name The display target name to create. If @c NULL, a default
- * display name will be assigned.
- * @return The newly created Ecore_Wl2_Display
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.17
- */
-EAPI Ecore_Wl2_Display *ecore_wl2_display_create(const char *name);
-
-/**
- * Destroy an existing Wayland display
- *
- * @brief This function is typically used by servers to terminate an
- * existing Wayland display.
- *
- * @param display The display to terminate
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_display_destroy(Ecore_Wl2_Display *display);
-
-/**
* Connect to an existing Wayland display
*
* @brief This function is typically used by clients to connect to an
EAPI void ecore_wl2_display_disconnect(Ecore_Wl2_Display *display);
/**
- * Terminate a Wayland display's main loop
- *
- * @brief This function is typically used by servers to terminate the
- * Wayland display main loop. This is usually only called when a server
- * encounters an error.
- *
- * @param display The Ecore_Wl2_Display to terminate
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_display_terminate(Ecore_Wl2_Display *display);
-
-/**
+ * @Internal
* Retrieve the existing Wayland display
*
* @param display The Ecore_Wl2_Display for which to retrieve the existing
*/
EAPI struct wl_display *ecore_wl2_display_get(Ecore_Wl2_Display *display);
-// TIZEN_ONLY(20190807): Retrieve the existing native wayland display
-EAPI void *ecore_wl2_native_display_get(Ecore_Wl2_Display *display);
-//
-
/**
+ * @Internal
* Retrieve the wl_shm from a given Ecore_Wl2_Display
*
* @param display The Ecore_Wl2_Display for which to retrieve the existing
EAPI struct wl_shm *ecore_wl2_display_shm_get(Ecore_Wl2_Display *display);
/**
- * Retrieve the wl_dmabuf from a given Ecore_Wl2_Display
- *
- *
- * @param display The Ecore_Wl2_Display for which to retrieve the existing
- * Wayland dmabuf interface from
- *
- * @return The wl_dmabuf which this Ecore_Wl2_Display is using
- *
- * @ingroup Ecore_Wl2_Display_Group
- *
- * @note This is intended for client use only and should be used only
- * after ecore_wl2_display_connect(). Also, the return type is
- * void * instead of zpw_linux_dmabuf_v1 * since we don't want
- * to change our public API every time the version changes in
- * wayland-protocols.
- *
- * @since 1.18
- */
-EAPI void *ecore_wl2_display_dmabuf_get(Ecore_Wl2_Display *display);
-
-/**
+ * @Internal
* Return an Eina_Iterator that can be used to iterate through globals
*
* @param display The Ecore_Wl2_Display for which to return a global iterator
EAPI void ecore_wl2_display_screen_size_get(Ecore_Wl2_Display *display, int *w, int *h);
/**
- * Get all the Ecore_Wl2_Input from the display.
- *
- * @param display The display
- *
- * @return A Eina_Iterator of Ecore_Wl2_Input or @c NULL on error
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.19
- */
-EAPI Eina_Iterator *ecore_wl2_display_inputs_get(Ecore_Wl2_Display *display);
-
-/**
- * Find a seat for a given display object using the seat id
- *
- * @param display The display
- * @param id The seat id
- *
- * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.20
- */
-EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find(const Ecore_Wl2_Display *display, unsigned int id);
-
-/**
- * Find a seat for a given display object using the seat id
- *
- * @param display The display
- * @param name The seat name
- *
- * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.20
- */
-EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find_by_name(const Ecore_Wl2_Display *display, const char *name);
-
-/**
* Find an Ecore_Wl2_Window based on id
*
* @param display The display to search for the window
EAPI Ecore_Wl2_Window *ecore_wl2_display_window_find(Ecore_Wl2_Display *display, unsigned int id);
/**
+ * @Internal
* Retrieves the Wayland Registry used for the current Wayland display.
*
* @param display The display to get the registry of
EAPI struct wl_registry *ecore_wl2_display_registry_get(Ecore_Wl2_Display *display);
/**
- * Check if the display has performed a sync
- *
- * @param display The display
- *
- * @return True if the display sync has occurred
- * @see ECORE_WL2_EVENT_SYNC_DONE
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.20
- */
-EAPI Eina_Bool ecore_wl2_display_sync_is_done(const Ecore_Wl2_Display *display);
-
-/**
- * Get the name of the display object
- *
- * @param display The display
- *
- * @return The name of the display object
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.20
- */
-EAPI const char *ecore_wl2_display_name_get(const Ecore_Wl2_Display *display);
-
-/**
- * Finds an Ecore_Wl2_Window based on wl_surface
- *
- * @param display The display to search for the window
- * @param surface The wl_surface of the window to find
- *
- * @return The Ecore_Wl2_Window if found, or NULL if no such window exists
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.24
- */
-EAPI Ecore_Wl2_Window *ecore_wl2_display_window_find_by_surface(Ecore_Wl2_Display *display, struct wl_surface *surface);
-
-/**
* Gets the connected display object
*
* @brief This function is typically used by clients to get an
EAPI Ecore_Wl2_Display *ecore_wl2_connected_display_get(const char *name);
/**
+ * @Internal
* Gets the wl_compositor which belongs to this display
*
* @param display The Ecore_Wl2_Display to get the compositor of
EAPI int ecore_wl2_window_id_get(Ecore_Wl2_Window *window);
/**
- * Set a callback to be caleld just before the window is closed and freed
- *
- * @param window The window to listen to for a xdg toplevel close callback
- * @param cb The callback function to call being passed data and window
- * @param data The Data pointer to pass as data to the callback
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.24
- */
-EAPI void ecore_wl2_window_close_callback_set(Ecore_Wl2_Window *window, void (*cb) (void *data, Ecore_Wl2_Window *win), void *data);
-
-/**
+ * @Internal
* Get the wl_surface which belongs to this window
*
* @param window The Ecore_Wl2_Window to get the surface of
EAPI int ecore_wl2_window_surface_id_get(Ecore_Wl2_Window *window);
/**
- * @see evas_object_size_hint_aspect_set
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.21
- */
-EAPI void ecore_wl2_window_aspect_set(Ecore_Wl2_Window *window, int w, int h, unsigned int aspect);
-
-/**
- * @see evas_object_size_hint_aspect_get
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.24
- */
-EAPI void ecore_wl2_window_aspect_get(Ecore_Wl2_Window *window, int *w, int *h, unsigned int *aspect);
-
-/**
* Show a given Ecore_Wl2_Window
*
* @param window The Ecore_Wl2_Window to show
EAPI void ecore_wl2_window_free(Ecore_Wl2_Window *window);
/**
- * @brief Begin moving a given Ecore_Wl2_Window
- *
- * @param window The Ecore_Wl2_Window which to move
- * @param input The seat on which the move is active on
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI void ecore_wl2_window_move(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
-
-/**
* @brief Begin resizing a given window
*
* @param window The Ecore_Wl2_Window which to resize
*/
EAPI void ecore_wl2_window_resize(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input, int location);
-/**
- * Raise a given Ecore_Wl2_Window
- *
- * @param window The Ecore_Wl2_Window which to raise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_window_raise(Ecore_Wl2_Window *window);
-
// TIZEN_ONLY(20171108): tizen window function
EAPI void ecore_wl2_window_lower(Ecore_Wl2_Window *window);
EAPI void ecore_wl2_window_activate(Ecore_Wl2_Window *window);
-EAPI void ecore_wl2_window_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent);
-EAPI void ecore_wl2_window_stack_mode_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Stack_Mode mode);
EAPI void ecore_wl2_window_position_set(Ecore_Wl2_Window *window, int x, int y);
-EAPI int ecore_wl2_window_active_angle_get(Ecore_Wl2_Window *window);
-//
-
-//TIZEN_ONLY(20171216): add ecore_wl2_window_find
-EAPI Ecore_Wl2_Window *ecore_wl2_window_find(unsigned int id);
//
/**
EAPI void ecore_wl2_window_alpha_set(Ecore_Wl2_Window *window, Eina_Bool alpha);
/**
- * Set a given window's transparent property
- *
- * @param window The window on which to set the transparent property
- * @param transparent EINA_TRUE to set window as transparent,
- * EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_window_transparent_set(Ecore_Wl2_Window *window, Eina_Bool transparent);
-
-// TIZEN_ONLY(20171108) : Get a window's transparent property
-EAPI Eina_Bool ecore_wl2_window_transparent_get(Ecore_Wl2_Window *window);
-//
-
-/**
- * Set the opaque region of the Ecore_Wl2_Window
- *
- * @param win The window
- * @param x The left point of the region.
- * @param y The top point of the region.
- * @param w The width of the region.
- * @param h The height of the region.
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_window_opaque_region_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
-
-// TIZEN_ONLY(20160201) : support to handle input rectangle
-EAPI void ecore_wl2_window_input_rect_set(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
-EAPI void ecore_wl2_window_input_rect_add(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
-EAPI void ecore_wl2_window_input_rect_subtract(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
-//
-
-/**
- * Get the opaque region of the Ecore_Wl2_Window
- *
- * @param win The window
- * @param x The left point of the region.
- * @param y The top point of the region.
- * @param w The width of the region.
- * @param h The height of the region.
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.24
- */
-EAPI void ecore_wl2_window_opaque_region_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
-
-/**
* Set the input region of the Ecore_Wl2_Window.
*
* To set an empty region, pass width and height as 0.
EAPI void ecore_wl2_window_input_region_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
/**
- * Get if a given window is maximized
- *
- * @param window The window to get the maximized state of
- *
- * @return EINA_TRUE if window is maximized, EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI Eina_Bool ecore_wl2_window_maximized_get(Ecore_Wl2_Window *window);
-
-/**
- * Set the maximized state of a given window
- *
- * @param window The window to set the maximized state of
- * @param maximized EINA_TRUE to set maximized, EINA_FALSE to unset
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized);
-
-/**
- * Get if a given window is fullscreen
- *
- * @param window The window to get the fullscreen state of
- *
- * @return EINA_TRUE if window is fullscreen, EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI Eina_Bool ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window);
-
-/**
- * Set the fullscreen state of a given window
- *
- * @param window The window to set the fullscreen state of
- * @param maximized EINA_TRUE to set fullscreen, EINA_FALSE to unset
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_window_fullscreen_set(Ecore_Wl2_Window *window, Eina_Bool fullscreen);
-
-/**
* Get if a given window is rotated
*
* @param window The window to get the rotation of
EAPI void ecore_wl2_window_rotation_set(Ecore_Wl2_Window *window, int rotation);
/**
- * Set the title of a given window
- *
- * @param window The window to set the title of
- * @param title The title of the window
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_window_title_set(Ecore_Wl2_Window *window, const char *title);
-
-/**
- * Get the title of a given window
- *
- * @param window The window to set the title of
- *
- * @return A string if found, or NULL otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.24
- */
-EAPI const char *ecore_wl2_window_title_get(Ecore_Wl2_Window *window);
-
-/**
* Set the class of a given window
*
* @param window The window to set the class of
*/
EAPI void ecore_wl2_window_iconified_set(Ecore_Wl2_Window *window, Eina_Bool iconified);
-// TIZEN_ONLY(20151231) : handling iconic state on tizen
-EAPI void ecore_wl2_window_iconify_state_update(Ecore_Wl2_Window *window, Eina_Bool iconified, Eina_Bool send_event);
-//
-
/**
* Set the type of a given window
*
EAPI Ecore_Wl2_Output *ecore_wl2_window_output_find(Ecore_Wl2_Window *window);
/**
- * Set if window rotation is supported by the window manager
- *
- * @param window
- * @param enabled
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI void ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, Eina_Bool enabled);
-
-/**
- * Get if window rotation is supported by the window manager
- *
- * @param window
- *
- * @return EINA_TRUE if supported, EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI Eina_Bool ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *window);
-
-/**
- * Set if an application has set window rotation
- *
- * @param window
- * @param set
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI void ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, Eina_Bool set);
-
-/**
- * Get if an application has set window rotation
- *
- * @param window
- *
- * @return EINA_TRUE if set, EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI Eina_Bool ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
-
-/**
* Set preferred rotation on a given window
*
* @param window The window to set preferred rotation on
*/
EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, unsigned int *count);
-EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot, int w, int h, Eina_Bool resize);
-EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int rot);
-EAPI void ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int rot);
EAPI void ecore_wl2_window_rotation_change_done_send(Ecore_Wl2_Window *window, int rot, int w, int h);
// TIZEN_ONLY
EAPI void ecore_wl2_window_rotation_geometry_set(Ecore_Wl2_Window *win, int rot, int x, int y, int w, int h);
-EAPI void ecore_wl2_window_rotation_changed_callback_set(Ecore_Wl2_Window *win, void *data, void (*func)(Ecore_Wl2_Window *win, int rot, Eina_Bool resize, int w, int h, void *data));
//
/**
EAPI Eina_List *ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *window);
/**
+ * @Internal
* Add a supported auxiliary hint to a given window
*
* @param window
EAPI void ecore_wl2_window_aux_hint_add(Ecore_Wl2_Window *window, int id, const char *hint, const char *val);
/**
+ * @Internal
* Change an auxiliary hint on a given window
*
* @param window
EAPI void ecore_wl2_window_aux_hint_change(Ecore_Wl2_Window *window, int id, const char *val);
/**
+ * @Internal
* Delete an auxiliary hint on a given window
*
* @param window
EAPI void ecore_wl2_window_aux_hint_del(Ecore_Wl2_Window *window, int id);
/**
- * @brief Get the activated state of a window
- *
- * @param window The window to get activated state from
- *
- * @return @c EINA_TRUE if activated
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI Eina_Bool ecore_wl2_window_activated_get(const Ecore_Wl2_Window *window);
-
-/**
- * @brief Set the seat for a popup window to be used with grab
- *
- * @param window The window
- * @param input The seat
- *
- * Use this function for desktop shell requests involving popup grabs which require
- * a seat for the grab.
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI void ecore_wl2_window_popup_input_set(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
-
-/**
- * @brief Get the seat for a popup window to be used with grab
- *
- * @param window The window
- *
- * @return Returns Ecore_Wl2_Input if the window has an input.
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.24
- */
-EAPI Ecore_Wl2_Input *ecore_wl2_window_popup_input_get(Ecore_Wl2_Window *window);
-
-/**
- * Check if a window has a shell surface - without one it can't be visible.
- *
- * @param The window to check
- *
- * @return Returns true if the window has an associated shell surface.
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.19
- */
-EAPI Eina_Bool ecore_wl2_window_shell_surface_exists(Ecore_Wl2_Window *win);
-
-// TIZEN_ONLY(171108) : get shell surface of a given window
-EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window *window);
-//
-
-/**
* Get which display a given window is using
*
* @param window The window to get the display of
*/
EAPI Eina_Bool ecore_wl2_window_focus_skip_get(Ecore_Wl2_Window *window);
-/**
- * Set the role of a given window
- *
- * @param window
- * @param role
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI void ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role);
-
-/**
- * Get the role of a given window
- *
- * @param window The window to set the class role
- *
- * @return A string if found, or NULL otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.24
- */
-EAPI const char *ecore_wl2_window_role_get(Ecore_Wl2_Window *window);
-
-/**
- * Set if a given window is in floating mode
- *
- * @param window The window to set floating mode on
- * @param floating EINA_TRUE if this window should be in floating mode, EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI void ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool floating);
-
-/**
- * Get if a given window is in floating mode
- *
- * @param window The window to get floating mode
- *
- * @return EINA_TRUE if floating, EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.20
- */
-EAPI Eina_Bool ecore_wl2_window_floating_mode_get(Ecore_Wl2_Window *window);
//TIZEN_ONLY: ecore_wl2: add ecore_wl_window_video_has
EAPI void ecore_wl2_window_video_has(Ecore_Wl2_Window *window, Eina_Bool has);
//
-/**
- * Finds a window by surface
- *
- * @param surface The surface to find the window of
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.24
- */
-EAPI Ecore_Wl2_Window *ecore_wl2_window_surface_find(struct wl_surface *surface);
+// TIZEN_ONLY(171108) : get shell surface of a given window
+// @Internal
+EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window *window);
+//
/**
* @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
*/
/**
+ * @Internal
* Get the wl_seat that an input is using
*
* @param input The Ecore_Wl2_Input to get the seat of
EAPI struct wl_seat *ecore_wl2_input_seat_get(Ecore_Wl2_Input *input);
/**
- * Get the seat capabilities for a given input.
- *
- * @param input The input
- *
- * @ingroup Ecore_Wl2_Input_Group
- * @since 1.19
- */
-EAPI Ecore_Wl2_Seat_Capabilities ecore_wl2_input_seat_capabilities_get(Ecore_Wl2_Input *input);
-
-/**
- * Get the wayland's seat id from an input.
- *
- * @param input The input
- *
- * @return The seat id
- *
- * @ingroup Ecore_Wl2_Input_Group
- * @since 1.19
- */
-EAPI unsigned int ecore_wl2_input_seat_id_get(Ecore_Wl2_Input *input) EINA_WARN_UNUSED_RESULT;
-
-/**
- * Get the display object of an input
- *
- * @param input The input
- *
- * @return The display
- *
- * @ingroup Ecore_Wl2_Input_Group
- * @since 1.20
- */
-EAPI Ecore_Wl2_Display *ecore_wl2_input_display_get(const Ecore_Wl2_Input *input);
-
-/**
+ * @Internal
* Get the xkb_keymap object of an input
*
* @param input The input
EAPI struct xkb_keymap *ecore_wl2_input_keymap_get(const Ecore_Wl2_Input *input);
/**
- * Get the name of an input
- *
- * @param input The input
- *
- * @return The name
- *
- * @ingroup Ecore_Wl2_Input_Group
- * @since 1.20
- */
-EAPI Eina_Stringshare *ecore_wl2_input_name_get(Ecore_Wl2_Input *input);
-
-/**
* Get the keyboard repeat rate and delay of an input
*
* @param input The input
* @ingroup Ecore_Wl2_Input_Group
* @since 1.20
*/
-EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
+EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, void *surface, int hot_x, int hot_y);
/**
* Set a specific cursor on a given seat
EAPI void ecore_wl2_input_cursor_from_name_set(Ecore_Wl2_Input *input, const char *cursor);
// TIZEN_ONLY(20171207): add functions to set client's custom cursors
-EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
-EAPI struct wl_cursor *ecore_wl2_input_cursor_get(Ecore_Wl2_Input *input, const char *cursor_name);
-EAPI void ecore_wl2_input_cursor_size_set(Ecore_Wl2_Input *input, const int size);
EAPI void ecore_wl2_input_cursor_theme_name_set(Ecore_Wl2_Input *input, const char *cursor_theme_name);
-EAPI void ecore_wl2_input_cursor_default_restore(Ecore_Wl2_Input *input);
-
-EAPI void ecore_wl2_window_pointer_set(Ecore_Wl2_Window *win, struct wl_surface *surface, int hot_x, int hot_y);
-EAPI void ecore_wl2_window_cursor_from_name_set(Ecore_Wl2_Window *win, const char *cursor_name);
-EAPI void ecore_wl2_window_cursor_default_restore(Ecore_Wl2_Window *win);
-//
-
/**
* @defgroup Ecore_Wl2_Dnd_Group Wayland Library Drag-n-Drop Functions
*/
/**
- * Set the types which are supported by a possible drag and drop operation.
- * This call initializes a data source and offeres the given mimetypes
- *
- * @param input the input where to add on the data source
- * @param types a null-terminated array of mimetypes
- *
- * @ingroup Ecore_Wl2_Dnd_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types);
-
-/**
- * Start a drag on the given input
- *
- * @param input the input to use
- * @param window the window which is the origin of the drag operation
- * @param drag_window the window which is used as window of the visible hint.
- *
- * @return The serial for the start_drag request
- *
- * @ingroup Ecore_Wl2_Dnd_Group
- * @since 1.17
- */
-EAPI uint32_t ecore_wl2_dnd_drag_start(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, Ecore_Wl2_Window *drag_window);
-
-/**
- * Call wl_data_source.set_actions on an existing source
- *
- * @param input the input to use
- *
- * @see ecore_wl2_dnd_drag_start for a more useful function.
- *
- * @ingroup Ecore_Wl2_Dnd_Group
- * @since 1.20
- */
-EAPI void ecore_wl2_dnd_set_actions(Ecore_Wl2_Input *input);
-
-/**
- * End a drag started by a call to ecore_wl2_dnd_drag_start
- *
- * @param input the input object on which the drag was started
- *
- * @ingroup Ecore_Wl2_Dnd_Group
- * @since 1.17
- */
-EAPI void ecore_wl2_dnd_drag_end(Ecore_Wl2_Input *input);
-
-/**
* Get the offer which is currently resposible for the clipboard
*
* @param input the input object to use
*/
EAPI uint32_t ecore_wl2_dnd_selection_set(Ecore_Wl2_Input *input, const char **types);
-/**
- * Clear the selection currently setted on this input.
- *
- * @param input the input to clear
- *
- * @return serial of request on success, 0 on failure
- *
- * @ingroup Ecore_Wl2_Dnd_Group
- * @since 1.17
- */
-EAPI uint32_t ecore_wl2_dnd_selection_clear(Ecore_Wl2_Input *input);
-
-// TIZEN_ONLY(20150703) : support conformant
-EAPI void ecore_wl2_window_conformant_set(Ecore_Wl2_Window *win, unsigned int is_conformant);
-EAPI Eina_Bool ecore_wl2_window_conformant_get(Ecore_Wl2_Window *win);
-//
-
// TIZEN_ONLY(20171108) : add functions for indicator
-EAPI void ecore_wl2_window_indicator_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
-EAPI Eina_Bool ecore_wl2_window_indicator_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
EAPI void ecore_wl2_window_indicator_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_State state);
EAPI Ecore_Wl2_Indicator_State ecore_wl2_window_indicator_state_get(Ecore_Wl2_Window *win);
-EAPI void ecore_wl2_window_indicator_opacity_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Opacity_Mode mode);
-EAPI Ecore_Wl2_Indicator_Opacity_Mode ecore_wl2_window_indicator_opacity_get(Ecore_Wl2_Window *win);
-EAPI void ecore_wl2_indicator_visible_type_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Visible_Type type);
EAPI Ecore_Wl2_Indicator_Visible_Type ecore_wl2_indicator_visible_type_get(Ecore_Wl2_Window *win);
//
-// TIZEN_ONLY(20171108) : add functions for clipboard
-EAPI void ecore_wl2_window_clipboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
-EAPI Eina_Bool ecore_wl2_window_clipboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
-EAPI void ecore_wl2_window_clipboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Clipboard_State state);
-EAPI Ecore_Wl2_Clipboard_State ecore_wl2_window_clipboard_state_get(Ecore_Wl2_Window *win);
-EAPI void ecore_wl2_clipboard_show(Ecore_Wl2_Window *win);
-EAPI void ecore_wl2_clipboard_hide(Ecore_Wl2_Window *win);
-EAPI Eina_Bool ecore_wl2_clipboard_data_only_set(Eina_Bool data_only);
-//
-
-// TIZEN_ONLY(20171108) : add functions for keyboard
-EAPI void ecore_wl2_window_keyboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
-EAPI Eina_Bool ecore_wl2_window_keyboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
-EAPI void ecore_wl2_window_keyboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Virtual_Keyboard_State state);
-EAPI Ecore_Wl2_Virtual_Keyboard_State ecore_wl2_window_keyboard_state_get(Ecore_Wl2_Window *win);
-//
-
/**
* Gets default input of a given display
*
EAPI int ecore_wl2_output_transform_get(Ecore_Wl2_Output *output);
/**
- * Return the version of the display's compositor object
- *
- * @param disp the display to get the compositor object version from
- *
- * @return the version of the display's compositor object
- *
- * @ingroup Ecore_Wl2_Display_Group
- * @since 1.17
- */
-EAPI int ecore_wl2_display_compositor_version_get(Ecore_Wl2_Display *disp);
-
-/**
- * Disable session recovery for any further connections. Must be called
- * before connecting. This is irreversible and not intended for general
- * use.
- *
- * @since 1.19
- */
-EAPI void ecore_wl2_session_recovery_disable(void);
-
-/**
* Commit the surface of a wayland window.
*
* If flush is set this generates a wl_surface_commit(), otherwise it is
EAPI void ecore_wl2_window_commit(Ecore_Wl2_Window *window, Eina_Bool flush);
/**
- * Check if a wayland window's surface is in the pending state.
- *
- * A surface is pending if it's been commit but we haven't received a
- * frame callback for it yet. This mean's we're not ready to draw yet.
- *
- * @param window The window whose surface we want to check
- *
- * @return whether the window's surface is pending or not.
- *
- * @since 1.21
- */
-EAPI Eina_Bool ecore_wl2_window_pending_get(Ecore_Wl2_Window *window);
-
-/**
* Add a callback that fires when the window's surface_frame callback fires
*
* @param window The window to add a callback on
*/
EAPI void ecore_wl2_display_flush(Ecore_Wl2_Display *display);
-/**
- * Get if a given window is resizing
- *
- * @param window The window to check for resizing
- *
- * @return EINA_TRUE if resizing, EINA_FALSE otherwise
- *
- * @ingroup Ecore_Wl2_Window_Group
- * @since 1.21
- */
-EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window);
-
-/**
- * Latch window state at the start of an update
- *
- * When async render takes place we continue to dispatch wayland
- * events from the main loop. We need to defer any changes to
- * window state from those events until the update is complete.
- *
- * Events deferred during an update will automatically fire
- * immediately after the caller calls ecore_wl2_window_commit.
- *
- * @param window The window whose state we want to latch
- *
- * @since 1.21
- */
-EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window);
-
-/* TODO: doxygen if we are keeping any of the below functions public */
-
-
EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
// TIZEN_ONLY(20171107): support a tizen_keyrouter interface
EAPI void ecore_wl2_display_sync(Ecore_Wl2_Display *display);
EAPI Eina_Bool ecore_wl2_window_keygrab_set(Ecore_Wl2_Window *win, const char *key, int mod EINA_UNUSED, int not_mod EINA_UNUSED, int priority EINA_UNUSED, Ecore_Wl2_Window_Keygrab_Mode grab_mode);
EAPI Eina_Bool ecore_wl2_window_keygrab_unset(Ecore_Wl2_Window *win, const char *key, int mod EINA_UNUSED, int any_mod EINA_UNUSED);
-//
EAPI Eina_List *ecore_wl2_window_keygrab_list_set(Ecore_Wl2_Window *win, Eina_List *infos);
EAPI Eina_List *ecore_wl2_window_keygrab_list_unset(Ecore_Wl2_Window *win, Eina_List *infos);
-// TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
-EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
-//
-// TIZEN_ONLY(20171114): support a pointer warp
-EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
-//
-
//TIZEN_ONLY(20171108): add a new API to ecore_wl2_sync
EAPI void ecore_wl2_sync(void);
//
//TIZEN_ONLY(20171115): support output transform
-EAPI Eina_Bool ecore_wl2_window_ignore_output_transform_get(Ecore_Wl2_Window *win);
//
-
-//TIZEN_ONLY(20180810): support client demand move resize
-EAPI void
-ecore_wl2_window_sync_geometry_set(Ecore_Wl2_Window *window, uint32_t serial, int x, int y, int w, int h);
+EAPI Eina_Bool ecore_wl2_window_ignore_output_transform_get(Ecore_Wl2_Window *win);
//
// TIZEN_ONLY(20190807): Support for wl_egl interface
#ifndef _ECORE_WL2_INTERNAL_H
# define _ECORE_WL2_INTERNAL_H
+# include <wayland-client.h>
+# include <wayland-cursor.h>
+# include <xkbcommon/xkbcommon.h>
+
+# define WL_HIDE_DEPRECATED
+# include <wayland-server.h>
+
# ifdef EAPI
# undef EAPI
# endif
# endif
# endif
+typedef struct _Ecore_Wl2_Subsurface Ecore_Wl2_Subsurface;
+typedef struct _Ecore_Wl2_Pointer Ecore_Wl2_Pointer;
+typedef struct _Ecore_Wl2_Keyboard Ecore_Wl2_Keyboard;
+typedef struct _Ecore_Wl2_Touch Ecore_Wl2_Touch;
+// TIZEN_ONLY(20171109): support a tizen_input_device_manager interface
+typedef struct _Ecore_Wl2_Tizen_Input_Eo_Device Ecore_Wl2_Tizen_Input_Eo_Device;
+typedef struct _Ecore_Wl2_Tizen_Input_Device Ecore_Wl2_Tizen_Input_Device;
+//
+
EAPI void ecore_wl2_window_false_commit(Ecore_Wl2_Window *window);
EAPI Eina_Bool ecore_wl2_buffer_fit(Ecore_Wl2_Buffer *b, int w, int h);
*/
EAPI void ecore_wl2_subsurface_opaque_region_set(Ecore_Wl2_Subsurface *subsurface, int x, int y, int w, int h);
+/**
+ * Create a new Wayland display
+ *
+ * @brief This function is typically used to create a new display for
+ * use with compositors, or to create a new display for use in nested
+ * compositors.
+ *
+ * @param name The display target name to create. If @c NULL, a default
+ * display name will be assigned.
+ * @return The newly created Ecore_Wl2_Display
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.17
+ */
+EAPI Ecore_Wl2_Display *ecore_wl2_display_create(const char *name);
+
+/**
+ * Destroy an existing Wayland display
+ *
+ * @brief This function is typically used by servers to terminate an
+ * existing Wayland display.
+ *
+ * @param display The display to terminate
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_display_destroy(Ecore_Wl2_Display *display);
+
+/**
+ * Terminate a Wayland display's main loop
+ *
+ * @brief This function is typically used by servers to terminate the
+ * Wayland display main loop. This is usually only called when a server
+ * encounters an error.
+ *
+ * @param display The Ecore_Wl2_Display to terminate
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_display_terminate(Ecore_Wl2_Display *display);
+
+// TIZEN_ONLY(20190807): Retrieve the existing native wayland display
+EAPI void *ecore_wl2_native_display_get(Ecore_Wl2_Display *display);
+//
+
+/**
+ * Retrieve the wl_dmabuf from a given Ecore_Wl2_Display
+ *
+ *
+ * @param display The Ecore_Wl2_Display for which to retrieve the existing
+ * Wayland dmabuf interface from
+ *
+ * @return The wl_dmabuf which this Ecore_Wl2_Display is using
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ *
+ * @note This is intended for client use only and should be used only
+ * after ecore_wl2_display_connect(). Also, the return type is
+ * void * instead of zpw_linux_dmabuf_v1 * since we don't want
+ * to change our public API every time the version changes in
+ * wayland-protocols.
+ *
+ * @since 1.18
+ */
+EAPI void *ecore_wl2_display_dmabuf_get(Ecore_Wl2_Display *display);
+
+/**
+ * Get all the Ecore_Wl2_Input from the display.
+ *
+ * @param display The display
+ *
+ * @return A Eina_Iterator of Ecore_Wl2_Input or @c NULL on error
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.19
+ */
+EAPI Eina_Iterator *ecore_wl2_display_inputs_get(Ecore_Wl2_Display *display);
+
+/**
+ * Find a seat for a given display object using the seat id
+ *
+ * @param display The display
+ * @param id The seat id
+ *
+ * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.20
+ */
+EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find(const Ecore_Wl2_Display *display, unsigned int id);
+
+/**
+ * Find a seat for a given display object using the seat id
+ *
+ * @param display The display
+ * @param name The seat name
+ *
+ * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.20
+ */
+EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find_by_name(const Ecore_Wl2_Display *display, const char *name);
+
+/**
+ * Check if the display has performed a sync
+ *
+ * @param display The display
+ *
+ * @return True if the display sync has occurred
+ * @see ECORE_WL2_EVENT_SYNC_DONE
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_display_sync_is_done(const Ecore_Wl2_Display *display);
+
+/**
+ * Get the name of the display object
+ *
+ * @param display The display
+ *
+ * @return The name of the display object
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.20
+ */
+EAPI const char *ecore_wl2_display_name_get(const Ecore_Wl2_Display *display);
+
+/**
+ * @Internal
+ * Finds an Ecore_Wl2_Window based on wl_surface
+ *
+ * @param display The display to search for the window
+ * @param surface The wl_surface of the window to find
+ *
+ * @return The Ecore_Wl2_Window if found, or NULL if no such window exists
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.24
+ */
+EAPI Ecore_Wl2_Window *ecore_wl2_display_window_find_by_surface(Ecore_Wl2_Display *display, struct wl_surface *surface);
+
+/**
+ * Set a callback to be caleld just before the window is closed and freed
+ *
+ * @param window The window to listen to for a xdg toplevel close callback
+ * @param cb The callback function to call being passed data and window
+ * @param data The Data pointer to pass as data to the callback
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.24
+ */
+EAPI void ecore_wl2_window_close_callback_set(Ecore_Wl2_Window *window, void (*cb) (void *data, Ecore_Wl2_Window *win), void *data);
+
+/**
+ * @see evas_object_size_hint_aspect_set
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.21
+ */
+EAPI void ecore_wl2_window_aspect_set(Ecore_Wl2_Window *window, int w, int h, unsigned int aspect);
+
+/**
+ * @see evas_object_size_hint_aspect_get
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.24
+ */
+EAPI void ecore_wl2_window_aspect_get(Ecore_Wl2_Window *window, int *w, int *h, unsigned int *aspect);
+
+/**
+ * @brief Begin moving a given Ecore_Wl2_Window
+ *
+ * @param window The Ecore_Wl2_Window which to move
+ * @param input The seat on which the move is active on
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_move(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
+
+/**
+ * Raise a given Ecore_Wl2_Window
+ *
+ * @param window The Ecore_Wl2_Window which to raise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_window_raise(Ecore_Wl2_Window *window);
+
+EAPI void ecore_wl2_window_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent);
+EAPI void ecore_wl2_window_stack_mode_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Stack_Mode mode);
+EAPI int ecore_wl2_window_active_angle_get(Ecore_Wl2_Window *window);
+
+//TIZEN_ONLY(20171216): add ecore_wl2_window_find
+EAPI Ecore_Wl2_Window *ecore_wl2_window_find(unsigned int id);
+//
+
+/**
+ * Set a given window's transparent property
+ *
+ * @param window The window on which to set the transparent property
+ * @param transparent EINA_TRUE to set window as transparent,
+ * EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_window_transparent_set(Ecore_Wl2_Window *window, Eina_Bool transparent);
+
+// TIZEN_ONLY(20171108) : Get a window's transparent property
+EAPI Eina_Bool ecore_wl2_window_transparent_get(Ecore_Wl2_Window *window);
+//
+
+/**
+ * Set the opaque region of the Ecore_Wl2_Window
+ *
+ * @param win The window
+ * @param x The left point of the region.
+ * @param y The top point of the region.
+ * @param w The width of the region.
+ * @param h The height of the region.
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_window_opaque_region_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
+
+// TIZEN_ONLY(20160201) : support to handle input rectangle
+EAPI void ecore_wl2_window_input_rect_set(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
+EAPI void ecore_wl2_window_input_rect_add(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
+EAPI void ecore_wl2_window_input_rect_subtract(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
+//
+
+/**
+ * Get the opaque region of the Ecore_Wl2_Window
+ *
+ * @param win The window
+ * @param x The left point of the region.
+ * @param y The top point of the region.
+ * @param w The width of the region.
+ * @param h The height of the region.
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.24
+ */
+EAPI void ecore_wl2_window_opaque_region_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
+
+/**
+ * Get if a given window is maximized
+ *
+ * @param window The window to get the maximized state of
+ *
+ * @return EINA_TRUE if window is maximized, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI Eina_Bool ecore_wl2_window_maximized_get(Ecore_Wl2_Window *window);
+
+/**
+ * Set the maximized state of a given window
+ *
+ * @param window The window to set the maximized state of
+ * @param maximized EINA_TRUE to set maximized, EINA_FALSE to unset
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized);
+
+/**
+ * Get if a given window is fullscreen
+ *
+ * @param window The window to get the fullscreen state of
+ *
+ * @return EINA_TRUE if window is fullscreen, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI Eina_Bool ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window);
+
+/**
+ * Set the fullscreen state of a given window
+ *
+ * @param window The window to set the fullscreen state of
+ * @param maximized EINA_TRUE to set fullscreen, EINA_FALSE to unset
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_window_fullscreen_set(Ecore_Wl2_Window *window, Eina_Bool fullscreen);
+
+/**
+ * Set the title of a given window
+ *
+ * @param window The window to set the title of
+ * @param title The title of the window
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_window_title_set(Ecore_Wl2_Window *window, const char *title);
+
+/**
+ * Get the title of a given window
+ *
+ * @param window The window to set the title of
+ *
+ * @return A string if found, or NULL otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.24
+ */
+EAPI const char *ecore_wl2_window_title_get(Ecore_Wl2_Window *window);
+
+// TIZEN_ONLY(20151231) : handling iconic state on tizen
+EAPI void ecore_wl2_window_iconify_state_update(Ecore_Wl2_Window *window, Eina_Bool iconified, Eina_Bool send_event);
+//
+
+/**
+ * Set if window rotation is supported by the window manager
+ *
+ * @param window
+ * @param enabled
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, Eina_Bool enabled);
+
+/**
+ * Get if window rotation is supported by the window manager
+ *
+ * @param window
+ *
+ * @return EINA_TRUE if supported, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *window);
+
+/**
+ * Set if an application has set window rotation
+ *
+ * @param window
+ * @param set
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, Eina_Bool set);
+
+/**
+ * Get if an application has set window rotation
+ *
+ * @param window
+ *
+ * @return EINA_TRUE if set, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
+
+EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot, int w, int h, Eina_Bool resize);
+EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int rot);
+EAPI void ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int rot);
+EAPI void ecore_wl2_window_rotation_changed_callback_set(Ecore_Wl2_Window *win, void *data, void (*func)(Ecore_Wl2_Window *win, int rot, Eina_Bool resize, int w, int h, void *data));
+
+/**
+ * @brief Get the activated state of a window
+ *
+ * @param window The window to get activated state from
+ *
+ * @return @c EINA_TRUE if activated
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_window_activated_get(const Ecore_Wl2_Window *window);
+
+/**
+ * @brief Set the seat for a popup window to be used with grab
+ *
+ * @param window The window
+ * @param input The seat
+ *
+ * Use this function for desktop shell requests involving popup grabs which require
+ * a seat for the grab.
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_popup_input_set(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
+
+/**
+ * @brief Get the seat for a popup window to be used with grab
+ *
+ * @param window The window
+ *
+ * @return Returns Ecore_Wl2_Input if the window has an input.
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.24
+ */
+EAPI Ecore_Wl2_Input *ecore_wl2_window_popup_input_get(Ecore_Wl2_Window *window);
+
+/**
+ * Check if a window has a shell surface - without one it can't be visible.
+ *
+ * @param The window to check
+ *
+ * @return Returns true if the window has an associated shell surface.
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.19
+ */
+EAPI Eina_Bool ecore_wl2_window_shell_surface_exists(Ecore_Wl2_Window *win);
+
+// TIZEN_ONLY(171108) : get shell surface of a given window
+EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window *window);
+//
+
+/**
+ * Set the role of a given window
+ *
+ * @param window
+ * @param role
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role);
+
+/**
+ * Get the role of a given window
+ *
+ * @param window The window to set the class role
+ *
+ * @return A string if found, or NULL otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.24
+ */
+EAPI const char *ecore_wl2_window_role_get(Ecore_Wl2_Window *window);
+
+/**
+ * Set if a given window is in floating mode
+ *
+ * @param window The window to set floating mode on
+ * @param floating EINA_TRUE if this window should be in floating mode, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool floating);
+
+/**
+ * Get if a given window is in floating mode
+ *
+ * @param window The window to get floating mode
+ *
+ * @return EINA_TRUE if floating, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_window_floating_mode_get(Ecore_Wl2_Window *window);
+
+/**
+ * Finds a window by surface
+ *
+ * @param surface The surface to find the window of
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.24
+ */
+EAPI Ecore_Wl2_Window *ecore_wl2_window_surface_find(void *surface);
+
+/**
+ * Get the seat capabilities for a given input.
+ *
+ * @param input The input
+ *
+ * @ingroup Ecore_Wl2_Input_Group
+ * @since 1.19
+ */
+EAPI Ecore_Wl2_Seat_Capabilities ecore_wl2_input_seat_capabilities_get(Ecore_Wl2_Input *input);
+
+/**
+ * Get the wayland's seat id from an input.
+ *
+ * @param input The input
+ *
+ * @return The seat id
+ *
+ * @ingroup Ecore_Wl2_Input_Group
+ * @since 1.19
+ */
+EAPI unsigned int ecore_wl2_input_seat_id_get(Ecore_Wl2_Input *input) EINA_WARN_UNUSED_RESULT;
+
+/**
+ * Get the display object of an input
+ *
+ * @param input The input
+ *
+ * @return The display
+ *
+ * @ingroup Ecore_Wl2_Input_Group
+ * @since 1.20
+ */
+EAPI Ecore_Wl2_Display *ecore_wl2_input_display_get(const Ecore_Wl2_Input *input);
+
+/**
+ * Get the name of an input
+ *
+ * @param input The input
+ *
+ * @return The name
+ *
+ * @ingroup Ecore_Wl2_Input_Group
+ * @since 1.20
+ */
+EAPI Eina_Stringshare *ecore_wl2_input_name_get(Ecore_Wl2_Input *input);
+
+// INTERNAL
+EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
+// INTERNAL
+EAPI void *ecore_wl2_input_cursor_get(Ecore_Wl2_Input *input, const char *cursor_name);
+// INTERNAL
+EAPI void ecore_wl2_input_cursor_size_set(Ecore_Wl2_Input *input, const int size);
+// INTERNAL
+EAPI void ecore_wl2_input_cursor_default_restore(Ecore_Wl2_Input *input);
+
+// INTERNAL
+EAPI void ecore_wl2_window_pointer_set(Ecore_Wl2_Window *win, void *surface, int hot_x, int hot_y);
+// INTERNAL
+EAPI void ecore_wl2_window_cursor_from_name_set(Ecore_Wl2_Window *win, const char *cursor_name);
+// INTERNAL
+EAPI void ecore_wl2_window_cursor_default_restore(Ecore_Wl2_Window *win);
+//
+/**
+ * Set the types which are supported by a possible drag and drop operation.
+ * This call initializes a data source and offeres the given mimetypes
+ *
+ * @param input the input where to add on the data source
+ * @param types a null-terminated array of mimetypes
+ *
+ * @ingroup Ecore_Wl2_Dnd_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types);
+
+/**
+ * Start a drag on the given input
+ *
+ * @param input the input to use
+ * @param window the window which is the origin of the drag operation
+ * @param drag_window the window which is used as window of the visible hint.
+ *
+ * @return The serial for the start_drag request
+ *
+ * @ingroup Ecore_Wl2_Dnd_Group
+ * @since 1.17
+ */
+EAPI uint32_t ecore_wl2_dnd_drag_start(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, Ecore_Wl2_Window *drag_window);
+
+/**
+ * Call wl_data_source.set_actions on an existing source
+ *
+ * @param input the input to use
+ *
+ * @see ecore_wl2_dnd_drag_start for a more useful function.
+ *
+ * @ingroup Ecore_Wl2_Dnd_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_dnd_set_actions(Ecore_Wl2_Input *input);
+
+/**
+ * End a drag started by a call to ecore_wl2_dnd_drag_start
+ *
+ * @param input the input object on which the drag was started
+ *
+ * @ingroup Ecore_Wl2_Dnd_Group
+ * @since 1.17
+ */
+EAPI void ecore_wl2_dnd_drag_end(Ecore_Wl2_Input *input);
+
+/**
+ * Clear the selection currently setted on this input.
+ *
+ * @param input the input to clear
+ *
+ * @return serial of request on success, 0 on failure
+ *
+ * @ingroup Ecore_Wl2_Dnd_Group
+ * @since 1.17
+ */
+EAPI uint32_t ecore_wl2_dnd_selection_clear(Ecore_Wl2_Input *input);
+
+// TIZEN_ONLY(20150703) : support conformant
+EAPI void ecore_wl2_window_conformant_set(Ecore_Wl2_Window *win, unsigned int is_conformant);
+EAPI Eina_Bool ecore_wl2_window_conformant_get(Ecore_Wl2_Window *win);
+//
+
+// TIZEN_ONLY(20171108) : add functions for indicator
+EAPI void ecore_wl2_window_indicator_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
+EAPI Eina_Bool ecore_wl2_window_indicator_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
+EAPI void ecore_wl2_window_indicator_opacity_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Opacity_Mode mode);
+EAPI Ecore_Wl2_Indicator_Opacity_Mode ecore_wl2_window_indicator_opacity_get(Ecore_Wl2_Window *win);
+EAPI void ecore_wl2_indicator_visible_type_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Visible_Type type);
+
+// TIZEN_ONLY(20171108) : add functions for clipboard
+EAPI void ecore_wl2_window_clipboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
+EAPI Eina_Bool ecore_wl2_window_clipboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
+EAPI void ecore_wl2_window_clipboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Clipboard_State state);
+EAPI Ecore_Wl2_Clipboard_State ecore_wl2_window_clipboard_state_get(Ecore_Wl2_Window *win);
+EAPI void ecore_wl2_clipboard_show(Ecore_Wl2_Window *win);
+EAPI void ecore_wl2_clipboard_hide(Ecore_Wl2_Window *win);
+EAPI Eina_Bool ecore_wl2_clipboard_data_only_set(Eina_Bool data_only);
+//
+
+// TIZEN_ONLY(20171108) : add functions for keyboard
+EAPI void ecore_wl2_window_keyboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
+EAPI Eina_Bool ecore_wl2_window_keyboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
+EAPI void ecore_wl2_window_keyboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Virtual_Keyboard_State state);
+EAPI Ecore_Wl2_Virtual_Keyboard_State ecore_wl2_window_keyboard_state_get(Ecore_Wl2_Window *win);
+//
+
+/**
+ * Return the version of the display's compositor object
+ *
+ * @param disp the display to get the compositor object version from
+ *
+ * @return the version of the display's compositor object
+ *
+ * @ingroup Ecore_Wl2_Display_Group
+ * @since 1.17
+ */
+EAPI int ecore_wl2_display_compositor_version_get(Ecore_Wl2_Display *disp);
+
+/**
+ * Disable session recovery for any further connections. Must be called
+ * before connecting. This is irreversible and not intended for general
+ * use.
+ *
+ * @since 1.19
+ */
+EAPI void ecore_wl2_session_recovery_disable(void);
+
+/**
+ * Check if a wayland window's surface is in the pending state.
+ *
+ * A surface is pending if it's been commit but we haven't received a
+ * frame callback for it yet. This mean's we're not ready to draw yet.
+ *
+ * @param window The window whose surface we want to check
+ *
+ * @return whether the window's surface is pending or not.
+ *
+ * @since 1.21
+ */
+EAPI Eina_Bool ecore_wl2_window_pending_get(Ecore_Wl2_Window *window);
+
+/**
+ * Get if a given window is resizing
+ *
+ * @param window The window to check for resizing
+ *
+ * @return EINA_TRUE if resizing, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.21
+ */
+EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window);
+
+/**
+ * Latch window state at the start of an update
+ *
+ * When async render takes place we continue to dispatch wayland
+ * events from the main loop. We need to defer any changes to
+ * window state from those events until the update is complete.
+ *
+ * Events deferred during an update will automatically fire
+ * immediately after the caller calls ecore_wl2_window_commit.
+ *
+ * @param window The window whose state we want to latch
+ *
+ * @since 1.21
+ */
+EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window);
+
+// TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
+EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
+//
+// TIZEN_ONLY(20171114): support a pointer warp
+//
+EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
+//
+
+//TIZEN_ONLY(20180810): support client demand move resize
+EAPI void
+ecore_wl2_window_sync_geometry_set(Ecore_Wl2_Window *window, uint32_t serial, int x, int y, int w, int h);
+//
+
# undef EAPI
# define EAPI