Enlightenment CVS committal Author : metrics Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/ibar Modified Files: e_mod_main.c Log Message: Allow dropping of icons from borders that don't have a corresponding .desktop file. =================================================================== RCS file: /cvs/e/e17/apps/e/src/modules/ibar/e_mod_main.c,v retrieving revision 1.159 retrieving revision 1.160 diff -u -3 -r1.159 -r1.160 --- e_mod_main.c 18 Nov 2006 04:56:12 -0000 1.159 +++ e_mod_main.c 2 Dec 2006 10:15:32 -0000 1.160 @@ -1239,21 +1239,50 @@ } if (!app) { - E_Dialog *dia; + char *bname = NULL, *bclass = NULL; + char path[4096]; + const char *homedir; + + homedir = e_user_homedir_get(); - dia = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_e_mod_ibar_error_icon_add_dialog"); - e_dialog_title_set(dia, _("Cannot add icon")); - e_dialog_text_set(dia, - _("You tried to drop an icon of an application that<br>" - "does not have a matching application file.<br>" - "<br>" - "The icon cannot be added to IBar." - )); - e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL); - e_dialog_button_focus_num(dia, 1); - e_win_centered_set(dia->win, 1); - e_dialog_show(dia); - goto clean; + /* Create a new application icon */ + bname = bd->client.icccm.name; + if ((bname) && (bname[0] == 0)) bname = NULL; + bclass = bd->client.icccm.class; + if ((bclass) && (bclass[0] == 0)) bclass = NULL; + + if (bname) + { + snprintf(path, sizeof(path), "%s/.e/e/applications/all/%s.desktop", homedir, bname); + app = e_app_empty_new(path); + } + + if (app) + { + if (bd->client.netwm.icons) + { + char icon_path[4096]; + + snprintf(icon_path, sizeof(icon_path), "%s/.e/e/icons/%s-%.6f.png", homedir, bname, ecore_time_get()); + if (e_util_icon_save(&(bd->client.netwm.icons[0]), icon_path)) + { + app->icon_path = evas_stringshare_add(icon_path); + app->width = bd->client.netwm.icons[0].width; + app->height = bd->client.netwm.icons[0].height; + } + } + if (bname) app->win_name = evas_stringshare_add(bname); + if (bclass) app->win_class = evas_stringshare_add(bclass); + if (bd->client.icccm.window_role) + app->win_role = evas_stringshare_add(bd->client.icccm.window_role); + if (bclass) app->name = evas_stringshare_add(bclass); + if (bname) app->exe = evas_stringshare_add(bname); + if (bd->client.netwm.startup_id > 0) + app->startup_notify = 1; + + e_app_fields_save(app); + e_eap_edit_show(e_container_current_get(e_manager_current_get()), app); + } } } else if (!strcmp(type, "text/uri-list")) ------------------------------------------------------------------------- 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