diff --git a/src/modules/wizard/page_000.c b/src/modules/wizard/page_000.c index 5fc2dce78..17b29f465 100644 --- a/src/modules/wizard/page_000.c +++ b/src/modules/wizard/page_000.c @@ -3,6 +3,9 @@ #include "e.h" #include "e_mod_main.h" +static Ecore_Event_Handler *_update_handler = NULL; +static Ecore_Timer *_next_timer = NULL; + EAPI int wizard_page_init(E_Wizard_Page *pg __UNUSED__) { @@ -12,17 +15,30 @@ wizard_page_init(E_Wizard_Page *pg __UNUSED__) EAPI int wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__) { + if (_update_handler) ecore_event_handler_del(_update_handler); + _update_handler = NULL; return 1; } static Eina_Bool _next_page(void *data __UNUSED__) { + _next_timer = NULL; + if (_update_handler) ecore_event_handler_del(_update_handler); + _update_handler = NULL; e_wizard_button_next_enable_set(1); e_wizard_next(); return ECORE_CALLBACK_CANCEL; } +static Eina_Bool +_cb_desktops_update(void *data __UNUSED__, int ev_type __UNUSED__, void *ev __UNUSED__) +{ + if (_next_timer) ecore_timer_del(_next_timer); + _next_timer = ecore_timer_add(2.0, _next_page, NULL); + return ECORE_CALLBACK_PASS_ON; +} + EAPI int wizard_page_show(E_Wizard_Page *pg __UNUSED__) { @@ -34,7 +50,12 @@ wizard_page_show(E_Wizard_Page *pg __UNUSED__) e_theme_edje_object_set(o, "base/theme/wizard", "e/wizard/firstpage"); e_wizard_page_show(o); - ecore_timer_add(2.0, _next_page, NULL); + _update_handler = + ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE, + _cb_desktops_update, NULL); + + /* advance in 15 sec anyway if no efreet update comes */ + _next_timer = ecore_timer_add(15.0, _next_page, NULL); return 1; } diff --git a/src/modules/wizard/page_040.c b/src/modules/wizard/page_040.c index 734136d30..57c483e73 100644 --- a/src/modules/wizard/page_040.c +++ b/src/modules/wizard/page_040.c @@ -2,6 +2,9 @@ #include "e.h" #include "e_mod_main.h" +static Ecore_Event_Handler *_update_handler = NULL; +static Ecore_Timer *_next_timer = NULL; + EAPI int wizard_page_init(E_Wizard_Page *pg __UNUSED__) { @@ -11,9 +14,30 @@ wizard_page_init(E_Wizard_Page *pg __UNUSED__) EAPI int wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__) { + if (_update_handler) ecore_event_handler_del(_update_handler); + _update_handler = NULL; return 1; } +static Eina_Bool +_next_page(void *data __UNUSED__) +{ + _next_timer = NULL; + if (_update_handler) ecore_event_handler_del(_update_handler); + _update_handler = NULL; + e_wizard_button_next_enable_set(1); + e_wizard_next(); + return ECORE_CALLBACK_CANCEL; +} + +static Eina_Bool +_cb_desktops_update(void *data __UNUSED__, int ev_type __UNUSED__, void *ev __UNUSED__) +{ + if (_next_timer) ecore_timer_del(_next_timer); + _next_timer = ecore_timer_add(1.0, _next_page, NULL); + return ECORE_CALLBACK_PASS_ON; +} + EAPI int wizard_page_show(E_Wizard_Page *pg __UNUSED__) { @@ -25,6 +49,14 @@ wizard_page_show(E_Wizard_Page *pg __UNUSED__) snprintf(buf, sizeof(buf), "%s/extra_desktops", e_wizard_dir_get()); extra_desks = ecore_file_ls(buf); if (!extra_desks) return 0; + + _update_handler = + ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE, + _cb_desktops_update, NULL); + + /* advance in 15 sec anyway if no efreet update comes */ + _next_timer = ecore_timer_add(15.0, _next_page, NULL); + EINA_LIST_FREE(extra_desks, file) { snprintf(buf, sizeof(buf), "%s/extra_desktops/%s", @@ -80,7 +112,7 @@ wizard_page_show(E_Wizard_Page *pg __UNUSED__) } free(file); } - return 0; /* 1 == show ui, and wait for user, 0 == just continue */ + return 1; /* 1 == show ui, and wait for user, 0 == just continue */ } EAPI int