diff options
author | Thiep Ha <thiepha@gmail.com> | 2017-12-27 16:49:54 +0900 |
---|---|---|
committer | Thiep Ha <thiepha@gmail.com> | 2017-12-27 16:49:54 +0900 |
commit | 0b7212836b2bf62ad722eb24cfecf9a8f1591c0e (patch) | |
tree | d125063fc7516cebee42b81bf98fd100782d96c5 | |
parent | 8deda7dd91c9d4a7338bb596b70dc447a053b343 (diff) | |
download | efl-0b7212836b2bf62ad722eb24cfecf9a8f1591c0e.tar.gz |
dnd: make drag_delay to property + anim time to config
-rw-r--r-- | src/lib/elementary/efl_ui_dnd.c | 31 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_dnd.eo | 2 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_dnd_container.eo | 17 | ||||
-rw-r--r-- | src/lib/elementary/elm_config.c | 21 | ||||
-rw-r--r-- | src/lib/elementary/elm_priv.h | 2 |
5 files changed, 62 insertions, 11 deletions
diff --git a/src/lib/elementary/efl_ui_dnd.c b/src/lib/elementary/efl_ui_dnd.c index 6cd3502191..15d80c8f3e 100644 --- a/src/lib/elementary/efl_ui_dnd.c +++ b/src/lib/elementary/efl_ui_dnd.c @@ -16,7 +16,11 @@ //#define MY_CLASS_DRAG EFL_UI_DND_DRAG_MIXIN //#define MY_CLASS_DROP EFL_UI_DND_DROP_MIXIN -//FIXME: Efl_Selection_Format should be changed to Efl_Data_Format +typedef struct _Efl_Ui_Dnd_Container_Data Efl_Ui_Dnd_Container_Data; +struct _Efl_Ui_Dnd_Container_Data +{ + unsigned int drag_delay_time; +}; static inline Eo* _selection_manager_get(Eo *obj) @@ -85,8 +89,21 @@ _efl_ui_dnd_drop_target_del(Eo *obj, void *pd, Efl_Selection_Format format, unsi efl_selection_manager_drop_target_del(sel_man, obj, format, seat); } +EOLIAN static double +_efl_ui_dnd_container_drag_delay_time_get(Eo *obj, Efl_Ui_Dnd_Container_Data *pd) +{ + return pd->drag_delay_time; +} + +EOLIAN static void +_efl_ui_dnd_container_drag_delay_time_set(Eo *obj, 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, void *pd, double time_to_drag, double anim_time, +//_efl_ui_dnd_container_drag_item_add(Eo *obj, Efl_Ui_Dnd_Cointaner_Data *pd, double time_to_drag, double anim_time, +_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, @@ -94,8 +111,10 @@ _efl_ui_dnd_container_drag_item_add(Eo *obj, void *pd, double time_to_drag, doub unsigned int seat) { ERR("In"); + 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, time_to_drag, anim_time, + 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, @@ -104,14 +123,14 @@ _efl_ui_dnd_container_drag_item_add(Eo *obj, void *pd, double time_to_drag, doub } static void -_efl_ui_dnd_container_drag_item_del(Eo *obj, void *pd, unsigned int seat) +_efl_ui_dnd_container_drag_item_del(Eo *obj, Efl_Ui_Dnd_Container_Data *pd, unsigned int seat) { ERR("In"); 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, void *pd, Efl_Selection_Format format, void *item_func_data, Efl_Dnd_Item_Get item_func, Eina_Free_Cb item_func_free_cb, unsigned int seat) +_efl_ui_dnd_container_drop_item_add(Eo *obj, Efl_Ui_Dnd_Container_Data *pd, Efl_Selection_Format format, void *item_func_data, Efl_Dnd_Item_Get item_func, Eina_Free_Cb item_func_free_cb, unsigned int seat) { ERR("In"); Eo *sel_man = _selection_manager_get(obj); @@ -119,7 +138,7 @@ _efl_ui_dnd_container_drop_item_add(Eo *obj, void *pd, Efl_Selection_Format form } EOLIAN static void -_efl_ui_dnd_container_drop_item_del(Eo *obj, void *pd, unsigned int seat) +_efl_ui_dnd_container_drop_item_del(Eo *obj, Efl_Ui_Dnd_Container_Data *pd, unsigned int seat) { ERR("In"); Eo *sel_man = _selection_manager_get(obj); diff --git a/src/lib/elementary/efl_ui_dnd.eo b/src/lib/elementary/efl_ui_dnd.eo index 6508aa45ef..7d4b2a0175 100644 --- a/src/lib/elementary/efl_ui_dnd.eo +++ b/src/lib/elementary/efl_ui_dnd.eo @@ -47,8 +47,6 @@ mixin Efl.Ui.Dnd { } } } - implements { - } events { drag,accept; [[accept drag data]] drag,done; [[drag is done (mouse up)]] diff --git a/src/lib/elementary/efl_ui_dnd_container.eo b/src/lib/elementary/efl_ui_dnd_container.eo index cd18f9e018..f80f1152a5 100644 --- a/src/lib/elementary/efl_ui_dnd_container.eo +++ b/src/lib/elementary/efl_ui_dnd_container.eo @@ -1,15 +1,26 @@ import efl_ui_dnd_types; mixin Efl.Ui.Dnd.Container { - data: null; + //data: null; 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]] + //@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]] diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c index 12837ee407..2d94294f04 100644 --- a/src/lib/elementary/elm_config.c +++ b/src/lib/elementary/elm_config.c @@ -508,6 +508,7 @@ _desc_init(void) 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); #undef T #undef D #undef T_INT @@ -1821,6 +1822,7 @@ _config_load(void) _elm_config->icon_theme = eina_stringshare_add(ELM_CONFIG_ICON_THEME_ELEMENTARY); _elm_config->popup_scrollable = EINA_FALSE; _elm_config->entry_select_allow = EINA_TRUE; + _elm_config->drag_anim_duration = 0.0; _env_get(); } @@ -2021,6 +2023,7 @@ _elm_config_reload_do(void) 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); @@ -2791,6 +2794,9 @@ _env_get(void) 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 @@ -4638,6 +4644,20 @@ elm_config_powersave_set(int set) _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) { @@ -5075,6 +5095,7 @@ _efl_config_global_efl_config_config_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNU 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)) diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 36bc4ce69f..3ebbbfe7f9 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -317,6 +317,7 @@ struct _Elm_Config_Flags Eina_Bool gl_msaa : 1; Eina_Bool icon_theme : 1; Eina_Bool entry_select_allow : 1; // unused + Eina_Bool drag_anim_duration : 1; }; struct _Elm_Config @@ -453,6 +454,7 @@ struct _Elm_Config unsigned char entry_select_allow; Eina_Bool offline; int powersave; + double drag_anim_duration; /* Not part of the EET file */ Eina_Bool is_mirrored : 1; |