Enlightenment CVS committal Author : englebass Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_border.h e_exec.c e_exec.h e_fm.c e_int_border_menu.c e_int_menus.c e_utils.c e_utils.h Log Message: Convert borders to efreet. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.575 retrieving revision 1.576 diff -u -3 -r1.575 -r1.576 --- e_border.c 25 Mar 2007 13:49:29 -0000 1.575 +++ e_border.c 25 Mar 2007 17:23:48 -0000 1.576 @@ -169,7 +169,9 @@ handlers = evas_list_append(handlers, ecore_event_handler_add(E_EVENT_POINTER_WARP, _e_border_cb_pointer_warp, NULL)); +#if 0 e_app_change_callback_add(_e_border_app_change, NULL); +#endif E_EVENT_BORDER_ADD = ecore_event_type_new(); E_EVENT_BORDER_REMOVE = ecore_event_type_new(); @@ -205,7 +207,9 @@ ecore_event_handler_del(h); } +#if 0 e_app_change_callback_del(_e_border_app_change, NULL); +#endif return 1; } @@ -2572,15 +2576,9 @@ e_border_icon_add(E_Border *bd, Evas *evas) { Evas_Object *o; - E_App *a = NULL; - + E_OBJECT_CHECK_RETURN(bd, NULL); E_OBJECT_TYPE_CHECK_RETURN(bd, E_BORDER_TYPE, NULL); - if (bd->app) - { - e_object_unref(E_OBJECT(bd->app)); - bd->app = NULL; - } o = NULL; if (bd->internal) @@ -2620,20 +2618,9 @@ } if (!o) { - if ((bd->client.icccm.name) && (bd->client.icccm.class)) - { - a = e_app_border_find(bd); - } - if (!a) - { - a = e_app_launch_id_pid_find(bd->client.netwm.startup_id, - bd->client.netwm.pid); - } - if (a) + if (bd->desktop) { - o = e_app_icon_add(a, evas); - bd->app = a; - e_object_ref(E_OBJECT(bd->app)); + o = e_util_desktop_icon_add(bd->desktop, "24x24", evas); } else if (bd->client.netwm.icons) { @@ -3062,12 +3049,7 @@ e_object_unref(E_OBJECT(bd->cur_mouse_action)); bd->cur_mouse_action = NULL; } - if (bd->app) - { - e_object_unref(E_OBJECT(bd->app)); - bd->app = NULL; - } - + E_FREE(bd->shape_rects); bd->shape_rects_num = 0; /* @@ -6403,6 +6385,11 @@ evas_object_del(bd->icon_object); bd->icon_object = NULL; } + bd->desktop = efreet_util_desktop_wm_class_find(bd->client.icccm.name, + bd->client.icccm.class); + if (!bd->desktop) + bd->desktop = e_exec_startup_id_pid_find(bd->client.netwm.startup_id, + bd->client.netwm.pid); bd->icon_object = e_border_icon_add(bd, bd->bg_evas); if ((bd->focused) && (bd->icon_object)) edje_object_signal_emit(bd->icon_object, "e,state,focused", "e"); @@ -7187,6 +7174,7 @@ return id; } +#if 0 static void _e_border_app_change(void *data, E_App *app, E_App_Change change) { @@ -7223,6 +7211,7 @@ break; } } +#endif static void _e_border_pointer_resize_begin(E_Border *bd) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.156 retrieving revision 1.157 diff -u -3 -r1.156 -r1.157 --- e_border.h 2 Mar 2007 17:00:20 -0000 1.156 +++ e_border.h 25 Mar 2007 17:23:48 -0000 1.157 @@ -454,7 +454,7 @@ E_Border *parent; Evas_List *transients; - E_App *app; + Efreet_Desktop *desktop; E_Pointer *pointer; }; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_exec.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_exec.c 25 Mar 2007 10:16:05 -0000 1.4 +++ e_exec.c 25 Mar 2007 17:23:48 -0000 1.5 @@ -14,6 +14,7 @@ typedef struct _E_Exec_Launch E_Exec_Launch; typedef struct _E_Exec_Instance E_Exec_Instance; +typedef struct _E_Exec_Search E_Exec_Search; struct _E_Exec_Launch { @@ -25,11 +26,18 @@ { Efreet_Desktop *desktop; Ecore_Exe *exe; - int launch_id; + int startup_id; double launch_time; Ecore_Timer *expire_timer; }; +struct _E_Exec_Search +{ + Efreet_Desktop *desktop; + int startup_id; + pid_t pid; +}; + struct _E_Config_Dialog_Data { Efreet_Desktop *desktop; @@ -49,6 +57,8 @@ static int _e_exec_cb_expire_timer(void *data); static int _e_exec_cb_exit(void *data, int type, void *event); +static Evas_Bool _e_exec_startup_id_pid_find(Evas_Hash *hash, const char *key, void *value, void *data); + static void _e_exec_error_dialog(Efreet_Desktop *desktop, const char *exec, Ecore_Exe_Event_Del *event, Ecore_Exe_Event_Data *error, Ecore_Exe_Event_Data *read); static void _fill_data(E_Config_Dialog_Data *cfdata); static void *_create_data(E_Config_Dialog *cfd); @@ -122,6 +132,18 @@ return 1; } +EAPI Efreet_Desktop * +e_exec_startup_id_pid_find(int startup_id, pid_t pid) +{ + E_Exec_Search search; + + search.desktop = NULL; + search.startup_id = startup_id; + search.pid = pid; + evas_hash_foreach(e_exec_instances, _e_exec_startup_id_pid_find, &search); + return search.desktop; +} + /* local subsystem functions */ static void _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining) @@ -218,7 +240,7 @@ inst->desktop = desktop; inst->exe = exe; - inst->launch_id = startup_id; + inst->startup_id = startup_id; inst->launch_time = ecore_time_get(); inst->expire_timer = ecore_timer_add(10.0, _e_exec_cb_expire_timer, inst); @@ -303,6 +325,29 @@ e_exec_start_pending = evas_list_remove(e_exec_start_pending, inst->desktop); if (inst->expire_timer) ecore_timer_del(inst->expire_timer); free(inst); + return 1; +} + +static Evas_Bool +_e_exec_startup_id_pid_find(Evas_Hash *hash, const char *key, void *value, void *data) +{ + E_Exec_Search *search; + Evas_List *instances, *l; + + search = data; + instances = value; + for (l = instances; l; l = l->next) + { + E_Exec_Instance *inst; + + inst = l->data; + if (((search->startup_id > 0) && (search->startup_id == inst->startup_id)) || + ((search->pid > 1) && (search->pid == ecore_exe_pid_get(inst->exe)))) + { + search->desktop = inst->desktop; + return 0; + } + } return 1; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_exec.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_exec.h 24 Mar 2007 21:23:48 -0000 1.2 +++ e_exec.h 25 Mar 2007 17:23:49 -0000 1.3 @@ -11,5 +11,7 @@ EAPI int e_exec_shutdown(void); EAPI int e_exec(E_Zone *zone, Efreet_Desktop *desktop, const char *exec, Ecore_List *files, const char *launch_method); +EAPI Efreet_Desktop *e_exec_startup_id_pid_find(int startup_id, pid_t pid); + #endif #endif =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v retrieving revision 1.138 retrieving revision 1.139 diff -u -3 -r1.138 -r1.139 --- e_fm.c 25 Mar 2007 14:12:50 -0000 1.138 +++ e_fm.c 25 Mar 2007 17:23:49 -0000 1.139 @@ -769,7 +769,7 @@ e_fm2_window_object_set(Evas_Object *obj, E_Object *eobj) { E_Fm2_Smart_Data *sd; - const char *drop[] = { "enlightenment/eapp", "enlightenment/border", "text/uri-list" }; + const char *drop[] = { "enlightenment/desktop", "enlightenment/border", "text/uri-list" }; sd = evas_object_smart_data_get(obj); if (!sd) return; // safety =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_border_menu.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -3 -r1.58 -r1.59 --- e_int_border_menu.c 4 Mar 2007 07:03:10 -0000 1.58 +++ e_int_border_menu.c 25 Mar 2007 17:23:49 -0000 1.59 @@ -16,8 +16,6 @@ static void _e_border_menu_cb_unmaximize(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_icon_add(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_icon_add_pre(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_prop(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi); @@ -254,6 +252,7 @@ "e/widgets/border/default/skip_winlist"); } +#if 0 if (!bd->internal) { mi = e_menu_item_new(m); @@ -272,11 +271,8 @@ e_menu_item_label_set(mi, _("Create Icon")); e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, bd); } - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Add App To Launcher")); - e_menu_item_submenu_pre_callback_set(mi, _e_border_menu_cb_icon_add_pre, bd); - e_util_menu_item_edje_icon_set(mi, "enlightenment/applications"); } +#endif mi = e_menu_item_new(m); e_menu_item_separator_set(mi, 1); @@ -535,6 +531,7 @@ } } +#if 0 static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -621,74 +618,7 @@ "change.")); } } - -static void -_e_border_menu_cb_icon_add(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_App *a, *bar_apps; - E_Border *bd; - Evas_List *l; - char buf[4096]; - int found = 0; - - bd = e_object_data_get(E_OBJECT(m)); - a = bd->app; - if (!a) - return; - - snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s", e_user_homedir_get(), (char *)data); - bar_apps = e_app_new(buf, 0); - if (bar_apps) - e_app_subdir_scan(bar_apps, 0); - for (l = bar_apps->subapps; l; l = l->next) - { - E_App *ap; - - ap = l->data; - if (!ap) continue; - if (!e_app_valid_exe_get(ap)) continue; - if (!strcmp(ap->name, a->name)) - { - found = 1; - break; - } - } - if (!found) - e_app_list_append(a, bar_apps); -} - -static void -_e_border_menu_cb_icon_add_pre(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Menu *subm; - E_Menu_Item *submi; - E_Border *bd; - Ecore_List *dirs; - char buf[4096], *file; - - bd = data; - - snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar", e_user_homedir_get()); - dirs = ecore_file_ls(buf); - if (!dirs) return; - - subm = e_menu_new(); - while ((file = ecore_list_next(dirs))) - { - if (file[0] == '.') continue; - snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s", - e_user_homedir_get(), file); - if (ecore_file_is_dir(buf)) - { - submi = e_menu_item_new(subm); - e_menu_item_label_set(submi, file); - e_menu_item_callback_set(submi, _e_border_menu_cb_icon_add, file); - } - } - - e_object_data_set(E_OBJECT(subm), bd); - e_menu_item_submenu_set(mi, subm); -} +#endif static void _e_border_menu_cb_prop(void *data, E_Menu *m, E_Menu_Item *mi) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.205 retrieving revision 1.206 diff -u -3 -r1.205 -r1.206 --- e_int_menus.c 24 Mar 2007 22:58:40 -0000 1.205 +++ e_int_menus.c 25 Mar 2007 17:23:49 -0000 1.206 @@ -1368,7 +1368,6 @@ for (l = borders; l; l = l->next) { E_Border *bd = l->data; - E_App *a; const char *title = ""; title = e_border_name_get(bd); @@ -1381,8 +1380,7 @@ e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "lost_clients_menu"); e_menu_item_callback_set(mi, _e_int_menus_lost_clients_item_cb, bd); - a = bd->app; - if (a) e_app_icon_add_to_menu_item(a, mi); + if (bd->desktop) e_util_desktop_menu_item_icon_add(bd->desktop, "24x24", mi); } e_object_free_attach_func_set(E_OBJECT(m), _e_int_menus_lost_clients_free_hook); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.c,v retrieving revision 1.61 retrieving revision 1.62 diff -u -3 -r1.61 -r1.62 --- e_utils.c 24 Mar 2007 19:18:20 -0000 1.61 +++ e_utils.c 25 Mar 2007 17:23:49 -0000 1.62 @@ -861,6 +861,33 @@ return NULL; } +EAPI void +e_util_desktop_menu_item_icon_add(Efreet_Desktop *desktop, const char *size, E_Menu_Item *mi) +{ + const char *path = NULL; + + if ((!desktop) || (!desktop->icon)) return; + + if (desktop->icon[0] == '/') path = desktop->icon; + else path = efreet_icon_path_find(e_config->icon_theme, desktop->icon, size); + + if (path) + { + const char *ext; + + ext = strrchr(path, '.'); + if (ext) + { + if (strcmp(ext, ".edj") == 0) + e_menu_item_icon_edje_set(mi, path, "icon"); + else + e_menu_item_icon_file_set(mi, path); + } + else + e_menu_item_icon_file_set(mi, path); + } +} + /* local subsystem functions */ static void _e_util_container_fake_mouse_up_cb(void *data) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.h,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- e_utils.h 24 Mar 2007 19:18:20 -0000 1.32 +++ e_utils.h 25 Mar 2007 17:23:49 -0000 1.33 @@ -51,6 +51,7 @@ EAPI void e_util_library_path_restore(void); EAPI Evas_Object *e_util_icon_add(const char *path, Evas *evas); EAPI Evas_Object *e_util_desktop_icon_add(Efreet_Desktop *desktop, const char *size, Evas *evas); +EAPI void e_util_desktop_menu_item_icon_add(Efreet_Desktop *desktop, const char *size, E_Menu_Item *mi); #endif #endif ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs