#include <Elementary_Cursor.h>
#include "elm_priv.h"
+typedef struct _Efl_Ui_Dnd_Container_Data Efl_Ui_Dnd_Container_Data;
+struct _Efl_Ui_Dnd_Container_Data
+{
+ unsigned int drag_delay_time;
+};
+
extern int _wl_default_seat_id_get(Evas_Object *obj);
static inline Eo*
Efl_Selection_Action action, void *icon_func_data, Efl_Dnd_Drag_Icon_Create icon_func, Eina_Free_Cb icon_func_free_cb,
unsigned int seat)
{
- ERR("In");
Eo *sel_man = _selection_manager_get(obj);
efl_selection_manager_drag_start(sel_man, obj, format, data, action,
icon_func_data, icon_func, icon_func_free_cb,
EOLIAN static void
_efl_ui_dnd_drag_cancel(Eo *obj, void *pd EINA_UNUSED, unsigned int seat)
{
- ERR("In");
Eo *sel_man = _selection_manager_get(obj);
efl_selection_manager_drag_cancel(sel_man, obj, seat);
}
EOLIAN static void
_efl_ui_dnd_drag_action_set(Eo *obj, void *pd EINA_UNUSED, Efl_Selection_Action action, unsigned int seat)
{
- ERR("In");
Eo *sel_man = _selection_manager_get(obj);
efl_selection_manager_drag_action_set(sel_man, obj, action, seat);
}
EOLIAN static void
_efl_ui_dnd_drop_target_add(Eo *obj, void *pd EINA_UNUSED, Efl_Selection_Format format, unsigned int seat)
{
- ERR("In");
-
Eo *sel_man = _selection_manager_get(obj);
efl_selection_manager_drop_target_add(sel_man, obj, format, seat);
}
EOLIAN static void
_efl_ui_dnd_drop_target_del(Eo *obj, void *pd EINA_UNUSED, Efl_Selection_Format format, unsigned int seat)
{
- ERR("In");
Eo *sel_man = _selection_manager_get(obj);
efl_selection_manager_drop_target_del(sel_man, obj, format, seat);
}
+EOLIAN static double
+_efl_ui_dnd_container_drag_delay_time_get(Eo *obj EINA_UNUSED, Efl_Ui_Dnd_Container_Data *pd)
+{
+ return pd->drag_delay_time;
+}
+
+EOLIAN static void
+_efl_ui_dnd_container_drag_delay_time_set(Eo *obj EINA_UNUSED, Efl_Ui_Dnd_Container_Data *pd, double drag_delay_time)
+{
+ pd->drag_delay_time = drag_delay_time;
+}
+
+EOLIAN static void
+_efl_ui_dnd_container_drag_item_add(Eo *obj, Efl_Ui_Dnd_Container_Data *pd,
+ void *data_func_data, Efl_Dnd_Drag_Data_Get data_func, Eina_Free_Cb data_func_free_cb,
+ void *item_func_data, Efl_Dnd_Item_Get item_func, Eina_Free_Cb item_func_free_cb,
+ void *icon_func_data, Efl_Dnd_Drag_Icon_Create icon_func, Eina_Free_Cb icon_func_free_cb,
+ void *icon_list_func_data, Efl_Dnd_Drag_Icon_List_Create icon_list_func, Eina_Free_Cb icon_list_func_free_cb,
+ unsigned int seat)
+{
+ double drag_delay_time = pd->drag_delay_time;
+ double anim_time = elm_config_drag_anim_duration_get();
+ Eo *sel_man = _selection_manager_get(obj);
+ efl_selection_manager_container_drag_item_add(sel_man, obj, drag_delay_time, anim_time,
+ data_func_data, data_func, data_func_free_cb,
+ item_func_data, item_func, item_func_free_cb,
+ icon_func_data, icon_func, icon_func_free_cb,
+ icon_list_func_data, icon_list_func, icon_list_func_free_cb,
+ seat);
+}
+
+static void
+_efl_ui_dnd_container_drag_item_del(Eo *obj, Efl_Ui_Dnd_Container_Data *pd EINA_UNUSED, unsigned int seat)
+{
+ Eo *sel_man = _selection_manager_get(obj);
+ efl_selection_manager_container_drag_item_del(sel_man, obj, seat);
+}
+EOLIAN static void
+_efl_ui_dnd_container_drop_item_add(Eo *obj, Efl_Ui_Dnd_Container_Data *pd EINA_UNUSED,
+ Efl_Selection_Format format,
+ void *item_func_data, Efl_Dnd_Item_Get item_func, Eina_Free_Cb item_func_free_cb,
+ unsigned int seat)
+{
+ Eo *sel_man = _selection_manager_get(obj);
+ efl_selection_manager_container_drop_item_add(sel_man, obj, format, item_func_data, item_func, item_func_free_cb, seat);
+}
+
+EOLIAN static void
+_efl_ui_dnd_container_drop_item_del(Eo *obj, Efl_Ui_Dnd_Container_Data *pd EINA_UNUSED, unsigned int seat)
+{
+ Eo *sel_man = _selection_manager_get(obj);
+ efl_selection_manager_container_drop_item_del(sel_man, obj, seat);
+}
+
#include "efl_ui_dnd.eo.c"
+#include "efl_ui_dnd_container.eo.c"
--- /dev/null
+import efl_ui_dnd_types;
+
+mixin Efl.Ui.Dnd.Container {
+ methods {
+ @property drag_delay_time {
+ [[The time since mouse down happens to drag starts.]]
+ set {
+ legacy: null;
+ }
+ get {
+ legacy: null;
+ }
+ values {
+ time: double; [[The drag delay time]]
+ }
+ }
+ drag_item_add { //drag_item_callback //property
+ [[This registers a drag for items in a container. Many items can be
+ dragged at a time. During dragging, there are three events emitted:
+ EFL_DND_EVENT_DRAG_POS, EFL_DND_EVENT_DRAG_ACCEPT, EFL_DND_EVENT_DRAG_DONE.]]
+ params {
+ //@in time_to_drag: double; [[Time since mouse down happens to drag starts]] //drag_delay: property
+ //@in anim_durataion: double; [[animation duration]] //just config
+ @in data_func: Efl.Dnd.Drag_Data_Get; [[Data and its format]]
+ @in item_func: Efl.Dnd.Item_Get; [[Item to determine drag start]]
+ @in icon_func: Efl.Dnd.Drag_Icon_Create; [[Icon used during drag]]
+ @in icon_list_func: Efl.Dnd.Drag_Icon_List_Create; [[Icons used for animations CHECKING ]]
+ @in seat: uint; [[Specified seat for multiple seats case.]]
+ }
+ }
+ drag_item_del { //remove
+ [[Remove drag function of items in the container object.]]
+ params {
+ @in seat: uint; [[Specified seat for multiple seats case.]]
+ }
+ }
+ drop_item_add {
+ params {
+ @in format: Efl.Selection.Format; [[Accepted data formats]]
+ @in item_func: Efl.Dnd.Item_Get; [[Get item at specific position]]
+ @in seat: uint; [[Specified seat for multiple seats case.]]
+ }
+ }
+ drop_item_del {
+ params {
+ @in seat: uint; [[Specified seat for multiple seats case.]]
+ }
+ }
+ }
+}
ELM_CONFIG_VAL(D, T, entry_select_allow, T_UCHAR);
ELM_CONFIG_VAL(D, T, offline, T_UCHAR);
ELM_CONFIG_VAL(D, T, powersave, T_INT);
+ ELM_CONFIG_VAL(D, T, drag_anim_duration, T_DOUBLE);
// TIZEN_ONLY(20150705): Genlist item align feature
ELM_CONFIG_VAL(D, T, scroll_item_align_enable, T_UCHAR);
ELM_CONFIG_VAL(D, T, scroll_item_valign, T_STRING);
_elm_config->language_auto_mirrored = EINA_TRUE;
//
_elm_config->entry_select_allow = EINA_TRUE;
+ _elm_config->drag_anim_duration = 0.0;
// TIZEN_ONLY(20150705): Genlist item align feature
_elm_config->scroll_item_align_enable = EINA_FALSE;
_elm_config->scroll_item_valign = eina_stringshare_add("center");
KEEP_VAL(gl_msaa);
KEEP_STR(icon_theme);
KEEP_VAL(entry_select_allow);
+ KEEP_VAL(drag_anim_duration);
_elm_config->priv = prev_config->priv;
_config_free(prev_config);
if (s) _elm_config->popup_vertical_align = _elm_atof(s);
s = getenv("ELM_POPUP_SCROLLABLE");
if (s) _elm_config->popup_scrollable = atoi(s);
+
+ s = getenv("EFL_UI_DND_DRAG_ANIM_DURATION");
+ if (s) _elm_config->drag_anim_duration = _elm_atof(s);
}
static void
_elm_config->powersave = set;
}
+EAPI double
+elm_config_drag_anim_duration_get(void)
+{
+ if (!_elm_config) return 0.0;
+ return _elm_config->drag_anim_duration;
+}
+
+EAPI void
+elm_config_drag_anim_duration_set(double set)
+{
+ if (!_elm_config) return;
+ _elm_config->drag_anim_duration = set;
+}
+
void
_elm_config_profile_set(const char *profile)
{
CONFIG_GETS(web_backend);
CONFIG_GETB(offline);
CONFIG_GETI(powersave);
+ CONFIG_GETD(drag_anim_duration);
const size_t len = sizeof("audio_mute") - 1;
if (!strncmp(name, "audio_mute", len))