diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c index 5ed0031d8..501da4e69 100644 --- a/src/modules/tasks/e_mod_main.c +++ b/src/modules/tasks/e_mod_main.c @@ -91,6 +91,8 @@ static Eina_Bool _tasks_cb_event_client_urgent_change(void *data, int type, v static E_Config_DD *conf_edd = NULL; static E_Config_DD *conf_item_edd = NULL; +static Ecore_Timer *task_refill_timer; + Config *tasks_config = NULL; /* module setup */ @@ -439,12 +441,31 @@ _tasks_refill(Tasks *tasks) e_gadcon_client_min_size_set(tasks->gcc, 0, 0); } +static Eina_Bool +_refill_timer(void *d EINA_UNUSED) +{ + if (e_drag_current_get()) return EINA_TRUE; + + _tasks_refill_all(); + task_refill_timer = NULL; + return EINA_FALSE; +} + static void _tasks_refill_all(void) { const Eina_List *l; Tasks *tasks; + if (e_drag_current_get()) + { + if (task_refill_timer) + ecore_timer_reset(task_refill_timer); + else + task_refill_timer = ecore_timer_add(0.5, _refill_timer, NULL); + return; + } + EINA_LIST_FOREACH(tasks_config->tasks, l, tasks) { _tasks_refill(tasks);