summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHermet Park <hermetpark@gmail.com>2020-01-16 16:31:47 +0900
committerHermet Park <hermetpark@gmail.com>2020-01-16 16:31:47 +0900
commitfd801a340c10786fcc12aea34a7fb28da0eda7e9 (patch)
tree061e0aca08bef50c9f509faf5174c39cb506293f
parent645b76f03b9b2a5a818f776810e4d035dee31bb4 (diff)
parent008517645e4ad926a090aebf0c37707a46dcad6d (diff)
downloadefl-fd801a340c10786fcc12aea34a7fb28da0eda7e9.tar.gz
Merge branch 'master' into devs/hermet/lottie
-rw-r--r--header_checks/meson.build1
-rw-r--r--src/bin/efreet/efreetd_ipc.c21
-rw-r--r--src/bin/elementary/test_efl_gfx_vg_value_provider.c163
-rw-r--r--src/bin/elementary/test_efl_ui_vg_animation.c80
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_definition.hh10
-rw-r--r--src/bin/eolian_mono/eolian/mono/part_definition.hh5
-rw-r--r--src/bindings/mono/efl_mono/Bind.cs14
-rw-r--r--src/bindings/mono/efl_mono/efl_csharp_application.cs2
-rw-r--r--src/lib/ecore/ecore_exe_posix.c8
-rw-r--r--src/lib/ecore/efl_exe.c12
-rw-r--r--src/lib/ecore_imf/Ecore_IMF.h24
-rw-r--r--src/lib/ecore_wl2/Ecore_Wl2.h48
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_internal.h48
-rw-r--r--src/lib/efl/interfaces/efl_player.eo8
-rw-r--r--src/lib/efreet/efreet_cache.c2
-rw-r--r--src/lib/eina/eina_inline_str.x20
-rw-r--r--src/lib/elementary/efl_ui_textbox.c266
-rw-r--r--src/lib/elementary/efl_ui_vg_animation.c91
-rw-r--r--src/lib/elementary/efl_ui_vg_animation.eo9
-rw-r--r--src/lib/elementary/efl_ui_vg_animation_eo.legacy.c32
-rw-r--r--src/lib/elementary/efl_ui_vg_animation_eo.legacy.h10
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group.c15
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group_private.h1
-rw-r--r--src/lib/evas/canvas/efl_text_cursor.eo8
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_flick.c4
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_flick.eo20
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_momentum.c2
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_momentum.eo10
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_zoom.c4
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_zoom.eo20
-rw-r--r--src/tests/ecore_wl2/ecore_wl2_test_input.c30
-rw-r--r--src/tests/ecore_wl2/ecore_wl2_test_window.c47
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);