Merge branch 'master' into devs/hermet/lottie

This commit is contained in:
Hermet Park 2020-01-16 16:31:47 +09:00
commit fd801a340c
32 changed files with 615 additions and 432 deletions

View File

@ -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']],

View File

@ -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);

View File

@ -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;
@ -185,58 +191,6 @@ 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)
{
@ -244,13 +198,6 @@ _slider_changed_cb(void *data, const Efl_Event *ev)
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);
efl_event_callback_array_add(anim_view, animation_stats_cb(), ad);
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);
ad->label = label;
ad->slider = slider;
update_anim_view_state(anim_view, label);

View File

@ -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 )
{
@ -78,6 +84,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)
{
@ -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)
{
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");
}
static void
_play_repeated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED)
{
printf("repeated!\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_changed_cb(void *data, const Efl_Event *ev)
_win_del_cb(void *data, const Efl_Event *ev EINA_UNUSED)
{
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);
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));
}

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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) =>

View File

@ -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();

View File

@ -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.

View File

@ -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;
/**

View File

@ -1229,54 +1229,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
*

View File

@ -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

View File

@ -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]]
}
}

View File

@ -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");

View File

@ -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
}
/**

View File

@ -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
_popup_item_paste_cb(void *data, const Efl_Event *ev EINA_UNUSED)
{
EFL_UI_TEXT_DATA_GET(data, sd);
efl_ui_textbox_selection_paste(data);
_popup_dismiss(sd);
}
static void
_menu_call(Evas_Object *obj)
{
Evas_Object *top;
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);
{
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 (sd->hoversel)
if (sd->popup)
{
_hoversel_position(obj);
evas_object_show(sd->hoversel);
elm_hoversel_hover_begin(sd->hoversel);
}
if (!_elm_config->desktop_entry)
{
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,17 +2187,23 @@ _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)
{
@ -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)
{

View File

@ -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

View File

@ -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]]
}
}

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -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 {

View File

@ -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;
}

View File

@ -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 {

View File

@ -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;
}

View File

@ -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 {

View File

@ -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);
}
}

View File

@ -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);