diff options
author | Hermet Park <hermetpark@gmail.com> | 2020-01-16 16:31:47 +0900 |
---|---|---|
committer | Hermet Park <hermetpark@gmail.com> | 2020-01-16 16:31:47 +0900 |
commit | fd801a340c10786fcc12aea34a7fb28da0eda7e9 (patch) | |
tree | 061e0aca08bef50c9f509faf5174c39cb506293f | |
parent | 645b76f03b9b2a5a818f776810e4d035dee31bb4 (diff) | |
parent | 008517645e4ad926a090aebf0c37707a46dcad6d (diff) | |
download | efl-fd801a340c10786fcc12aea34a7fb28da0eda7e9.tar.gz |
Merge branch 'master' into devs/hermet/lottie
32 files changed, 609 insertions, 426 deletions
diff --git a/header_checks/meson.build b/header_checks/meson.build index 3aaf3776c6..1d3f0e171f 100644 --- a/header_checks/meson.build +++ b/header_checks/meson.build @@ -97,6 +97,7 @@ function_checks = [ ['mmap', ['sys/mman.h']], ['mtrace', ['mcheck.h']], ['prctl', ['sys/prctl.h']], + ['procctl', ['sys/procctl.h']], ['realpath', ['stdlib.h']], ['setxattr', ['sys/types.h', 'sys/xattr.h']], ['siglongjmp', ['setjmp.h']], diff --git a/src/bin/efreet/efreetd_ipc.c b/src/bin/efreet/efreetd_ipc.c index 933abfca9c..0992345d3f 100644 --- a/src/bin/efreet/efreetd_ipc.c +++ b/src/bin/efreet/efreetd_ipc.c @@ -18,6 +18,7 @@ static Ecore_Event_Handler *hnd_add = NULL; static Ecore_Event_Handler *hnd_del = NULL; static Ecore_Event_Handler *hnd_data = NULL; static int clients = 0; +static Ecore_Timer *quit_timer_start = NULL; static Ecore_Timer *quit_timer = NULL; static Eina_Bool @@ -28,6 +29,15 @@ _cb_quit_timer(void *data EINA_UNUSED) return EINA_FALSE; } +static Eina_Bool +_cb_quit_timer_start(void *data EINA_UNUSED) +{ + quit_timer_start = NULL; + if (quit_timer) ecore_timer_del(quit_timer); + quit_timer = ecore_timer_add(10.0, _cb_quit_timer, NULL); + return EINA_FALSE; +} + static void _broadcast(Ecore_Ipc_Server *svr, int major, int minor, void *data, int size) { @@ -101,6 +111,11 @@ _cb_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) ecore_timer_del(quit_timer); quit_timer = NULL; } + if (quit_timer_start) + { + ecore_timer_del(quit_timer_start); + quit_timer_start = NULL; + } clients++; return ECORE_CALLBACK_DONE; } @@ -211,7 +226,7 @@ ipc_init(void) ecore_ipc_shutdown(); return EINA_FALSE; } - quit_timer = ecore_timer_add(2.0, _cb_quit_timer, NULL); + quit_timer_start = ecore_timer_add(10.0, _cb_quit_timer_start, NULL); hnd_add = ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD, _cb_client_add, NULL); hnd_del = ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL, @@ -228,6 +243,10 @@ ipc_shutdown(void) if (init <= 0) return EINA_TRUE; init--; if (init > 0) return EINA_TRUE; + if (quit_timer) ecore_timer_del(quit_timer); + if (quit_timer_start) ecore_timer_del(quit_timer_start); + quit_timer = NULL; + quit_timer_start = NULL; ecore_ipc_server_del(ipc); ecore_event_handler_del(hnd_add); ecore_event_handler_del(hnd_del); diff --git a/src/bin/elementary/test_efl_gfx_vg_value_provider.c b/src/bin/elementary/test_efl_gfx_vg_value_provider.c index c8f55c85b7..5b9424c8d6 100644 --- a/src/bin/elementary/test_efl_gfx_vg_value_provider.c +++ b/src/bin/elementary/test_efl_gfx_vg_value_provider.c @@ -15,6 +15,12 @@ #ifdef BUILD_VG_LOADER_JSON +typedef struct _App_Data +{ + Eo *label; + Eo *slider; +} App_Data; + Evas_Object *values[4], *anim_view; Evas_Object *path_entry, *type_hoversel; @@ -186,71 +192,12 @@ limit_frame_cb(void *data, const Efl_Event *event) } static void -update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) -{ - Efl_Ui_Vg_Animation_State state = efl_ui_vg_animation_state_get(anim_view); - - switch (state) - { - case EFL_UI_VG_ANIMATION_STATE_NOT_READY: - efl_text_set(label, "State = Not Ready"); - break; - case EFL_UI_VG_ANIMATION_STATE_PLAYING: - efl_text_set(label, "State = Playing"); - break; - case EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS: - efl_text_set(label, "State = Playing Backwards"); - - break; - case EFL_UI_VG_ANIMATION_STATE_PAUSED: - efl_text_set(label, "State = Paused"); - break; - case EFL_UI_VG_ANIMATION_STATE_STOPPED: - efl_text_set(label, "State = Stopped"); - break; - } -} - -static void -_play_updated(void *data, Evas_Object *obj, void *ev EINA_UNUSED) -{ - Evas_Object *slider = data; - efl_ui_range_value_set(slider, efl_player_playback_progress_get(obj)); -} - -static void -_state_update(void *data, Evas_Object *obj, void *ev EINA_UNUSED) -{ - Evas_Object *label = data; - update_anim_view_state(obj, label); -} - -static void -_play_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - printf("done!\n"); -} - -static void -_play_repeated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - printf("repeated!\n"); -} - -static void _slider_changed_cb(void *data, const Efl_Event *ev) { Evas_Object *anim_view = data; efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); } -static void -_slider_reset(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - Evas_Object *slider = data; - efl_ui_range_value_set(slider, 0); -} - void values_input(Eo* box, const char* type) { for (int i = 0; i < 4; i++) @@ -300,18 +247,102 @@ _hover_item_selected_cb(void *data, Evas_Object *obj, void *event_info) values_input(box, selected); } +static void +update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) +{ + Efl_Ui_Vg_Animation_State state = efl_ui_vg_animation_state_get(anim_view); + + switch (state) + { + case EFL_UI_VG_ANIMATION_STATE_NOT_READY: + efl_text_set(label, "State = Not Ready"); + break; + case EFL_UI_VG_ANIMATION_STATE_PLAYING: + efl_text_set(label, "State = Playing"); + break; + case EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS: + efl_text_set(label, "State = Playing Backwards"); + + break; + case EFL_UI_VG_ANIMATION_STATE_PAUSED: + efl_text_set(label, "State = Paused"); + break; + case EFL_UI_VG_ANIMATION_STATE_STOPPED: + efl_text_set(label, "State = Stopped"); + break; + } +} + +static void +_animation_playing_changed_cb(void *data, const Efl_Event *event) +{ + Eina_Bool playing = *(Eina_Bool*)event->info; + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); + //Stopped + if (!playing) + efl_ui_range_value_set(ad->slider, 0); +} + +static void +_animation_paused_changed_cb(void *data, const Efl_Event *event) +{ + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); +} + +static void +_animation_playback_progress_changed_cb(void *data, const Efl_Event *event) +{ + double progress = *(double*)event->info; + App_Data *ad = data; + efl_ui_range_value_set(ad->slider, progress); +} + +static void +_animation_playback_repeated_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) +{ + int repeated_times = *(int*)event->info; + printf("repeated! (times: %d)\n", repeated_times); +} + +static void +_animation_playback_finished_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) +{ + printf("done!\n"); +} + +EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb, + {EFL_PLAYER_EVENT_PLAYING_CHANGED, _animation_playing_changed_cb }, + {EFL_PLAYER_EVENT_PAUSED_CHANGED, _animation_paused_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_PROGRESS_CHANGED, _animation_playback_progress_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_REPEATED, _animation_playback_repeated_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_FINISHED, _animation_playback_finished_changed_cb }, +) + +static void +_win_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) +{ + App_Data *ad = data; + free(ad); +} + void test_efl_gfx_vg_value_provider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Eo *win, *box, *box_sub, *label, *check, *slider, *list; char buf[255]; + App_Data *ad = calloc(1, sizeof(App_Data)); + if (!ad) return; + // This line must to need. setenv("ELM_ACCEL", "gl", 1); win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(), efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC), efl_text_set(efl_added, "Efl_Ui_Vg_Animation demo"), - efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + efl_ui_win_autodel_set(efl_added, EINA_TRUE), + efl_event_callback_add(efl_added, EFL_EVENT_DEL, _win_del_cb, ad)); // Create a box in Canvas box = efl_add(EFL_UI_BOX_CLASS, win, @@ -558,16 +589,10 @@ test_efl_gfx_vg_value_provider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNU efl_pack(box_sub, efl_added), efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); - evas_object_smart_callback_add(anim_view, "play,start", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,stop", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,pause", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,resume", _state_update, label); - - evas_object_smart_callback_add(anim_view, "play,repeat", _play_repeated, label); - evas_object_smart_callback_add(anim_view, "play,done", _play_done, label); + efl_event_callback_array_add(anim_view, animation_stats_cb(), ad); - evas_object_smart_callback_add(anim_view, "play,update", _play_updated, slider); - evas_object_smart_callback_add(anim_view, "play,stop", _slider_reset, slider); + ad->label = label; + ad->slider = slider; update_anim_view_state(anim_view, label); diff --git a/src/bin/elementary/test_efl_ui_vg_animation.c b/src/bin/elementary/test_efl_ui_vg_animation.c index 8c6f38d8a6..b51491906d 100644 --- a/src/bin/elementary/test_efl_ui_vg_animation.c +++ b/src/bin/elementary/test_efl_ui_vg_animation.c @@ -14,6 +14,12 @@ #ifdef BUILD_VG_LOADER_JSON +typedef struct _App_Data +{ + Eo *label; + Eo *slider; +} App_Data; + static void btn_clicked_cb(void *data , const Efl_Event *ev ) { @@ -79,6 +85,13 @@ limit_frame_cb(void *data, const Efl_Event *event) } static void +_slider_changed_cb(void *data, const Efl_Event *ev) +{ + Evas_Object *anim_view = data; + efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); +} + +static void update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) { Efl_Ui_Vg_Animation_State state = efl_ui_vg_animation_state_get(anim_view); @@ -104,43 +117,57 @@ update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) } static void -_play_updated(void *data, Evas_Object *obj, void *ev EINA_UNUSED) +_animation_playing_changed_cb(void *data, const Efl_Event *event) { - Evas_Object *slider = data; - efl_ui_range_value_set(slider, efl_player_playback_progress_get(obj)); + Eina_Bool playing = *(Eina_Bool*)event->info; + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); + //Stopped + if (!playing) + efl_ui_range_value_set(ad->slider, 0); } static void -_state_update(void *data, Evas_Object *obj, void *ev EINA_UNUSED) +_animation_paused_changed_cb(void *data, const Efl_Event *event) { - Evas_Object *label = data; - update_anim_view_state(obj, label); + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); } static void -_play_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) +_animation_playback_progress_changed_cb(void *data, const Efl_Event *event) { - printf("done!\n"); + double progress = *(double*)event->info; + App_Data *ad = data; + efl_ui_range_value_set(ad->slider, progress); } static void -_play_repeated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) +_animation_playback_repeated_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) { - printf("repeated!\n"); + int repeated_times = *(int*)event->info; + printf("repeated! (times: %d)\n", repeated_times); } static void -_slider_changed_cb(void *data, const Efl_Event *ev) +_animation_playback_finished_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) { - Evas_Object *anim_view = data; - efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); + printf("done!\n"); } +EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb, + {EFL_PLAYER_EVENT_PLAYING_CHANGED, _animation_playing_changed_cb }, + {EFL_PLAYER_EVENT_PAUSED_CHANGED, _animation_paused_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_PROGRESS_CHANGED, _animation_playback_progress_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_REPEATED, _animation_playback_repeated_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_FINISHED, _animation_playback_finished_changed_cb }, +) + static void -_slider_reset(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) +_win_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) { - Evas_Object *slider = data; - efl_ui_range_value_set(slider, 0); + App_Data *ad = data; + free(ad); } void @@ -148,10 +175,13 @@ test_efl_ui_vg_animation(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, v { Eo *win, *box, *box2, *box3, *box4, *label, *anim_view, *check, *slider; char buf[255]; + App_Data *ad = calloc(1, sizeof(App_Data)); + if (!ad) return; win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(), - efl_text_set(efl_added, "Efl_Ui_Vg_Animation demo"), - efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + efl_text_set(efl_added, "Efl_Ui_Vg_Animation demo"), + efl_ui_win_autodel_set(efl_added, EINA_TRUE), + efl_event_callback_add(efl_added, EFL_EVENT_DEL, _win_del_cb, ad)); // Create a box in Canvas box = efl_add(EFL_UI_BOX_CLASS, win, @@ -279,19 +309,13 @@ test_efl_ui_vg_animation(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, v efl_pack(box4, efl_added), efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); - evas_object_smart_callback_add(anim_view, "play,start", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,stop", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,pause", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,resume", _state_update, label); - - evas_object_smart_callback_add(anim_view, "play,repeat", _play_repeated, label); - evas_object_smart_callback_add(anim_view, "play,done", _play_done, label); - - evas_object_smart_callback_add(anim_view, "play,update", _play_updated, slider); - evas_object_smart_callback_add(anim_view, "play,stop", _slider_reset, slider); + efl_event_callback_array_add(anim_view, animation_stats_cb(), ad); update_anim_view_state(anim_view, label); + ad->label = label; + ad->slider = slider; + efl_gfx_entity_size_set(win, EINA_SIZE2D(600, 730)); } diff --git a/src/bin/eolian_mono/eolian/mono/function_definition.hh b/src/bin/eolian_mono/eolian/mono/function_definition.hh index df6f62a2fb..0c2adebe42 100644 --- a/src/bin/eolian_mono/eolian/mono/function_definition.hh +++ b/src/bin/eolian_mono/eolian/mono/function_definition.hh @@ -285,9 +285,8 @@ struct property_extension_method_definition_generator if (property.setter.is_engaged()) { attributes::type_def prop_type = property.setter->parameters[0].type; - if (!as_generator(scope_tab(2) << "public static Efl.BindableProperty<" << type(true) << "> " << managed_name << "<T>(this Efl.Ui.ItemFactory<T> fac, Efl.Csharp.ExtensionTag<" - << name_helpers::klass_full_concrete_or_interface_name(cls) - << ", T>magic = null) where T : " << name_helpers::klass_full_concrete_or_interface_name(cls) << " {\n" + if (!as_generator(scope_tab(2) << "public static Efl.BindableProperty<" << type(true) << "> " << managed_name << "<T>(this Efl.Ui.ItemFactory<T> fac) where T : " + << name_helpers::klass_full_concrete_or_interface_name(cls) << " {\n" << scope_tab(2) << scope_tab << "return new Efl.BindableProperty<" << type(true) << ">(\"" << property.name << "\", fac);\n" << scope_tab(2) << "}\n\n" ).generate(sink, std::make_tuple(prop_type, prop_type), context)) @@ -302,9 +301,8 @@ struct property_extension_method_definition_generator if (property.setter.is_engaged()) { attributes::type_def prop_type = property.setter->parameters[0].type; - if (!as_generator(scope_tab(2) << "public static Efl.BindableProperty<" << type(true) << "> " << managed_name << "<T>(this Efl.BindablePart<T> part, Efl.Csharp.ExtensionTag<" - << name_helpers::klass_full_concrete_or_interface_name(cls) - << ", T>magic = null) where T : " << name_helpers::klass_full_concrete_or_interface_name(cls) << " {\n" + if (!as_generator(scope_tab(2) << "public static Efl.BindableProperty<" << type(true) << "> " << managed_name << "<T>(this Efl.BindablePart<T> part) where T : " + << name_helpers::klass_full_concrete_or_interface_name(cls) << " {\n" << scope_tab(2) << scope_tab << "Contract.Requires(part != null, nameof(part));\n" << scope_tab(2) << scope_tab << "return new Efl.BindableProperty<" << type(true) << ">(part.PartName, \"" << property.name << "\", part.Binder);\n" << scope_tab(2) << "}\n\n" diff --git a/src/bin/eolian_mono/eolian/mono/part_definition.hh b/src/bin/eolian_mono/eolian/mono/part_definition.hh index 4facf27209..d87b0b56ac 100644 --- a/src/bin/eolian_mono/eolian/mono/part_definition.hh +++ b/src/bin/eolian_mono/eolian/mono/part_definition.hh @@ -70,9 +70,8 @@ struct part_extension_method_definition_generator bindableClass = "Efl.BindableFactoryPart"; if (!as_generator( - scope_tab(2) << "public static " << bindableClass << "<" << part_klass_name << "> " << name_helpers::managed_part_name(part) << "<T>(this Efl.Ui.ItemFactory<T> fac, Efl.Csharp.ExtensionTag<" - << name_helpers::klass_full_concrete_or_interface_name(cls) - << ", T> x=null) where T : " << name_helpers::klass_full_concrete_or_interface_name(cls) << "\n" + scope_tab(2) << "public static " << bindableClass << "<" << part_klass_name << "> " << name_helpers::managed_part_name(part) << "<T>(this Efl.Ui.ItemFactory<T> fac) where T : " + << name_helpers::klass_full_concrete_or_interface_name(cls) << "\n" << scope_tab(2) << "{\n" << scope_tab(2) << scope_tab << "return new " << bindableClass << "<" << part_klass_name << ">(\"" << part.name << "\", fac);\n" << scope_tab(2) << "}\n\n" diff --git a/src/bindings/mono/efl_mono/Bind.cs b/src/bindings/mono/efl_mono/Bind.cs index 2a4fcbded5..302f1dadd2 100644 --- a/src/bindings/mono/efl_mono/Bind.cs +++ b/src/bindings/mono/efl_mono/Bind.cs @@ -148,20 +148,6 @@ public class BindableFactoryPart<T> } } -namespace Csharp -{ - -/// <summary>Helper class to differentiate between factory extension methods. -/// -/// For internal use only.</summary> -[EditorBrowsable(EditorBrowsableState.Never)] -public class ExtensionTag<TBase, TInherited> - where TInherited : TBase -{ -} - -} - } #endif diff --git a/src/bindings/mono/efl_mono/efl_csharp_application.cs b/src/bindings/mono/efl_mono/efl_csharp_application.cs index 9c2f7f0f06..c4abdfe76c 100644 --- a/src/bindings/mono/efl_mono/efl_csharp_application.cs +++ b/src/bindings/mono/efl_mono/efl_csharp_application.cs @@ -198,10 +198,10 @@ public abstract class Application { Init(components); Efl.App app = Efl.App.AppMain; +#if EFL_BETA var command_line = new List<Eina.Stringshare>(); //command_line.Add(List.ConvertAll(Environment.GetCommandLineArgs(), s => (Eina.Stringshare)s)); //command_line.AddRange(Environment.GetCommandLineArgs()); -#if EFL_BETA app.SetCommandArray(command_line); #endif app.ArgumentsEvent += (object sender, LoopArgumentsEventArgs evt) => diff --git a/src/lib/ecore/ecore_exe_posix.c b/src/lib/ecore/ecore_exe_posix.c index 44d9c73ca8..07f1058ab0 100644 --- a/src/lib/ecore/ecore_exe_posix.c +++ b/src/lib/ecore/ecore_exe_posix.c @@ -16,6 +16,8 @@ #ifdef HAVE_PRCTL # include <sys/prctl.h> +#elif defined(HAVE_PROCCTL) +# include <sys/procctl.h> #endif #ifdef HAVE_SYS_WAIT_H @@ -1000,6 +1002,12 @@ _ecore_exe_exec_it(const char *exe_cmd, { prctl(PR_SET_PDEATHSIG, SIGTERM); } +#elif defined(HAVE_PROCCTL) + if ((flags & ECORE_EXE_TERM_WITH_PARENT)) + { + int sig = SIGTERM; + procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &sig); + } #endif if (!(flags & ECORE_EXE_NOT_LEADER)) setsid(); diff --git a/src/lib/ecore/efl_exe.c b/src/lib/ecore/efl_exe.c index 8609dbfac5..b2c6341523 100644 --- a/src/lib/ecore/efl_exe.c +++ b/src/lib/ecore/efl_exe.c @@ -25,8 +25,10 @@ # include <sys/socket.h> # ifdef HAVE_PRCTL # include <sys/prctl.h> +# elif defined(HAVE_PROCCTL) +# include <sys/procctl.h> # endif -# ifdef HAVE_SYS_WAIT_H +#ifdef HAVE_SYS_WAIT_H # include <sys/wait.h> # endif # ifndef HAVE_CLEARENV @@ -150,7 +152,13 @@ _exec(const char *cmd, Efl_Exe_Flags flags, Efl_Task_Flags task_flags) # ifdef HAVE_PRCTL if (task_flags & EFL_TASK_FLAGS_EXIT_WITH_PARENT) prctl(PR_SET_PDEATHSIG, SIGTERM); -# endif +#elif defined(HAVE_PROCCTL) + if (task_flags & EFL_TASK_FLAGS_EXIT_WITH_PARENT) + { + int sig = SIGTERM; + procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &sig); + } +#endif if (flags & EFL_EXE_FLAGS_GROUP_LEADER) setsid(); if (use_sh) // We have to use a shell to run this. diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index dc6065f7d8..4cfb488e56 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -33,7 +33,7 @@ extern "C" { #endif -#define ECORE_IMF_INPUT_HINT_AUTOFILL_MASK 0xff00 +#define ECORE_IMF_INPUT_HINT_AUTOFILL_MASK 0xff00 /* @deprecated since 1.24 */ /** * @defgroup Ecore_IMF_Lib_Group Ecore_IMF - Ecore Input Method Library Functions @@ -413,17 +413,17 @@ typedef enum ECORE_IMF_INPUT_HINT_AUTO_COMPLETE = 1 << 0, /**< Suggest word auto completion @since 1.12 */ ECORE_IMF_INPUT_HINT_SENSITIVE_DATA = 1 << 1, /**< Typed text should not be stored. @since 1.12 */ ECORE_IMF_INPUT_HINT_MULTILINE = 1 << 2, /**< Multiline text @since 1.18 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_DATE = 0x100, /**< Autofill hint for a credit card expiration date @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_DAY = 0x200, /**< Autofill hint for a credit card expiration day @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_MONTH = 0x300, /**< Autofill hint for a credit card expiration month @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_YEAR = 0x400, /**< Autofill hint for a credit card expiration year @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_NUMBER = 0x500, /**< Autofill hint for a credit card number @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_EMAIL_ADDRESS = 0x600, /**< Autofill hint for an email address @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_NAME = 0x700, /**< Autofill hint for a user's real name @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_PHONE = 0x800, /**< Autofill hint for a phone number @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_POSTAL_ADDRESS = 0x900, /**< Autofill hint for a postal address @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_POSTAL_CODE = 0xA00, /**< Autofill hint for a postal code @since 1.21 */ - ECORE_IMF_INPUT_HINT_AUTOFILL_ID = 0xB00 /**< Autofill hint for a user's ID @since 1.21 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_DATE = 0x100, /**< Autofill hint for a credit card expiration date @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_DAY = 0x200, /**< Autofill hint for a credit card expiration day @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_MONTH = 0x300, /**< Autofill hint for a credit card expiration month @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_EXPIRATION_YEAR = 0x400, /**< Autofill hint for a credit card expiration year @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_CREDIT_CARD_NUMBER = 0x500, /**< Autofill hint for a credit card number @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_EMAIL_ADDRESS = 0x600, /**< Autofill hint for an email address @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_NAME = 0x700, /**< Autofill hint for a user's real name @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_PHONE = 0x800, /**< Autofill hint for a phone number @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_POSTAL_ADDRESS = 0x900, /**< Autofill hint for a postal address @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_POSTAL_CODE = 0xA00, /**< Autofill hint for a postal code @deprecated since 1.24 */ + ECORE_IMF_INPUT_HINT_AUTOFILL_ID = 0xB00 /**< Autofill hint for a user's ID @deprecated since 1.24 */ } Ecore_IMF_Input_Hints; /** diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index 7b65b5c418..003e0d8df9 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -1230,54 +1230,6 @@ 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); /** - * Get list of supported auxiliary window hints - * - * @param window - * - * @return An Eina_List of supported auxiliary hints, or NULL otherwise - * - * @ingroup Ecore_Wl2_Window_Group - * @since 1.20 - */ -EAPI Eina_List *ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *window); - -/** - * Add a supported auxiliary hint to a given window - * - * @param window - * @param id - * @param hint - * @param val - * - * @ingroup Ecore_Wl2_Window_Group - * @since 1.20 - */ -EAPI void ecore_wl2_window_aux_hint_add(Ecore_Wl2_Window *window, int id, const char *hint, const char *val); - -/** - * Change an auxiliary hint on a given window - * - * @param window - * @param id - * @param val - * - * @ingroup Ecore_Wl2_Window_Group - * @since 1.20 - */ -EAPI void ecore_wl2_window_aux_hint_change(Ecore_Wl2_Window *window, int id, const char *val); - -/** - * Delete an auxiliary hint on a given window - * - * @param window - * @param id - * - * @ingroup Ecore_Wl2_Window_Group - * @since 1.20 - */ -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 diff --git a/src/lib/ecore_wl2/ecore_wl2_internal.h b/src/lib/ecore_wl2/ecore_wl2_internal.h index b464fb231f..9b103ce9e8 100644 --- a/src/lib/ecore_wl2/ecore_wl2_internal.h +++ b/src/lib/ecore_wl2/ecore_wl2_internal.h @@ -517,6 +517,54 @@ 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); +/** + * Get list of supported auxiliary window hints + * + * @param window + * + * @return An Eina_List of supported auxiliary hints, or NULL otherwise + * + * @ingroup Ecore_Wl2_Window_Group + * @since 1.20 + */ +EAPI Eina_List *ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *window); + +/** + * Add a supported auxiliary hint to a given window + * + * @param window + * @param id + * @param hint + * @param val + * + * @ingroup Ecore_Wl2_Window_Group + * @since 1.20 + */ +EAPI void ecore_wl2_window_aux_hint_add(Ecore_Wl2_Window *window, int id, const char *hint, const char *val); + +/** + * Change an auxiliary hint on a given window + * + * @param window + * @param id + * @param val + * + * @ingroup Ecore_Wl2_Window_Group + * @since 1.20 + */ +EAPI void ecore_wl2_window_aux_hint_change(Ecore_Wl2_Window *window, int id, const char *val); + +/** + * Delete an auxiliary hint on a given window + * + * @param window + * @param id + * + * @ingroup Ecore_Wl2_Window_Group + * @since 1.20 + */ +EAPI void ecore_wl2_window_aux_hint_del(Ecore_Wl2_Window *window, int id); + # undef EAPI # define EAPI diff --git a/src/lib/efl/interfaces/efl_player.eo b/src/lib/efl/interfaces/efl_player.eo index 434482ab63..90717ff7a3 100644 --- a/src/lib/efl/interfaces/efl_player.eo +++ b/src/lib/efl/interfaces/efl_player.eo @@ -94,4 +94,12 @@ interface Efl.Player } } } + events { + playing,changed: bool; [[Called when the playing state has changed. The event value reflects the current state. @since 1.24]] + paused,changed: bool; [[Called when the paused state has changed. The event value reflects the current state. @since 1.24]] + playback_progress,changed: double; [[Called when the playback_progress state has changed. The event value reflects the current state. @since 1.24]] + playback_position,changed: double; [[Called when the playback_position state has changed. The event value reflects the current state. @since 1.24]] + playback,repeated: int; [[Called when the player has begun to repeat its data stream. The event value is the current number of repeats. @since 1.24]] + playback,finished: void; [[Called when the player has completed playing its data stream. @since 1.24]] + } } diff --git a/src/lib/efreet/efreet_cache.c b/src/lib/efreet/efreet_cache.c index 883cf5e3c2..329bcc7ebc 100644 --- a/src/lib/efreet/efreet_cache.c +++ b/src/lib/efreet/efreet_cache.c @@ -117,7 +117,7 @@ _ipc_launch(void) char buf[PATH_MAX]; int num; int try_gap = 10000; // 10ms - int tries = 200; // 200 * 10ms == 2sec + int tries = 1000; // 1000 * 10ms == 10sec const char *s; s = getenv("EFREETD_CONNECT_TRIES"); diff --git a/src/lib/eina/eina_inline_str.x b/src/lib/eina/eina_inline_str.x index d61eda5d7a..96de70336a 100644 --- a/src/lib/eina/eina_inline_str.x +++ b/src/lib/eina/eina_inline_str.x @@ -19,6 +19,8 @@ #ifndef EINA_STR_INLINE_H_ #define EINA_STR_INLINE_H_ +#include <string.h> + /** * @addtogroup Eina_String_Group String * @@ -92,14 +94,21 @@ eina_strdup(const char *str) static inline char * eina_strndup(const char *str, size_t n) { -#ifdef _WIN32 char *ret; - size_t slen; + const char *p; + size_t slen = 0; if (!str) return NULL; - - slen = strnlen(str, n); + for (p = str; *p; p++) + { + slen = (size_t)(p - str) + 1; + if (slen > n) + { + slen = n; + break; + } + } ret = (char *)malloc(slen + 1); /* cast for C++ code */ if (!ret) return NULL; @@ -108,9 +117,6 @@ eina_strndup(const char *str, size_t n) ret[slen] = '\0'; return ret; -#else - return str ? strndup(str, n) : NULL; -#endif } /** diff --git a/src/lib/elementary/efl_ui_textbox.c b/src/lib/elementary/efl_ui_textbox.c index d88f6a432c..95c2f6f44b 100644 --- a/src/lib/elementary/efl_ui_textbox.c +++ b/src/lib/elementary/efl_ui_textbox.c @@ -15,7 +15,6 @@ #include "elm_entry_common.h" #include "elm_widget_entry.h" -#include "elm_hoversel_eo.h" #include "efl_ui_text_part.eo.h" #include "elm_part_helper.h" #include "efl_canvas_textblock_internal.h" @@ -32,7 +31,8 @@ struct _Efl_Ui_Textbox_Data { Evas_Object *hit_rect, *entry_edje; - Evas_Object *hoversel; + Eo *popup; + Eo *popup_list; Eo *text_obj; Eo *text_guide_obj; Eo *text_table; @@ -59,7 +59,6 @@ struct _Efl_Ui_Textbox_Data Eina_List *sel; Efl_Canvas_Textblock_Factory *item_factory; Efl_Canvas_Textblock_Factory *item_fallback_factory; - Ecore_Job *hov_deljob; Mod_Api *api; // module api if supplied int cursor_pos; Elm_Scroller_Policy policy_h, policy_v; @@ -212,6 +211,7 @@ static void _anchors_free(Efl_Ui_Textbox_Data *sd); static void _selection_defer(Eo *obj, Efl_Ui_Textbox_Data *sd); static Eina_Position2D _decoration_calc_offset(Efl_Ui_Textbox_Data *sd); static void _update_text_theme(Eo *obj, Efl_Ui_Textbox_Data *sd); +static void _efl_ui_textbox_selection_paste_type(Eo *obj, Efl_Ui_Selection_Type type); static char * _file_load(Eo *obj) @@ -841,7 +841,7 @@ _efl_ui_textbox_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Textbox_Data if (_elm_config->selection_clear_enable) { - if ((efl_text_interactive_have_selection_get(obj)) && (!sd->hoversel)) + if ((efl_text_interactive_have_selection_get(obj)) && (!sd->popup)) { sd->sel_mode = EINA_FALSE; efl_ui_widget_scroll_hold_pop(obj); @@ -882,7 +882,7 @@ _efl_ui_textbox_efl_ui_widget_interest_region_get(const Eo *obj EINA_UNUSED, Efl } static void -_hoversel_position(Evas_Object *obj) +_popup_position(Evas_Object *obj) { Evas_Coord cx, cy, cw, ch, x, y, mw, mh, w, h; @@ -902,74 +902,12 @@ _hoversel_position(Evas_Object *obj) edje_object_part_text_cursor_geometry_get (sd->entry_edje, "efl.text", &cx, &cy, &cw, &ch); - evas_object_size_hint_min_get(sd->hoversel, &mw, &mh); + evas_object_size_hint_min_get(sd->popup, &mw, &mh); if (cx + mw > w) cx = w - mw; if (cy + mh > h) cy = h - mh; - evas_object_geometry_set(sd->hoversel, x + cx, y + cy, mw, mh); -} - -static void -_hover_del_job(void *data) -{ - EFL_UI_TEXT_DATA_GET(data, sd); - - ELM_SAFE_FREE(sd->hoversel, evas_object_del); - sd->hov_deljob = NULL; -} - -static void -_hover_dismissed_cb(void *data, const Efl_Event *event EINA_UNUSED) -{ - EFL_UI_TEXT_DATA_GET(data, sd); - - sd->use_down = 0; - if (sd->hoversel) evas_object_hide(sd->hoversel); - if (sd->sel_mode) - { - if (!_elm_config->desktop_entry) - { - if (!efl_text_password_get(data)) - edje_object_part_text_select_allow_set - (sd->entry_edje, "efl.text", EINA_TRUE); - } - } - efl_ui_widget_scroll_freeze_pop(data); - ecore_job_del(sd->hov_deljob); - sd->hov_deljob = ecore_job_add(_hover_del_job, data); -} - -static void -_hover_selected_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - EFL_UI_TEXT_DATA_GET(data, sd); - - if (!efl_text_interactive_selection_allowed_get(obj)) return; - - sd->sel_mode = EINA_TRUE; - edje_object_part_text_select_none(sd->entry_edje, "efl.text"); - - if (!_elm_config->desktop_entry) - { - if (!efl_text_password_get(data)) - edje_object_part_text_select_allow_set - (sd->entry_edje, "efl.text", EINA_TRUE); - } - efl_layout_signal_emit(sd->entry_edje, "efl,state,select,on", "efl"); - - if (!_elm_config->desktop_entry) - efl_ui_widget_scroll_hold_push(data); -} - -static void -_hoversel_item_paste_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - efl_ui_textbox_selection_paste(data); + evas_object_geometry_set(sd->popup, x + cx, y + cy, mw, mh); } static Eina_Value @@ -1053,43 +991,63 @@ end: } static void -_hoversel_item_cut_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +_popup_dismiss( Efl_Ui_Textbox_Data *sd) +{ + efl_del(sd->popup_list); + efl_del(sd->popup); + sd->popup = NULL; + sd->popup_list = NULL; +} + +static void +_backwall_clicked(void *data, const Efl_Event *ev EINA_UNUSED) { + EFL_UI_TEXT_DATA_GET(data, sd); + _popup_dismiss(sd); +} + +static void +_popup_item_cut_cb(void *data, const Efl_Event *ev EINA_UNUSED) +{ + EFL_UI_TEXT_DATA_GET(data, sd); efl_ui_textbox_selection_cut(data); + _popup_dismiss(sd); } static void -_hoversel_item_copy_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +_popup_item_copy_cb(void *data, const Efl_Event *ev EINA_UNUSED) { + EFL_UI_TEXT_DATA_GET(data, sd); efl_ui_textbox_selection_copy(data); + _popup_dismiss(sd); } static void -_hover_cancel_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +_popup_item_cancel_cb(void *data, const Efl_Event *ev EINA_UNUSED) { EFL_UI_TEXT_DATA_GET(data, sd); - sd->sel_mode = EINA_FALSE; - if (!_elm_config->desktop_entry) - edje_object_part_text_select_allow_set - (sd->entry_edje, "efl.text", EINA_FALSE); - efl_layout_signal_emit(sd->entry_edje, "efl,state,select,off", "efl"); + if (!efl_text_interactive_selection_allowed_get(data)) return; + if (!_elm_config->desktop_entry) efl_ui_widget_scroll_hold_pop(data); - edje_object_part_text_select_none(sd->entry_edje, "efl.text"); + + sd->sel_mode = EINA_FALSE; + efl_text_interactive_all_unselect(data); + _popup_dismiss(sd); } static void -_menu_call(Evas_Object *obj) +_popup_item_paste_cb(void *data, const Efl_Event *ev EINA_UNUSED) { - Evas_Object *top; + EFL_UI_TEXT_DATA_GET(data, sd); + efl_ui_textbox_selection_paste(data); + _popup_dismiss(sd); +} +static void +_menu_call(Evas_Object *obj) +{ EFL_UI_TEXT_DATA_GET(obj, sd); if (sd->anchor_hover.hover) return; @@ -1102,7 +1060,6 @@ _menu_call(Evas_Object *obj) } else if (sd->context_menu_enabled) { - const char *context_menu_orientation; Eina_Bool ownersel; ownersel = elm_selection_selection_has_owner(obj); @@ -1110,83 +1067,90 @@ _menu_call(Evas_Object *obj) if (efl_text_interactive_have_selection_get(obj) && efl_text_password_get(obj)) return; if (_elm_config->desktop_entry && (!efl_text_interactive_have_selection_get(obj)) && ((!efl_text_interactive_editable_get(obj)) || (!ownersel))) return; - if (sd->hoversel) evas_object_del(sd->hoversel); + if (sd->popup) _popup_dismiss(sd); else efl_ui_widget_scroll_freeze_push(obj); - sd->hoversel = elm_hoversel_add(obj); - context_menu_orientation = efl_layout_group_data_get - (sd->entry_edje, "context_menu_orientation"); + sd->popup = efl_add(EFL_UI_POPUP_CLASS, obj); - if ((context_menu_orientation) && - (!strcmp(context_menu_orientation, "horizontal"))) - elm_hoversel_horizontal_set(sd->hoversel, EINA_TRUE); + sd->popup_list = efl_add(EFL_UI_LIST_CLASS, sd->popup); + efl_content_set(sd->popup, sd->popup_list); + efl_gfx_hint_align_set(sd->popup_list, 1.0, 1.0); + efl_gfx_hint_weight_set(sd->popup_list, 1.0, 1.0); - elm_object_style_set(sd->hoversel, "entry"); - efl_ui_widget_sub_object_add(obj, sd->hoversel); - elm_object_text_set(sd->hoversel, "Text"); - top = elm_widget_top_get(obj); + efl_ui_widget_sub_object_add(obj, sd->popup); + efl_ui_popup_anchor_set(sd->popup, obj); + efl_event_callback_add(sd->popup, EFL_UI_POPUP_EVENT_BACKWALL_CLICKED, _backwall_clicked, obj); - if (top) elm_hoversel_hover_parent_set(sd->hoversel, top); - - efl_event_callback_add - (sd->hoversel, ELM_HOVERSEL_EVENT_DISMISSED, _hover_dismissed_cb, obj); if (efl_text_interactive_have_selection_get(obj)) { if (!efl_text_password_get(obj)) { if (efl_text_interactive_editable_get(obj)) - elm_hoversel_item_add - (sd->hoversel, E_("Cut"), NULL, ELM_ICON_NONE, - _hoversel_item_cut_cb, obj); - elm_hoversel_item_add - (sd->hoversel, E_("Copy"), NULL, ELM_ICON_NONE, - _hoversel_item_copy_cb, obj); - if (efl_text_interactive_editable_get(obj) && ownersel) - elm_hoversel_item_add - (sd->hoversel, E_("Paste"), NULL, ELM_ICON_NONE, - _hoversel_item_paste_cb, obj); - elm_hoversel_item_add - (sd->hoversel, E_("Cancel"), NULL, ELM_ICON_NONE, - _hover_cancel_cb, obj); + { + Eo *il = NULL; + il = efl_add(EFL_UI_LIST_DEFAULT_ITEM_CLASS, sd->popup_list); + efl_text_set(il, E_("Cut")); + efl_gfx_hint_align_set(il, 1.0, 1.0); + efl_gfx_hint_weight_set(sd->popup_list, 1.0, 1.0); + efl_pack_end(sd->popup_list, il); + efl_event_callback_add(il, EFL_UI_EVENT_SELECTED_CHANGED, _popup_item_cut_cb, obj); + + il = efl_add(EFL_UI_LIST_DEFAULT_ITEM_CLASS, sd->popup_list); + efl_text_set(il, E_("Copy")); + efl_gfx_hint_align_set(il, 1.0, 1.0); + efl_gfx_hint_weight_set(sd->popup_list, 1.0, 1.0); + efl_pack_end(sd->popup_list, il); + efl_event_callback_add(il, EFL_UI_EVENT_SELECTED_CHANGED, _popup_item_copy_cb, obj); + + il = efl_add(EFL_UI_LIST_DEFAULT_ITEM_CLASS, sd->popup_list); + efl_text_set(il, E_("Paste")); + efl_gfx_hint_align_set(il, 1.0, 1.0); + efl_gfx_hint_weight_set(sd->popup_list, 1.0, 1.0); + efl_pack_end(sd->popup_list, il); + efl_event_callback_add(il, EFL_UI_EVENT_SELECTED_CHANGED, _popup_item_paste_cb, obj); + + il = efl_add(EFL_UI_LIST_DEFAULT_ITEM_CLASS, sd->popup_list); + efl_text_set(il, E_("Cancel")); + efl_gfx_hint_align_set(il, 1.0, 1.0); + efl_gfx_hint_weight_set(sd->popup_list, 1.0, 1.0); + efl_pack_end(sd->popup_list, il); + efl_event_callback_add(il, EFL_UI_EVENT_SELECTED_CHANGED, _popup_item_cancel_cb, obj); + } } } else { if (!sd->sel_mode) { - if (efl_text_interactive_selection_allowed_get(obj) && !_elm_config->desktop_entry) - { - if (!efl_text_password_get(obj)) - elm_hoversel_item_add - (sd->hoversel, E_("Select"), NULL, ELM_ICON_NONE, - _hover_selected_cb, obj); - } if (ownersel) { if (efl_text_interactive_editable_get(obj)) - elm_hoversel_item_add - (sd->hoversel, E_("Paste"), NULL, ELM_ICON_NONE, - _hoversel_item_paste_cb, obj); + { + Eo *il = NULL; + il = efl_add(EFL_UI_LIST_DEFAULT_ITEM_CLASS, sd->popup_list); + efl_text_set(il, E_("Paste")); + efl_gfx_hint_align_set(il, 1.0, 1.0); + efl_gfx_hint_weight_set(sd->popup_list, 1.0, 1.0); + efl_pack_end(sd->popup_list, il); + efl_event_callback_add(il, EFL_UI_EVENT_SELECTED_CHANGED, _popup_item_paste_cb, obj); + } } } else - elm_hoversel_item_add - (sd->hoversel, E_("Cancel"), NULL, ELM_ICON_NONE, - _hover_cancel_cb, obj); - } - - if (sd->hoversel) - { - _hoversel_position(obj); - evas_object_show(sd->hoversel); - elm_hoversel_hover_begin(sd->hoversel); + { + Eo *il = NULL; + il = efl_add(EFL_UI_LIST_DEFAULT_ITEM_CLASS, sd->popup_list); + efl_text_set(il, E_("Cancel")); + efl_gfx_hint_align_set(il, 1.0, 1.0); + efl_gfx_hint_weight_set(sd->popup_list, 1.0, 1.0); + efl_pack_end(sd->popup_list, il); + efl_event_callback_add(il, EFL_UI_EVENT_SELECTED_CHANGED, _popup_item_cancel_cb, obj); + } } - if (!_elm_config->desktop_entry) + if (sd->popup) { - edje_object_part_text_select_allow_set - (sd->entry_edje, "efl.text", EINA_FALSE); - edje_object_part_text_select_abort(sd->entry_edje, "efl.text"); + _popup_position(obj); } } } @@ -1272,7 +1236,7 @@ _mouse_down_cb(void *data, if (ev->button == 2) { - efl_ui_textbox_selection_paste(data); + _efl_ui_textbox_selection_paste_type(data, EFL_UI_SELECTION_TYPE_PRIMARY); } /* If right button is pressed and context menu disabled is true, @@ -1672,7 +1636,7 @@ _efl_ui_textbox_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_Textbox_Data *sd, Ei efl_gfx_entity_position_set(efl_super(obj, MY_CLASS), pos); efl_gfx_entity_position_set(sd->hit_rect, pos); - if (sd->hoversel) _hoversel_position(obj); + if (sd->popup) _popup_position(obj); } EOLIAN static void @@ -1973,7 +1937,7 @@ _efl_ui_textbox_efl_object_destructor(Eo *obj, Efl_Ui_Textbox_Data *sd) eina_stringshare_del(sd->file); - ecore_job_del(sd->hov_deljob); + _popup_dismiss(sd); if ((sd->api) && (sd->api->obj_unhook)) sd->api->obj_unhook(obj); // module - unhook @@ -2223,18 +2187,24 @@ _efl_ui_textbox_selection_copy(Eo *obj, Efl_Ui_Textbox_Data *sd) efl_event_callback_call(obj, EFL_UI_TEXTBOX_EVENT_SELECTION_COPY, NULL); } -EOLIAN static void -_efl_ui_textbox_selection_paste(Eo *obj, Efl_Ui_Textbox_Data *sd EINA_UNUSED) +static void +_efl_ui_textbox_selection_paste_type(Eo *obj, Efl_Ui_Selection_Type type) { Efl_Ui_Selection_Format formats = EFL_UI_SELECTION_FORMAT_TEXT | EFL_UI_SELECTION_FORMAT_MARKUP; - efl_ui_selection_get(obj, EFL_UI_SELECTION_TYPE_CLIPBOARD, formats, + efl_ui_selection_get(obj, type, formats, NULL, _selection_data_cb, NULL, 1); efl_event_callback_call(obj, EFL_UI_TEXTBOX_EVENT_SELECTION_PASTE, NULL); } EOLIAN static void +_efl_ui_textbox_selection_paste(Eo *obj, Efl_Ui_Textbox_Data *sd EINA_UNUSED) +{ + _efl_ui_textbox_selection_paste_type(obj, EFL_UI_SELECTION_TYPE_CLIPBOARD); +} + +EOLIAN static void _efl_ui_textbox_context_menu_enabled_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool enabled) { if (sd->context_menu_enabled == enabled) return; @@ -3599,8 +3569,6 @@ _part_is_efl_ui_text_part(const Eo *obj EINA_UNUSED, const char *part) return EINA_TRUE; } -//FIXME -//ELM_PART_OVERRIDE_PARTIAL(efl_ui_text, EFL_UI_TEXTBOX, Efl_Ui_Textbox_Data, _part_is_efl_ui_text_part) EOLIAN static Efl_Object * _efl_ui_textbox_efl_part_part_get(const Eo *obj, Efl_Ui_Textbox_Data *priv EINA_UNUSED, const char *part) { @@ -3609,8 +3577,6 @@ _efl_ui_textbox_efl_part_part_get(const Eo *obj, Efl_Ui_Textbox_Data *priv EINA_ return efl_part_get(efl_super(obj, EFL_UI_TEXTBOX_CLASS), part); } -//FIXME -//ELM_PART_OVERRIDE_TEXT_SET(efl_ui_text, EFL_UI_TEXTBOX, Efl_Ui_Textbox_Data) EOLIAN static void _efl_ui_text_part_efl_text_text_set(Eo *obj, void *_pd EINA_UNUSED, const char *text) { @@ -3619,8 +3585,6 @@ _efl_ui_text_part_efl_text_text_set(Eo *obj, void *_pd EINA_UNUSED, const char * _efl_ui_textbox_text_set(pd->obj, sd, pd->part, text); } -//FIXME -//ELM_PART_OVERRIDE_TEXT_GET(efl_ui_text, EFL_UI_TEXTBOX, Efl_Ui_Textbox_Data) EOLIAN static const char * _efl_ui_text_part_efl_text_text_get(const Eo *obj, void *_pd EINA_UNUSED) { diff --git a/src/lib/elementary/efl_ui_vg_animation.c b/src/lib/elementary/efl_ui_vg_animation.c index a0728925da..527116f43a 100644 --- a/src/lib/elementary/efl_ui_vg_animation.c +++ b/src/lib/elementary/efl_ui_vg_animation.c @@ -15,7 +15,6 @@ #define MY_CLASS EFL_UI_VG_ANIMATION_CLASS #define MY_CLASS_NAME "Efl_Ui_Vg_Animation" -#define MY_CLASS_NAME_LEGACY "efl_ui_vg_animation" #define GROW_SIZE 50 #define QUEUE_SIZE 350 @@ -517,12 +516,16 @@ _size_hint_event_cb(void *data, const Efl_Event *event) static void _transit_go_facade(Eo* obj, Efl_Ui_Vg_Animation_Data *pd) { + Eina_Bool playing = EINA_TRUE; pd->repeat_times = 0; if (pd->playing_reverse) pd->state = EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS; else pd->state = EFL_UI_VG_ANIMATION_STATE_PLAYING; - evas_object_smart_callback_call(obj, SIG_PLAY_START, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_START, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PLAYING_CHANGED, &playing); if (pd->transit) elm_transit_go(pd->transit);} static Eina_Bool @@ -559,25 +562,33 @@ _autoplay(Eo *obj, Efl_Ui_Vg_Animation_Data *pd, Eina_Bool vis) { if (pd->state == EFL_UI_VG_ANIMATION_STATE_PAUSED && pd->autoplay_pause) { + Eina_Bool paused = EINA_FALSE; elm_transit_paused_set(pd->transit, EINA_FALSE); if (pd->playing_reverse) pd->state = EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS; else pd->state = EFL_UI_VG_ANIMATION_STATE_PLAYING; pd->autoplay_pause = EINA_FALSE; - evas_object_smart_callback_call(obj, SIG_PLAY_RESUME, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_RESUME, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PAUSED_CHANGED, &paused); } } //Pause Animation else { + Eina_Bool paused = EINA_TRUE; if ((pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING) || (pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS)) { elm_transit_paused_set(pd->transit, EINA_TRUE); pd->state = EFL_UI_VG_ANIMATION_STATE_PAUSED; pd->autoplay_pause = EINA_TRUE; - evas_object_smart_callback_call(obj, SIG_PLAY_PAUSE, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_PAUSE, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PAUSED_CHANGED, &paused); } } } @@ -591,7 +602,12 @@ _transit_del_cb(Elm_Transit_Effect *effect, Elm_Transit *transit) if ((pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING && pd->progress == 1) || (pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS && pd->progress == 0)) - evas_object_smart_callback_call(obj, SIG_PLAY_DONE, NULL); + { + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_DONE, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PLAYBACK_FINISHED, NULL); + } if (pd->transit != transit) return; @@ -602,7 +618,11 @@ _transit_del_cb(Elm_Transit_Effect *effect, Elm_Transit *transit) if (prev_state != EFL_UI_VG_ANIMATION_STATE_STOPPED) { - evas_object_smart_callback_call(obj, SIG_PLAY_STOP, NULL); + Eina_Bool playing = EINA_FALSE; + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_STOP, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PLAYING_CHANGED, &playing); pd->progress = 0; } } @@ -654,15 +674,25 @@ _transit_cb(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress) int repeat_times = elm_transit_current_repeat_times_get(pd->transit); if (pd->repeat_times != repeat_times) { - evas_object_smart_callback_call(obj, SIG_PLAY_REPEAT, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_REPEAT, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PLAYBACK_REPEATED, &repeat_times); pd->repeat_times = repeat_times; } } //transit_cb is always called with a progress value 0 ~ 1. //SIG_PLAY_UPDATE callback is called only when there is a real change. - if (update_frame != current_frame) + if (update_frame == current_frame) return; + if (elm_widget_is_legacy(obj)) evas_object_smart_callback_call(obj, SIG_PLAY_UPDATE, NULL); + else + { + double position = pd->frame_duration * pd->progress; + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PLAYBACK_POSITION_CHANGED, &position); + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PLAYBACK_PROGRESS_CHANGED, &pd->progress); + } } EOLIAN static void @@ -714,7 +744,6 @@ _efl_ui_vg_animation_efl_object_constructor(Eo *obj, Efl_Ui_Vg_Animation_Data *pd EINA_UNUSED) { obj = efl_constructor(efl_super(obj, MY_CLASS)); - efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY); evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks); return obj; @@ -827,10 +856,14 @@ _efl_ui_vg_animation_efl_file_load(Eo *obj, Efl_Ui_Vg_Animation_Data *pd) if (!_visible_check(obj)) { + Eina_Bool paused = EINA_TRUE; elm_transit_paused_set(pd->transit, EINA_TRUE); pd->state = EFL_UI_VG_ANIMATION_STATE_PAUSED; pd->autoplay_pause = EINA_TRUE; - evas_object_smart_callback_call(obj, SIG_PLAY_PAUSE, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_PAUSE, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PAUSED_CHANGED, &paused); } } return 0; @@ -969,6 +1002,7 @@ Eina_Bool _efl_ui_vg_animation_playing_sector(Eo *obj, Efl_Ui_Vg_Animation_Data Eina_Bool _playing_stop(Eo* obj, Efl_Ui_Vg_Animation_Data *pd) { + Eina_Bool playing = EINA_FALSE; if (!pd->transit) return EINA_FALSE; if ((pd->state == EFL_UI_VG_ANIMATION_STATE_NOT_READY) || @@ -979,7 +1013,11 @@ _playing_stop(Eo* obj, Efl_Ui_Vg_Animation_Data *pd) pd->progress = 0; pd->state = EFL_UI_VG_ANIMATION_STATE_STOPPED; - evas_object_smart_callback_call(obj, SIG_PLAY_STOP, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_STOP, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PLAYING_CHANGED, &playing); + elm_transit_del(pd->transit); return EINA_TRUE; } @@ -1231,7 +1269,7 @@ _efl_ui_vg_animation_efl_player_playing_get(const Eo *obj EINA_UNUSED, Efl_Ui_Vg EOLIAN static Eina_Bool _efl_ui_vg_animation_efl_player_paused_set(Eo *obj EINA_UNUSED, Efl_Ui_Vg_Animation_Data *pd, Eina_Bool paused) { - + paused = !!paused; if (paused) { if ((pd->state == EFL_UI_VG_ANIMATION_STATE_PLAYING) || @@ -1240,7 +1278,10 @@ _efl_ui_vg_animation_efl_player_paused_set(Eo *obj EINA_UNUSED, Efl_Ui_Vg_Animat elm_transit_paused_set(pd->transit, paused); pd->state = EFL_UI_VG_ANIMATION_STATE_PAUSED; pd->autoplay_pause = EINA_FALSE; - evas_object_smart_callback_call(obj, SIG_PLAY_PAUSE, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_PAUSE, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PAUSED_CHANGED, &paused); } } else @@ -1253,8 +1294,10 @@ _efl_ui_vg_animation_efl_player_paused_set(Eo *obj EINA_UNUSED, Efl_Ui_Vg_Animat else pd->state = EFL_UI_VG_ANIMATION_STATE_PLAYING; pd->autoplay_pause = EINA_FALSE; - - evas_object_smart_callback_call(obj, SIG_PLAY_RESUME, NULL); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, SIG_PLAY_RESUME, NULL); + else + efl_event_callback_call(obj, EFL_PLAYER_EVENT_PAUSED_CHANGED, &paused); } } return EINA_TRUE; @@ -1362,11 +1405,27 @@ _efl_ui_vg_animation_efl_playable_seekable_get(const Eo *obj, Efl_Ui_Vg_Animatio return EINA_TRUE; } +#define MY_CLASS_NAME_LEGACY "elm_animation_view" + +static void +_efl_ui_vg_animation_legacy_class_constructor(Efl_Class *klass) +{ + evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); +} + +EOLIAN static Eo * +_efl_ui_vg_animation_legacy_efl_object_constructor(Eo *obj, void *pd EINA_UNUSED) +{ + obj = efl_constructor(efl_super(obj, EFL_UI_VG_ANIMATION_LEGACY_CLASS)); + efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY); + return obj; +} + EAPI Elm_Animation_View* elm_animation_view_add(Evas_Object *parent) { EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); - return elm_legacy_add(MY_CLASS, parent); + return elm_legacy_add(EFL_UI_VG_ANIMATION_LEGACY_CLASS, parent); } EAPI Eina_Bool diff --git a/src/lib/elementary/efl_ui_vg_animation.eo b/src/lib/elementary/efl_ui_vg_animation.eo index 9537fb654a..d656df42df 100644 --- a/src/lib/elementary/efl_ui_vg_animation.eo +++ b/src/lib/elementary/efl_ui_vg_animation.eo @@ -207,13 +207,4 @@ class @beta Efl.Ui.Vg_Animation extends Efl.Ui.Widget implements Efl.Gfx.View, E Efl.Playable.playable { get; } Efl.Playable.seekable { get; } } - events { - play,start: void; [[Called when animation is just started]] - play,repeat: void; [[Called when animation is just repeated]] - play,done: void; [[Called when animation is just finished]] - play,pause: void; [[Called when animation is just paused]] - play,resume: void; [[Called when animation is just resumed]] - play,stop: void; [[Called when animation is just stopped]] - play,update: void; [[Called when animation is just updated]] - } } diff --git a/src/lib/elementary/efl_ui_vg_animation_eo.legacy.c b/src/lib/elementary/efl_ui_vg_animation_eo.legacy.c index ad99d1b8a9..04aba9206f 100644 --- a/src/lib/elementary/efl_ui_vg_animation_eo.legacy.c +++ b/src/lib/elementary/efl_ui_vg_animation_eo.legacy.c @@ -166,3 +166,35 @@ elm_animation_view_max_frame_get(const Efl_Ui_Vg_Animation *obj) { return efl_ui_vg_animation_max_frame_get(obj); } + +static Eina_Bool +_efl_ui_vg_animation_legacy_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef EFL_UI_VG_ANIMATION_LEGACY_EXTRA_OPS +#define EFL_UI_VG_ANIMATION_LEGACY_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(efl_constructor, _efl_ui_vg_animation_legacy_efl_object_constructor), + EFL_UI_VG_ANIMATION_LEGACY_EXTRA_OPS + ); + opsp = &ops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _efl_ui_vg_animation_legacy_class_desc = { + EO_VERSION, + "Efl.Ui.VG_Animation_Legacy", + EFL_CLASS_TYPE_REGULAR, + 0, + _efl_ui_vg_animation_legacy_class_initializer, + _efl_ui_vg_animation_legacy_class_constructor, + NULL +}; + +EFL_DEFINE_CLASS(efl_ui_vg_animation_legacy_class_get, &_efl_ui_vg_animation_legacy_class_desc, EFL_UI_VG_ANIMATION_CLASS, EFL_UI_LEGACY_INTERFACE, NULL); diff --git a/src/lib/elementary/efl_ui_vg_animation_eo.legacy.h b/src/lib/elementary/efl_ui_vg_animation_eo.legacy.h index 78dd2f1d5d..5a46daa138 100644 --- a/src/lib/elementary/efl_ui_vg_animation_eo.legacy.h +++ b/src/lib/elementary/efl_ui_vg_animation_eo.legacy.h @@ -514,4 +514,14 @@ EAPI void elm_animation_view_max_frame_set(Elm_Animation_View *obj, int max_fram */ EAPI int elm_animation_view_max_frame_get(const Elm_Animation_View *obj); +#ifdef EFL_BETA_API_SUPPORT +/** Elementary vg_animation class + * + * @ingroup Efl_Ui_VG_Animation_Legacy + */ +#define EFL_UI_VG_ANIMATION_LEGACY_CLASS efl_ui_vg_animation_legacy_class_get() + +EWAPI const Efl_Class *efl_ui_vg_animation_legacy_class_get(void); +#endif /* EFL_BETA_API_SUPPORT */ + #endif diff --git a/src/lib/evas/canvas/efl_canvas_animation_group.c b/src/lib/evas/canvas/efl_canvas_animation_group.c index b6a771501f..7dc7c24bb8 100644 --- a/src/lib/evas/canvas/efl_canvas_animation_group.c +++ b/src/lib/evas/canvas/efl_canvas_animation_group.c @@ -7,8 +7,14 @@ _efl_canvas_animation_group_animation_add(Eo *eo_obj, { if (!animation) return; - double duration = efl_animation_duration_get(efl_super(eo_obj, MY_CLASS)); - efl_animation_duration_set(animation, duration); + /* To preserve each animation's duration, group animation's duration is + * copied to each animation's duration only if group animation's duration is + * set. */ + if (pd->is_duration_set) + { + double duration = efl_animation_duration_get(efl_super(eo_obj, MY_CLASS)); + efl_animation_duration_set(animation, duration); + } Eina_Bool keep_final_state = efl_animation_final_state_keep_get(eo_obj); efl_animation_final_state_keep_set(animation, keep_final_state); @@ -50,6 +56,8 @@ _efl_canvas_animation_group_efl_canvas_animation_duration_set(Eo *eo_obj, Efl_Canvas_Animation_Group_Data *pd, double duration) { + EINA_SAFETY_ON_FALSE_RETURN(duration >= 0.0); + efl_animation_duration_set(efl_super(eo_obj, MY_CLASS), duration); duration = efl_animation_duration_get(eo_obj); @@ -59,6 +67,8 @@ _efl_canvas_animation_group_efl_canvas_animation_duration_set(Eo *eo_obj, { efl_animation_duration_set(anim, duration); } + + pd->is_duration_set = EINA_TRUE; } EOLIAN static void @@ -96,7 +106,6 @@ _efl_canvas_animation_group_efl_object_constructor(Eo *eo_obj, Efl_Canvas_Animation_Group_Data *pd) { eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); - pd->animations = NULL; return eo_obj; diff --git a/src/lib/evas/canvas/efl_canvas_animation_group_private.h b/src/lib/evas/canvas/efl_canvas_animation_group_private.h index 685e8f6063..335053d9c1 100644 --- a/src/lib/evas/canvas/efl_canvas_animation_group_private.h +++ b/src/lib/evas/canvas/efl_canvas_animation_group_private.h @@ -12,4 +12,5 @@ typedef struct _Efl_Canvas_Animation_Group_Data { Eina_List *animations; + Eina_Bool is_duration_set : 1; //EINA_TRUE if duration is set } Efl_Canvas_Animation_Group_Data; diff --git a/src/lib/evas/canvas/efl_text_cursor.eo b/src/lib/evas/canvas/efl_text_cursor.eo index 00dcbd6e63..e63e080b78 100644 --- a/src/lib/evas/canvas/efl_text_cursor.eo +++ b/src/lib/evas/canvas/efl_text_cursor.eo @@ -1,8 +1,10 @@ enum @beta Efl.Text.Cursor_Type { - [[Text cursor types.]] - before, [[Cursor type before.]] - under [[Cursor type under.]] + [[Shape of the text cursor. + This is normally used in @Efl.Text.Cursor methods to retrieve the cursor's geometry. + ]] + before, [[Cursor is a vertical bar (I-beam) placed before the selected character.]] + under [[Cursor is an horizontal line (underscore) placed under the selected character.]] } enum @beta Efl.Text.Cursor_Move_Type diff --git a/src/lib/evas/gesture/efl_canvas_gesture_flick.c b/src/lib/evas/gesture/efl_canvas_gesture_flick.c index 1095a84652..faa8e3812f 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_flick.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_flick.c @@ -16,13 +16,13 @@ _efl_canvas_gesture_flick_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_Fli } EOLIAN static Eina_Vector2 -_efl_canvas_gesture_flick_momentum_get(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Flick_Data *pd) +_efl_canvas_gesture_flick_momentum_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Flick_Data *pd) { return pd->momentum; } EOLIAN static double -_efl_canvas_gesture_flick_angle_get(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Flick_Data *pd) +_efl_canvas_gesture_flick_angle_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Flick_Data *pd) { return pd->angle; } diff --git a/src/lib/evas/gesture/efl_canvas_gesture_flick.eo b/src/lib/evas/gesture/efl_canvas_gesture_flick.eo index bec2f127c8..a624a529f9 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_flick.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture_flick.eo @@ -10,15 +10,23 @@ class @beta Efl.Canvas.Gesture_Flick extends Efl.Canvas.Gesture ]] c_prefix: efl_gesture_flick; methods { - momentum_get { - [[Gets flick gesture momentum value, this is, the direction in which the + @property momentum { + [[The flick gesture momentum value, this is, the direction in which the pointer was flicked.]] - return: Eina.Vector2; [[The momentum vector.]] + get { + } + values { + momentum: Eina.Vector2; [[The momentum vector.]] + } } - angle_get { - [[Gets flick gesture direction angle, this is, the angle in which the + @property angle { + [[The flick gesture direction angle, this is, the angle in which the pointer was flicked.]] - return: double; [[The angle value.]] + get { + } + values { + angle: double; [[The angle value.]] + } } } implements { diff --git a/src/lib/evas/gesture/efl_canvas_gesture_momentum.c b/src/lib/evas/gesture/efl_canvas_gesture_momentum.c index e7eb34ad2b..91d2ca8f1d 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_momentum.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_momentum.c @@ -16,7 +16,7 @@ _efl_canvas_gesture_momentum_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_ } EOLIAN static Eina_Vector2 -_efl_canvas_gesture_momentum_momentum_get(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Momentum_Data *pd) +_efl_canvas_gesture_momentum_momentum_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Momentum_Data *pd) { return pd->momentum; } diff --git a/src/lib/evas/gesture/efl_canvas_gesture_momentum.eo b/src/lib/evas/gesture/efl_canvas_gesture_momentum.eo index d3bd578e1c..715743c49b 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_momentum.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture_momentum.eo @@ -10,9 +10,13 @@ class @beta Efl.Canvas.Gesture_Momentum extends Efl.Canvas.Gesture ]] c_prefix: efl_gesture_momentum; methods { - momentum_get { - [[Gets the momentum value, this is, the direction in which the action occurred.]] - return: Eina.Vector2; [[The momentum vector.]] + @property momentum { + [[The momentum value, this is, the direction in which the action occurred.]] + get { + } + values { + momentum: Eina.Vector2; [[The momentum vector.]] + } } } implements { diff --git a/src/lib/evas/gesture/efl_canvas_gesture_zoom.c b/src/lib/evas/gesture/efl_canvas_gesture_zoom.c index 3ac4ffcbf4..9ea7533aeb 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_zoom.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_zoom.c @@ -21,13 +21,13 @@ _efl_canvas_gesture_zoom_efl_object_destructor(Eo *obj, Efl_Canvas_Gesture_Zoom_ } EOLIAN static double -_efl_canvas_gesture_zoom_radius_get(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Zoom_Data *pd) +_efl_canvas_gesture_zoom_radius_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Zoom_Data *pd) { return pd->radius; } EOLIAN static double -_efl_canvas_gesture_zoom_zoom_get(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Zoom_Data *pd) +_efl_canvas_gesture_zoom_zoom_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Zoom_Data *pd) { return pd->zoom; } diff --git a/src/lib/evas/gesture/efl_canvas_gesture_zoom.eo b/src/lib/evas/gesture/efl_canvas_gesture_zoom.eo index 1471a9401c..1663a76440 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_zoom.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture_zoom.eo @@ -8,16 +8,24 @@ class @beta Efl.Canvas.Gesture_Zoom extends Efl.Canvas.Gesture ]] c_prefix: efl_gesture_zoom; methods { - radius_get { - [[Gets the current radius (i.e. the distance between the two fingers) of the gesture.]] - return: double; [[The radius value in pixels.]] + @property radius { + [[The current radius (i.e. the distance between the two fingers) of the gesture.]] + get { + } + values { + radius: double; [[The radius value in pixels.]] + } } - zoom_get { - [[Gets the current zoom value of the gesture. When the gesture begins, the finger + @property zoom { + [[The current zoom value of the gesture. When the gesture begins, the finger distance is recorded. When the distance becomes greater than the initial one, a zoom value greater than $[1.0] is reported. When it becomes smaller, a zoom value lesser than $[1.0] is reported.]] - return: double; [[The zoom value. $[1.0] means no zoom.]] + get { + } + values { + zoom: double; [[The zoom value. $[1.0] means no zoom.]] + } } } implements { diff --git a/src/tests/ecore_wl2/ecore_wl2_test_input.c b/src/tests/ecore_wl2/ecore_wl2_test_input.c index db6cbf3ea5..92ab2ca830 100644 --- a/src/tests/ecore_wl2/ecore_wl2_test_input.c +++ b/src/tests/ecore_wl2/ecore_wl2_test_input.c @@ -148,6 +148,35 @@ EFL_START_TEST(wl2_input_seat_capabilities) } EFL_END_TEST +EFL_START_TEST(wl2_input_pointer_xy) +{ + Ecore_Wl2_Display *disp; + Ecore_Wl2_Input *input; + Eina_Iterator *itr; + + disp = _display_connect(); + ck_assert(disp != NULL); + + itr = ecore_wl2_display_inputs_get(disp); + ck_assert(itr != NULL); + + EINA_ITERATOR_FOREACH(itr, input) + { + if (ecore_wl2_input_seat_capabilities_get(input) == + ECORE_WL2_SEAT_CAPABILITIES_POINTER) + { + int x = 0, y = 0; + + ecore_wl2_input_pointer_xy_get(input, &x, &y); + ck_assert_int_ne(x, 0); + ck_assert_int_ne(y, 0); + } + } + + eina_iterator_free(itr); +} +EFL_END_TEST + void ecore_wl2_test_input(TCase *tc) { @@ -159,5 +188,6 @@ ecore_wl2_test_input(TCase *tc) tcase_add_test(tc, wl2_input_keymap_get); tcase_add_test(tc, wl2_input_name_get); tcase_add_test(tc, wl2_input_seat_capabilities); + tcase_add_test(tc, wl2_input_pointer_xy); } } diff --git a/src/tests/ecore_wl2/ecore_wl2_test_window.c b/src/tests/ecore_wl2/ecore_wl2_test_window.c index 86ff1145c3..67cf50af74 100644 --- a/src/tests/ecore_wl2/ecore_wl2_test_window.c +++ b/src/tests/ecore_wl2/ecore_wl2_test_window.c @@ -20,24 +20,25 @@ #define WIDTH 480 #define HEIGHT 360 -typedef struct _Test_Data { - Ecore_Wl2_Display *display; - Ecore_Wl2_Window *win; - Ecore_Wl2_Frame_Cb_Handle *frame_callback_handler; - Ecore_Event_Handler *handler; +typedef struct _Test_Data +{ + Ecore_Wl2_Display *display; + Ecore_Wl2_Window *win; + Ecore_Wl2_Frame_Cb_Handle *frame_callback_handler; + Ecore_Event_Handler *handler; - struct wl_surface *surface; - struct wl_egl_window *egl_window; + struct wl_surface *surface; + struct wl_egl_window *egl_window; - int width; - int height; - int frame_callback_count; + int width; + int height; + int frame_callback_count; #ifdef GL_GLES - EGLDisplay egl_display; - EGLConfig egl_conf; - EGLSurface egl_surface; - EGLContext egl_context; + EGLDisplay egl_display; + EGLConfig egl_conf; + EGLSurface egl_surface; + EGLContext egl_context; #endif } Test_Data; @@ -147,23 +148,6 @@ EFL_START_TEST(wl2_window_rotation) } EFL_END_TEST -EFL_START_TEST(wl2_window_aux_hints_supported_get) -{ - Ecore_Wl2_Display *disp; - Ecore_Wl2_Window *win; - Eina_List *l; - - disp = _display_connect(); - ck_assert(disp != NULL); - - win = _window_create(disp); - ck_assert(win != NULL); - - l = ecore_wl2_window_aux_hints_supported_get(win); - ck_assert(l != NULL); -} -EFL_END_TEST - EFL_START_TEST(wl2_window_display_get) { Ecore_Wl2_Display *disp; @@ -989,7 +973,6 @@ ecore_wl2_test_window(TCase *tc) tcase_add_test(tc, wl2_window_rotation); if (getenv("E_START")) { - tcase_add_test(tc, wl2_window_aux_hints_supported_get); tcase_add_test(tc, wl2_window_commit); tcase_add_test(tc, wl2_window_frame_callback); tcase_add_test(tc, wl2_window_free); |