From db081f96486bde255716addaec67afc6dff9ba0f Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Sun, 28 Mar 2021 13:56:33 +0100 Subject: [PATCH] ecore evas ews - deprecate/remove it's broken. it doesnt render anything. input is broken. it isn't in use so it doesnt justify fixing. no one has complained it's brokne thus proof of it not in use, so proof that it's not needed, so do the right thing and nuke it to save work @feat --- src/examples/ecore/ecore_evas_ews_example.c | 269 ---- src/examples/ecore/meson.build | 1 - src/lib/ecore_evas/Ecore_Evas.h | 17 +- src/lib/ecore_evas/ecore_evas.c | 26 - src/lib/ecore_evas/ecore_evas_buffer.c | 1 - src/lib/ecore_evas/ecore_evas_ews.c | 1400 +------------------ src/lib/ecore_evas/ecore_evas_module.c | 3 - src/lib/elementary/efl_ui_win.c | 8 +- src/lib/elementary/elm_config.c | 3 - src/lib/elementary/elm_config.h | 1 - src/lib/elementary/elm_main.c | 6 - src/lib/elementary/elm_priv.h | 18 +- src/lib/elementary/elm_theme.c | 1 - src/lib/elementary/elm_win.h | 1 - src/lib/elementary/elu_ews_wm.c | 531 ------- src/lib/elementary/meson.build | 1 - src/modules/ecore_evas/meson.build | 2 - 17 files changed, 29 insertions(+), 2260 deletions(-) delete mode 100644 src/examples/ecore/ecore_evas_ews_example.c delete mode 100644 src/lib/elementary/elu_ews_wm.c diff --git a/src/examples/ecore/ecore_evas_ews_example.c b/src/examples/ecore/ecore_evas_ews_example.c deleted file mode 100644 index b4415cb5e9..0000000000 --- a/src/examples/ecore/ecore_evas_ews_example.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * Ecore example illustrating the ews of ecore evas usage. - * - * You'll need at least one Evas engine built for it (excluding the - * buffer one). See stdout/stderr for output. - * - * @verbatim - * gcc -o ecore_evas_ews_example ecore_evas_ews_example.c `pkg-config --libs --cflags ecore evas ecore-evas` - * @endverbatim - */ - -#include -#include -#include -#include -#include - -static Eina_Bool -_wm_win_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - printf("WM: new window=%p\n", ee); - return EINA_TRUE; -} - -static Eina_Bool -_wm_win_move(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - printf("WM: window=%p moved to %d,%d\n", ee, x, y); - return EINA_TRUE; -} - -static Eina_Bool -_wm_win_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - int w, h; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - printf("WM: window=%p resized to %dx%d\n", ee, w, h); - return EINA_TRUE; -} - -static Eina_Bool -_wm_win_show(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - printf("WM: show window=%p\n", ee); - return EINA_TRUE; -} - -static void -optional_ews_window_manager_setup(void) -{ - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_ADD, _wm_win_add, NULL); - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_MOVE, _wm_win_move, NULL); - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_RESIZE, _wm_win_resize, NULL); - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_SHOW, _wm_win_show, NULL); - - /* one may use any known unique identifier, like an app function pointer */ - ecore_evas_ews_manager_set(optional_ews_window_manager_setup); -} - -static void -optional_ews_setup(void) -{ - Evas_Object *bg; - Evas *e; - - ecore_evas_ews_setup(0, 0, 800, 600); /* "screen" size */ - e = ecore_evas_ews_evas_get(); /* forces "screen" to be allocated */ - - bg = evas_object_rectangle_add(e); - evas_object_color_set(bg, 128, 32, 32, 255); - ecore_evas_ews_background_set(bg); -} - -static Eina_Bool -_stdin_cb(void *data EINA_UNUSED, Ecore_Fd_Handler *handler EINA_UNUSED) -{ - const Eina_List *l; - Ecore_Evas *ee; - int c = getchar(); - - if (c == EOF) - { - ecore_main_loop_quit(); - return EINA_FALSE; - } - - switch (c) { - case 'h': - printf("hide all windows\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_hide(ee); - break; - - case 's': - printf("show all windows\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_show(ee); - break; - - case 'l': - printf("move all windows left\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x - 10, y); - } - break; - - case 'r': - printf("move all windows right\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x + 10, y); - } - break; - - case 't': - printf("move all windows top\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x, y - 10); - } - break; - - case 'b': - printf("move all windows bottom\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x, y + 10); - } - break; - - case 'S': - printf("make all windows smaller\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int w, h; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - ecore_evas_resize(ee, w - 10, h - 10); - } - break; - - case 'B': - printf("make all windows bigger\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int w, h; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - ecore_evas_resize(ee, w + 10, h + 10); - } - break; - - case 'm': - printf("make all windows unmaximized\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_maximized_set(ee, EINA_FALSE); - break; - - case 'M': - printf("make all windows maximized\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_maximized_set(ee, EINA_TRUE); - break; - - case 'i': - printf("make all windows uniconified\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_iconified_set(ee, EINA_FALSE); - break; - - case 'I': - printf("make all windows iconified\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_iconified_set(ee, EINA_TRUE); - break; - - case 'f': - printf("make all windows unfullscreen\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_fullscreen_set(ee, EINA_FALSE); - break; - - case 'F': - printf("make all windows fullscreen\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_fullscreen_set(ee, EINA_TRUE); - break; - - case 'q': - printf("quit\n"); - ecore_main_loop_quit(); - break; - - default: - if (!isspace(c)) - printf("Unknown command: %c\n", c); - } - return ECORE_CALLBACK_RENEW; -} - -static void -_on_delete(Ecore_Evas *ee) -{ - free(ecore_evas_data_get(ee, "key")); - ecore_main_loop_quit(); -} - -int -main(void) -{ - Ecore_Evas *ee; - Evas *canvas; - Evas_Object *bg; - - if (ecore_evas_init() <= 0) - return 1; - - optional_ews_setup(); - optional_ews_window_manager_setup(); - - /* everything should look similar to ecore_evas_basic_example */ - ee = ecore_evas_ews_new(0, 0, 200, 200); - ecore_evas_title_set(ee, "Ecore Evas EWS Example"); - ecore_evas_show(ee); - - ecore_evas_data_set(ee, "key", strdup("hello")); - ecore_evas_callback_delete_request_set(ee, _on_delete); - - printf("Using %s engine!\n", ecore_evas_engine_name_get(ee)); - - canvas = ecore_evas_get(ee); - if (ecore_evas_ecore_evas_get(canvas) == ee) - printf("Everything is sane!\n"); - - bg = evas_object_rectangle_add(canvas); - evas_object_color_set(bg, 0, 0, 255, 255); - evas_object_resize(bg, 200, 200); - evas_object_show(bg); - ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); - - /* moving the window should move it in the screen */ - ecore_evas_move(ee, 50, 50); - - ecore_main_fd_handler_add(STDIN_FILENO, - ECORE_FD_READ | ECORE_FD_ERROR, - _stdin_cb, - NULL, NULL, NULL); - - ecore_main_loop_begin(); - - ecore_evas_free(ee); - ecore_evas_shutdown(); - - return 0; -} - diff --git a/src/examples/ecore/meson.build b/src/examples/ecore/meson.build index 197d88f083..2a7af4717a 100644 --- a/src/examples/ecore/meson.build +++ b/src/examples/ecore/meson.build @@ -73,7 +73,6 @@ examples = [ 'ecore_evas_buffer_example_01', 'ecore_evas_buffer_example_02', 'ecore_evas_callbacks', - 'ecore_evas_ews_example', 'ecore_evas_object_example', 'ecore_evas_window_sizes_example', ] diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h index 89a9ff843f..dfbd7a749f 100644 --- a/src/lib/ecore_evas/Ecore_Evas.h +++ b/src/lib/ecore_evas/Ecore_Evas.h @@ -97,7 +97,7 @@ extern "C" { #define HAVE_ECORE_EVAS_COCOA 1 #define HAVE_ECORE_EVAS_SDL 1 //#define HAVE_ECORE_EVAS_WINCE 1 -#define HAVE_ECORE_EVAS_EWS 1 +//#define HAVE_ECORE_EVAS_EWS 1 /* @deprecated */ #define HAVE_ECORE_EVAS_PSL1GHT 1 #define HAVE_ECORE_EVAS_WAYLAND_SHM 1 #define HAVE_ECORE_EVAS_WAYLAND_EGL 1 @@ -125,7 +125,7 @@ typedef enum _Ecore_Evas_Engine_Type ECORE_EVAS_ENGINE_SOFTWARE_16_DDRAW, ECORE_EVAS_ENGINE_SOFTWARE_16_WINCE, ECORE_EVAS_ENGINE_OPENGL_SDL, - ECORE_EVAS_ENGINE_EWS, + ECORE_EVAS_ENGINE_EWS, /* @deprecated */ ECORE_EVAS_ENGINE_PSL1GHT, ECORE_EVAS_ENGINE_WAYLAND_SHM, ECORE_EVAS_ENGINE_WAYLAND_EGL, @@ -1788,6 +1788,7 @@ EAPI Ecore_Evas *ecore_evas_buffer_ecore_evas_parent_get(Ecore_Evas *ee); * @see ecore_evas_ews_ecore_evas_get() * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Ecore_Evas *ecore_evas_ews_new(int x, int y, int w, int h); @@ -1806,6 +1807,7 @@ EAPI Ecore_Evas *ecore_evas_ews_new(int x, int y, int w, int h); * @see ecore_evas_ews_manager_set() * @see ecore_evas_ews_evas_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Evas_Object *ecore_evas_ews_backing_store_get(const Ecore_Evas *ee); @@ -1816,6 +1818,7 @@ EAPI Evas_Object *ecore_evas_ews_backing_store_get(const Ecore_Evas *ee); * @param ee The Ecore_Evas for which window will be deleted. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI void ecore_evas_ews_delete_request(Ecore_Evas *ee); @@ -3216,6 +3219,7 @@ EAPI void ecore_evas_callback_new_set(Evas *(*func)(int w, int h)); * ecore_evas_ews_new(). * * @since 1.1 + * @deprecated - @since 1.26 * @{ */ @@ -3227,6 +3231,7 @@ EAPI void ecore_evas_callback_new_set(Evas *(*func)(int w, int h)); * @return @c EINA_TRUE on success, @c EINA_FALSE if ews is already in use. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Eina_Bool ecore_evas_ews_engine_set(const char *engine, const char *options); @@ -3240,6 +3245,7 @@ EAPI Eina_Bool ecore_evas_ews_engine_set(const char *engine, const char *options * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Eina_Bool ecore_evas_ews_setup(int x, int y, int w, int h); @@ -3253,6 +3259,7 @@ EAPI Eina_Bool ecore_evas_ews_setup(int x, int y, int w, int h); * * @see ecore_evas_ews_evas_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Ecore_Evas *ecore_evas_ews_ecore_evas_get(void); @@ -3266,11 +3273,13 @@ EAPI Ecore_Evas *ecore_evas_ews_ecore_evas_get(void); * * @see ecore_evas_ews_ecore_evas_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Evas *ecore_evas_ews_evas_get(void); /** * @brief Gets the current background. + * @deprecated - @since 1.26 */ EAPI Evas_Object *ecore_evas_ews_background_get(void); @@ -3284,6 +3293,7 @@ EAPI Evas_Object *ecore_evas_ews_background_get(void); * rectangle. * * @note previous object will be deleted! + * @deprecated - @since 1.26 */ EAPI void ecore_evas_ews_background_set(Evas_Object *o); @@ -3295,6 +3305,7 @@ EAPI void ecore_evas_ews_background_set(Evas_Object *o); * @note Do not change the returned list or its contents. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI const Eina_List *ecore_evas_ews_children_get(void); @@ -3309,6 +3320,7 @@ EAPI const Eina_List *ecore_evas_ews_children_get(void); * * @see ecore_evas_ews_manager_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI void ecore_evas_ews_manager_set(const void *manager); @@ -3318,6 +3330,7 @@ EAPI void ecore_evas_ews_manager_set(const void *manager); * @return the value set by ecore_evas_ews_manager_set() * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI const void *ecore_evas_ews_manager_get(void); diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index a579abff97..080a2f3894 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -565,11 +565,7 @@ ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine) return EINA_FALSE; #endif case ECORE_EVAS_ENGINE_EWS: -#ifdef BUILD_ECORE_EVAS_EWS - return EINA_TRUE; -#else return EINA_FALSE; -#endif case ECORE_EVAS_ENGINE_PSL1GHT: return EINA_FALSE; case ECORE_EVAS_ENGINE_WAYLAND_SHM: @@ -632,10 +628,6 @@ ecore_evas_init(void) if (getenv("ECORE_EVAS_RENDER_NOSYNC")) _ecore_evas_render_sync = 0; if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init(); -#ifdef BUILD_ECORE_EVAS_EWS - _ecore_evas_ews_events_init(); -#endif - _ecore_evas_extn_init(); _ecore_evas_engine_init(); @@ -680,10 +672,6 @@ ecore_evas_shutdown(void) EINA_LOG_STATE_START, EINA_LOG_STATE_SHUTDOWN); -#ifdef BUILD_ECORE_EVAS_EWS - _ecore_evas_ews_events_flush(); -#endif - while (ecore_evases) _ecore_evas_free(ecore_evases); if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown(); @@ -694,9 +682,6 @@ ecore_evas_shutdown(void) _ecore_evas_extn_shutdown(); -#ifdef BUILD_ECORE_EVAS_EWS - while (_ecore_evas_ews_shutdown()); -#endif _ecore_evas_engine_shutdown(); eina_log_domain_unregister(_ecore_evas_log_dom); @@ -995,14 +980,6 @@ _ecore_evas_constructor_buffer(int x EINA_UNUSED, int y EINA_UNUSED, int w, int return ecore_evas_buffer_new(w, h); } -#ifdef BUILD_ECORE_EVAS_EWS -static Ecore_Evas * -_ecore_evas_constructor_ews(int x, int y, int w, int h, const char *extra_options EINA_UNUSED) -{ - return ecore_evas_ews_new(x, y, w, h); -} -#endif - /* note: keep sorted by priority, highest first */ static const struct ecore_evas_engine _engines[] = { /* unix */ @@ -1022,9 +999,6 @@ static const struct ecore_evas_engine _engines[] = { {"opengl_sdl", _ecore_evas_constructor_opengl_sdl}, {"sdl", _ecore_evas_constructor_sdl}, {"buffer", _ecore_evas_constructor_buffer}, -#ifdef BUILD_ECORE_EVAS_EWS - {"ews", _ecore_evas_constructor_ews}, -#endif {NULL, NULL} }; diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c index 2f3f2ff72b..569fe0a077 100644 --- a/src/lib/ecore_evas/ecore_evas_buffer.c +++ b/src/lib/ecore_evas/ecore_evas_buffer.c @@ -219,7 +219,6 @@ ecore_evas_buffer_render(Ecore_Evas *ee) return r; } -// NOTE: if you fix this, consider fixing ecore_evas_ews.c as it is similar! static void _ecore_evas_buffer_coord_translate(Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y) { diff --git a/src/lib/ecore_evas/ecore_evas_ews.c b/src/lib/ecore_evas/ecore_evas_ews.c index 86e939f765..a30617f571 100644 --- a/src/lib/ecore_evas/ecore_evas_ews.c +++ b/src/lib/ecore_evas/ecore_evas_ews.c @@ -34,1459 +34,73 @@ EAPI int ECORE_EVAS_EWS_EVENT_LAYER_CHANGE = 0; EAPI int ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE = 0; EAPI int ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE = 0; -#ifdef BUILD_ECORE_EVAS_EWS -static int _ecore_evas_init_count = 0; - -static Ecore_Evas *_ews_ee = NULL; -static Evas_Object *_ews_bg = NULL; -static Eina_List *_ews_children = NULL; -static const void *_ews_manager = NULL; -static char *_ews_engine = NULL; -static char *_ews_options = NULL; -static int _ews_x = 0; -static int _ews_y = 0; -static int _ews_w = 1024; -static int _ews_h = 768; -static Eina_Bool _ews_defaults_engine = EINA_TRUE; -static Eina_Bool _ews_defaults_geo = EINA_TRUE; - -static const char EWS_ENGINE_NAME[] = "ews"; - -static void -_ecore_evas_ews_pre_free(Ecore_Evas *ee EINA_UNUSED) -{ - DBG("EWS backing store free'd"); - _ews_children = eina_list_free(_ews_children); - _ews_ee = NULL; - _ews_bg = NULL; -} - -static void -_ecore_evas_ews_del_request(Ecore_Evas *ee EINA_UNUSED) -{ - INF("EWS backing store deletion is forbidden!"); -} - -static Ecore_Evas * -_ecore_evas_ews_ee_new(void) -{ - Ecore_Evas *ee = ecore_evas_new(_ews_engine, _ews_x, _ews_y, _ews_w, _ews_h, - _ews_options); - if (!ee) - ERR("Failed: ecore_evas_new(%s, %d, %d, %d, %d, %s)", - _ews_engine, _ews_x, _ews_y, _ews_w, _ews_h, _ews_options); - else - { - ecore_evas_size_min_set(ee, _ews_w, _ews_h); - ecore_evas_size_max_set(ee, _ews_w, _ews_h); - ecore_evas_callback_pre_free_set(ee, _ecore_evas_ews_pre_free); - ecore_evas_callback_delete_request_set(ee, _ecore_evas_ews_del_request); - ecore_evas_name_class_set(ee, "ecore_evas_ews", "ews"); - ecore_evas_title_set - (ee, "EWS: Ecore + Evas Single Process Windowing System"); - ecore_evas_show(ee); - } - - return ee; -} - -static void -_ecore_evas_ews_env_setup(void) -{ - const char *env = getenv("ECORE_EVAS_EWS"); - char *p, *n, *tmp; - - if (_ews_defaults_engine) - { - free(_ews_engine); - _ews_engine = NULL; - free(_ews_options); - _ews_options = NULL; - } - if (_ews_defaults_geo) - { - _ews_x = 0; - _ews_y = 0; - _ews_w = 1024; - _ews_h = 768; - } - - if ((!env) || (!*env)) return; - - p = tmp = strdup(env); - if (!tmp) return; - - n = strchr(p, ':'); - if (n) *n = '\0'; - if (_ews_defaults_engine) _ews_engine = strdup(p); - if (!n) goto end; - - p = n + 1; - n = strchr(p, ':'); - if (!n) goto end; - *n = '\0'; - if (_ews_defaults_geo) _ews_x = atoi(p); - - p = n + 1; - n = strchr(p, ':'); - if (!n) goto end; - *n = '\0'; - if (_ews_defaults_geo) _ews_y = atoi(p); - - p = n + 1; - n = strchr(p, ':'); - if (!n) goto end; - *n = '\0'; - if (_ews_defaults_geo) _ews_w = atoi(p); - - p = n + 1; - n = strchr(p, ':'); - if (n) *n = '\0'; - if (_ews_defaults_geo) _ews_h = atoi(p); - if (!n) goto end; - - p = n + 1; - if (_ews_defaults_engine) _ews_options = strdup(p); - - end: - free(tmp); -} - -static void -_ecore_evas_ews_event_free(void *data EINA_UNUSED, void *ev) -{ - Ecore_Evas *ee = ev; - _ecore_evas_unref(ee); -} - -static void -_ecore_evas_ews_event(Ecore_Evas *ee, int event) -{ - _ecore_evas_ref(ee); - ecore_event_add(event, ee, _ecore_evas_ews_event_free, NULL); -} - -static void -_ecore_evas_ews_event_free_del(void *data EINA_UNUSED, void *ev EINA_UNUSED) -{ - _ecore_evas_ews_shutdown(); -} - -static void -_ecore_evas_ews_free(Ecore_Evas *ee) -{ - evas_object_del(ee->engine.ews.image); - _ews_ee->sub_ecore_evas = eina_list_remove(_ews_ee->sub_ecore_evas, ee); - - ecore_event_add(ECORE_EVAS_EWS_EVENT_DEL, ee, _ecore_evas_ews_event_free_del, NULL); -} - -static void -_ecore_evas_ews_move(Ecore_Evas *ee, int x, int y) -{ - ee->req.x = x; - ee->req.y = y; - - if ((x == ee->x) && (y == ee->y)) return; - ee->x = x; - ee->y = y; - evas_object_move(ee->engine.ews.image, x, y); - if (ee->func.fn_move) ee->func.fn_move(ee); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_MOVE); -} - -static void -_ecore_evas_ews_managed_move(Ecore_Evas *ee, int x, int y) -{ - ee->req.x = x; - ee->req.y = y; - - if ((x == ee->x) && (y == ee->y)) return; - ee->x = x; - ee->y = y; - if (ee->func.fn_move) ee->func.fn_move(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_MOVE); -} - -static void -_ecore_evas_ews_resize_internal(Ecore_Evas *ee, int w, int h) -{ - Evas_Engine_Info_Buffer *einfo; - void *pixels; - int stride; - - evas_output_size_set(ee->evas, w, h); - evas_output_viewport_set(ee->evas, 0, 0, w, h); - evas_damage_rectangle_add(ee->evas, 0, 0, w, h); - - evas_object_image_size_set(ee->engine.ews.image, w, h); - evas_object_image_fill_set(ee->engine.ews.image, 0, 0, w, h); - evas_object_resize(ee->engine.ews.image, w, h); - - pixels = evas_object_image_data_get(ee->engine.ews.image, 1); - evas_object_image_data_set(ee->engine.ews.image, pixels); // refcount - stride = evas_object_image_stride_get(ee->engine.ews.image); - - einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas); - EINA_SAFETY_ON_NULL_RETURN(einfo); - - einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32; - einfo->info.dest_buffer = pixels; - einfo->info.dest_buffer_row_bytes = stride; - einfo->info.use_color_key = 0; - einfo->info.alpha_threshold = 0; - einfo->info.func.new_update_region = NULL; - einfo->info.func.free_update_region = NULL; - evas_object_image_data_set(ee->engine.ews.image, pixels); - if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) - { - ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); - } -} - -static void -_ecore_evas_ews_resize(Ecore_Evas *ee, int w, int h) -{ - if (w < 1) w = 1; - if (h < 1) h = 1; - - ee->req.w = w; - ee->req.h = h; - - if ((w == ee->w) && (h == ee->h)) return; - ee->w = w; - ee->h = h; - _ecore_evas_ews_resize_internal(ee, w, h); - if (ee->func.fn_resize) ee->func.fn_resize(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_RESIZE); -} - -static void -_ecore_evas_ews_move_resize(Ecore_Evas *ee, int x, int y, int w, int h) -{ - _ecore_evas_ews_move(ee, x, y); - _ecore_evas_ews_resize(ee, w, h); -} - -static void -_ecore_evas_ews_rotation_set(Ecore_Evas *ee, int rot, int resize EINA_UNUSED) -{ - if (ee->rotation == rot) return; - ee->rotation = rot; - - ERR("TODO: rot=%d, resize=%d", rot, resize); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_shaped_set(Ecore_Evas *ee, int val) -{ - if (ee->shaped == val) return; - ee->shaped = val; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_show(Ecore_Evas *ee) -{ - ee->should_be_visible = EINA_TRUE; - evas_object_show(ee->engine.ews.image); - if (ee->prop.fullscreen) - evas_object_focus_set(ee->engine.ews.image, EINA_TRUE); - - if (ee->func.fn_show) ee->func.fn_show(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_SHOW); -} - -static void -_ecore_evas_ews_hide(Ecore_Evas *ee) -{ - ee->should_be_visible = EINA_FALSE; - evas_object_hide(ee->engine.ews.image); - - if (ee->func.fn_hide) ee->func.fn_hide(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_HIDE); -} - -static void -_ecore_evas_ews_raise(Ecore_Evas *ee) -{ - evas_object_raise(ee->engine.ews.image); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_RAISE); -} - -static void -_ecore_evas_ews_lower(Ecore_Evas *ee) -{ - evas_object_lower(ee->engine.ews.image); - evas_object_lower(_ews_bg); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_LOWER); -} - -static void -_ecore_evas_ews_activate(Ecore_Evas *ee) -{ - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_ACTIVATE); -} - -static void -_ecore_evas_ews_title_set(Ecore_Evas *ee, const char *t) -{ - if (ee->prop.title) free(ee->prop.title); - ee->prop.title = NULL; - if (t) ee->prop.title = strdup(t); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_name_class_set(Ecore_Evas *ee, const char *n, const char *c) -{ - if (ee->prop.name) free(ee->prop.name); - if (ee->prop.clas) free(ee->prop.clas); - ee->prop.name = NULL; - ee->prop.clas = NULL; - if (n) ee->prop.name = strdup(n); - if (c) ee->prop.clas = strdup(c); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_min_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.min.w == w) && (ee->prop.min.h == h)) return; - ee->prop.min.w = w; - ee->prop.min.h = h; - evas_object_size_hint_min_set(ee->engine.ews.image, w, h); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_max_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.max.w == w) && (ee->prop.max.h == h)) return; - ee->prop.max.w = w; - ee->prop.max.h = h; - evas_object_size_hint_max_set(ee->engine.ews.image, w, h); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_base_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.base.w == w) && (ee->prop.base.h == h)) return; - ee->prop.base.w = w; - ee->prop.base.h = h; - evas_object_size_hint_request_set(ee->engine.ews.image, w, h); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_step_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 1) w = 1; - if (h < 1) h = 1; - if ((ee->prop.step.w == w) && (ee->prop.step.h == h)) return; - ee->prop.step.w = w; - ee->prop.step.h = h; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj EINA_UNUSED, - int layer EINA_UNUSED, int hot_x EINA_UNUSED, - int hot_y EINA_UNUSED) -{ - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_layer_set(Ecore_Evas *ee, int layer) -{ - if (layer < EVAS_LAYER_MIN + 2) - layer = EVAS_LAYER_MIN + 2; - else if (layer > EVAS_LAYER_MAX) - layer = EVAS_LAYER_MAX; - - if (ee->prop.layer == layer) return; - ee->prop.layer = layer; - evas_object_layer_set(ee->engine.ews.image, layer); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_LAYER_CHANGE); -} - -static void -_ecore_evas_ews_focus_set(Ecore_Evas *ee, Eina_Bool on) -{ - evas_object_focus_set(ee->engine.ews.image, on); - _ecore_evas_focus_device_set(ee, NULL, on); - if (on) - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_FOCUS); - else - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_UNFOCUS); -} - -static void -_ecore_evas_ews_iconified_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.iconified == on) return; - ee->prop.iconified = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE); -} - -static void -_ecore_evas_ews_borderless_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.borderless == on) return; - ee->prop.borderless = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_override_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.override == on) return; - if (ee->visible) evas_object_show(ee->engine.ews.image); - if (ecore_evas_focus_device_get(ee, NULL)) - evas_object_focus_set(ee->engine.ews.image, EINA_TRUE); - ee->prop.override = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_maximized_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.maximized == on) return; - ee->prop.maximized = on; - if (on) evas_object_show(ee->engine.ews.image); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE); -} - -static void -_ecore_evas_ews_fullscreen_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.fullscreen == on) return; - ee->prop.fullscreen = on; - - if (!on) - { - evas_object_move(ee->engine.ews.image, ee->x, ee->y); - evas_object_resize(ee->engine.ews.image, ee->w, ee->h); - } - else - { - Evas_Coord w, h; - ecore_evas_geometry_get(_ews_ee, NULL, NULL, &w, &h); - evas_object_move(ee->engine.ews.image, 0, 0); - evas_object_resize(ee->engine.ews.image, w, h); - evas_object_focus_set(ee->engine.ews.image, EINA_TRUE); - } - - if (ee->should_be_visible) - evas_object_show(ee->engine.ews.image); - else - evas_object_hide(ee->engine.ews.image); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE); -} - -static void -_ecore_evas_ews_avoid_damage_set(Ecore_Evas *ee, int val) -{ - if (ee->prop.avoid_damage == val) return; - ee->prop.avoid_damage = val; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_withdrawn_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.withdrawn == on) return; - ee->prop.withdrawn = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_sticky_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.sticky == on) return; - ee->prop.sticky = on; - if ((on) && (ee->func.fn_sticky)) ee->func.fn_sticky(ee); - else if ((!on) && (ee->func.fn_unsticky)) ee->func.fn_unsticky(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_ignore_events_set(Ecore_Evas *ee, int val) -{ - if (ee->ignore_events == val) return; - ee->ignore_events = val; - evas_object_pass_events_set(ee->engine.ews.image, val); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_alpha_set(Ecore_Evas *ee, int val) -{ - if (ee->alpha == val) return; - ee->alpha = val; - evas_object_image_alpha_set(ee->engine.ews.image, val); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_transparent_set(Ecore_Evas *ee, int val) -{ - if (ee->transparent == val) return; - ee->transparent = val; - evas_object_image_alpha_set(ee->engine.ews.image, val); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static Eina_Bool -_ecore_evas_ews_prepare(Ecore_Evas *ee) -{ - Evas_Coord w, h; - void *pixels; - - evas_object_image_size_get(ee->engine.ews.image, &w, &h); - if ((w != ee->w) || (h != ee->h)) - ecore_evas_resize(ee, w, h); - - pixels = evas_object_image_data_get(ee->engine.ews.image, 1); - if (!pixels) return EINA_FALSE; - - evas_object_data_set(ee->engine.ews.image, "_ews.pixels", pixels); - - return EINA_TRUE; -} - -static void -_ecore_evas_ews_update_image(void *data, Evas *e EINA_UNUSED, void *event_info) -{ - Evas_Event_Render_Post *post = event_info; - Ecore_Evas *ee = data; - Eina_Rectangle *r; - Eina_List *l; - void *pixels; - - pixels = evas_object_data_get(ee->engine.ews.image, "_ews.pixels"); - if (!pixels) return ; - - evas_object_image_data_set(ee->engine.ews.image, pixels); - EINA_LIST_FOREACH(post->updated_area, l, r) - evas_object_image_data_update_add(ee->engine.ews.image, - r->x, r->y, r->w, r->h); - - evas_object_data_set(ee->engine.ews.image, "_ews.pixels", NULL); -} - -static void -_ecore_evas_ews_screen_geometry_get(const Ecore_Evas *ee EINA_UNUSED, int *x, int *y, int *w, int *h) -{ - ecore_evas_geometry_get(_ews_ee, x, y, w, h); -} - -static const Ecore_Evas_Engine_Func _ecore_ews_engine_func = -{ - _ecore_evas_ews_free, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - _ecore_evas_ews_move, - _ecore_evas_ews_managed_move, - _ecore_evas_ews_resize, - _ecore_evas_ews_move_resize, - _ecore_evas_ews_rotation_set, - _ecore_evas_ews_shaped_set, - _ecore_evas_ews_show, - _ecore_evas_ews_hide, - _ecore_evas_ews_raise, - _ecore_evas_ews_lower, - _ecore_evas_ews_activate, - _ecore_evas_ews_title_set, - _ecore_evas_ews_name_class_set, - _ecore_evas_ews_size_min_set, - _ecore_evas_ews_size_max_set, - _ecore_evas_ews_size_base_set, - _ecore_evas_ews_size_step_set, - _ecore_evas_ews_object_cursor_set, - NULL, - _ecore_evas_ews_layer_set, - _ecore_evas_ews_focus_set, - _ecore_evas_ews_iconified_set, - _ecore_evas_ews_borderless_set, - _ecore_evas_ews_override_set, - _ecore_evas_ews_maximized_set, - _ecore_evas_ews_fullscreen_set, - _ecore_evas_ews_avoid_damage_set, - _ecore_evas_ews_withdrawn_set, - _ecore_evas_ews_sticky_set, - _ecore_evas_ews_ignore_events_set, - _ecore_evas_ews_alpha_set, - _ecore_evas_ews_transparent_set, - NULL, // profiles_set - NULL, // profile_set - - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - - NULL, - _ecore_evas_ews_screen_geometry_get, - NULL, // screen_dpi_get - NULL, - NULL, // msg_send - - NULL, // pointer_xy_get - NULL, // pointer_warp - - NULL, // wm_rot_preferred_rotation_set - NULL, // wm_rot_available_rotations_set - NULL, // wm_rot_manual_rotation_done_set - NULL, // wm_rot_manual_rotation_done - - NULL, // aux_hints_set - - NULL, // fn_animator_register - NULL, // fn_animator_unregister - - NULL, // fn_evas_changed - NULL, //fn_focus_device_set - NULL, //fn_callback_focus_device_in_set - NULL, //fn_callback_focus_device_out_set - NULL, //fn_callback_device_mouse_in_set - NULL, //fn_callback_device_mouse_out_set - NULL, //fn_pointer_device_xy_get - _ecore_evas_ews_prepare, -}; - -void -_ecore_evas_ews_events_init(void) -{ - ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_ADD = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_DEL = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_RESIZE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_MOVE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_SHOW = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_HIDE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_FOCUS = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_UNFOCUS = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_RAISE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_LOWER = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_ACTIVATE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_LAYER_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE = ecore_event_type_new(); -} - -void -_ecore_evas_ews_events_flush(void) -{ - ecore_event_type_flush(ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE, - ECORE_EVAS_EWS_EVENT_ADD, - ECORE_EVAS_EWS_EVENT_DEL, - ECORE_EVAS_EWS_EVENT_RESIZE, - ECORE_EVAS_EWS_EVENT_MOVE, - ECORE_EVAS_EWS_EVENT_SHOW, - ECORE_EVAS_EWS_EVENT_HIDE, - ECORE_EVAS_EWS_EVENT_FOCUS, - ECORE_EVAS_EWS_EVENT_UNFOCUS, - ECORE_EVAS_EWS_EVENT_RAISE, - ECORE_EVAS_EWS_EVENT_LOWER, - ECORE_EVAS_EWS_EVENT_ACTIVATE, - ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE, - ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE, - ECORE_EVAS_EWS_EVENT_LAYER_CHANGE, - ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE, - ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static int -_ecore_evas_ews_init(void) -{ - _ecore_evas_init_count++; - if (_ecore_evas_init_count > 1) return _ecore_evas_init_count; - - _ecore_evas_ews_env_setup(); - - return _ecore_evas_init_count; -} - -int -_ecore_evas_ews_shutdown(void) -{ - _ecore_evas_init_count--; - if (_ecore_evas_init_count == 0) - { - if (_ews_ee) - { - ecore_evas_free(_ews_ee); - _ews_ee = NULL; - } - if (_ews_children) - { - eina_list_free(_ews_children); - _ews_children = NULL; - } - - free(_ews_engine); - _ews_engine = NULL; - free(_ews_options); - _ews_options = NULL; - _ews_defaults_engine = EINA_TRUE; - _ews_defaults_geo = EINA_TRUE; - - } - if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0; - return _ecore_evas_init_count; -} - -static void -_ecore_evas_ews_coord_translate(Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y) -{ - Evas_Coord xx, yy, ww, hh, fx, fy, fw, fh; - - evas_object_geometry_get(ee->engine.ews.image, &xx, &yy, &ww, &hh); - evas_object_image_fill_get(ee->engine.ews.image, &fx, &fy, &fw, &fh); - - if (fw < 1) fw = 1; - if (fh < 1) fh = 1; - - if ((fx == 0) && (fy == 0) && (fw == ww) && (fh == hh)) - { - *x = (ee->w * (*x - xx)) / fw; - *y = (ee->h * (*y - yy)) / fh; - } - else - { - xx = (*x - xx) - fx; - while (xx < 0) xx += fw; - while (xx > fw) xx -= fw; - *x = (ee->w * xx) / fw; - - yy = (*y - yy) - fy; - while (yy < 0) yy += fh; - while (yy > fh) yy -= fh; - *y = (ee->h * yy) / fh; - } -} - -static void -_ecore_evas_ews_modifiers_apply(Ecore_Evas *ee, const Evas_Modifier *modifier) -{ - Evas *e = ee->evas; - - if (evas_key_modifier_is_set(modifier, "Shift")) - evas_key_modifier_on(e, "Shift"); - else evas_key_modifier_off(e, "Shift"); - - if (evas_key_modifier_is_set(modifier, "Control")) - evas_key_modifier_on(e, "Control"); - else evas_key_modifier_off(e, "Control"); - - if (evas_key_modifier_is_set(modifier, "Alt")) - evas_key_modifier_on(e, "Alt"); - else evas_key_modifier_off(e, "Alt"); - - if (evas_key_modifier_is_set(modifier, "Super")) - evas_key_modifier_on(e, "Super"); - else evas_key_modifier_off(e, "Super"); - - if (evas_key_modifier_is_set(modifier, "Hyper")) - evas_key_modifier_on(e, "Hyper"); - else evas_key_modifier_off(e, "Hyper"); - - if (evas_key_modifier_is_set(modifier, "Scroll_Lock")) - evas_key_lock_on(e, "Scroll_Lock"); - else evas_key_lock_off(e, "Scroll_Lock"); - - if (evas_key_modifier_is_set(modifier, "Num_Lock")) - evas_key_lock_on(e, "Num_Lock"); - else evas_key_lock_off(e, "Num_Lock"); - - if (evas_key_modifier_is_set(modifier, "Caps_Lock")) - evas_key_lock_on(e, "Caps_Lock"); - else evas_key_lock_off(e, "Caps_Lock"); - - if (evas_key_modifier_is_set(modifier, "Shift_Lock")) - evas_key_lock_on(e, "Shift_Lock"); - else evas_key_lock_off(e, "Shift_Lock"); -} - -static void -_ecore_evas_ews_cb_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_In *ev = event_info; - Evas_Coord x = ev->canvas.x; - Evas_Coord y = ev->canvas.y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee); - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL); - _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp); -} - -static void -_ecore_evas_ews_cb_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Out *ev = event_info; - Evas_Coord x = ev->canvas.x; - Evas_Coord y = ev->canvas.y; - // TODO: consider grab mode in EWS - _ecore_evas_ews_coord_translate(ee, &x, &y); - if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee); - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL); - _ecore_evas_default_cursor_hide(ee); - _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp); -} - -static void -_ecore_evas_ews_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Down *ev = event_info; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Up *ev = event_info; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Move *ev = event_info; - Evas_Coord x = ev->cur.canvas.x; - Evas_Coord y = ev->cur.canvas.y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp); -} - -static void -_ecore_evas_ews_cb_mouse_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Wheel *ev = event_info; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_multi_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Multi_Down *ev = event_info; - Evas_Coord x, y, xx, yy; - double xf, yf; - - x = ev->canvas.x; - y = ev->canvas.y; - xx = x; - yy = y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - xf = (ev->canvas.xsub - (double)xx) + (double)x; - yf = (ev->canvas.ysub - (double)yy) + (double)y; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_multi_down(ee->evas, ev->device, x, y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, xf, yf, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_multi_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Multi_Up *ev = event_info; - Evas_Coord x, y, xx, yy; - double xf, yf; - - x = ev->canvas.x; - y = ev->canvas.y; - xx = x; - yy = y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - xf = (ev->canvas.xsub - (double)xx) + (double)x; - yf = (ev->canvas.ysub - (double)yy) + (double)y; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_multi_up(ee->evas, ev->device, x, y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, xf, yf, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_multi_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Multi_Move *ev = event_info; - Evas_Coord x, y, xx, yy; - double xf, yf; - - x = ev->cur.canvas.x; - y = ev->cur.canvas.y; - xx = x; - yy = y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - xf = (ev->cur.canvas.xsub - (double)xx) + (double)x; - yf = (ev->cur.canvas.ysub - (double)yy) + (double)y; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_multi_move(ee->evas, ev->device, x, y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, xf, yf, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_free(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - if (ee->driver) _ecore_evas_free(ee); -} - -static void -_ecore_evas_ews_cb_key_down(void *data, Evas *e, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Key_Down *ev = event_info; - - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Shift")) - evas_key_modifier_on(ee->evas, "Shift"); - else - evas_key_modifier_off(ee->evas, "Shift"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Control")) - evas_key_modifier_on(ee->evas, "Control"); - else - evas_key_modifier_off(ee->evas, "Control"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Alt")) - evas_key_modifier_on(ee->evas, "Alt"); - else - evas_key_modifier_off(ee->evas, "Alt"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Meta")) - evas_key_modifier_on(ee->evas, "Meta"); - else - evas_key_modifier_off(ee->evas, "Meta"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Hyper")) - evas_key_modifier_on(ee->evas, "Hyper"); - else - evas_key_modifier_off(ee->evas, "Hyper"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Super")) - evas_key_modifier_on(ee->evas, "Super"); - else - evas_key_modifier_off(ee->evas, "Super"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Scroll_Lock")) - evas_key_lock_on(ee->evas, "Scroll_Lock"); - else - evas_key_lock_off(ee->evas, "Scroll_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Num_Lock")) - evas_key_lock_on(ee->evas, "Num_Lock"); - else - evas_key_lock_off(ee->evas, "Num_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Caps_Lock")) - evas_key_lock_on(ee->evas, "Caps_Lock"); - else - evas_key_lock_off(ee->evas, "Caps_Lock"); - evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_key_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Key_Up *ev = event_info; - - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Shift")) - evas_key_modifier_on(ee->evas, "Shift"); - else - evas_key_modifier_off(ee->evas, "Shift"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Control")) - evas_key_modifier_on(ee->evas, "Control"); - else - evas_key_modifier_off(ee->evas, "Control"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Alt")) - evas_key_modifier_on(ee->evas, "Alt"); - else - evas_key_modifier_off(ee->evas, "Alt"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Meta")) - evas_key_modifier_on(ee->evas, "Meta"); - else - evas_key_modifier_off(ee->evas, "Meta"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Hyper")) - evas_key_modifier_on(ee->evas, "Hyper"); - else - evas_key_modifier_off(ee->evas, "Hyper"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Super")) - evas_key_modifier_on(ee->evas, "Super"); - else - evas_key_modifier_off(ee->evas, "Super"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Scroll_Lock")) - evas_key_lock_on(ee->evas, "Scroll_Lock"); - else - evas_key_lock_off(ee->evas, "Scroll_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Num_Lock")) - evas_key_lock_on(ee->evas, "Num_Lock"); - else - evas_key_lock_off(ee->evas, "Num_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Caps_Lock")) - evas_key_lock_on(ee->evas, "Caps_Lock"); - else - evas_key_lock_off(ee->evas, "Caps_Lock"); - evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_focus_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_focus_set(ee, EINA_TRUE); -} - -static void -_ecore_evas_ews_cb_focus_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - if (ee->deleted) return; - ecore_evas_focus_set(ee, EINA_FALSE); -} - -static void -_ecore_evas_ews_cb_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_show(ee); -} - -static void -_ecore_evas_ews_cb_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - if (ee->deleted) return; - ecore_evas_hide(ee); -} -#endif - EAPI Ecore_Evas * -ecore_evas_ews_new(int x, int y, int w, int h) +ecore_evas_ews_new(int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) { -// basically a copy of ecore_evas_buffer_new() keep in sync... -#ifdef BUILD_ECORE_EVAS_EWS - Evas_Object *o; - Evas_Engine_Info_Buffer *einfo; - Ecore_Evas *ee; - int rmethod; - static Eina_Bool creating = EINA_FALSE; - - if (_ecore_evas_ews_init() < 1) return NULL; - - if (creating) return NULL; /* avoid recursive ecore_evas_new() with ews */ - creating = EINA_TRUE; - if (!_ews_ee) _ews_ee = _ecore_evas_ews_ee_new(); - creating = EINA_FALSE; - if (!_ews_ee) - { - ERR("Could not create EWS backing store"); - _ecore_evas_ews_shutdown(); - return NULL; - } - - rmethod = evas_render_method_lookup("buffer"); - if (!rmethod) return NULL; - ee = calloc(1, sizeof(Ecore_Evas)); - if (!ee) return NULL; - - if (w < 1) w = 1; - if (h < 1) h = 1; - - o = evas_object_image_add(_ews_ee->evas); - evas_object_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC); - evas_object_image_colorspace_set(o, EVAS_COLORSPACE_ARGB8888); - evas_object_image_size_set(o, w, h); - evas_object_image_alpha_set(o, 1); - - ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS); - - ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_ews_engine_func; - - ee->driver = EWS_ENGINE_NAME; - - ee->x = 0; - ee->y = 0; - ee->w = w; - ee->h = h; - ee->req.x = ee->x; - ee->req.y = ee->y; - ee->req.w = ee->w; - ee->req.h = ee->h; - - /* init evas here */ - ee->evas = evas_new(); - evas_data_attach_set(ee->evas, ee); - evas_output_method_set(ee->evas, rmethod); - evas_output_size_set(ee->evas, w, h); - evas_output_viewport_set(ee->evas, 0, 0, w, h); - - evas_object_move(o, x, y); - evas_object_resize(o, w, h); - evas_object_image_fill_set(o, 0, 0, w, h); - - ee->engine.ews.image = o; - evas_object_data_set(ee->engine.ews.image, "Ecore_Evas", ee); - evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, _ecore_evas_ews_update_image, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_IN, - _ecore_evas_ews_cb_mouse_in, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_OUT, - _ecore_evas_ews_cb_mouse_out, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_DOWN, - _ecore_evas_ews_cb_mouse_down, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_UP, - _ecore_evas_ews_cb_mouse_up, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_MOVE, - _ecore_evas_ews_cb_mouse_move, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_WHEEL, - _ecore_evas_ews_cb_mouse_wheel, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MULTI_DOWN, - _ecore_evas_ews_cb_multi_down, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MULTI_UP, - _ecore_evas_ews_cb_multi_up, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MULTI_MOVE, - _ecore_evas_ews_cb_multi_move, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_FREE, - _ecore_evas_ews_cb_free, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_KEY_DOWN, - _ecore_evas_ews_cb_key_down, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_KEY_UP, - _ecore_evas_ews_cb_key_up, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_FOCUS_IN, - _ecore_evas_ews_cb_focus_in, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_FOCUS_OUT, - _ecore_evas_ews_cb_focus_out, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_SHOW, - _ecore_evas_ews_cb_show, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_HIDE, - _ecore_evas_ews_cb_hide, ee); - einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas); - if (einfo) - { - void *pixels = evas_object_image_data_get(o, 1); - evas_object_image_data_set(o, pixels); // refcount - einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32; - einfo->info.dest_buffer = pixels; - einfo->info.dest_buffer_row_bytes = evas_object_image_stride_get(o); - einfo->info.use_color_key = 0; - einfo->info.alpha_threshold = 0; - einfo->info.func.new_update_region = NULL; - einfo->info.func.free_update_region = NULL; - evas_object_image_data_set(o, pixels); - if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) - { - ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); - ecore_evas_free(ee); - return NULL; - } - } - else - { - ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); - ecore_evas_free(ee); - return NULL; - } - evas_key_modifier_add(ee->evas, "Shift"); - evas_key_modifier_add(ee->evas, "Control"); - evas_key_modifier_add(ee->evas, "Alt"); - evas_key_modifier_add(ee->evas, "Meta"); - evas_key_modifier_add(ee->evas, "Hyper"); - evas_key_modifier_add(ee->evas, "Super"); - evas_key_lock_add(ee->evas, "Caps_Lock"); - evas_key_lock_add(ee->evas, "Num_Lock"); - evas_key_lock_add(ee->evas, "Scroll_Lock"); - - if (!_ecore_evas_cursors_init(ee)) - { - ERR("Could not init the Ecore Evas cursors"); - ecore_evas_free(ee); - } - - _ecore_evas_subregister(_ews_ee, ee); - _ews_children = eina_list_append(_ews_children, ee); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_ADD); - - return ee; -#else return NULL; - (void)x; - (void)y; - (void)w; - (void)h; -#endif } EAPI Evas_Object * -ecore_evas_ews_backing_store_get(const Ecore_Evas *ee) +ecore_evas_ews_backing_store_get(const Ecore_Evas *ee EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) - { - ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, - "ecore_evas_ews_backing_store_get"); - return NULL; - } - return ee->engine.ews.image; -#else return NULL; - (void)ee; -#endif } EAPI void -ecore_evas_ews_delete_request(Ecore_Evas *ee) +ecore_evas_ews_delete_request(Ecore_Evas *ee EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) - { - ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, - "ecore_evas_ews_delete_request"); - return; - } - if (ee->func.fn_delete_request) ee->func.fn_delete_request(ee); - else ecore_evas_free(ee); -#else - (void)ee; -#endif } EAPI Eina_Bool -ecore_evas_ews_engine_set(const char *engine, const char *options) +ecore_evas_ews_engine_set(const char *engine EINA_UNUSED, const char *options EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (_ews_ee) return EINA_FALSE; - - free(_ews_engine); - free(_ews_options); - - _ews_engine = engine ? strdup(engine) : NULL; - _ews_options = options ? strdup(options) : NULL; - - if ((engine) && (!_ews_engine)) return EINA_FALSE; - if ((options) && (!_ews_options)) - { - free(_ews_engine); - _ews_engine = NULL; - _ews_defaults_engine = EINA_TRUE; - return EINA_FALSE; - } - - _ews_defaults_engine = EINA_FALSE; - return EINA_TRUE; -#else return EINA_FALSE; - (void)engine; - (void)options; -#endif } EAPI Eina_Bool -ecore_evas_ews_setup(int x, int y, int w, int h) +ecore_evas_ews_setup(int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - Eina_Bool ret = EINA_TRUE; - - _ews_defaults_geo = EINA_FALSE; - _ews_x = x; - _ews_y = y; - _ews_w = w; - _ews_h = h; - - if (!_ews_ee) return EINA_TRUE; - - /* move-resize is not as implemented as move + resize */ - ecore_evas_move(_ews_ee, x, y); - ecore_evas_size_min_set(_ews_ee, w, h); - ecore_evas_size_max_set(_ews_ee, w, h); - ecore_evas_resize(_ews_ee, w, h); - - ecore_evas_geometry_get(_ews_ee, &x, &y, &w, &h); - -#define TST(n) if ((n != _ews_##n)) \ - { \ - WRN("Asked %d, got %d for "#n, _ews_##n, n); \ - ret = EINA_FALSE; \ - } - TST(x); - TST(y); - TST(w); - TST(h); -#undef TST - return ret; -#else return EINA_FALSE; - (void)x; - (void)y; - (void)w; - (void)h; -#endif } EAPI Ecore_Evas * ecore_evas_ews_ecore_evas_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - if (!_ews_ee) _ews_ee = _ecore_evas_ews_ee_new(); - return _ews_ee; -#else return NULL; -#endif } EAPI Evas * ecore_evas_ews_evas_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return ecore_evas_get(ecore_evas_ews_ecore_evas_get()); -#else return NULL; -#endif } EAPI Evas_Object * ecore_evas_ews_background_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return _ews_bg; -#else return NULL; -#endif } -#ifdef BUILD_ECORE_EVAS_EWS -static void -_ecore_evas_ews_background_free(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED) -{ - _ews_bg = NULL; - ecore_evas_ews_background_set(NULL); -} -#endif - EAPI void -ecore_evas_ews_background_set(Evas_Object *o) +ecore_evas_ews_background_set(Evas_Object *o EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if ((o) && (o == _ews_bg)) return; - - if (_ews_bg) - { - evas_object_del(_ews_bg); - _ews_bg = NULL; - } - - if ((!o) && (_ews_ee)) - { - o = evas_object_rectangle_add(ecore_evas_get(_ews_ee)); - evas_object_color_set(o, 0, 0, 0, 255); - } - - if (_ews_ee) - { - Evas_Coord w, h, fw, fh; - Evas *e = ecore_evas_get(_ews_ee); - - if (e != evas_object_evas_get(o)) - { - ERR("background not in ecore_evas_ews_evas_get() canvas!"); - return; - } - - evas_output_viewport_get(e, NULL, NULL, &w, &h); - evas_output_framespace_get(e, NULL, NULL, &fw, &fh); - evas_object_move(o, 0, 0); - evas_object_resize(o, w - fw, h - fh); - evas_object_layer_set(o, EVAS_LAYER_MIN + 1); - evas_object_lower(o); - evas_object_show(o); - - evas_object_event_callback_add - (o, EVAS_CALLBACK_FREE, _ecore_evas_ews_background_free, NULL); - } - - _ews_bg = o; -#else - return; - (void)o; -#endif } EAPI const Eina_List * ecore_evas_ews_children_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return _ews_children; -#else return NULL; -#endif } EAPI void -ecore_evas_ews_manager_set(const void *manager) +ecore_evas_ews_manager_set(const void *manager EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (_ews_manager == manager) return; - _ews_manager = manager; - ecore_event_add(ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE, NULL, NULL, NULL); -#else - (void)manager; -#endif } EAPI const void * ecore_evas_ews_manager_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return _ews_manager; -#else return NULL; -#endif } diff --git a/src/lib/ecore_evas/ecore_evas_module.c b/src/lib/ecore_evas/ecore_evas_module.c index 2b5394b06f..4fdd8f70b0 100644 --- a/src/lib/ecore_evas/ecore_evas_module.c +++ b/src/lib/ecore_evas/ecore_evas_module.c @@ -250,9 +250,6 @@ _ecore_evas_available_engines_get(void) { #ifdef BUILD_ECORE_EVAS_BUFFER ADDENG("buffer"); -#endif -#ifdef BUILD_ECORE_EVAS_EWS - ADDENG("ews"); #endif } else if (!strcmp(name, "cocoa")) diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index 4ce4c0e809..4dfbbe2d1c 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -5268,11 +5268,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U default: disp = getenv("ELM_DISPLAY"); - if ((disp) && (!strcmp(disp, "ews"))) - { - enginelist[p++] = ELM_EWS; - } - else if ((disp) && (!strcmp(disp, "buffer"))) + if ((disp) && (!strcmp(disp, "buffer"))) { enginelist[p++] = ELM_BUFFER; } @@ -5534,8 +5530,6 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U tmp_sd.ee = ecore_evas_gl_sdl_new(NULL, 1, 1, 0, 0); else if (!strcmp(enginelist[i], ELM_OPENGL_COCOA)) tmp_sd.ee = ecore_evas_cocoa_new(NULL, 1, 1, 0, 0); - else if (!strcmp(enginelist[i], ELM_EWS)) - tmp_sd.ee = ecore_evas_ews_new(0, 0, 1, 1); else if (!strcmp(enginelist[i], ELM_SOFTWARE_FB)) tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1); else if (!strcmp(enginelist[i], ELM_BUFFER)) diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c index 79e0f9a998..3c8537d8b0 100644 --- a/src/lib/elementary/elm_config.c +++ b/src/lib/elementary/elm_config.c @@ -50,7 +50,6 @@ const char *_elm_engines[] = { "sdl", "opengl_sdl", "buffer", - "ews", "opengl_cocoa", "wayland_shm", "wayland_egl", @@ -2546,8 +2545,6 @@ _env_get(void) eina_stringshare_replace(&_elm_config->engine, ELM_BUFFER); else if ((!strncmp(s, "shot:", 5))) eina_stringshare_replace(&_elm_config->engine, s); - else if ((!strcasecmp(s, "ews"))) - eina_stringshare_replace(&_elm_config->engine, ELM_EWS); else if ((!strcasecmp(s, "wayland_shm")) || (!strcasecmp(s, "wayland-shm"))) eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_SHM); diff --git a/src/lib/elementary/elm_config.h b/src/lib/elementary/elm_config.h index 429e6aa01f..f3c6c6b5df 100644 --- a/src/lib/elementary/elm_config.h +++ b/src/lib/elementary/elm_config.h @@ -1190,7 +1190,6 @@ EAPI void elm_config_password_show_last_timeout_set(double password_show_la * The following are the available engines: * @li "fb" (Framebuffer) * @li "buffer" (Pixel Memory Buffer) - * @li "ews" (Ecore + Evas Single Process Windowing System) * @li NULL - no engine config * * @deprecated Please use elm_config_accel_preference_override_set() instead diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index d6a4b5dac4..bb2ec1d084 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -144,7 +144,6 @@ _elm_rescale(void) { edje_scale_set(_elm_config->scale); _elm_win_rescale(NULL, EINA_FALSE); - _elm_ews_wm_rescale(NULL, EINA_FALSE); } static void *app_mainfunc = NULL; @@ -869,12 +868,8 @@ elm_quicklaunch_sub_init(int argc, EINA_SAFETY_ON_FALSE_GOTO(ecore_con_init(), ql_sub_ecore_con); EINA_SAFETY_ON_FALSE_GOTO(ecore_con_url_init(), ql_sub_ecore_con_url); _elm_prefs_initted = _elm_prefs_init(); - EINA_SAFETY_ON_FALSE_GOTO(_elm_ews_wm_init(), ql_sub_ews);; } return _elm_sub_init_count; -ql_sub_ews: - if (_elm_prefs_initted) _elm_prefs_shutdown(); - ecore_con_url_shutdown(); ql_sub_ecore_con_url: ecore_con_shutdown(); ql_sub_ecore_con: @@ -900,7 +895,6 @@ elm_quicklaunch_sub_shutdown(void) ecore_shutdown_ex(); _elm_win_shutdown(); - _elm_ews_wm_shutdown(); ecore_con_url_shutdown(); ecore_con_shutdown(); ecore_imf_shutdown(); diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index aee4b4d8d6..52aee0fd26 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -288,13 +288,12 @@ extern const char *_elm_engines[]; # define ELM_SOFTWARE_SDL (_elm_engines[4]) # define ELM_OPENGL_SDL (_elm_engines[5]) # define ELM_BUFFER (_elm_engines[6]) -# define ELM_EWS (_elm_engines[7]) -# define ELM_OPENGL_COCOA (_elm_engines[8]) -# define ELM_WAYLAND_SHM (_elm_engines[9]) -# define ELM_WAYLAND_EGL (_elm_engines[10]) -# define ELM_DRM (_elm_engines[11]) -# define ELM_SOFTWARE_DDRAW (_elm_engines[12]) -# define ELM_GL_DRM (_elm_engines[13]) +# define ELM_OPENGL_COCOA (_elm_engines[7]) +# define ELM_WAYLAND_SHM (_elm_engines[8]) +# define ELM_WAYLAND_EGL (_elm_engines[9]) +# define ELM_DRM (_elm_engines[10]) +# define ELM_SOFTWARE_DDRAW (_elm_engines[11]) +# define ELM_GL_DRM (_elm_engines[12]) # define ELM_FONT_TOKEN_STYLE ":style=" @@ -667,11 +666,6 @@ void _elm_prefs_data_init(void); void _elm_prefs_data_shutdown(void); /* init functions for dnd and cnp */ -int _elm_ews_wm_init(void); -void _elm_ews_wm_shutdown(void); -void _elm_ews_wm_rescale(Elm_Theme *th, - Eina_Bool use_theme); - void _elm_win_shutdown(void); void _elm_win_rescale(Elm_Theme *th, Eina_Bool use_theme); diff --git a/src/lib/elementary/elm_theme.c b/src/lib/elementary/elm_theme.c index 8625cb6147..7a40a4d7e9 100644 --- a/src/lib/elementary/elm_theme.c +++ b/src/lib/elementary/elm_theme.c @@ -867,7 +867,6 @@ elm_theme_flush(Elm_Theme *th) if (th->cache_style_load_failed) eina_hash_free(th->cache_style_load_failed); th->cache_style_load_failed = eina_hash_string_superfast_new(NULL); _elm_win_rescale(th, EINA_TRUE); - _elm_ews_wm_rescale(th, EINA_TRUE); if (th->referrers) { Eina_List *l; diff --git a/src/lib/elementary/elm_win.h b/src/lib/elementary/elm_win.h index 5e272edebc..16d6403b0c 100644 --- a/src/lib/elementary/elm_win.h +++ b/src/lib/elementary/elm_win.h @@ -39,7 +39,6 @@ * GDI with software) * @li "ddraw", "software-ddraw", "software_ddraw" (Windows WIN32 rendering via * DirectDraw with software) - * @li "ews" (rendering to EWS - Ecore + Evas Single Process Windowing System) * @li "gl-cocoa", "gl_cocoa", "opengl-cocoa", "opengl_cocoa" (OpenGL rendering in Cocoa) * @li "wayland_shm" (Wayland client SHM rendering) * @li "wayland_egl" (Wayland client OpenGL/EGL rendering) diff --git a/src/lib/elementary/elu_ews_wm.c b/src/lib/elementary/elu_ews_wm.c deleted file mode 100644 index 0120aea6ea..0000000000 --- a/src/lib/elementary/elu_ews_wm.c +++ /dev/null @@ -1,531 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -#include - -#include "elm_priv.h" - -static Eina_Bool _ews_used = EINA_FALSE; -static Eina_List *_ews_ev_handlers = NULL; -static Eina_Hash *_ews_borders = NULL; -static Eina_Hash *_ews_borders_geo = NULL; -static Evas_Object *_ews_bg = NULL; -static Ecore_Animator *_ews_border_mover = NULL; -static Evas_Object *_ews_border_mover_obj = NULL; -static Evas_Point _ews_border_mover_off = {0, 0}; - -static void -_elm_ews_border_usable_screen_geometry_get(int *x, int *y, int *w, int *h) -{ - Ecore_Evas *ee = ecore_evas_ews_ecore_evas_get(); - ecore_evas_geometry_get(ee, NULL, NULL, w, h); - if (x) *x = 0; - if (y) *y = 0; - // TODO: when add a shelf for iconified, subtract its area here. -} - -static void -_elm_ews_wm_border_del(void *data) -{ - Evas_Object *deco = data; - evas_object_del(deco); - - if (_ews_border_mover_obj == deco) - { - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - _ews_border_mover_obj = NULL; - } -} - -static Evas_Object * -_elm_ews_wm_border_find(const Ecore_Evas *ee) -{ - return eina_hash_find(_ews_borders, &ee); -} - -static Eina_Rectangle * -_elm_ews_wm_border_geo_find(const Ecore_Evas *ee) -{ - return eina_hash_find(_ews_borders_geo, &ee); -} - -static void -_elm_ews_border_geo_apply(Ecore_Evas *ee, Evas_Object *o) -{ - int x, y, w, h; - ecore_evas_geometry_get(ee, &x, &y, &w, &h); - evas_object_geometry_set(o, x, y, w, h); -} - -static void -_elm_ews_border_focus_apply(Ecore_Evas *ee, Evas_Object *o) -{ - const char *sig; - if (ecore_evas_focus_get(ee)) - sig = "elm,state,focus,on"; - else - sig = "elm,state,focus,off"; - edje_object_signal_emit(o, sig, "elm"); -} - -static void -_elm_ews_border_stack_apply(Ecore_Evas *ee, Evas_Object *o) -{ - Evas_Object *bs_o = ecore_evas_ews_backing_store_get(ee); - evas_object_stack_below(o, bs_o); -} - -static void -_elm_ews_border_iconified_apply(Ecore_Evas *ee, Evas_Object *o) -{ - const char *sig; - if (ecore_evas_iconified_get(ee)) - sig = "elm,state,iconified,on"; - else - sig = "elm,state,iconified,off"; - edje_object_signal_emit(o, sig, "elm"); - - // TODO: add to some taskbar? and actually hide it? - DBG("EWS does not implement iconified yet"); -} - -static void -_elm_ews_border_maximized_apply(Ecore_Evas *ee, Evas_Object *o) -{ - int x, y, w, h; - if (ecore_evas_maximized_get(ee)) - { - Eina_Rectangle *r; - int ex, ey, ew, eh; - - edje_object_signal_emit(o, "elm,state,maximized,on", "elm"); - edje_object_message_signal_process(o); - ecore_evas_geometry_get(ee, &x, &y, &w, &h); - - r = _elm_ews_wm_border_geo_find(ee); - if (!r) - { - r = malloc(sizeof(Eina_Rectangle)); - eina_hash_add(_ews_borders_geo, &ee, r); - } - - r->x = x; - r->y = y; - r->w = w; - r->h = h; - _elm_ews_border_usable_screen_geometry_get(&x, &y, &w, &h); - edje_object_parts_extends_calc(o, &ex, &ey, &ew, &eh); - x -= ex; - y -= ey; - w -= ew - r->w; - h -= eh - r->h; - } - else - { - Eina_Rectangle *r = _elm_ews_wm_border_geo_find(ee); - edje_object_signal_emit(o, "elm,state,maximized,off", "elm"); - - if (!r) ecore_evas_geometry_get(ee, &x, &y, &w, &h); - else - { - x = r->x; - y = r->y; - w = r->w; - h = r->h; - } - } - - ecore_evas_move_resize(ee, x, y, w, h); - _elm_ews_border_geo_apply(ee, o); -} - -static void -_elm_ews_border_layer_apply(Ecore_Evas *ee, Evas_Object *o) -{ - Evas_Object *bs_o = ecore_evas_ews_backing_store_get(ee); - evas_object_layer_set(o, evas_object_layer_get(bs_o)); - _elm_ews_border_stack_apply(ee, o); -} - -static void -_elm_ews_border_fullscreen_apply(Ecore_Evas *ee, Evas_Object *o) -{ - const char *sig; - if (ecore_evas_fullscreen_get(ee)) - sig = "elm,state,fullscreen,on"; - else - sig = "elm,state,fullscreen,off"; - edje_object_signal_emit(o, sig, "elm"); - _elm_ews_border_geo_apply(ee, o); -} - -static void -_elm_ews_border_config_apply(Ecore_Evas *ee, Evas_Object *o, Elm_Theme *th) -{ - const char *title, *name = NULL, *class = NULL, *style = NULL; - const char *sig; - - if (ecore_evas_borderless_get(ee)) - style = "borderless"; - - _elm_theme_set(th, o, "ews", "decoration", style ? style : "default", EINA_TRUE); - - if (ecore_evas_shaped_get(ee) || ecore_evas_alpha_get(ee) || - ecore_evas_transparent_get(ee)) - sig = "elm,state,alpha,on"; - else - sig = "elm,state,alpha,off"; - edje_object_signal_emit(o, sig, "elm"); - - title = ecore_evas_title_get(ee); - ecore_evas_name_class_get(ee, &name, &class); - edje_object_part_text_escaped_set(o, "elm.text.title", title); - edje_object_part_text_escaped_set(o, "elm.text.name", name); - edje_object_part_text_escaped_set(o, "elm.text.class", class); - - _elm_ews_border_geo_apply(ee, o); - _elm_ews_border_focus_apply(ee, o); - _elm_ews_border_stack_apply(ee, o); - _elm_ews_border_iconified_apply(ee, o); - _elm_ews_border_maximized_apply(ee, o); - _elm_ews_border_layer_apply(ee, o); - _elm_ews_border_fullscreen_apply(ee, o); -} - -static Eina_Bool -_elm_ews_wm_border_theme_set(Ecore_Evas *ee, Evas_Object *o, Elm_Theme *th) -{ - _elm_ews_border_config_apply(ee, o, th); - return EINA_TRUE; -} - -static void -_elm_ews_border_sig_focus(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_focus_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_iconify(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_iconified_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_maximize(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_maximized_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_fullscreen(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_fullscreen_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_restore(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_iconified_set(ee, EINA_FALSE); - ecore_evas_maximized_set(ee, EINA_FALSE); - ecore_evas_fullscreen_set(ee, EINA_FALSE); -} - -static void -_elm_ews_border_sig_close(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_ews_delete_request(ee); -} - -static void -_elm_ews_border_sig_menu(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - // TODO: show some menu? - ERR("EWS does not implement menu yet"); - (void)data; -} - -static Eina_Bool -_elm_ews_border_mover(void *data) -{ - Ecore_Evas *ee = data; - Evas_Object *o = _elm_ews_wm_border_find(ee); - int x, y; - - evas_pointer_output_xy_get(ecore_evas_ews_evas_get(), &x, &y); - x -= _ews_border_mover_off.x; - y -= _ews_border_mover_off.y; - ecore_evas_move(ee, x, y); - evas_object_move(o, x, y); - - return EINA_TRUE; -} - -static void -_elm_ews_border_sig_move_start(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - Evas_Object *bs_o = ecore_evas_ews_backing_store_get(ee); - int x, y, ox, oy; - - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - - evas_pointer_output_xy_get(evas_object_evas_get(bs_o), &x, &y); - evas_object_geometry_get(bs_o, &ox, &oy, NULL, NULL); - _ews_border_mover_off.x = x - ox; - _ews_border_mover_off.y = y - oy; - _ews_border_mover_obj = bs_o; - _ews_border_mover = ecore_evas_animator_add(bs_o, _elm_ews_border_mover, ee); -} - -static void -_elm_ews_border_sig_move_stop(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - if (!_ews_border_mover) return; - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - _ews_border_mover_obj = NULL; -} - -static Eina_Bool -_elm_ews_wm_add_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = edje_object_add(ecore_evas_ews_evas_get()); - Evas_Coord x, y, w, h, sw, sh; - - edje_object_signal_callback_add - (o, "elm,action,focus", "elm", _elm_ews_border_sig_focus, ee); - edje_object_signal_callback_add - (o, "elm,action,iconify", "elm", _elm_ews_border_sig_iconify, ee); - edje_object_signal_callback_add - (o, "elm,action,maximize", "elm", _elm_ews_border_sig_maximize, ee); - edje_object_signal_callback_add - (o, "elm,action,fullscreen", "elm", _elm_ews_border_sig_fullscreen, ee); - edje_object_signal_callback_add - (o, "elm,action,restore", "elm", _elm_ews_border_sig_restore, ee); - edje_object_signal_callback_add - (o, "elm,action,close", "elm", _elm_ews_border_sig_close, ee); - edje_object_signal_callback_add - (o, "elm,action,menu", "elm", _elm_ews_border_sig_menu, ee); - edje_object_signal_callback_add - (o, "elm,action,move,start", "elm", _elm_ews_border_sig_move_start, ee); - edje_object_signal_callback_add - (o, "elm,action,move,stop", "elm", _elm_ews_border_sig_move_stop, ee); - - eina_hash_add(_ews_borders, &ee, o); - _elm_ews_wm_border_theme_set(ee, o, NULL); - - ecore_evas_screen_geometry_get(ee, NULL, NULL, &sw, &sh); - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - x = (sw - w) / 2; - y = (sh - h) / 2; - ecore_evas_move(ee, x, y); - ecore_evas_focus_set(ee, EINA_TRUE); - - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_del_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - eina_hash_del(_ews_borders, &ee, NULL); - eina_hash_del(_ews_borders_geo, &ee, NULL); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_geo_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_geo_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_show_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - evas_object_show(o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_hide_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - evas_object_hide(o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_focus_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_focus_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_stack_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_stack_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_iconified_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_iconified_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_maximized_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_maximized_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_layer_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_layer_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_fullscreen_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_fullscreen_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_config_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_config_apply(ee, o, NULL); - return EINA_TRUE; -} - -void -_elm_ews_wm_rescale(Elm_Theme *th, Eina_Bool use_theme) -{ - Eina_Iterator *it; - Eina_Hash_Tuple *tp = NULL; - - if (!_ews_borders) return; - it = eina_hash_iterator_tuple_new(_ews_borders); - if (!use_theme) - { - EINA_ITERATOR_FOREACH(it, tp) - _elm_ews_wm_border_theme_set(*(void**)tp->key, tp->data, NULL); - - if (_ews_bg) - _elm_theme_set(NULL, _ews_bg, "ews", "background", "default", EINA_TRUE); - } - else - { - EINA_ITERATOR_FOREACH(it, tp) - _elm_ews_wm_border_theme_set(*(void**)tp->key, tp->data, th); - - if (_ews_bg) - _elm_theme_set(th, _ews_bg, "ews", "background", "default", EINA_TRUE); - } - - eina_iterator_free(it); -} - -int -_elm_ews_wm_init(void) -{ - Evas *e; - Evas_Object *o; - - if ((!_elm_config->engine) || (!(!strcmp(_elm_config->engine, ELM_EWS)))) - { - _ews_used = EINA_FALSE; - return EINA_TRUE; - } - - e = ecore_evas_ews_evas_get(); - if (!e) return EINA_FALSE; - o = edje_object_add(e); - if (!o) return EINA_FALSE; - - if (_elm_theme_set(NULL, o, "ews", "background", "default", EINA_TRUE) == EFL_UI_THEME_APPLY_ERROR_GENERIC) - { - ERR("Could not set background theme, fallback to rectangle"); - evas_object_del(o); - _ews_bg = o = NULL; - } - else - _ews_bg = o; - ecore_evas_ews_background_set(o); - -#define ADD_EH(ev, cb) \ - _ews_ev_handlers = eina_list_append \ - (_ews_ev_handlers, ecore_event_handler_add(ev, cb, NULL)) - ADD_EH(ECORE_EVAS_EWS_EVENT_ADD, _elm_ews_wm_add_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_DEL, _elm_ews_wm_del_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_RESIZE, _elm_ews_wm_geo_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_MOVE, _elm_ews_wm_geo_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_SHOW, _elm_ews_wm_show_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_HIDE, _elm_ews_wm_hide_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_FOCUS, _elm_ews_wm_focus_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_UNFOCUS, _elm_ews_wm_focus_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_RAISE, _elm_ews_wm_stack_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_LOWER, _elm_ews_wm_stack_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE, _elm_ews_wm_iconified_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE, _elm_ews_wm_maximized_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_LAYER_CHANGE, _elm_ews_wm_layer_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE, _elm_ews_wm_fullscreen_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE, _elm_ews_wm_config_change_cb); -#undef ADD_EH - - if (!_ews_borders) - _ews_borders = eina_hash_pointer_new(_elm_ews_wm_border_del); - - if (!_ews_borders_geo) - _ews_borders_geo = eina_hash_pointer_new(free); - - _ews_used = EINA_TRUE; - return EINA_TRUE; -} - -void -_elm_ews_wm_shutdown(void) -{ - Ecore_Event_Handler *eh; - - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - _ews_border_mover_obj = NULL; - - EINA_LIST_FREE(_ews_ev_handlers, eh) ecore_event_handler_del(eh); - ELM_SAFE_FREE(_ews_borders, eina_hash_free); - ELM_SAFE_FREE(_ews_borders_geo, ecore_animator_del); - _ews_bg = NULL; -} diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index 06e07e3a71..09e5596e3a 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -858,7 +858,6 @@ elementary_src = files([ 'els_box.c', 'els_cursor.c', 'els_tooltip.c', - 'elu_ews_wm.c', 'efl_ui_container_layout.c', 'efl_ui_container_layout.h', 'efl_ui_box.c', diff --git a/src/modules/ecore_evas/meson.build b/src/modules/ecore_evas/meson.build index 78a9b35d13..7a9d6979da 100644 --- a/src/modules/ecore_evas/meson.build +++ b/src/modules/ecore_evas/meson.build @@ -44,5 +44,3 @@ if get_option('vnc-server') subdir(join_paths('vnc_server')) endif - -config_h.set('BUILD_ECORE_EVAS_EWS', '1')