From: Enlightenment S. <no-...@en...> - 2009-12-02 22:29:43
|
Log: Make home window appear when module starts. The makes 'home' up by default. Author: devilhorns Date: 2009-12-02 14:29:29 -0800 (Wed, 02 Dec 2009) New Revision: 44143 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-02 22:24:25 UTC (rev 44142) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-02 22:29:29 UTC (rev 44143) @@ -159,6 +159,8 @@ evas_object_event_callback_add(inst->o_btn, EVAS_CALLBACK_MOUSE_DOWN, _il_home_btn_cb_mouse_down, inst); + _il_home_win_new(inst); + instances = eina_list_append(instances, inst); return inst->gcc; } @@ -279,7 +281,6 @@ Il_Home_Win *hwin; E_Container *con; E_Zone *zone; - int y, w, h; char buff[PATH_MAX]; if (!hwin) @@ -334,15 +335,13 @@ _il_home_pan_max_get, _il_home_pan_child_size_get); evas_object_smart_callback_add(hwin->o_fm, "selected", - _il_home_cb_selected, NULL); - + _il_home_cb_selected, hwin); zone = e_util_container_zone_number_get(0, 0); - e_zone_useful_geometry_get(zone, NULL, &y, &w, NULL); e_win_title_set(hwin->win, _("Illume Home")); e_win_name_class_set(hwin->win, "Illume-Home", "Illume-Home"); e_win_size_min_set(hwin->win, 48, 48); - e_win_move_resize(hwin->win, 0, y, w, 200); + e_win_resize(hwin->win, zone->w, 200); e_win_show(hwin->win); } @@ -440,10 +439,13 @@ static void _il_home_cb_selected(void *data, Evas_Object *obj, void *event) { + Il_Home_Win *hwin; Eina_List *selected; E_Fm2_Icon_Info *ici; - selected = e_fm2_selected_list_get(obj); + printf("FM Selected\n"); + if (!(hwin = data)) return; + selected = e_fm2_selected_list_get(hwin->o_fm); if (!selected) return; EINA_LIST_FREE(selected, ici) { |
From: Enlightenment S. <no-...@en...> - 2009-12-04 23:25:13
|
Log: Make single-click timeout shorter by default. Author: devilhorns Date: 2009-12-04 15:24:57 -0800 (Fri, 04 Dec 2009) New Revision: 44192 Modified: trunk/e/src/modules/illume-home/e_mod_config.c Modified: trunk/e/src/modules/illume-home/e_mod_config.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_config.c 2009-12-04 22:37:18 UTC (rev 44191) +++ trunk/e/src/modules/illume-home/e_mod_config.c 2009-12-04 23:24:57 UTC (rev 44192) @@ -43,7 +43,7 @@ il_home_cfg->version = 0; il_home_cfg->icon_size = 120; il_home_cfg->single_click = 1; - il_home_cfg->single_click_delay = 150; + il_home_cfg->single_click_delay = 50; } if (il_home_cfg) { |
From: Enlightenment S. <no-...@en...> - 2009-12-05 16:48:54
|
Log: Focus the home window when created. Author: devilhorns Date: 2009-12-05 08:48:42 -0800 (Sat, 05 Dec 2009) New Revision: 44199 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-05 02:38:00 UTC (rev 44198) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-05 16:48:42 UTC (rev 44199) @@ -343,6 +343,7 @@ e_win_size_min_set(hwin->win, 48, 48); e_win_resize(hwin->win, zone->w, 200); e_win_show(hwin->win); + e_border_focus_set(hwin->win->border, 1, 1); } static void |
From: Enlightenment S. <no-...@en...> - 2009-12-07 03:43:06
|
Log: Make illume-home keep track of any apps it runs, so we can uniconify the border if user tries to run it again. Author: devilhorns Date: 2009-12-06 19:42:53 -0800 (Sun, 06 Dec 2009) New Revision: 44236 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 03:06:50 UTC (rev 44235) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 03:42:53 UTC (rev 44236) @@ -22,6 +22,8 @@ E_Win *win; Evas_Object *o_bg, *o_sf, *o_fm; + Eina_List *exes; + Ecore_Event_Handler *exit_hdl; }; /* local function prototypes */ @@ -43,7 +45,7 @@ static void _il_home_pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y); static void _il_home_pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h); static void _il_home_cb_selected(void *data, Evas_Object *obj, void *event); -static void _il_home_desktop_run(Efreet_Desktop *desktop); +static void _il_home_desktop_run(Il_Home_Win *hwin, Efreet_Desktop *desktop); static void _il_home_apps_populate(void); static void _il_home_apps_unpopulate(void); static void _il_home_fmc_set(Evas_Object *obj); @@ -51,6 +53,8 @@ static int _il_home_desktop_list_change(void *data, int type, void *event); static int _il_home_desktop_change(void *data, int type, void *event); static int _il_home_update_deferred(void *data); +static int _il_home_win_cb_exe_del(void *data, int type, void *event); +static E_Border *_il_home_desktop_find_border(Efreet_Desktop *desktop); /* local variables */ static Eina_List *instances = NULL; @@ -344,11 +348,22 @@ e_win_resize(hwin->win, zone->w, 200); e_win_show(hwin->win); e_border_focus_set(hwin->win->border, 1, 1); + + hwin->exit_hdl = + ecore_event_handler_add(ECORE_EXE_EVENT_DEL, + _il_home_win_cb_exe_del, hwin); } static void _il_home_win_cb_free(Il_Home_Win *hwin) { + E_Exec_Instance *eins; + + EINA_LIST_FREE(hwin->exes, eins) + E_FREE(eins); + + if (hwin->exit_hdl) ecore_event_handler_del(hwin->exit_hdl); + hwin->exit_hdl = NULL; if (hwin->o_bg) evas_object_del(hwin->o_bg); hwin->o_bg = NULL; if (hwin->o_sf) evas_object_del(hwin->o_sf); @@ -444,7 +459,6 @@ Eina_List *selected; E_Fm2_Icon_Info *ici; - printf("FM Selected\n"); if (!(hwin = data)) return; selected = e_fm2_selected_list_get(hwin->o_fm); if (!selected) return; @@ -457,81 +471,48 @@ if (ici->real_link) { desktop = efreet_desktop_get(ici->real_link); - if (desktop) _il_home_desktop_run(desktop); + if (desktop) + _il_home_desktop_run(hwin, desktop); } } } } static void -_il_home_desktop_run(Efreet_Desktop *desktop) +_il_home_desktop_run(Il_Home_Win *hwin, Efreet_Desktop *desktop) { + E_Exec_Instance *eins; Eina_List *l; - E_Border *bd; - E_Exec_Instance *eins; - char *exe = NULL, *p; if (!desktop) return; if (!desktop->exec) return; - p = strchr(desktop->exec, ' '); - if (!p) - exe = strdup(desktop->exec); - else + + EINA_LIST_FOREACH(hwin->exes, l, eins) { - exe = malloc(p - desktop->exec + 1); - if (exe) ecore_strlcpy(exe, desktop->exec, p - desktop->exec + 1); - } - if (exe) - { - p = strrchr(exe, '/'); - if (p) strcpy(exe, p + 1); - } - EINA_LIST_FOREACH(e_border_client_list(), l, bd) - { - if (e_exec_startup_id_pid_find(bd->client.netwm.pid, - bd->client.netwm.startup_id) == desktop) + if ((eins->desktop == desktop)) { - e_border_show(bd); - e_border_raise(bd); - e_border_focus_set(bd, 1, 1); - if (exe) free(exe); - return; - } - if (exe) - { - if (bd->client.icccm.command.argv) - { - char *pp; + E_Border *bd; - pp = strrchr(bd->client.icccm.command.argv[0], '/'); - if (!pp) pp = bd->client.icccm.command.argv[0]; - if (!strcmp(exe, pp)) - { - e_border_show(bd); - e_border_raise(bd); - e_border_focus_set(bd, 1, 1); - if (exe) free(exe); - return; - } - } - if ((bd->client.icccm.name) && - (!strcasecmp(bd->client.icccm.name, exe))) + bd = _il_home_desktop_find_border(desktop); + if (bd) { + e_border_uniconify(bd); e_border_show(bd); e_border_raise(bd); e_border_focus_set(bd, 1, 1); - if (exe) free(exe); return; } } } - if (exe) free(exe); + eins = e_exec(e_util_container_zone_number_get(0, 0), desktop, NULL, NULL, "illume-home"); if (eins) { char buff[PATH_MAX]; + ecore_exe_tag_set(eins->exe, "illume-home"); + hwin->exes = eina_list_append(hwin->exes, eins); snprintf(buff, sizeof(buff), "Starting %s", desktop->name); e_busycover_push(busycover, buff, NULL); } @@ -725,3 +706,88 @@ return 0; } +static int +_il_home_win_cb_exe_del(void *data, int type, void *event) +{ + Il_Home_Win *hwin; + Ecore_Exe_Event_Del *ev; + Eina_List *l; + char *tag; + + if (!(hwin = data)) return 1; + ev = event; + if (!ev->exe) return 1; + if (!(tag = ecore_exe_tag_get(ev->exe))) return 1; + if (strcmp(tag, "illume-home")) return 1; + + for (l = hwin->exes; l; l = l->next) + { + E_Exec_Instance *eins; + + if (!(eins = l->data)) continue; + if (eins->exe == ev->exe) + { + hwin->exes = eina_list_remove(hwin->exes, eins); + E_FREE(eins); + return 1; + } + } + return 1; +} + +static E_Border * +_il_home_desktop_find_border(Efreet_Desktop *desktop) +{ + Eina_List *l; + E_Border *bd; + char *exe = NULL, *p; + + if (!desktop) return NULL; + if (!desktop->exec) return NULL; + p = strchr(desktop->exec, ' '); + if (!p) + exe = strdup(desktop->exec); + else + { + exe = malloc(p - desktop->exec + 1); + if (exe) ecore_strlcpy(exe, desktop->exec, p - desktop->exec + 1); + } + if (exe) + { + p = strrchr(exe, '/'); + if (p) strcpy(exe, p + 1); + } + + EINA_LIST_FOREACH(e_border_client_list(), l, bd) + { + if (e_exec_startup_id_pid_find(bd->client.netwm.pid, + bd->client.netwm.startup_id) == desktop) + { + if (exe) free(exe); + return bd; + } + if (exe) + { + if (bd->client.icccm.command.argv) + { + char *pp; + + pp = strrchr(bd->client.icccm.command.argv[0], '/'); + if (!pp) pp = bd->client.icccm.command.argv[0]; + if (!strcmp(exe, pp)) + { + if (exe) free(exe); + return bd; + } + } + if ((bd->client.icccm.name) && + (!strcasecmp(bd->client.icccm.name, exe))) + { + if (exe) free(exe); + return bd; + } + } + } + if (exe) free(exe); + return NULL; +} |
From: Enlightenment S. <no-...@en...> - 2009-12-07 21:44:22
|
Log: Add timeout for desktop run. Add busycover handle so we can push/pop messages. Author: devilhorns Date: 2009-12-07 13:44:08 -0800 (Mon, 07 Dec 2009) New Revision: 44261 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 21:14:28 UTC (rev 44260) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 21:44:08 UTC (rev 44261) @@ -24,6 +24,8 @@ Evas_Object *o_bg, *o_sf, *o_fm; Eina_List *exes; Ecore_Event_Handler *exit_hdl; + Ecore_Timer *timeout; + void *handle; }; /* local function prototypes */ @@ -55,6 +57,7 @@ static int _il_home_update_deferred(void *data); static int _il_home_win_cb_exe_del(void *data, int type, void *event); static E_Border *_il_home_desktop_find_border(Efreet_Desktop *desktop); +static int _il_home_win_cb_timeout(void *data); /* local variables */ static Eina_List *instances = NULL; @@ -511,10 +514,11 @@ { char buff[PATH_MAX]; + hwin->timeout = ecore_timer_add(20.0, _il_home_win_cb_timeout, hwin); ecore_exe_tag_set(eins->exe, "illume-home"); hwin->exes = eina_list_append(hwin->exes, eins); snprintf(buff, sizeof(buff), "Starting %s", desktop->name); - e_busycover_push(busycover, buff, NULL); + hwin->handle = e_busycover_push(busycover, buff, NULL); } } @@ -727,6 +731,10 @@ if (!(eins = l->data)) continue; if (eins->exe == ev->exe) { + if (hwin->timeout) ecore_timer_del(hwin->timeout); + hwin->timeout = NULL; + if (hwin->handle) e_busycover_pop(busycover, hwin->handle); + hwin->handle = NULL; hwin->exes = eina_list_remove(hwin->exes, eins); E_FREE(eins); return 1; @@ -791,3 +799,15 @@ if (exe) free(exe); return NULL; } + +static int +_il_home_win_cb_timeout(void *data) +{ + Il_Home_Win *hwin; + + if (!(hwin = data)) return 1; + if (hwin->handle) e_busycover_pop(busycover, hwin->handle); + hwin->handle = NULL; + hwin->timeout = NULL; + return 0; +} |
From: Enlightenment S. <no-...@en...> - 2009-12-07 21:50:04
|
Log: Pop the message off of busycover if we delete this window. Author: devilhorns Date: 2009-12-07 13:49:50 -0800 (Mon, 07 Dec 2009) New Revision: 44262 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 21:44:08 UTC (rev 44261) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 21:49:50 UTC (rev 44262) @@ -365,6 +365,10 @@ EINA_LIST_FREE(hwin->exes, eins) E_FREE(eins); + if (hwin->timeout) ecore_timer_del(hwin->timeout); + hwin->timeout = NULL; + if (hwin->handle) e_busycover_pop(busycover, hwin->handle); + hwin->handle = NULL; if (hwin->exit_hdl) ecore_event_handler_del(hwin->exit_hdl); hwin->exit_hdl = NULL; if (hwin->o_bg) evas_object_del(hwin->o_bg); |
From: Enlightenment S. <no-...@en...> - 2009-12-07 21:59:48
|
Log: Make illume-home do drag n drop (works between 2 'home' windows also) :) Author: devilhorns Date: 2009-12-07 13:59:34 -0800 (Mon, 07 Dec 2009) New Revision: 44263 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 21:49:50 UTC (rev 44262) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 21:59:34 UTC (rev 44263) @@ -336,11 +336,14 @@ e_user_dir_concat_static(buff, "appshadow"); e_fm2_path_set(hwin->o_fm, NULL, buff); + e_fm2_window_object_set(hwin->o_fm, E_OBJECT(hwin->win)); + e_scrollframe_extern_pan_set(hwin->o_sf, hwin->o_fm, _il_home_pan_set, _il_home_pan_get, _il_home_pan_max_get, _il_home_pan_child_size_get); + evas_object_propagate_events_set(hwin->o_fm, 0); evas_object_smart_callback_add(hwin->o_fm, "selected", _il_home_cb_selected, hwin); zone = e_util_container_zone_number_get(0, 0); @@ -352,6 +355,9 @@ e_win_show(hwin->win); e_border_focus_set(hwin->win->border, 1, 1); + if (hwin->win->evas_win) + e_drop_xdnd_register_set(hwin->win->evas_win, 1); + hwin->exit_hdl = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _il_home_win_cb_exe_del, hwin); |
From: Enlightenment S. <no-...@en...> - 2009-12-07 23:03:40
|
Log: Unregister dnd when we delete the window. Author: devilhorns Date: 2009-12-07 15:03:26 -0800 (Mon, 07 Dec 2009) New Revision: 44266 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 22:59:32 UTC (rev 44265) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 23:03:26 UTC (rev 44266) @@ -371,6 +371,8 @@ EINA_LIST_FREE(hwin->exes, eins) E_FREE(eins); + if (hwin->win->evas_win) + e_drop_xdnd_register_set(hwin->win->evas_win, 0); if (hwin->timeout) ecore_timer_del(hwin->timeout); hwin->timeout = NULL; if (hwin->handle) e_busycover_pop(busycover, hwin->handle); |
From: Enlightenment S. <no-...@en...> - 2009-12-08 00:07:03
|
Log: Set the ecore_exe tag before we start the timers. Author: devilhorns Date: 2009-12-07 16:06:49 -0800 (Mon, 07 Dec 2009) New Revision: 44268 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-07 23:55:01 UTC (rev 44267) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-08 00:06:49 UTC (rev 44268) @@ -526,8 +526,8 @@ { char buff[PATH_MAX]; + ecore_exe_tag_set(eins->exe, "illume-home"); hwin->timeout = ecore_timer_add(20.0, _il_home_win_cb_timeout, hwin); - ecore_exe_tag_set(eins->exe, "illume-home"); hwin->exes = eina_list_append(hwin->exes, eins); snprintf(buff, sizeof(buff), "Starting %s", desktop->name); hwin->handle = e_busycover_push(busycover, buff, NULL); |
From: Enlightenment S. <no-...@en...> - 2009-12-11 02:40:23
|
Log: Use current zone instead of always zone 0. Author: devilhorns Date: 2009-12-10 18:40:11 -0800 (Thu, 10 Dec 2009) New Revision: 44344 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-10 18:14:32 UTC (rev 44343) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-11 02:40:11 UTC (rev 44344) @@ -520,7 +520,7 @@ } } - eins = e_exec(e_util_container_zone_number_get(0, 0), + eins = e_exec(e_util_zone_current_get(e_manager_current_get()), desktop, NULL, NULL, "illume-home"); if (eins) { |
From: Enlightenment S. <no-...@en...> - 2009-12-11 04:10:53
|
Log: Better tracking of launched exe's. No more seggies :) Author: devilhorns Date: 2009-12-10 20:10:40 -0800 (Thu, 10 Dec 2009) New Revision: 44348 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-11 02:58:52 UTC (rev 44347) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-11 04:10:40 UTC (rev 44348) @@ -8,6 +8,7 @@ /* local structures */ typedef struct _Instance Instance; typedef struct _Il_Home_Win Il_Home_Win; +typedef struct _Il_Home_Exec Il_Home_Exec; struct _Instance { @@ -22,12 +23,20 @@ E_Win *win; Evas_Object *o_bg, *o_sf, *o_fm; - Eina_List *exes; - Ecore_Event_Handler *exit_hdl; +}; +struct _Il_Home_Exec +{ + Efreet_Desktop *desktop; + E_Border *border; Ecore_Timer *timeout; + int startup_id; + pid_t pid; void *handle; }; +static Eina_List *exes = NULL; +static Ecore_Event_Handler *exit_hdl = NULL; + /* local function prototypes */ static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style); static void _gc_shutdown(E_Gadcon_Client *gcc); @@ -58,6 +67,8 @@ static int _il_home_win_cb_exe_del(void *data, int type, void *event); static E_Border *_il_home_desktop_find_border(Efreet_Desktop *desktop); static int _il_home_win_cb_timeout(void *data); +static int _il_home_border_add(void *data, int type, void *event); +static int _il_home_border_remove(void *data, int type, void *event); /* local variables */ static Eina_List *instances = NULL; @@ -103,6 +114,19 @@ ecore_event_handler_add(EFREET_EVENT_DESKTOP_CHANGE, _il_home_desktop_change, NULL)); + handlers = + eina_list_append(handlers, + ecore_event_handler_add(E_EVENT_BORDER_ADD, + _il_home_border_add, NULL)); + handlers = + eina_list_append(handlers, + ecore_event_handler_add(E_EVENT_BORDER_REMOVE, + _il_home_border_remove, NULL)); + + exit_hdl = + ecore_event_handler_add(ECORE_EXE_EVENT_DEL, + _il_home_win_cb_exe_del, NULL); + e_gadcon_provider_register(&_gc_class); return m; } @@ -111,7 +135,23 @@ e_modapi_shutdown(E_Module *m) { Ecore_Event_Handler *handle; + Il_Home_Exec *exe; + EINA_LIST_FREE(exes, exe) + { + if (exe->handle) + { + e_busycover_pop(busycover, exe->handle); + exe->handle = NULL; + } +// exes = eina_list_remove_list(exes, l); + if (exe->timeout) ecore_timer_del(exe->timeout); + E_FREE(exe); + } + + if (exit_hdl) ecore_event_handler_del(exit_hdl); + exit_hdl = NULL; + _il_home_apps_unpopulate(); if (busycover) @@ -357,10 +397,6 @@ if (hwin->win->evas_win) e_drop_xdnd_register_set(hwin->win->evas_win, 1); - - hwin->exit_hdl = - ecore_event_handler_add(ECORE_EXE_EVENT_DEL, - _il_home_win_cb_exe_del, hwin); } static void @@ -368,17 +404,8 @@ { E_Exec_Instance *eins; - EINA_LIST_FREE(hwin->exes, eins) - E_FREE(eins); - if (hwin->win->evas_win) e_drop_xdnd_register_set(hwin->win->evas_win, 0); - if (hwin->timeout) ecore_timer_del(hwin->timeout); - hwin->timeout = NULL; - if (hwin->handle) e_busycover_pop(busycover, hwin->handle); - hwin->handle = NULL; - if (hwin->exit_hdl) ecore_event_handler_del(hwin->exit_hdl); - hwin->exit_hdl = NULL; if (hwin->o_bg) evas_object_del(hwin->o_bg); hwin->o_bg = NULL; if (hwin->o_sf) evas_object_del(hwin->o_sf); @@ -497,41 +524,57 @@ _il_home_desktop_run(Il_Home_Win *hwin, Efreet_Desktop *desktop) { E_Exec_Instance *eins; + Il_Home_Exec *exe; Eina_List *l; + E_Border *b; + char buff[PATH_MAX]; if (!desktop) return; if (!desktop->exec) return; - EINA_LIST_FOREACH(hwin->exes, l, eins) + EINA_LIST_FOREACH(exes, l, exe) { - if ((eins->desktop == desktop)) + if ((exe->desktop == desktop)) { - E_Border *bd; - - bd = _il_home_desktop_find_border(desktop); - if (bd) + if (exe->border) { - e_border_uniconify(bd); - e_border_show(bd); - e_border_raise(bd); - e_border_focus_set(bd, 1, 1); + e_border_uniconify(exe->border); + e_border_show(exe->border); + e_border_raise(exe->border); + e_border_focus_set(exe->border, 1, 1); return; } } } + b = _il_home_desktop_find_border(desktop); + if (b) + { + e_border_uniconify(b); + e_border_show(b); + e_border_raise(b); + e_border_focus_set(b, 1, 1); + return; + } + + exe = E_NEW(Il_Home_Exec, 1); + if (!exe) return; + eins = e_exec(e_util_zone_current_get(e_manager_current_get()), desktop, NULL, NULL, "illume-home"); + exe->desktop = desktop; if (eins) { - char buff[PATH_MAX]; + exe->startup_id = eins->startup_id; + exe->pid = ecore_exe_pid_get(eins->exe); + } - ecore_exe_tag_set(eins->exe, "illume-home"); - hwin->timeout = ecore_timer_add(20.0, _il_home_win_cb_timeout, hwin); - hwin->exes = eina_list_append(hwin->exes, eins); - snprintf(buff, sizeof(buff), "Starting %s", desktop->name); - hwin->handle = e_busycover_push(busycover, buff, NULL); - } + exe->timeout = ecore_timer_add(20.0, _il_home_win_cb_timeout, exe); + + snprintf(buff, sizeof(buff), "Starting %s", desktop->name); + exe->handle = e_busycover_push(busycover, buff, NULL); + + exes = eina_list_append(exes, exe); } static void @@ -725,30 +768,23 @@ static int _il_home_win_cb_exe_del(void *data, int type, void *event) { - Il_Home_Win *hwin; + Il_Home_Exec *exe; Ecore_Exe_Event_Del *ev; Eina_List *l; - char *tag; - if (!(hwin = data)) return 1; ev = event; - if (!ev->exe) return 1; - if (!(tag = ecore_exe_tag_get(ev->exe))) return 1; - if (strcmp(tag, "illume-home")) return 1; - - for (l = hwin->exes; l; l = l->next) + EINA_LIST_FOREACH(exes, l, exe) { - E_Exec_Instance *eins; - - if (!(eins = l->data)) continue; - if (eins->exe == ev->exe) + if (exe->pid == ev->pid) { - if (hwin->timeout) ecore_timer_del(hwin->timeout); - hwin->timeout = NULL; - if (hwin->handle) e_busycover_pop(busycover, hwin->handle); - hwin->handle = NULL; - hwin->exes = eina_list_remove(hwin->exes, eins); - E_FREE(eins); + if (exe->handle) + { + e_busycover_pop(busycover, exe->handle); + exe->handle = NULL; + } + exes = eina_list_remove_list(exes, l); + if (exe->timeout) ecore_timer_del(exe->timeout); + E_FREE(exe); return 1; } } @@ -815,11 +851,71 @@ static int _il_home_win_cb_timeout(void *data) { - Il_Home_Win *hwin; + Il_Home_Exec *exe; - if (!(hwin = data)) return 1; - if (hwin->handle) e_busycover_pop(busycover, hwin->handle); - hwin->handle = NULL; - hwin->timeout = NULL; + if (!(exe = data)) return 1; + if (exe->handle) e_busycover_pop(busycover, exe->handle); + exe->handle = NULL; + if (!exe->border) + { + exes = eina_list_remove(exes, exe); + E_FREE(exe); + return 0; + } + exe->timeout = NULL; return 0; } + +static int +_il_home_border_add(void *data, int type, void *event) +{ + E_Event_Border_Add *ev; + Il_Home_Exec *exe; + Eina_List *l; + + ev = event; + EINA_LIST_FOREACH(exes, l, exe) + { + if (!exe->border) + { + if ((exe->startup_id == ev->border->client.netwm.startup_id) || + (exe->pid == ev->border->client.netwm.pid)) + { + exe->border = ev->border; + if (exe->handle) + { + e_busycover_pop(busycover, exe->handle); + exe->handle = NULL; + } + if (exe->timeout) ecore_timer_del(exe->timeout); + exe->timeout = NULL; + return 1; + } + } + } + return 1; +} + +static int +_il_home_border_remove(void *data, int type, void *event) +{ + E_Event_Border_Remove *ev; + Il_Home_Exec *exe; + Eina_List *l; + + ev = event; + EINA_LIST_FOREACH(exes, l, exe) + { + if (exe->border == ev->border) + { + if (exe->handle) + { + e_busycover_pop(busycover, exe->handle); + exe->handle = NULL; + } + exe->border = NULL; + return 1; + } + } + return 1; +} |
From: Enlightenment S. <no-...@en...> - 2009-12-11 09:35:58
|
Log: Remove commented line. Not needed. Author: devilhorns Date: 2009-12-11 01:35:48 -0800 (Fri, 11 Dec 2009) New Revision: 44356 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-11 09:35:20 UTC (rev 44355) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-11 09:35:48 UTC (rev 44356) @@ -144,7 +144,6 @@ e_busycover_pop(busycover, exe->handle); exe->handle = NULL; } -// exes = eina_list_remove_list(exes, l); if (exe->timeout) ecore_timer_del(exe->timeout); E_FREE(exe); } |
From: Enlightenment S. <no-...@en...> - 2009-12-13 17:46:28
|
Log: Make 'home' a bit faster. We don't need icon, label, etc, here as we never make use of them anyway. Author: devilhorns Date: 2009-12-13 09:46:14 -0800 (Sun, 13 Dec 2009) New Revision: 44425 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-13 14:28:07 UTC (rev 44424) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-13 17:46:14 UTC (rev 44425) @@ -664,7 +664,7 @@ { Eina_List *l, *ll; Efreet_Desktop *desktop; - char *label, *icon, *plabel, buff[PATH_MAX]; + char buff[PATH_MAX]; Efreet_Menu *entry, *subentry; Eina_List *settings, *sys, *kbd; int num = 0; @@ -676,52 +676,16 @@ { if (entry->type != EFREET_MENU_ENTRY_MENU) continue; desktop = entry->desktop; - plabel = NULL; - if (entry->name) plabel = strdup(entry->name); - if (!plabel) plabel = strdup("???"); EINA_LIST_FOREACH(entry->entries, ll, subentry) { if (subentry->type != EFREET_MENU_ENTRY_DESKTOP) continue; - label = icon = NULL; if (!(desktop = subentry->desktop)) continue; if ((settings) && (sys) && (eina_list_data_find(settings, desktop)) && (eina_list_data_find(sys, desktop))) continue; if ((kbd) && (eina_list_data_find(kbd, desktop))) continue; - if ((desktop) && (desktop->x)) - { - icon = eina_hash_find(desktop->x, - "X-Application-Screenshot"); - if (icon) icon = strdup(icon); - } - if ((!icon) && (subentry->icon)) - { - if (subentry->icon[0] == '/') - icon = strdup(subentry->icon); - else - icon = efreet_icon_path_find(e_config->icon_theme, - subentry->icon, - il_home_cfg->icon_size); - } - if (subentry->name) label = strdup(subentry->name); - if (desktop) - { - if (!label) - label = strdup(desktop->generic_name); - if ((!icon) && (desktop->icon)) - icon = efreet_icon_path_find(e_config->icon_theme, - desktop->icon, - il_home_cfg->icon_size); - } - if (!icon) - icon = efreet_icon_path_find(e_config->icon_theme, - "hires.jpg", - il_home_cfg->icon_size); - if (!icon) icon = strdup("DEFAULT"); - if (!label) label = strdup("???"); - - snprintf(buff, sizeof(buff), "%s / %s", plabel, label); + if (!desktop) continue; desks = eina_list_append(desks, desktop); efreet_desktop_ref(desktop); if (desktop) @@ -731,10 +695,7 @@ ecore_file_symlink(desktop->orig_path, buff); } num++; - if (label) free(label); - if (icon) free(icon); } - if (plabel) free(plabel); } } } |
From: Enlightenment S. <no-...@en...> - 2009-12-15 04:02:21
|
Log: Remove old code. Author: devilhorns Date: 2009-12-14 20:02:08 -0800 (Mon, 14 Dec 2009) New Revision: 44460 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-15 02:11:32 UTC (rev 44459) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-15 04:02:08 UTC (rev 44460) @@ -329,9 +329,8 @@ E_Zone *zone; char buff[PATH_MAX]; - if (!hwin) - hwin = E_OBJECT_ALLOC(Il_Home_Win, IL_HOME_WIN_TYPE, - _il_home_win_cb_free); + hwin = E_OBJECT_ALLOC(Il_Home_Win, IL_HOME_WIN_TYPE, + _il_home_win_cb_free); if (!hwin) return; con = e_container_current_get(e_manager_current_get()); |
From: Enlightenment S. <no-...@en...> - 2009-12-16 20:10:20
|
Log: Remove menu from home...not needed. Author: devilhorns Date: 2009-12-16 12:10:09 -0800 (Wed, 16 Dec 2009) New Revision: 44514 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-16 20:07:35 UTC (rev 44513) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-16 20:10:09 UTC (rev 44514) @@ -14,7 +14,6 @@ { E_Gadcon_Client *gcc; Evas_Object *o_btn; - E_Menu *menu; Eina_List *wins; }; struct _Il_Home_Win @@ -45,8 +44,6 @@ static Evas_Object *_gc_icon(E_Gadcon_Client_Class *cc, Evas *evas); static const char *_gc_id_new(E_Gadcon_Client_Class *cc); static void _il_home_btn_cb_click(void *data, void *data2); -static void _il_home_btn_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event); -static void _il_home_menu_cb_post(void *data, E_Menu *mn); static void _il_home_win_new(Instance *inst); static void _il_home_win_cb_free(Il_Home_Win *hwin); static void _il_home_win_cb_delete(E_Win *win); @@ -192,6 +189,7 @@ snprintf(buff, sizeof(buff), "%s/e-module-illume-home.edj", il_home_cfg->mod_dir); + inst = E_NEW(Instance, 1); inst->o_btn = e_widget_button_add(gc->evas, NULL, NULL, _il_home_btn_cb_click, inst, NULL); @@ -202,9 +200,6 @@ inst->gcc = e_gadcon_client_new(gc, name, id, style, inst->o_btn); inst->gcc->data = inst; - evas_object_event_callback_add(inst->o_btn, EVAS_CALLBACK_MOUSE_DOWN, - _il_home_btn_cb_mouse_down, inst); - _il_home_win_new(inst); instances = eina_list_append(instances, inst); @@ -219,18 +214,7 @@ if (!(inst = gcc->data)) return; instances = eina_list_remove(instances, inst); - if (inst->menu) - { - e_menu_post_deactivate_callback_set(inst->menu, NULL, NULL); - e_object_del(E_OBJECT(inst->menu)); - inst->menu = NULL; - } - if (inst->o_btn) - { - evas_object_event_callback_del(inst->o_btn, EVAS_CALLBACK_MOUSE_DOWN, - _il_home_btn_cb_mouse_down); - evas_object_del(inst->o_btn); - } + if (inst->o_btn) evas_object_del(inst->o_btn); EINA_LIST_FREE(inst->wins, hwin) e_object_del(E_OBJECT(hwin)); @@ -284,44 +268,6 @@ } static void -_il_home_btn_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event) -{ - Instance *inst; - Evas_Event_Mouse_Down *ev; - - ev = event; - if (ev->button != 3) return; - if (!(inst = data)) return; - if (!inst->menu) - { - E_Menu *mn; - E_Zone *zone; - int x = 0, y = 0; - - zone = e_util_zone_current_get(e_manager_current_get()); - mn = e_menu_new(); - inst->menu = mn; - e_menu_post_deactivate_callback_set(inst->menu, - _il_home_menu_cb_post, inst); - e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0); - e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &x, &y, NULL, NULL); - e_menu_activate_mouse(mn, zone, x + ev->output.x, y + ev->output.y, - 1, 1, E_MENU_POP_DIRECTION_AUTO, ev->timestamp); - } -} - -static void -_il_home_menu_cb_post(void *data, E_Menu *mn) -{ - Instance *inst; - - if (!(inst = data)) return; - if (!inst->menu) return; - e_object_del(E_OBJECT(inst->menu)); - inst->menu = NULL; -} - -static void _il_home_win_new(Instance *inst) { Il_Home_Win *hwin; |
From: Enlightenment S. <no-...@en...> - 2009-12-21 21:01:02
|
Log: No need for window resize. Layout handles that. Don't need zone now. Author: devilhorns Date: 2009-12-21 13:00:50 -0800 (Mon, 21 Dec 2009) New Revision: 44643 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-21 20:58:02 UTC (rev 44642) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-21 21:00:50 UTC (rev 44643) @@ -93,7 +93,7 @@ if (!il_home_config_init(m)) return NULL; - zone = e_util_container_zone_number_get(0, 0); + zone = e_util_zone_current_get(e_manager_current_get()); _il_home_apps_unpopulate(); _il_home_apps_populate(); @@ -272,7 +272,6 @@ { Il_Home_Win *hwin; E_Container *con; - E_Zone *zone; char buff[PATH_MAX]; hwin = E_OBJECT_ALLOC(Il_Home_Win, IL_HOME_WIN_TYPE, @@ -330,12 +329,10 @@ evas_object_propagate_events_set(hwin->o_fm, 0); evas_object_smart_callback_add(hwin->o_fm, "selected", _il_home_cb_selected, hwin); - zone = e_util_container_zone_number_get(0, 0); e_win_title_set(hwin->win, _("Illume Home")); e_win_name_class_set(hwin->win, "Illume-Home", "Illume-Home"); e_win_size_min_set(hwin->win, 48, 48); - e_win_resize(hwin->win, zone->w, 200); e_win_show(hwin->win); e_border_focus_set(hwin->win->border, 1, 1); |
From: Enlightenment S. <no-...@en...> - 2009-12-28 22:13:52
|
Log: Formatting. Author: devilhorns Date: 2009-12-28 14:13:42 -0800 (Mon, 28 Dec 2009) New Revision: 44751 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-28 22:12:23 UTC (rev 44750) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-28 22:13:42 UTC (rev 44751) @@ -470,8 +470,7 @@ E_Border *b; char buff[PATH_MAX]; - if (!desktop) return; - if (!desktop->exec) return; + if ((!desktop) || (!desktop->exec)) return; EINA_LIST_FOREACH(exes, l, exe) { |
From: Enlightenment S. <no-...@en...> - 2009-12-29 23:54:40
|
Log: Kill and apps that we have run from 'home' when we unload the module. (to cleanup nicely when we exit). Author: devilhorns Date: 2009-12-29 15:54:17 -0800 (Tue, 29 Dec 2009) New Revision: 44770 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-29 22:23:15 UTC (rev 44769) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-29 23:54:17 UTC (rev 44770) @@ -26,6 +26,7 @@ struct _Il_Home_Exec { Efreet_Desktop *desktop; + Ecore_Exe *exec; E_Border *border; Ecore_Timer *timeout; int startup_id; @@ -136,6 +137,12 @@ EINA_LIST_FREE(exes, exe) { + if (exe->exec) + { + ecore_exe_terminate(exe->exec); + ecore_exe_free(exe->exec); + exe->exec = NULL; + } if (exe->handle) { e_busycover_pop(busycover, exe->handle); @@ -474,7 +481,7 @@ EINA_LIST_FOREACH(exes, l, exe) { - if ((exe->desktop == desktop)) + if (exe->desktop == desktop) { if (exe->border) { @@ -505,6 +512,7 @@ exe->desktop = desktop; if (eins) { + exe->exec = eins->exe; exe->startup_id = eins->startup_id; exe->pid = ecore_exe_pid_get(eins->exe); } |
From: Enlightenment S. <no-...@en...> - 2009-12-30 01:20:15
|
Log: Don't listen on delete requests for home window. Author: devilhorns Date: 2009-12-29 17:20:08 -0800 (Tue, 29 Dec 2009) New Revision: 44773 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-30 01:17:04 UTC (rev 44772) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-30 01:20:08 UTC (rev 44773) @@ -47,7 +47,6 @@ static void _il_home_btn_cb_click(void *data, void *data2); static void _il_home_win_new(Instance *inst); static void _il_home_win_cb_free(Il_Home_Win *hwin); -static void _il_home_win_cb_delete(E_Win *win); static void _il_home_win_cb_resize(E_Win *win); static void _il_home_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y); static void _il_home_pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y); @@ -296,7 +295,6 @@ inst->wins = eina_list_append(inst->wins, hwin); - e_win_delete_callback_set(hwin->win, _il_home_win_cb_delete); e_win_resize_callback_set(hwin->win, _il_home_win_cb_resize); hwin->win->data = inst; @@ -365,29 +363,6 @@ } static void -_il_home_win_cb_delete(E_Win *win) -{ - Instance *inst; - Eina_List *l; - Il_Home_Win *hwin; - - if (!(inst = win->data)) return; - EINA_LIST_FOREACH(inst->wins, l, hwin) - { - if (hwin->win != win) - { - hwin = NULL; - continue; - } - else break; - } - if (!hwin) return; - inst->wins = eina_list_remove(inst->wins, hwin); - e_object_del(E_OBJECT(hwin)); - hwin = NULL; -} - -static void _il_home_win_cb_resize(E_Win *win) { Instance *inst; |
From: Enlightenment S. <no-...@en...> - 2009-12-30 02:33:17
|
Log: Add handler for creating new home windows when we get the client message. Check layout mode on startup and create another home window if needed. Author: devilhorns Date: 2009-12-29 18:33:09 -0800 (Tue, 29 Dec 2009) New Revision: 44777 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-30 02:06:59 UTC (rev 44776) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2009-12-30 02:33:09 UTC (rev 44777) @@ -15,6 +15,7 @@ E_Gadcon_Client *gcc; Evas_Object *o_btn; Eina_List *wins; + Ecore_Event_Handler *hdl; }; struct _Il_Home_Win { @@ -66,6 +67,7 @@ static int _il_home_win_cb_timeout(void *data); static int _il_home_border_add(void *data, int type, void *event); static int _il_home_border_remove(void *data, int type, void *event); +static int _il_home_cb_client_message(void *data, int type, void *event); /* local variables */ static Eina_List *instances = NULL; @@ -191,6 +193,8 @@ { Instance *inst; Evas_Object *icon; + Ecore_X_Window xwin; + Ecore_X_Illume_Mode mode; char buff[PATH_MAX]; snprintf(buff, sizeof(buff), "%s/e-module-illume-home.edj", @@ -208,6 +212,14 @@ _il_home_win_new(inst); + xwin = ecore_x_window_root_first_get(); + mode = ecore_x_e_illume_mode_get(xwin); + if (mode > ECORE_X_ILLUME_MODE_SINGLE) + _il_home_win_new(inst); + + inst->hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, + _il_home_cb_client_message, inst); + instances = eina_list_append(instances, inst); return inst->gcc; } @@ -221,7 +233,7 @@ if (!(inst = gcc->data)) return; instances = eina_list_remove(instances, inst); if (inst->o_btn) evas_object_del(inst->o_btn); - + if (inst->hdl) ecore_event_handler_del(inst->hdl); EINA_LIST_FREE(inst->wins, hwin) e_object_del(E_OBJECT(hwin)); @@ -348,8 +360,6 @@ static void _il_home_win_cb_free(Il_Home_Win *hwin) { - E_Exec_Instance *eins; - if (hwin->win->evas_win) e_drop_xdnd_register_set(hwin->win->evas_win, 0); if (hwin->o_bg) evas_object_del(hwin->o_bg); @@ -792,6 +802,11 @@ { if (exe->border == ev->border) { + if (exe->exec) + { + ecore_exe_free(exe->exec); + exe->exec = NULL; + } if (exe->handle) { e_busycover_pop(busycover, exe->handle); @@ -803,3 +818,16 @@ } return 1; } + +static int +_il_home_cb_client_message(void *data, int type, void *event) +{ + Ecore_X_Event_Client_Message *ev; + Instance *inst; + + ev = event; + if (ev->message_type != ECORE_X_ATOM_E_ILLUME_HOME) return 1; + if (!(inst = data)) return 1; + _il_home_win_new(inst); + return 1; +} |
From: Enlightenment S. <no-...@en...> - 2010-01-13 23:40:30
|
Log: Recreate new home windows on initial load (this handles dual mode also). Rework/Re-implement busycover windows per home window so we can show launching status. Author: devilhorns Date: 2010-01-13 15:40:23 -0800 (Wed, 13 Jan 2010) New Revision: 45097 Modified: trunk/e/src/modules/illume-home/Makefile.am trunk/e/src/modules/illume-home/e-module-illume-home.edj trunk/e/src/modules/illume-home/e_busycover.c trunk/e/src/modules/illume-home/e_busycover.h trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/Makefile.am =================================================================== --- trunk/e/src/modules/illume-home/Makefile.am 2010-01-13 23:23:49 UTC (rev 45096) +++ trunk/e/src/modules/illume-home/Makefile.am 2010-01-13 23:40:23 UTC (rev 45097) @@ -20,10 +20,10 @@ pkg_LTLIBRARIES = module.la module_la_SOURCES = e_mod_main.c \ e_mod_main.h \ + e_mod_config.c \ + e_mod_config.h \ e_busycover.c \ - e_busycover.h \ - e_mod_config.c \ - e_mod_config.h + e_busycover.h module_la_LIBADD = @e_libs@ @dlopen_libs@ module_la_LDFLAGS = -module -avoid-version Modified: trunk/e/src/modules/illume-home/e-module-illume-home.edj =================================================================== (Binary files differ) Modified: trunk/e/src/modules/illume-home/e_busycover.c =================================================================== --- trunk/e/src/modules/illume-home/e_busycover.c 2010-01-13 23:23:49 UTC (rev 45096) +++ trunk/e/src/modules/illume-home/e_busycover.c 2010-01-13 23:40:23 UTC (rev 45097) @@ -1,172 +1,82 @@ #include "e.h" #include "e_busycover.h" +#include "e_mod_config.h" /* local function prototypes */ -static void _e_busycover_cb_free(E_Busycover *esw); -static void _e_busycover_win_cb_resize(E_Win *win); -static int _e_busycover_zone_cb_move_resize(void *data, int type, void *event); -static Evas_Object *_theme_obj_new(Evas *evas, const char *custom_dir, const char *group); +static void _e_busycover_cb_free(E_Busycover *cover); -/* local variables */ -static Eina_List *busycovers = NULL; - -/* public functions */ -EAPI int -e_busycover_init(void) -{ - return 1; -} - -EAPI int -e_busycover_shutdown(void) -{ - return 1; -} - EAPI E_Busycover * -e_busycover_new(E_Zone *zone, const char *themedir) +e_busycover_new(E_Win *win) { - E_Busycover *esw; - Ecore_X_Window_State states[2]; + E_Busycover *cover; + char buff[PATH_MAX]; - esw = E_OBJECT_ALLOC(E_Busycover, E_BUSYCOVER_TYPE, _e_busycover_cb_free); - if (!esw) return NULL; + cover = E_OBJECT_ALLOC(E_Busycover, E_BUSYCOVER_TYPE, _e_busycover_cb_free); + if (!cover) return NULL; + snprintf(buff, sizeof(buff), "%s/e-module-illume-home.edj", + il_home_cfg->mod_dir); - esw->zone = zone; - if (themedir) esw->themedir = eina_stringshare_add(themedir); - - esw->win = e_win_new(zone->container); - esw->win->data = esw; - states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR; - states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER; - e_win_title_set(esw->win, _("Illume Busycover")); - e_win_name_class_set(esw->win, "Illume-Busycover", "Illume-Busycover"); - e_win_resize_callback_set(esw->win, _e_busycover_win_cb_resize); - ecore_x_icccm_hints_set(esw->win->evas_win, 0, 0, 0, 0, 0, 0, 0); - ecore_x_netwm_window_state_set(esw->win->evas_win, states, 2); - ecore_x_netwm_window_type_set(esw->win->evas_win, ECORE_X_WINDOW_TYPE_SPLASH); - - esw->o_base = _theme_obj_new(e_win_evas_get(esw->win), esw->themedir, - "modules/illume-home/busycover/default"); - evas_object_move(esw->o_base, 0, 0); - evas_object_show(esw->o_base); - edje_object_part_text_set(esw->o_base, "e.text.title", "LOADING"); - - ecore_evas_alpha_set(esw->win->ecore_evas, 1); - - busycovers = eina_list_append(busycovers, esw); - - esw->handlers = - eina_list_append(esw->handlers, - ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE, - _e_busycover_zone_cb_move_resize, - esw)); - return esw; + cover->o_base = edje_object_add(e_win_evas_get(win)); + if (!e_theme_edje_object_set(cover->o_base, + "base/theme/modules/illume-home", + "modules/illume-home/busycover")) + edje_object_file_set(cover->o_base, buff, "modules/illume-home/busycover"); + edje_object_part_text_set(cover->o_base, "e.text.title", _("LOADING")); + evas_object_move(cover->o_base, win->x, win->y); + evas_object_resize(cover->o_base, win->w, win->h); + evas_object_layer_set(cover->o_base, 999); + return cover; } EAPI E_Busycover_Handle * -e_busycover_push(E_Busycover *esw, const char *msg, const char *icon) +e_busycover_push(E_Busycover *cover, const char *msg, const char *icon) { - E_Busycover_Handle *h; + E_Busycover_Handle *handle; - E_OBJECT_CHECK(esw); - E_OBJECT_TYPE_CHECK_RETURN(esw, E_BUSYCOVER_TYPE, NULL); - h = E_NEW(E_Busycover_Handle, 1); - h->busycover = esw; - if (msg) h->msg = eina_stringshare_add(msg); - if (icon) h->icon = eina_stringshare_add(icon); - esw->handles = eina_list_prepend(esw->handles, h); - edje_object_part_text_set(esw->o_base, "e.text.label", h->msg); - /* FIXME: handle icon */ + E_OBJECT_CHECK(cover); + E_OBJECT_TYPE_CHECK_RETURN(cover, E_BUSYCOVER_TYPE, NULL); - e_win_layer_set(esw->win, 9999); - e_win_show(esw->win); - e_border_zone_set(esw->win->border, esw->zone); - -// evas_object_show(esw->o_base); -// evas_object_raise(esw->o_base); - return h; + handle = E_NEW(E_Busycover_Handle, 1); + handle->cover = cover; + if (msg) handle->msg = eina_stringshare_add(msg); + if (icon) handle->icon = eina_stringshare_add(icon); + cover->handles = eina_list_append(cover->handles, handle); + edje_object_part_text_set(cover->o_base, "e.text.title", msg); + evas_object_show(cover->o_base); + return handle; } EAPI void -e_busycover_pop(E_Busycover *esw, E_Busycover_Handle *handle) +e_busycover_pop(E_Busycover *cover, E_Busycover_Handle *handle) { - E_OBJECT_CHECK(esw); - E_OBJECT_TYPE_CHECK(esw, E_BUSYCOVER_TYPE); - if (!eina_list_data_find(esw->handles, handle)) return; - esw->handles = eina_list_remove(esw->handles, handle); + E_OBJECT_CHECK(cover); + E_OBJECT_TYPE_CHECK(cover, E_BUSYCOVER_TYPE); + if (!eina_list_data_find(cover->handles, handle)) return; + cover->handles = eina_list_remove(cover->handles, handle); if (handle->msg) eina_stringshare_del(handle->msg); if (handle->icon) eina_stringshare_del(handle->icon); E_FREE(handle); - if (esw->handles) + if (cover->handles) { - handle = esw->handles->data; - edje_object_part_text_set(esw->o_base, "e.text.label", handle->msg); + handle = cover->handles->data; + edje_object_part_text_set(cover->o_base, "e.text.title", handle->msg); } else - e_object_del(E_OBJECT(esw)); + evas_object_hide(cover->o_base); } -/* local functions */ -static void -_e_busycover_cb_free(E_Busycover *esw) +EAPI void +e_busycover_resize(E_Busycover *cover, int w, int h) { - Ecore_Event_Handler *handle; - - if (esw->o_base) evas_object_del(esw->o_base); - e_object_del(E_OBJECT(esw->win)); - esw->win = NULL; - busycovers = eina_list_remove(busycovers, esw); - EINA_LIST_FREE(esw->handlers, handle) - ecore_event_handler_del(handle); - if (esw->themedir) eina_stringshare_del(esw->themedir); - E_FREE(esw); + E_OBJECT_CHECK(cover); + E_OBJECT_TYPE_CHECK(cover, E_BUSYCOVER_TYPE); + evas_object_resize(cover->o_base, w, h); } +/* local function prototypes */ static void -_e_busycover_win_cb_resize(E_Win *win) +_e_busycover_cb_free(E_Busycover *cover) { - E_Busycover *esw; - - if (!(esw = win->data)) return; - evas_object_resize(esw->o_base, win->w, win->h); + if (cover->o_base) evas_object_del(cover->o_base); + E_FREE(cover); } - -static int -_e_busycover_zone_cb_move_resize(void *data, int type, void *event) -{ - E_Event_Zone_Move_Resize *ev; - E_Busycover *esw; - - ev = event; - esw = data; - if (esw->zone == ev->zone) - { - int x, y, w, h; - - e_zone_useful_geometry_get(esw->zone, &x, &y, &w, &h); - e_win_move_resize(esw->win, x, y, w, h); - } - return 1; -} - -static Evas_Object * -_theme_obj_new(Evas *evas, const char *custom_dir, const char *group) -{ - Evas_Object *o; - - o = edje_object_add(evas); - if (!e_theme_edje_object_set(o, "base/theme/modules/illume-home", group)) - { - if (custom_dir) - { - char buff[PATH_MAX]; - - snprintf(buff, sizeof(buff), "%s/e-module-illume-home.edj", - custom_dir); - edje_object_file_set(o, buff, group); - } - } - return o; -} - Modified: trunk/e/src/modules/illume-home/e_busycover.h =================================================================== --- trunk/e/src/modules/illume-home/e_busycover.h 2010-01-13 23:23:49 UTC (rev 45096) +++ trunk/e/src/modules/illume-home/e_busycover.h 2010-01-13 23:40:23 UTC (rev 45097) @@ -1,7 +1,7 @@ #ifndef E_BUSYCOVER_H -#define E_BUSYCOVER_H +# define E_BUSYCOVER_H -#define E_BUSYCOVER_TYPE 0xE1b0782 +# define E_BUSYCOVER_TYPE 0xE1b0782 typedef struct _E_Busycover E_Busycover; typedef struct _E_Busycover_Handle E_Busycover_Handle; @@ -9,23 +9,18 @@ struct _E_Busycover { E_Object e_obj_inherit; - E_Zone *zone; - E_Win *win; Evas_Object *o_base; - Eina_List *handlers, *handles; - const char *themedir; + Eina_List *handles; }; - struct _E_Busycover_Handle { - E_Busycover *busycover; + E_Busycover *cover; const char *msg, *icon; }; -EAPI int e_busycover_init(void); -EAPI int e_busycover_shutdown(void); -EAPI E_Busycover *e_busycover_new(E_Zone *zone, const char *themedir); -EAPI E_Busycover_Handle *e_busycover_push(E_Busycover *esw, const char *msg, const char *icon); -EAPI void e_busycover_pop(E_Busycover *esw, E_Busycover_Handle *handle); +EAPI E_Busycover *e_busycover_new(E_Win *win); +EAPI E_Busycover_Handle *e_busycover_push(E_Busycover *cover, const char *msg, const char *icon); +EAPI void e_busycover_pop(E_Busycover *cover, E_Busycover_Handle *handle); +EAPI void e_busycover_resize(E_Busycover *cover, int w, int h); #endif Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-13 23:23:49 UTC (rev 45096) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-13 23:40:23 UTC (rev 45097) @@ -22,16 +22,16 @@ E_Object e_obj_inherit; E_Win *win; - Evas_Object *o_bg, *o_sf, *o_fm; + Evas_Object *o_bg, *o_sf, *o_fm, *o_cover; E_Busycover *cover; }; struct _Il_Home_Exec { + E_Busycover *cover; Efreet_Desktop *desktop; Ecore_Exe *exec; E_Border *border; Ecore_Timer *timeout; - E_Busycover *cover; int startup_id; pid_t pid; void *handle; @@ -95,8 +95,6 @@ _il_home_apps_unpopulate(); _il_home_apps_populate(); - e_busycover_init(); - handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_DESKTOP_LIST_CHANGE, @@ -145,14 +143,11 @@ exe->handle = NULL; } if (exe->timeout) ecore_timer_del(exe->timeout); - exe->cover = NULL; E_FREE(exe); } _il_home_apps_unpopulate(); - e_busycover_shutdown(); - EINA_LIST_FREE(handlers, handle) ecore_event_handler_del(handle); @@ -192,18 +187,18 @@ inst->o_btn = e_widget_button_add(gc->evas, NULL, NULL, _il_home_btn_cb_click, inst, NULL); icon = e_icon_add(evas_object_evas_get(inst->o_btn)); - e_icon_file_edje_set(icon, buff, "btn_icon"); + e_icon_file_edje_set(icon, buff, "icon"); e_widget_button_icon_set(inst->o_btn, icon); inst->gcc = e_gadcon_client_new(gc, name, id, style, inst->o_btn); inst->gcc->data = inst; -// _il_home_win_new(inst); + _il_home_win_new(inst); xwin = inst->gcc->gadcon->zone->black_win; mode = ecore_x_e_illume_mode_get(xwin); -// if (mode > ECORE_X_ILLUME_MODE_SINGLE) -// _il_home_win_new(inst); + if (mode > ECORE_X_ILLUME_MODE_SINGLE) + _il_home_win_new(inst); inst->hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _il_home_cb_client_message, inst); @@ -305,12 +300,6 @@ e_win_name_class_set(hwin->win, "Illume-Home", "Illume-Home"); e_win_resize_callback_set(hwin->win, _il_home_win_cb_resize); - if (!hwin->cover) - { - hwin->cover = - e_busycover_new(inst->gcc->gadcon->zone, il_home_cfg->mod_dir); - } - snprintf(buff, sizeof(buff), "%s/e-module-illume-home.edj", il_home_cfg->mod_dir); @@ -347,6 +336,8 @@ evas_object_smart_callback_add(hwin->o_fm, "selected", _il_home_cb_selected, hwin); + hwin->cover = e_busycover_new(hwin->win); + e_win_move_resize(hwin->win, zone->x, zone->y, zone->w, 100); e_win_show(hwin->win); e_border_zone_set(hwin->win->border, zone); @@ -362,6 +353,10 @@ { if (hwin->win->evas_win) e_drop_xdnd_register_set(hwin->win->evas_win, 0); + + if (hwin->cover) e_object_del(E_OBJECT(hwin->cover)); + hwin->cover = NULL; + if (hwin->o_bg) evas_object_del(hwin->o_bg); hwin->o_bg = NULL; if (hwin->o_sf) evas_object_del(hwin->o_sf); @@ -401,6 +396,11 @@ if (hwin->win) evas_object_resize(hwin->o_sf, hwin->win->w, hwin->win->h); } + if (hwin->cover) + { + if (hwin->win) + e_busycover_resize(hwin->cover, hwin->win->w, hwin->win->h); + } } static void @@ -492,6 +492,7 @@ exe = E_NEW(Il_Home_Exec, 1); if (!exe) return; + exe->cover = hwin->cover; eins = e_exec(hwin->win->border->zone, desktop, NULL, NULL, "illume-home"); exe->desktop = desktop; @@ -504,10 +505,8 @@ } exe->timeout = ecore_timer_add(20.0, _il_home_win_cb_timeout, exe); - exe->cover = hwin->cover; snprintf(buff, sizeof(buff), "Starting %s", desktop->name); - exe->handle = e_busycover_push(exe->cover, buff, NULL); - + exe->handle = e_busycover_push(hwin->cover, buff, NULL); exes = eina_list_append(exes, exe); } @@ -679,7 +678,6 @@ } exes = eina_list_remove_list(exes, l); if (exe->timeout) ecore_timer_del(exe->timeout); - exe->cover = NULL; E_FREE(exe); return 1; } @@ -751,8 +749,11 @@ Il_Home_Exec *exe; if (!(exe = data)) return 1; - if (exe->handle) e_busycover_pop(exe->cover, exe->handle); - exe->handle = NULL; + if (exe->handle) + { + e_busycover_pop(exe->cover, exe->handle); + exe->handle = NULL; + } if (!exe->border) { exes = eina_list_remove(exes, exe); |
From: Enlightenment S. <no-...@en...> - 2010-01-16 18:40:47
|
Log: oops, re-enable new home windows on module startup. Author: devilhorns Date: 2010-01-16 10:40:41 -0800 (Sat, 16 Jan 2010) New Revision: 45234 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-16 18:40:03 UTC (rev 45233) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-16 18:40:41 UTC (rev 45234) @@ -192,12 +192,12 @@ inst->gcc = e_gadcon_client_new(gc, name, id, style, inst->o_btn); inst->gcc->data = inst; -// _il_home_win_new(inst); + _il_home_win_new(inst); xwin = inst->gcc->gadcon->zone->black_win; mode = ecore_x_e_illume_mode_get(xwin); -// if (mode > ECORE_X_ILLUME_MODE_SINGLE) -// _il_home_win_new(inst); + if (mode > ECORE_X_ILLUME_MODE_SINGLE) + _il_home_win_new(inst); inst->hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _il_home_cb_client_message, inst); |
From: Enlightenment S. <no-...@en...> - 2010-01-19 02:17:22
|
Log: Move borders to proper zone (when launched) if needed. Author: devilhorns Date: 2010-01-18 18:17:14 -0800 (Mon, 18 Jan 2010) New Revision: 45311 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-19 01:01:39 UTC (rev 45310) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-19 02:17:14 UTC (rev 45311) @@ -31,6 +31,7 @@ Efreet_Desktop *desktop; Ecore_Exe *exec; E_Border *border; + E_Zone *zone; Ecore_Timer *timeout; int startup_id; pid_t pid; @@ -495,6 +496,7 @@ eins = e_exec(hwin->win->border->zone, desktop, NULL, NULL, "illume-home"); exe->desktop = desktop; + exe->zone = hwin->win->border->zone; if (eins) { exe->exec = eins->exe; @@ -778,6 +780,11 @@ (exe->pid == ev->border->client.netwm.pid)) { exe->border = ev->border; + if (exe->border->zone != exe->zone) + { + if (exe->border->zone != exe->zone) + e_border_zone_set(exe->border, exe->zone); + } if (exe->handle) { e_busycover_pop(exe->cover, exe->handle); @@ -788,6 +795,11 @@ break; } } + else + { + if (exe->border->zone != exe->zone) + e_border_zone_set(exe->border, exe->zone); + } } return 1; } |
From: Enlightenment S. <no-...@en...> - 2010-01-19 02:58:24
|
Log: Better way to set zone (faster as it does not send certain events). Author: devilhorns Date: 2010-01-18 18:58:18 -0800 (Mon, 18 Jan 2010) New Revision: 45315 Modified: trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-19 02:45:27 UTC (rev 45314) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-19 02:58:18 UTC (rev 45315) @@ -782,8 +782,11 @@ exe->border = ev->border; if (exe->border->zone != exe->zone) { - if (exe->border->zone != exe->zone) - e_border_zone_set(exe->border, exe->zone); + exe->border->zone = exe->zone; + exe->border->x = exe->zone->x; + exe->border->y = exe->zone->y; + exe->border->changes.pos = 1; + exe->border->changed = 1; } if (exe->handle) { @@ -798,7 +801,13 @@ else { if (exe->border->zone != exe->zone) - e_border_zone_set(exe->border, exe->zone); + { + exe->border->zone = exe->zone; + exe->border->x = exe->zone->x; + exe->border->y = exe->zone->y; + exe->border->changes.pos = 1; + exe->border->changed = 1; + } } } return 1; |
From: Enlightenment S. <no-...@en...> - 2010-01-22 22:52:34
|
Log: Cleanup busycover handles when we close. Add some printfs for home launching two apps. Author: devilhorns Date: 2010-01-22 14:52:28 -0800 (Fri, 22 Jan 2010) New Revision: 45469 Modified: trunk/e/src/modules/illume-home/e_busycover.c trunk/e/src/modules/illume-home/e_mod_main.c Modified: trunk/e/src/modules/illume-home/e_busycover.c =================================================================== --- trunk/e/src/modules/illume-home/e_busycover.c 2010-01-22 22:51:31 UTC (rev 45468) +++ trunk/e/src/modules/illume-home/e_busycover.c 2010-01-22 22:52:28 UTC (rev 45469) @@ -77,6 +77,16 @@ static void _e_busycover_cb_free(E_Busycover *cover) { + Eina_List *l; + E_Busycover_Handle *handle; + + EINA_LIST_FREE(cover->handles, handle) + { + if (handle->msg) eina_stringshare_del(handle->msg); + if (handle->icon) eina_stringshare_del(handle->icon); + E_FREE(handle); + } + if (cover->o_base) evas_object_del(cover->o_base); E_FREE(cover); } Modified: trunk/e/src/modules/illume-home/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-22 22:51:31 UTC (rev 45468) +++ trunk/e/src/modules/illume-home/e_mod_main.c 2010-01-22 22:52:28 UTC (rev 45469) @@ -435,8 +435,8 @@ E_Fm2_Icon_Info *ici; if (!(hwin = data)) return; - selected = e_fm2_selected_list_get(hwin->o_fm); - if (!selected) return; + if (!(selected = e_fm2_selected_list_get(hwin->o_fm))) return; + printf("Selected Count: %d\n", eina_list_count(selected)); EINA_LIST_FREE(selected, ici) { Efreet_Desktop *desktop; @@ -445,6 +445,7 @@ { if (ici->real_link) { + printf("Selected: %s\n", ici->real_link); desktop = efreet_desktop_get(ici->real_link); if (desktop) _il_home_desktop_run(hwin, desktop); @@ -598,9 +599,9 @@ if (menu) { Eina_List *l, *ll; - char buff[PATH_MAX]; Efreet_Menu *entry, *subentry; Eina_List *settings, *sys, *kbd; + char buff[PATH_MAX]; int num = 0; settings = efreet_util_desktop_category_list("Settings"); @@ -612,6 +613,7 @@ EINA_LIST_FOREACH(entry->entries, ll, subentry) { Efreet_Desktop *desktop; + if (subentry->type != EFREET_MENU_ENTRY_DESKTOP) continue; if (!(desktop = subentry->desktop)) continue; if ((settings) && (sys) && |