From afc97c147d9e3acf08a4307b06e8ec1054ae0f42 Mon Sep 17 00:00:00 2001 From: Woochanlee Date: Thu, 13 Feb 2020 19:56:19 +0900 Subject: [PATCH] Revert "ecore_w2: Move some Ecore_Wl2 APIs to be internal" This reverts commit f02fc7d2a9625966c1eacf943fbd33b23a29642c. Change-Id: I96b654ddd99b81101a6dbef1b8ad8398d5c5419d --- src/lib/ecore_wl2/Ecore_Wl2.h | 736 +++++++++++++++++++++- src/lib/ecore_wl2/ecore_wl2_input.c | 2 +- src/lib/ecore_wl2/ecore_wl2_internal.h | 727 --------------------- src/lib/ecore_wl2/ecore_wl2_private.h | 4 - src/lib/ecore_wl2/ecore_wl2_window.c | 4 +- src/lib/ecore_wl2/meson.build | 1 - src/modules/ecore_imf/wayland/wayland_imcontext.h | 3 - 7 files changed, 722 insertions(+), 755 deletions(-) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index a48675f..9752889 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -3,6 +3,12 @@ # include # include +# include +# include +# include + +# define WL_HIDE_DEPRECATED +# include # ifdef EAPI # undef EAPI @@ -26,6 +32,7 @@ extern "C" { #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; @@ -35,8 +42,16 @@ typedef struct _Ecore_Wl2_Display Ecore_Wl2_Display; 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; // @@ -550,6 +565,8 @@ typedef struct _Ecore_Wl2_Window_Keygrab_Info } 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; @@ -683,6 +700,35 @@ EAPI int ecore_wl2_shutdown(void); */ /** + * 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 @@ -712,7 +758,20 @@ EAPI Ecore_Wl2_Display *ecore_wl2_display_connect(const char *name); EAPI void ecore_wl2_display_disconnect(Ecore_Wl2_Display *display); /** - * @Internal + * 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); + +/** * Retrieve the existing Wayland display * * @param display The Ecore_Wl2_Display for which to retrieve the existing @@ -725,8 +784,11 @@ EAPI void ecore_wl2_display_disconnect(Ecore_Wl2_Display *display); */ 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 @@ -740,7 +802,27 @@ EAPI struct wl_display *ecore_wl2_display_get(Ecore_Wl2_Display *display); EAPI struct wl_shm *ecore_wl2_display_shm_get(Ecore_Wl2_Display *display); /** - * @Internal + * 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); + +/** * 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 @@ -766,6 +848,44 @@ EAPI Eina_Iterator *ecore_wl2_display_globals_get(Ecore_Wl2_Display *display); 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 @@ -779,7 +899,6 @@ EAPI void ecore_wl2_display_screen_size_get(Ecore_Wl2_Display *display, int *w, 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 @@ -792,6 +911,44 @@ EAPI Ecore_Wl2_Window *ecore_wl2_display_window_find(Ecore_Wl2_Display *display, 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 @@ -808,7 +965,6 @@ EAPI struct wl_registry *ecore_wl2_display_registry_get(Ecore_Wl2_Display *displ 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 @@ -856,7 +1012,18 @@ EAPI Ecore_Wl2_Window *ecore_wl2_window_new(Ecore_Wl2_Display *display, Ecore_Wl EAPI int ecore_wl2_window_id_get(Ecore_Wl2_Window *window); /** - * @Internal + * 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); + +/** * Get the wl_surface which belongs to this window * * @param window The Ecore_Wl2_Window to get the surface of @@ -881,6 +1048,20 @@ EAPI struct wl_surface *ecore_wl2_window_surface_get(Ecore_Wl2_Window *window); 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 @@ -911,6 +1092,17 @@ EAPI void ecore_wl2_window_hide(Ecore_Wl2_Window *window); 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 @@ -922,10 +1114,27 @@ EAPI void ecore_wl2_window_free(Ecore_Wl2_Window *window); */ 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); // /** @@ -952,6 +1161,56 @@ EAPI Eina_Bool ecore_wl2_window_alpha_get(Ecore_Wl2_Window *window); 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. @@ -984,6 +1243,52 @@ EAPI void ecore_wl2_window_input_region_set(Ecore_Wl2_Window *window, int x, int 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 @@ -1007,6 +1312,29 @@ EAPI int ecore_wl2_window_rotation_get(Ecore_Wl2_Window *window); 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 @@ -1089,6 +1417,10 @@ EAPI Eina_Bool ecore_wl2_window_iconified_get(Ecore_Wl2_Window *window); */ 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 * @@ -1123,6 +1455,52 @@ EAPI Ecore_Wl2_Window_Type ecore_wl2_window_type_get(Ecore_Wl2_Window *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 @@ -1171,10 +1549,14 @@ EAPI void ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, con */ 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)); // /** @@ -1190,7 +1572,6 @@ EAPI void ecore_wl2_window_rotation_geometry_set(Ecore_Wl2_Window *win, int rot, 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 @@ -1204,7 +1585,6 @@ EAPI Eina_List *ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *windo 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 @@ -1217,7 +1597,6 @@ EAPI void ecore_wl2_window_aux_hint_add(Ecore_Wl2_Window *window, int id, const 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 @@ -1229,6 +1608,60 @@ EAPI void ecore_wl2_window_aux_hint_change(Ecore_Wl2_Window *window, int id, con 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 @@ -1263,15 +1696,65 @@ EAPI void ecore_wl2_window_focus_skip_set(Ecore_Wl2_Window *window, Eina_Bool fo */ 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); // -// 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); -// +/** + * 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); /** * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions @@ -1282,7 +1765,6 @@ EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window */ /** - * @Internal * Get the wl_seat that an input is using * * @param input The Ecore_Wl2_Input to get the seat of @@ -1295,7 +1777,40 @@ EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window EAPI struct wl_seat *ecore_wl2_input_seat_get(Ecore_Wl2_Input *input); /** - * @Internal + * 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 xkb_keymap object of an input * * @param input The input @@ -1308,6 +1823,18 @@ EAPI struct wl_seat *ecore_wl2_input_seat_get(Ecore_Wl2_Input *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 @@ -1356,7 +1883,7 @@ EAPI Eina_Bool ecore_wl2_input_pointer_xy_get(const Ecore_Wl2_Input *input, int * @ingroup Ecore_Wl2_Input_Group * @since 1.20 */ -EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, void *surface, int hot_x, int hot_y); +EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y); /** * Set a specific cursor on a given seat @@ -1374,7 +1901,17 @@ EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, void *surface, int 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 @@ -1385,6 +1922,54 @@ EAPI void ecore_wl2_input_cursor_theme_name_set(Ecore_Wl2_Input *input, const ch */ /** + * 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 @@ -1409,12 +1994,51 @@ EAPI Ecore_Wl2_Offer* ecore_wl2_dnd_selection_get(Ecore_Wl2_Input *input); */ 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 * @@ -1462,6 +2086,27 @@ EAPI int ecore_wl2_output_dpi_get(Ecore_Wl2_Output *output); 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 @@ -1479,6 +2124,20 @@ EAPI int ecore_wl2_output_transform_get(Ecore_Wl2_Output *output); 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 @@ -1512,24 +2171,67 @@ EAPI void ecore_wl2_window_frame_callback_del(Ecore_Wl2_Frame_Cb_Handle *handle) */ 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); +// + // TIZEN_ONLY(20190807): Support for wl_egl interface EAPI Ecore_Wl2_Egl_Window *ecore_wl2_egl_window_create(Ecore_Wl2_Window *window, int w, int h); EAPI void ecore_wl2_egl_window_destroy(Ecore_Wl2_Egl_Window *egl_win); diff --git a/src/lib/ecore_wl2/ecore_wl2_input.c b/src/lib/ecore_wl2/ecore_wl2_input.c index 772d17c..32a6bf1 100644 --- a/src/lib/ecore_wl2/ecore_wl2_input.c +++ b/src/lib/ecore_wl2/ecore_wl2_input.c @@ -3583,7 +3583,7 @@ ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, } // TIZEN_ONLY(20171207): add functions to set client's custom cursors -EAPI void * +EAPI struct wl_cursor * ecore_wl2_input_cursor_get(Ecore_Wl2_Input *input, const char *cursor_name) { if ((!input) || (!input->cursor.theme)) diff --git a/src/lib/ecore_wl2/ecore_wl2_internal.h b/src/lib/ecore_wl2/ecore_wl2_internal.h index 904e2ef..1f09df9 100644 --- a/src/lib/ecore_wl2/ecore_wl2_internal.h +++ b/src/lib/ecore_wl2/ecore_wl2_internal.h @@ -1,13 +1,6 @@ #ifndef _ECORE_WL2_INTERNAL_H # define _ECORE_WL2_INTERNAL_H -# include -# include -# include - -# define WL_HIDE_DEPRECATED -# include - # ifdef EAPI # undef EAPI # endif @@ -34,15 +27,6 @@ # 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); @@ -394,717 +378,6 @@ EAPI void ecore_wl2_subsurface_sync_set(Ecore_Wl2_Subsurface *subsurface, Eina_B */ 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 diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 9c0e4d3..bb0e643 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -84,10 +84,6 @@ extern Eina_Bool no_session_recovery; # endif # define CRI(...) EINA_LOG_DOM_CRIT(_ecore_wl2_log_dom, __VA_ARGS__) -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 struct _Ecore_Wl2_Input_Devices { Eo *pointer_dev; diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index 388be5b..c1a541a 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -3331,7 +3331,7 @@ ecore_wl2_window_type_get(Ecore_Wl2_Window *window) } EAPI Ecore_Wl2_Window * -ecore_wl2_window_surface_find(void *surface) +ecore_wl2_window_surface_find(struct wl_surface *surface) { Ecore_Wl2_Display *ewd; Ecore_Wl2_Window *win; @@ -3423,7 +3423,7 @@ ecore_wl2_window_ignore_output_transform_get(Ecore_Wl2_Window *window) // TIZEN_ONLY(20171207): add functions to set client's custom cursors EAPI void -ecore_wl2_window_pointer_set(Ecore_Wl2_Window *win, void *surface, int hot_x, int hot_y) +ecore_wl2_window_pointer_set(Ecore_Wl2_Window *win, struct wl_surface *surface, int hot_x, int hot_y) { Ecore_Wl2_Input *input; diff --git a/src/lib/ecore_wl2/meson.build b/src/lib/ecore_wl2/meson.build index 7e5ce49..0599c6d 100644 --- a/src/lib/ecore_wl2/meson.build +++ b/src/lib/ecore_wl2/meson.build @@ -10,7 +10,6 @@ ecore_wl2_header_src = [ ] ecore_wl2_src = [ - 'ecore_wl2_internal.h', 'ecore_wl2_subsurf.c', 'ecore_wl2_dnd.c', 'ecore_wl2_window.c', diff --git a/src/modules/ecore_imf/wayland/wayland_imcontext.h b/src/modules/ecore_imf/wayland/wayland_imcontext.h index e5905de..5504862 100644 --- a/src/modules/ecore_imf/wayland/wayland_imcontext.h +++ b/src/modules/ecore_imf/wayland/wayland_imcontext.h @@ -25,9 +25,6 @@ #include #include -//TIZEN_ONLY(20200213): xkbcommon header move to ecore_wl2_internal.h -#include "ecore_wl2_internal.h" -// #include "text-input-unstable-v1-client-protocol.h" -- 2.7.4