diff --git a/capplets/default-applications/ChangeLog b/capplets/default-applications/ChangeLog index 2db63a36d..8abbc9eaa 100644 --- a/capplets/default-applications/ChangeLog +++ b/capplets/default-applications/ChangeLog @@ -1,3 +1,11 @@ +2008-07-15 Jens Granseuer + + Patch by: Aprotim Sanyal + + * gnome-da-xml.c: (gnome_da_xml_load_list): make it possible for apps + to install additional XML files to extend the list of available + applications (bug #527304) + 2008-06-15 Thomas Wood * Makefile.am: diff --git a/capplets/default-applications/gnome-da-xml.c b/capplets/default-applications/gnome-da-xml.c index bbebb7321..75d8a65d1 100644 --- a/capplets/default-applications/gnome-da-xml.c +++ b/capplets/default-applications/gnome-da-xml.c @@ -248,7 +248,7 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) visual_item->run_at_startup = gnome_da_xml_get_bool (element, "run-at-startup"); capplet->visual_ats = g_list_append (capplet->visual_ats, visual_item); - } + } else g_free (executable); } @@ -284,6 +284,9 @@ void gnome_da_xml_load_list (GnomeDACapplet *capplet) { gchar *filename; + gchar *dirname; + const gchar *extra_file; + GDir *app_dir; filename = g_build_filename (GNOMECC_DATA_DIR, "gnome-default-applications.xml", @@ -296,6 +299,22 @@ gnome_da_xml_load_list (GnomeDACapplet *capplet) if (capplet->web_browsers == NULL) gnome_da_xml_load_xml (capplet, "./gnome-default-applications.xml"); + + dirname = g_build_filename (GNOMECC_DATA_DIR, "default-apps", NULL); + app_dir = g_dir_open (dirname, 0, NULL); + + if (app_dir != NULL) { + while ((extra_file = g_dir_read_name (app_dir)) != NULL) { + filename = g_build_filename (dirname, extra_file, NULL); + + if (g_str_has_suffix (filename, ".xml")) + gnome_da_xml_load_xml (capplet, filename); + + g_free (filename); + } + g_dir_close (app_dir); + } + g_free (dirname); } void