From 6de0b6bece23db1cd016bd2286dc21b88370f742d0f736f8c476117c77ede207 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Fri, 14 Jan 2011 09:15:56 +0000 Subject: [PATCH] Accepting request 58050 from home:vuntz:branches:GNOME:Factory Nice... and I like the prospect that we will be able to drop that patch soon-ish. OBS-URL: https://build.opensuse.org/request/show/58050 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-control-center?expand=0&rev=87 --- ...trol-center-bnc436206-add-to-default.patch | 18 - ...e-control-center-mime-scheme-handler.patch | 1522 +++++++++++++++++ gnome-control-center.changes | 13 + gnome-control-center.spec | 6 +- 4 files changed, 1538 insertions(+), 21 deletions(-) delete mode 100644 gnome-control-center-bnc436206-add-to-default.patch create mode 100644 gnome-control-center-mime-scheme-handler.patch diff --git a/gnome-control-center-bnc436206-add-to-default.patch b/gnome-control-center-bnc436206-add-to-default.patch deleted file mode 100644 index 12359b7..0000000 --- a/gnome-control-center-bnc436206-add-to-default.patch +++ /dev/null @@ -1,18 +0,0 @@ -Index: gnome-control-center-2.24.0.1/capplets/default-applications/gnome-default-applications.xml.in -=================================================================== ---- gnome-control-center-2.24.0.1.orig/capplets/default-applications/gnome-default-applications.xml.in -+++ gnome-control-center-2.24.0.1/capplets/default-applications/gnome-default-applications.xml.in -@@ -241,6 +241,13 @@ - sylpheed - false - -+ -+ <_name>GroupWise -+ groupwise -+ groupwise %s -+ gwclient -+ false -+ - - - diff --git a/gnome-control-center-mime-scheme-handler.patch b/gnome-control-center-mime-scheme-handler.patch new file mode 100644 index 0000000..4e4e0be --- /dev/null +++ b/gnome-control-center-mime-scheme-handler.patch @@ -0,0 +1,1522 @@ +From f8317280f54336c5252ee7ab6df33a4f325a426d Mon Sep 17 00:00:00 2001 +From: Rodrigo Moya +Date: Mon, 11 Oct 2010 13:35:21 +0200 +Subject: [PATCH 1/7] [default applications] Use URL handlers for browser and mailer applications + +--- + capplets/default-applications/gnome-da-capplet.c | 403 ++----------------- + capplets/default-applications/gnome-da-capplet.h | 11 - + capplets/default-applications/gnome-da-item.c | 13 +- + capplets/default-applications/gnome-da-item.h | 15 +- + capplets/default-applications/gnome-da-xml.c | 105 ++--- + .../gnome-default-applications-properties.ui | 172 +-------- + 6 files changed, 101 insertions(+), 618 deletions(-) + +diff --git a/capplets/default-applications/gnome-da-capplet.c b/capplets/default-applications/gnome-da-capplet.c +index 438ee13..399527d 100644 +--- a/capplets/default-applications/gnome-da-capplet.c ++++ b/capplets/default-applications/gnome-da-capplet.c +@@ -64,83 +64,25 @@ set_icon (GtkImage *image, GtkIconTheme *theme, const char *name) + } + + static void +-web_radiobutton_toggled_cb (GtkWidget *togglebutton, GnomeDACapplet *capplet) +-{ +- gint index; +- GnomeDAWebItem *item; +- const gchar *command; +- GError *error = NULL; +- +- index = gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->web_combo_box)); +- +- if (index == -1) +- return; +- +- item = (GnomeDAWebItem *) g_list_nth_data (capplet->web_browsers, index); +- if (item == NULL) +- return; +- +- if (togglebutton == capplet->new_win_radiobutton) { +- command = item->win_command; +- } +- else if (togglebutton == capplet->new_tab_radiobutton) { +- command = item->tab_command; +- } +- else { +- command = item->generic.command; +- } +- +- gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, command, &error); +- +- gtk_entry_set_text (GTK_ENTRY (capplet->web_browser_command_entry), command); +- +- if (error != NULL) { +- g_warning (_("Error saving configuration: %s"), error->message); +- g_error_free (error); +- } +-} +- +-static void + web_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) + { + guint current_index; +- gboolean is_custom_active; +- gboolean has_net_remote; +- GnomeDAWebItem *item; +- GtkWidget *active = NULL; + + current_index = gtk_combo_box_get_active (combo); + + if (current_index < g_list_length (capplet->web_browsers)) { ++ GnomeDAURLItem *item; ++ GError *error = NULL; + +- item = (GnomeDAWebItem*) g_list_nth_data (capplet->web_browsers, current_index); +- has_net_remote = item->netscape_remote; +- is_custom_active = FALSE; +- +- } +- else { +- has_net_remote = FALSE; +- is_custom_active = TRUE; +- } +- gtk_widget_set_sensitive (capplet->default_radiobutton, has_net_remote); +- gtk_widget_set_sensitive (capplet->new_win_radiobutton, has_net_remote); +- gtk_widget_set_sensitive (capplet->new_tab_radiobutton, has_net_remote); +- +- gtk_widget_set_sensitive (capplet->web_browser_command_entry, is_custom_active); +- gtk_widget_set_sensitive (capplet->web_browser_command_label, is_custom_active); +- gtk_widget_set_sensitive (capplet->web_browser_terminal_checkbutton, is_custom_active); +- +- if (has_net_remote) { ++ item = (GnomeDAURLItem*) g_list_nth_data (capplet->web_browsers, current_index); ++ if (item == NULL) ++ return; + +- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton))) +- active = capplet->new_win_radiobutton; +- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton))) +- active = capplet->new_tab_radiobutton; +- else +- active = capplet->default_radiobutton; ++ if (!g_app_info_set_as_default_for_type (item->app_info, "x-scheme-handler/http", &error)) { ++ g_warning (_("Error setting default browser: %s"), error->message); ++ g_error_free (error); ++ } + } +- +- web_radiobutton_toggled_cb (active, capplet); + } + + /* FIXME: Refactor these two functions below into one... */ +@@ -148,14 +90,23 @@ static void + mail_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) + { + guint current_index; +- gboolean is_custom_active; + + current_index = gtk_combo_box_get_active (combo); +- is_custom_active = (current_index >= g_list_length (capplet->mail_readers)); + +- gtk_widget_set_sensitive (capplet->mail_reader_command_entry, is_custom_active); +- gtk_widget_set_sensitive (capplet->mail_reader_command_label, is_custom_active); +- gtk_widget_set_sensitive (capplet->mail_reader_terminal_checkbutton, is_custom_active); ++ if (current_index < g_list_length (capplet->mail_readers)) { ++ GnomeDAURLItem *item; ++ GError *error = NULL; ++ ++ item = (GnomeDAURLItem*) g_list_nth_data (capplet->web_browsers, current_index); ++ if (item == NULL) ++ return; ++ ++ if (!g_app_info_set_as_default_for_type (item->app_info, "x-scheme-handler/mailto", &error)) { ++ g_warning (_("Error setting default mailer: %s"), error->message); ++ g_error_free (error); ++ } ++ } ++ + } + + static void +@@ -297,221 +248,6 @@ generic_item_comp (gconstpointer list_item, gconstpointer command) + return (strcmp (((GnomeDAItem *) list_item)->command, (gchar *) command)); + } + +-static gint +-web_item_comp (gconstpointer item, gconstpointer command) +-{ +- GnomeDAWebItem *web_list_item; +- +- web_list_item = (GnomeDAWebItem *) item; +- +- if (strcmp (web_list_item->generic.command, (gchar *) command) == 0) +- return 0; +- +- if (web_list_item->netscape_remote) { +- if (strcmp (web_list_item->tab_command, (gchar *) command) == 0) +- return 0; +- +- if (strcmp (web_list_item->win_command, (gchar *) command) == 0) +- return 0; +- } +- +- return (strcmp (web_list_item->generic.command, (gchar *) command)); +-} +- +-static void +-web_gconf_changed_cb (GConfPropertyEditor *peditor, gchar *key, GConfValue *value, GnomeDACapplet *capplet) +-{ +- GConfChangeSet *cs; +- GError *error = NULL; +- GList *list_entry; +- +- /* This function is used to update HTTPS,ABOUT and UNKNOWN handlers, which +- * should also use the same value as HTTP +- */ +- +- if (strcmp (key, DEFAULT_APPS_KEY_HTTP_EXEC) == 0) { +- gchar *short_browser, *pos; +- const gchar *value_str = gconf_value_get_string (value); +- +- cs = gconf_change_set_new (); +- +- gconf_change_set_set (cs, DEFAULT_APPS_KEY_HTTPS_EXEC, value); +- gconf_change_set_set (cs, DEFAULT_APPS_KEY_UNKNOWN_EXEC, value); +- gconf_change_set_set (cs, DEFAULT_APPS_KEY_ABOUT_EXEC, value); +- pos = strstr (value_str, " "); +- if (pos == NULL) +- short_browser = g_strdup (value_str); +- else +- short_browser = g_strndup (value_str, pos - value_str); +- gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_BROWSER_EXEC, short_browser); +- g_free (short_browser); +- +- list_entry = g_list_find_custom (capplet->web_browsers, +- value_str, +- (GCompareFunc) web_item_comp); +- +- if (list_entry) { +- GnomeDAWebItem *item = (GnomeDAWebItem *) list_entry->data; +- +- gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_BROWSER_NREMOTE, item->netscape_remote); +- } +- +- gconf_client_commit_change_set (capplet->gconf, cs, TRUE, &error); +- +- if (error != NULL) { +- g_warning (_("Error saving configuration: %s"), error->message); +- g_error_free (error); +- error = NULL; +- } +- +- gconf_change_set_unref (cs); +- } +- else if (strcmp (key, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM) == 0) { +- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->web_browser_terminal_checkbutton), +- gconf_value_get_bool (value)); +- +- cs = gconf_change_set_new (); +- +- gconf_change_set_set (cs, DEFAULT_APPS_KEY_HTTPS_NEEDS_TERM, value); +- gconf_change_set_set (cs, DEFAULT_APPS_KEY_UNKNOWN_NEEDS_TERM, value); +- gconf_change_set_set (cs, DEFAULT_APPS_KEY_ABOUT_NEEDS_TERM, value); +- gconf_change_set_set (cs, DEFAULT_APPS_KEY_BROWSER_NEEDS_TERM, value); +- +- gconf_client_commit_change_set (capplet->gconf, cs, TRUE, &error); +- +- if (error != NULL) { +- g_warning (_("Error saving configuration: %s"), error->message); +- g_error_free (error); +- error = NULL; +- } +- +- gconf_change_set_unref (cs); +- } +-} +- +-static void +-web_browser_update_radio_buttons (GnomeDACapplet *capplet, const gchar *command) +-{ +- GList *entry; +- gboolean has_net_remote; +- +- entry = g_list_find_custom (capplet->web_browsers, command, (GCompareFunc) web_item_comp); +- +- if (entry) { +- GnomeDAWebItem *item = (GnomeDAWebItem *) entry->data; +- +- has_net_remote = item->netscape_remote; +- +- if (has_net_remote) { +- /* disable "toggle" signal emitting, thus preventing calling this function twice */ +- g_signal_handlers_block_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0, +- 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); +- g_signal_handlers_block_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0, +- 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); +- g_signal_handlers_block_matched (capplet->new_win_radiobutton,G_SIGNAL_MATCH_FUNC, 0, +- 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); +- +- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->default_radiobutton), +- strcmp (item->generic.command, command) == 0); +- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton), +- strcmp (item->tab_command, command) == 0); +- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton), +- strcmp (item->win_command, command) == 0); +- +- g_signal_handlers_unblock_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0, +- 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); +- g_signal_handlers_unblock_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0, +- 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); +- g_signal_handlers_unblock_matched (capplet->new_win_radiobutton, G_SIGNAL_MATCH_FUNC, 0, +- 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); +- } +- } +- else { +- has_net_remote = FALSE; +- } +- +- gtk_widget_set_sensitive (capplet->default_radiobutton, has_net_remote); +- gtk_widget_set_sensitive (capplet->new_win_radiobutton, has_net_remote); +- gtk_widget_set_sensitive (capplet->new_tab_radiobutton, has_net_remote); +-} +- +-static GConfValue* +-web_combo_conv_to_widget (GConfPropertyEditor *peditor, const GConfValue *value) +-{ +- GConfValue *ret; +- GList *entry, *handlers; +- const gchar *command; +- gint index; +- GnomeDACapplet *capplet; +- +- g_object_get (G_OBJECT (peditor), "data", &capplet, NULL); +- +- command = gconf_value_get_string (value); +- handlers = capplet->web_browsers; +- +- if (handlers) +- { +- entry = g_list_find_custom (handlers, command, (GCompareFunc) web_item_comp); +- if (entry) +- index = g_list_position (handlers, entry); +- else +- index = g_list_length (handlers) + 1; +- } +- else +- { +- /* if the item has no handlers lsit then select the Custom item */ +- index = 1; +- } +- +- web_browser_update_radio_buttons (capplet, command); +- +- ret = gconf_value_new (GCONF_VALUE_INT); +- gconf_value_set_int (ret, index); +- +- return ret; +-} +- +-static GConfValue* +-web_combo_conv_from_widget (GConfPropertyEditor *peditor, const GConfValue *value) +-{ +- GConfValue *ret; +- GList *handlers; +- gint index; +- GnomeDAWebItem *item; +- const gchar *command; +- GnomeDACapplet *capplet; +- +- g_object_get (G_OBJECT (peditor), "data", &capplet, NULL); +- +- index = gconf_value_get_int (value); +- handlers = capplet->web_browsers; +- +- item = g_list_nth_data (handlers, index); +- +- ret = gconf_value_new (GCONF_VALUE_STRING); +- if (!item) +- { +- /* if item was not found, this is probably the "Custom" item */ +- /* XXX: returning "" as the value here is not ideal, but required to +- * prevent the combo box from jumping back to the previous value if the +- * user has selected Custom */ +- gconf_value_set_string (ret, ""); +- return ret; +- } +- else +- { +- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton)) && item->netscape_remote == TRUE) +- command = item->win_command; +- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton)) && item->netscape_remote == TRUE) +- command = item->tab_command; +- else +- command = item->generic.command; +- +- gconf_value_set_string (ret, command); +- return ret; +- } +-} +- + static GConfValue* + combo_conv_to_widget (GConfPropertyEditor *peditor, const GConfValue *value) + { +@@ -632,7 +368,7 @@ is_separator (GtkTreeModel *model, GtkTreeIter *iter, gpointer sep_index) + } + + static void +-fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list) ++fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list, gboolean add_custom) + { + GList *entry; + GtkTreeModel *model; +@@ -644,8 +380,10 @@ fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list) + theme = gtk_icon_theme_get_default (); + } + +- gtk_combo_box_set_row_separator_func (combo_box, is_separator, +- GINT_TO_POINTER (g_list_length (app_list)), NULL); ++ if (add_custom) { ++ gtk_combo_box_set_row_separator_func (combo_box, is_separator, ++ GINT_TO_POINTER (g_list_length (app_list)), NULL); ++ } + + model = GTK_TREE_MODEL (gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING)); + gtk_combo_box_set_model (combo_box, model); +@@ -683,13 +421,15 @@ fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list) + g_object_unref (pixbuf); + } + +- gtk_list_store_append (GTK_LIST_STORE (model), &iter); +- gtk_list_store_set (GTK_LIST_STORE (model), &iter, -1); +- gtk_list_store_append (GTK_LIST_STORE (model), &iter); +- gtk_list_store_set (GTK_LIST_STORE (model), &iter, +- PIXBUF_COL, NULL, +- TEXT_COL, _("Custom"), +- -1); ++ if (add_custom) { ++ gtk_list_store_append (GTK_LIST_STORE (model), &iter); ++ gtk_list_store_set (GTK_LIST_STORE (model), &iter, -1); ++ gtk_list_store_append (GTK_LIST_STORE (model), &iter); ++ gtk_list_store_set (GTK_LIST_STORE (model), &iter, ++ PIXBUF_COL, NULL, ++ TEXT_COL, _("Custom"), ++ -1); ++ } + } + + static GtkWidget* +@@ -702,7 +442,6 @@ _gtk_builder_get_widget (GtkBuilder *builder, const gchar *name) + static void + show_dialog (GnomeDACapplet *capplet, const gchar *start_page) + { +- GObject *obj; + GtkBuilder *builder; + guint builder_result; + +@@ -732,17 +471,6 @@ show_dialog (GnomeDACapplet *capplet, const gchar *start_page) + capplet->window = _gtk_builder_get_widget (builder,"preferred_apps_dialog"); + g_signal_connect (capplet->window, "response", G_CALLBACK (close_cb), NULL); + +- capplet->web_browser_command_entry = _gtk_builder_get_widget (builder, "web_browser_command_entry"); +- capplet->web_browser_command_label = _gtk_builder_get_widget (builder, "web_browser_command_label"); +- capplet->web_browser_terminal_checkbutton = _gtk_builder_get_widget(builder, "web_browser_terminal_checkbutton"); +- capplet->default_radiobutton = _gtk_builder_get_widget (builder, "web_browser_default_radiobutton"); +- capplet->new_win_radiobutton = _gtk_builder_get_widget (builder, "web_browser_new_win_radiobutton"); +- capplet->new_tab_radiobutton = _gtk_builder_get_widget (builder, "web_browser_new_tab_radiobutton"); +- +- capplet->mail_reader_command_entry = _gtk_builder_get_widget (builder, "mail_reader_command_entry"); +- capplet->mail_reader_command_label = _gtk_builder_get_widget (builder, "mail_reader_command_label"); +- capplet->mail_reader_terminal_checkbutton = _gtk_builder_get_widget (builder, "mail_reader_terminal_checkbutton"); +- + capplet->terminal_command_entry = _gtk_builder_get_widget (builder, "terminal_command_entry"); + capplet->terminal_command_label = _gtk_builder_get_widget (builder, "terminal_command_label"); + capplet->terminal_exec_flag_entry = _gtk_builder_get_widget (builder, "terminal_exec_flag_entry"); +@@ -770,12 +498,12 @@ show_dialog (GnomeDACapplet *capplet, const gchar *start_page) + g_signal_connect (capplet->window, "screen-changed", G_CALLBACK (screen_changed_cb), capplet); + screen_changed_cb (capplet->window, gdk_screen_get_default (), capplet); + +- fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers); +- fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers); +- fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals); +- fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players); +- fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats); +- fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats); ++ fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers, FALSE); ++ fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers, FALSE); ++ fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals, TRUE); ++ fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players, TRUE); ++ fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats, TRUE); ++ fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats, TRUE); + + g_signal_connect (capplet->web_combo_box, "changed", G_CALLBACK (web_combo_changed_cb), capplet); + g_signal_connect (capplet->mail_combo_box, "changed", G_CALLBACK (mail_combo_changed_cb), capplet); +@@ -784,53 +512,8 @@ show_dialog (GnomeDACapplet *capplet, const gchar *start_page) + g_signal_connect (capplet->visual_combo_box, "changed", G_CALLBACK (visual_combo_changed_cb), capplet); + g_signal_connect (capplet->mobility_combo_box, "changed", G_CALLBACK (mobility_combo_changed_cb), capplet); + +- +- g_signal_connect (capplet->default_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); +- g_signal_connect (capplet->new_win_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); +- g_signal_connect (capplet->new_tab_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); +- + /* Setup GConfPropertyEditors */ + +- /* Web Browser */ +- gconf_peditor_new_combo_box (NULL, +- DEFAULT_APPS_KEY_HTTP_EXEC, +- capplet->web_combo_box, +- "conv-from-widget-cb", web_combo_conv_from_widget, +- "conv-to-widget-cb", web_combo_conv_to_widget, +- "data", capplet, +- NULL); +- +- obj = gconf_peditor_new_string (NULL, +- DEFAULT_APPS_KEY_HTTP_EXEC, +- capplet->web_browser_command_entry, +- NULL); +- g_signal_connect (obj, "value-changed", G_CALLBACK (web_gconf_changed_cb), capplet); +- +- obj = gconf_peditor_new_boolean (NULL, +- DEFAULT_APPS_KEY_HTTP_NEEDS_TERM, +- capplet->web_browser_terminal_checkbutton, +- NULL); +- g_signal_connect (obj, "value-changed", G_CALLBACK (web_gconf_changed_cb), capplet); +- +- /* Mailer */ +- gconf_peditor_new_combo_box (NULL, +- DEFAULT_APPS_KEY_MAILER_EXEC, +- capplet->mail_combo_box, +- "conv-from-widget-cb", combo_conv_from_widget, +- "conv-to-widget-cb", combo_conv_to_widget, +- "data", capplet->mail_readers, +- NULL); +- +- gconf_peditor_new_string (NULL, +- DEFAULT_APPS_KEY_MAILER_EXEC, +- capplet->mail_reader_command_entry, +- NULL); +- +- gconf_peditor_new_boolean (NULL, +- DEFAULT_APPS_KEY_MAILER_NEEDS_TERM, +- capplet->mail_reader_terminal_checkbutton, +- NULL); +- + /* Media player */ + gconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_MEDIA_EXEC, +diff --git a/capplets/default-applications/gnome-da-capplet.h b/capplets/default-applications/gnome-da-capplet.h +index 2f55f56..db7f4f6 100644 +--- a/capplets/default-applications/gnome-da-capplet.h ++++ b/capplets/default-applications/gnome-da-capplet.h +@@ -85,17 +85,6 @@ struct _GnomeDACapplet { + GtkWidget *visual_combo_box; + GtkWidget *mobility_combo_box; + +- GtkWidget *web_browser_command_entry; +- GtkWidget *web_browser_command_label; +- GtkWidget *web_browser_terminal_checkbutton; +- GtkWidget *default_radiobutton; +- GtkWidget *new_win_radiobutton; +- GtkWidget *new_tab_radiobutton; +- +- GtkWidget *mail_reader_command_entry; +- GtkWidget *mail_reader_command_label; +- GtkWidget *mail_reader_terminal_checkbutton; +- + GtkWidget *terminal_command_entry; + GtkWidget *terminal_command_label; + GtkWidget *terminal_exec_flag_entry; +diff --git a/capplets/default-applications/gnome-da-item.c b/capplets/default-applications/gnome-da-item.c +index d929bd5..86188e2 100644 +--- a/capplets/default-applications/gnome-da-item.c ++++ b/capplets/default-applications/gnome-da-item.c +@@ -21,12 +21,12 @@ + #include "gnome-da-capplet.h" + #include "gnome-da-item.h" + +-GnomeDAWebItem* +-gnome_da_web_item_new (void) ++GnomeDAURLItem* ++gnome_da_url_item_new (void) + { +- GnomeDAWebItem *item = NULL; ++ GnomeDAURLItem *item = NULL; + +- item = g_new0 (GnomeDAWebItem, 1); ++ item = g_new0 (GnomeDAURLItem, 1); + + return item; + } +@@ -72,7 +72,7 @@ gnome_da_mobility_item_new (void) + } + + void +-gnome_da_web_item_free (GnomeDAWebItem *item) ++gnome_da_url_item_free (GnomeDAURLItem *item) + { + g_return_if_fail (item != NULL); + +@@ -82,8 +82,7 @@ gnome_da_web_item_free (GnomeDAWebItem *item) + g_free (item->generic.icon_name); + g_free (item->generic.icon_path); + +- g_free (item->tab_command); +- g_free (item->win_command); ++ g_object_unref (item->app_info); + + g_free (item); + } +diff --git a/capplets/default-applications/gnome-da-item.h b/capplets/default-applications/gnome-da-item.h +index 5a80af9..96d7b95 100644 +--- a/capplets/default-applications/gnome-da-item.h ++++ b/capplets/default-applications/gnome-da-item.h +@@ -25,7 +25,7 @@ + + typedef struct _GnomeDAItem GnomeDAItem; + +-typedef struct _GnomeDAWebItem GnomeDAWebItem; ++typedef struct _GnomeDAURLItem GnomeDAURLItem; + typedef struct _GnomeDATermItem GnomeDATermItem; + typedef struct _GnomeDASimpleItem GnomeDASimpleItem; + typedef struct _GnomeDAVisualItem GnomeDAVisualItem; +@@ -39,17 +39,14 @@ struct _GnomeDAItem { + gchar *icon_path; + }; + +-struct _GnomeDAWebItem { ++struct _GnomeDASimpleItem { + GnomeDAItem generic; + gboolean run_in_terminal; +- gboolean netscape_remote; +- gchar *tab_command; +- gchar *win_command; + }; + +-struct _GnomeDASimpleItem { ++struct _GnomeDAURLItem { + GnomeDAItem generic; +- gboolean run_in_terminal; ++ GAppInfo *app_info; + }; + + struct _GnomeDATermItem { +@@ -67,13 +64,13 @@ struct _GnomeDAMobilityItem { + gboolean run_at_startup; + }; + +-GnomeDAWebItem* gnome_da_web_item_new (void); + GnomeDATermItem* gnome_da_term_item_new (void); ++GnomeDAURLItem* gnome_da_url_item_new (void); + GnomeDASimpleItem* gnome_da_simple_item_new (void); + GnomeDAVisualItem* gnome_da_visual_item_new (void); + GnomeDAMobilityItem* gnome_da_mobility_item_new (void); +-void gnome_da_web_item_free (GnomeDAWebItem *item); + void gnome_da_term_item_free (GnomeDATermItem *item); ++void gnome_da_url_item_free (GnomeDAURLItem *item); + void gnome_da_simple_item_free (GnomeDASimpleItem *item); + void gnome_da_visual_item_free (GnomeDAVisualItem *item); + void gnome_da_mobility_item_free (GnomeDAMobilityItem *item); +diff --git a/capplets/default-applications/gnome-da-xml.c b/capplets/default-applications/gnome-da-xml.c +index 68f8c97..2566c20 100644 +--- a/capplets/default-applications/gnome-da-xml.c ++++ b/capplets/default-applications/gnome-da-xml.c +@@ -47,7 +47,7 @@ gnome_da_xml_get_bool (const xmlNode *parent, const gchar *val_name) + if (!xmlStrncmp (element->name, xml_val_name, len)) { + xmlChar *cont = xmlNodeGetContent (element); + +- if (!xmlStrcasecmp (cont, "true") || !xmlStrcasecmp (cont, "1")) ++ if (!xmlStrcasecmp (cont, (const xmlChar *) "true") || !xmlStrcasecmp (cont, (const xmlChar *) "1")) + ret_val = TRUE; + else + ret_val = FALSE; +@@ -91,7 +91,7 @@ gnome_da_xml_get_string (const xmlNode *parent, const gchar *val_name) + } + else { + for (i = 0; sys_langs[i] != NULL; i++) { +- if (!strcmp (sys_langs[i], node_lang)) { ++ if (!strcmp ((const char *) sys_langs[i], (const char *) node_lang)) { + ret_val = (gchar *) xmlNodeGetContent (element); + /* since sys_langs is sorted from most desirable to + * least desirable, exit at first match +@@ -109,7 +109,7 @@ gnome_da_xml_get_string (const xmlNode *parent, const gchar *val_name) + } + + static gboolean +-is_executable_valid (gchar *executable) ++is_executable_valid (const gchar *executable) + { + gchar *path; + +@@ -129,8 +129,6 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + xmlDoc *xml_doc; + xmlNode *root, *section, *element; + gchar *executable; +- GnomeDAWebItem *web_item; +- GnomeDASimpleItem *mail_item; + GnomeDASimpleItem *media_item; + GnomeDATermItem *term_item; + GnomeDAVisualItem *visual_item; +@@ -144,56 +142,9 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + root = xmlDocGetRootElement (xml_doc); + + for (section = root->children; section != NULL; section = section->next) { +- if (!xmlStrncmp (section->name, "web-browsers", 12)) { ++ if (!xmlStrncmp (section->name, (const xmlChar *) "terminals", 9)) { + for (element = section->children; element != NULL; element = element->next) { +- if (!xmlStrncmp (element->name, "web-browser", 11)) { +- executable = gnome_da_xml_get_string (element, "executable"); +- if (is_executable_valid (executable)) { +- web_item = gnome_da_web_item_new (); +- +- web_item->generic.name = gnome_da_xml_get_string (element, "name"); +- web_item->generic.executable = executable; +- web_item->generic.command = gnome_da_xml_get_string (element, "command"); +- web_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name"); +- +- web_item->run_in_terminal = gnome_da_xml_get_bool (element, "run-in-terminal"); +- web_item->netscape_remote = gnome_da_xml_get_bool (element, "netscape-remote"); +- if (web_item->netscape_remote) { +- web_item->tab_command = gnome_da_xml_get_string (element, "tab-command"); +- web_item->win_command = gnome_da_xml_get_string (element, "win-command"); +- } +- +- capplet->web_browsers = g_list_append (capplet->web_browsers, web_item); +- } +- else +- g_free (executable); +- } +- } +- } +- else if (!xmlStrncmp (section->name, "mail-readers", 12)) { +- for (element = section->children; element != NULL; element = element->next) { +- if (!xmlStrncmp (element->name, "mail-reader", 11)) { +- executable = gnome_da_xml_get_string (element, "executable"); +- if (is_executable_valid (executable)) { +- mail_item = gnome_da_simple_item_new (); +- +- mail_item->generic.name = gnome_da_xml_get_string (element, "name"); +- mail_item->generic.executable = executable; +- mail_item->generic.command = gnome_da_xml_get_string (element, "command"); +- mail_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name"); +- +- mail_item->run_in_terminal = gnome_da_xml_get_bool (element, "run-in-terminal"); +- +- capplet->mail_readers = g_list_append (capplet->mail_readers, mail_item); +- } +- else +- g_free (executable); +- } +- } +- } +- else if (!xmlStrncmp (section->name, "terminals", 9)) { +- for (element = section->children; element != NULL; element = element->next) { +- if (!xmlStrncmp (element->name, "terminal", 8)) { ++ if (!xmlStrncmp (element->name, (const xmlChar *) "terminal", 8)) { + executable = gnome_da_xml_get_string (element, "executable"); + if (is_executable_valid (executable)) { + term_item = gnome_da_term_item_new (); +@@ -212,9 +163,9 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + } + } + } +- else if (!xmlStrncmp (section->name, "media-players", 13)) { ++ else if (!xmlStrncmp (section->name, (const xmlChar *) "media-players", 13)) { + for (element = section->children; element != NULL; element = element->next) { +- if (!xmlStrncmp (element->name, "media-player", 12)) { ++ if (!xmlStrncmp (element->name, (const xmlChar *) "media-player", 12)) { + executable = gnome_da_xml_get_string (element, "executable"); + if (is_executable_valid (executable)) { + media_item = gnome_da_simple_item_new (); +@@ -233,9 +184,9 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + } + } + } +- else if (!xmlStrncmp (section->name, "a11y-visual", 11)) { ++ else if (!xmlStrncmp (section->name, (const xmlChar *) "a11y-visual", 11)) { + for (element = section->children; element != NULL; element = element->next) { +- if (!xmlStrncmp (element->name, "visual", 6)) { ++ if (!xmlStrncmp (element->name, (const xmlChar *) "visual", 6)) { + executable = gnome_da_xml_get_string (element,"executable"); + if (is_executable_valid (executable)) { + visual_item = gnome_da_visual_item_new (); +@@ -254,9 +205,9 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + } + } + } +- else if (!xmlStrncmp (section->name, "a11y-mobility", 13)) { ++ else if (!xmlStrncmp (section->name, (const xmlChar *) "a11y-mobility", 13)) { + for (element = section->children; element != NULL; element = element->next) { +- if (!xmlStrncmp (element->name, "mobility", 8)) { ++ if (!xmlStrncmp (element->name, (const xmlChar *) "mobility", 8)) { + executable = gnome_da_xml_get_string (element,"executable"); + if (is_executable_valid (executable)) { + mobility_item = gnome_da_mobility_item_new (); +@@ -280,11 +231,37 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + xmlFreeDoc (xml_doc); + } + ++static void ++load_url_handlers (GnomeDACapplet *capplet, const gchar *scheme, GList **item_list) ++{ ++ GList *app_list; ++ ++ app_list = g_app_info_get_all_for_type (scheme); ++ while (app_list != NULL) { ++ const gchar *executable; ++ GAppInfo *app_info = (GAppInfo *) app_list->data; ++ ++ executable = g_app_info_get_executable (app_info); ++ if (is_executable_valid (executable)) { ++ GnomeDASimpleItem *url_item; ++ ++ url_item = gnome_da_simple_item_new (); ++ url_item->generic.name = g_strdup (g_app_info_get_display_name (app_info)); ++ url_item->generic.executable = g_strdup (executable); ++ url_item->generic.command = g_strdup (g_app_info_get_commandline (app_info)); ++ url_item->generic.icon_name = g_strdup (g_app_info_get_name (app_info)); ++ ++ *item_list = g_list_append (*item_list, url_item); ++ } ++ } ++} ++ + void + gnome_da_xml_load_list (GnomeDACapplet *capplet) + { + GDir *app_dir = g_dir_open (GNOMECC_APPS_DIR, 0, NULL); + ++ /* First load all applications from the XML files */ + if (app_dir != NULL) { + const gchar *extra_file; + gchar *filename; +@@ -299,13 +276,17 @@ gnome_da_xml_load_list (GnomeDACapplet *capplet) + } + g_dir_close (app_dir); + } ++ ++ /* Now load URL handlers */ ++ load_url_handlers (capplet, "x-scheme-handler/http", &capplet->web_browsers); ++ load_url_handlers (capplet, "x-scheme-handler/mailto", &capplet->mail_readers); + } + + void + gnome_da_xml_free (GnomeDACapplet *capplet) + { +- g_list_foreach (capplet->web_browsers, (GFunc) gnome_da_web_item_free, NULL); +- g_list_foreach (capplet->mail_readers, (GFunc) gnome_da_simple_item_free, NULL); ++ g_list_foreach (capplet->web_browsers, (GFunc) gnome_da_url_item_free, NULL); ++ g_list_foreach (capplet->mail_readers, (GFunc) gnome_da_url_item_free, NULL); + g_list_foreach (capplet->terminals, (GFunc) gnome_da_term_item_free, NULL); + g_list_foreach (capplet->media_players, (GFunc) gnome_da_simple_item_free, NULL); + g_list_foreach (capplet->visual_ats, (GFunc) gnome_da_visual_item_free, NULL); +diff --git a/capplets/default-applications/gnome-default-applications-properties.ui b/capplets/default-applications/gnome-default-applications-properties.ui +index 9a4cfcf..4f25207 100644 +--- a/capplets/default-applications/gnome-default-applications-properties.ui ++++ b/capplets/default-applications/gnome-default-applications-properties.ui +@@ -1,4 +1,4 @@ +- ++ + + + +@@ -69,122 +69,7 @@ + + + +- +- True +- 4 +- 3 +- 12 +- 6 +- +- +- True +- True +- All %s occurrences will be replaced with actual link +- +- +- 1 +- 2 +- 3 +- 4 +- +- +- +- +- +- Run in t_erminal +- True +- False +- True +- False +- True +- True +- +- +- 2 +- 3 +- 3 +- 4 +- GTK_FILL +- +- +- +- +- +- Open link with web browser _default +- True +- False +- True +- False +- True +- True +- True +- +- +- 3 +- GTK_FILL +- +- +- +- +- +- Open link in new _tab +- True +- False +- True +- False +- True +- True +- web_browser_default_radiobutton +- +- +- 3 +- 2 +- 3 +- GTK_FILL +- +- +- +- +- +- Open link in new _window +- True +- False +- True +- False +- True +- True +- web_browser_default_radiobutton +- +- +- 3 +- 1 +- 2 +- GTK_FILL +- +- +- +- +- +- True +- False +- 0 +- C_ommand: +- True +- web_browser_command_entry +- +- +- 3 +- 4 +- GTK_FILL +- +- +- +- +- +- False +- False +- 1 +- ++ + + + +@@ -250,58 +135,7 @@ + + + +- +- True +- 3 +- 12 +- 6 +- +- +- True +- False +- 0 +- Co_mmand: +- True +- mail_reader_command_entry +- +- +- GTK_FILL +- +- +- +- +- +- True +- True +- All %s occurrences will be replaced with actual link +- +- +- 1 +- 2 +- +- +- +- +- +- Run in t_erminal +- True +- False +- True +- False +- True +- True +- +- +- 2 +- 3 +- GTK_FILL +- +- +- +- +- +- 1 +- ++ + + + +-- +1.7.3.4 + + +From bd86a24b5b9809a94587d0436707036483ac1c51 Mon Sep 17 00:00:00 2001 +From: Rodrigo Moya +Date: Mon, 11 Oct 2010 15:40:43 +0200 +Subject: [PATCH 2/7] default applications: Set the selected browser to handle HTTPS urls also + +--- + capplets/default-applications/gnome-da-capplet.c | 3 ++- + capplets/default-applications/gnome-da-xml.c | 5 +++-- + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/capplets/default-applications/gnome-da-capplet.c b/capplets/default-applications/gnome-da-capplet.c +index 399527d..47955b3 100644 +--- a/capplets/default-applications/gnome-da-capplet.c ++++ b/capplets/default-applications/gnome-da-capplet.c +@@ -78,7 +78,8 @@ web_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) + if (item == NULL) + return; + +- if (!g_app_info_set_as_default_for_type (item->app_info, "x-scheme-handler/http", &error)) { ++ if (!g_app_info_set_as_default_for_type (item->app_info, "x-scheme-handler/http", &error) || ++ !g_app_info_set_as_default_for_type (item->app_info, "x-scheme-handler/https", &error)) { + g_warning (_("Error setting default browser: %s"), error->message); + g_error_free (error); + } +diff --git a/capplets/default-applications/gnome-da-xml.c b/capplets/default-applications/gnome-da-xml.c +index 2566c20..7fa9e3b 100644 +--- a/capplets/default-applications/gnome-da-xml.c ++++ b/capplets/default-applications/gnome-da-xml.c +@@ -243,13 +243,14 @@ load_url_handlers (GnomeDACapplet *capplet, const gchar *scheme, GList **item_li + + executable = g_app_info_get_executable (app_info); + if (is_executable_valid (executable)) { +- GnomeDASimpleItem *url_item; ++ GnomeDAURLItem *url_item; + +- url_item = gnome_da_simple_item_new (); ++ url_item = gnome_da_url_item_new (); + url_item->generic.name = g_strdup (g_app_info_get_display_name (app_info)); + url_item->generic.executable = g_strdup (executable); + url_item->generic.command = g_strdup (g_app_info_get_commandline (app_info)); + url_item->generic.icon_name = g_strdup (g_app_info_get_name (app_info)); ++ url_item->app_info = g_object_ref (app_info); + + *item_list = g_list_append (*item_list, url_item); + } +-- +1.7.3.4 + + +From e30f53994e8d93d54e66461daf8d36748bc3f656 Mon Sep 17 00:00:00 2001 +From: Yanko Kaneti +Date: Mon, 1 Nov 2010 19:22:38 +0200 +Subject: [PATCH 3/7] user-accounts: Fix endless loop in load_url_handlers + +--- + capplets/default-applications/gnome-da-xml.c | 12 ++++++++---- + 1 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/capplets/default-applications/gnome-da-xml.c b/capplets/default-applications/gnome-da-xml.c +index 7fa9e3b..c3e6085 100644 +--- a/capplets/default-applications/gnome-da-xml.c ++++ b/capplets/default-applications/gnome-da-xml.c +@@ -234,12 +234,12 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + static void + load_url_handlers (GnomeDACapplet *capplet, const gchar *scheme, GList **item_list) + { +- GList *app_list; ++ GList *app_list, *l; + + app_list = g_app_info_get_all_for_type (scheme); +- while (app_list != NULL) { ++ for (l = app_list; l != NULL; l = l->next) { + const gchar *executable; +- GAppInfo *app_info = (GAppInfo *) app_list->data; ++ GAppInfo *app_info = l->data; + + executable = g_app_info_get_executable (app_info); + if (is_executable_valid (executable)) { +@@ -250,11 +250,15 @@ load_url_handlers (GnomeDACapplet *capplet, const gchar *scheme, GList **item_li + url_item->generic.executable = g_strdup (executable); + url_item->generic.command = g_strdup (g_app_info_get_commandline (app_info)); + url_item->generic.icon_name = g_strdup (g_app_info_get_name (app_info)); +- url_item->app_info = g_object_ref (app_info); ++ /* Steal the reference */ ++ url_item->app_info = app_info; + + *item_list = g_list_append (*item_list, url_item); ++ } else { ++ g_object_unref (app_info); + } + } ++ g_list_free (app_list); + } + + void +-- +1.7.3.4 + + +From 2e439d133e9a1cf2365e8af0e2e07e7eb39721e3 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 1 Nov 2010 17:38:23 +0000 +Subject: [PATCH 4/7] default-applications: Simplify load_url_handlers + +When what you want is just a new list... +--- + capplets/default-applications/gnome-da-xml.c | 16 ++++++++++------ + 1 files changed, 10 insertions(+), 6 deletions(-) + +diff --git a/capplets/default-applications/gnome-da-xml.c b/capplets/default-applications/gnome-da-xml.c +index c3e6085..e645725 100644 +--- a/capplets/default-applications/gnome-da-xml.c ++++ b/capplets/default-applications/gnome-da-xml.c +@@ -231,12 +231,14 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) + xmlFreeDoc (xml_doc); + } + +-static void +-load_url_handlers (GnomeDACapplet *capplet, const gchar *scheme, GList **item_list) ++static GList * ++load_url_handlers (GnomeDACapplet *capplet, const gchar *scheme) + { +- GList *app_list, *l; ++ GList *app_list, *l, *ret; + + app_list = g_app_info_get_all_for_type (scheme); ++ ret = NULL; ++ + for (l = app_list; l != NULL; l = l->next) { + const gchar *executable; + GAppInfo *app_info = l->data; +@@ -253,12 +255,14 @@ load_url_handlers (GnomeDACapplet *capplet, const gchar *scheme, GList **item_li + /* Steal the reference */ + url_item->app_info = app_info; + +- *item_list = g_list_append (*item_list, url_item); ++ ret = g_list_prepend (ret, url_item); + } else { + g_object_unref (app_info); + } + } + g_list_free (app_list); ++ ++ return g_list_reverse (ret); + } + + void +@@ -283,8 +287,8 @@ gnome_da_xml_load_list (GnomeDACapplet *capplet) + } + + /* Now load URL handlers */ +- load_url_handlers (capplet, "x-scheme-handler/http", &capplet->web_browsers); +- load_url_handlers (capplet, "x-scheme-handler/mailto", &capplet->mail_readers); ++ capplet->web_browsers = load_url_handlers (capplet, "x-scheme-handler/http"); ++ capplet->mail_readers = load_url_handlers (capplet, "x-scheme-handler/mailto"); + } + + void +-- +1.7.3.4 + + +From 5cf606c8d332d1bd761738fbe3515d92f7fe6d47 Mon Sep 17 00:00:00 2001 +From: Rodrigo Moya +Date: Thu, 11 Nov 2010 13:12:03 +0100 +Subject: [PATCH 5/7] default applications: Remove web browsers and mail readers from XML file + +We use g_app_info API to retrieve those now +--- + .../gnome-default-applications.xml.in | 239 -------------------- + 1 files changed, 0 insertions(+), 239 deletions(-) + +diff --git a/capplets/default-applications/gnome-default-applications.xml.in b/capplets/default-applications/gnome-default-applications.xml.in +index 54089e0..39fe3e6 100644 +--- a/capplets/default-applications/gnome-default-applications.xml.in ++++ b/capplets/default-applications/gnome-default-applications.xml.in +@@ -4,245 +4,6 @@ + + + +- +- +- <_name>Opera +- opera +- opera %s +- opera +- false +- true +- opera -newpage %s +- opera -newwindow %s +- +- +- <_name>Debian Sensible Browser +- sensible-browser +- sensible-browser %s +- +- false +- false +- +- +- <_name>Epiphany Web Browser +- epiphany +- epiphany %s +- web-browser +- false +- true +- epiphany --new-tab %s +- epiphany --new-window %s +- +- +- <_name>Galeon +- galeon +- galeon %s +- galeon +- false +- true +- galeon -n %s +- galeon -w %s +- +- +- <_name>Encompass +- encompass +- encompass %s +- encompass +- false +- false +- +- +- <_name>Firebird +- mozilla-firebird +- mozilla-firebird %s +- +- false +- true +- mozilla-firebird -remote "openurl(%s,new-tab)" +- mozilla-firebird -remote "openurl(%s,new-window)" +- +- +- <_name>Firefox +- firefox +- firefox %s +- firefox +- false +- true +- firefox -new-tab "%s" +- firefox -new-window "%s" +- +- +- <_name>Iceweasel +- iceweasel +- iceweasel %s +- iceweasel +- false +- true +- iceweasel -new-tab "%s" +- iceweasel -new-window "%s" +- +- +- <_name>Mozilla 1.6 +- mozilla-1.6 +- mozilla-1.6 %s +- mozilla-icon +- false +- true +- mozilla-1.6 -remote "openurl(%s,new-tab)" +- mozilla-1.6 -remote "openurl(%s,new-window)" +- +- +- <_name>Mozilla +- mozilla +- mozilla %s +- mozilla-icon +- false +- true +- mozilla -remote "openurl(%s,new-tab)" +- mozilla -remote "openurl(%s,new-window)" +- +- +- <_name>SeaMonkey +- seamonkey +- seamonkey %s +- seamonkey +- false +- true +- seamonkey -remote "openurl(%s,new-tab)" +- seamonkey -remote "openurl(%s,new-window)" +- +- +- <_name>Iceape +- iceape +- iceape %s +- iceape +- false +- true +- iceape -remote "openurl(%s,new-tab)" +- iceape -remote "openurl(%s,new-window)" +- +- +- <_name>Netscape Communicator +- netscape +- netscape %s +- netscape +- false +- true +- netscape -remote "openurl(%s,new-tab)" +- netscape -remote "openurl(%s,new-window)" +- +- +- <_name>Konqueror +- konqueror +- konqueror %s +- konqueror +- false +- false +- +- +- <_name>Midori +- midori +- midori %s +- midori +- false +- false +- +- +- +- +- +- <_name>Evolution Mail Reader +- evolution +- evolution %s +- evolution +- false +- +- +- <_name>Balsa +- balsa +- balsa -m %s +- gnome-balsa2 +- false +- +- +- <_name>KMail +- kmail +- kmail %s +- kmail +- false +- +- +- <_name>Icedove +- icedove +- icedove %s +- icedove +- false +- +- +- <_name>Thunderbird +- thunderbird +- thunderbird %s +- thunderbird +- false +- +- +- <_name>Mozilla Thunderbird +- mozilla-thunderbird +- mozilla-thunderbird %s +- thunderbird +- false +- +- +- <_name>Mozilla Mail +- mozilla +- mozilla -mail %s +- mozilla-mail-icon +- false +- +- +- <_name>SeaMonkey Mail +- seamonkey +- seamonkey -mail %s +- seamonkey +- false +- +- +- <_name>Iceape Mail +- iceape +- iceape -mail %s +- iceape +- false +- +- +- <_name>Mutt +- mutt +- mutt %s +- gnome-mime-application-x-executable +- true +- +- +- <_name>Claws Mail +- claws-mail +- claws-mail --compose %s +- claws-mail +- false +- +- +- <_name>Sylpheed-Claws +- sylpheed-claws +- sylpheed-claws --compose %s +- sylpheed +- false +- +- +- <_name>Sylpheed +- sylpheed +- sylpheed --compose %s +- sylpheed +- false +- +- +- + + + <_name>Debian Terminal Emulator +-- +1.7.3.4 + + +From fcd14e4e8a887838eb20b622339a377e138df39d Mon Sep 17 00:00:00 2001 +From: Vincent Untz +Date: Thu, 13 Jan 2011 11:13:46 +0100 +Subject: [PATCH 6/7] default-applications: Do not set web browser as default mailer + +This fixes the usage of the wrong variable causing a change in the +default mailer to actually configure a browser as default mailer. +--- + capplets/default-applications/gnome-da-capplet.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/capplets/default-applications/gnome-da-capplet.c b/capplets/default-applications/gnome-da-capplet.c +index 47955b3..3d41c6a 100644 +--- a/capplets/default-applications/gnome-da-capplet.c ++++ b/capplets/default-applications/gnome-da-capplet.c +@@ -98,7 +98,7 @@ mail_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) + GnomeDAURLItem *item; + GError *error = NULL; + +- item = (GnomeDAURLItem*) g_list_nth_data (capplet->web_browsers, current_index); ++ item = (GnomeDAURLItem*) g_list_nth_data (capplet->mail_readers, current_index); + if (item == NULL) + return; + +-- +1.7.3.4 + + +From fa629810b7c041bfa29e332cc3e7cdf3ec3ad118 Mon Sep 17 00:00:00 2001 +From: Vincent Untz +Date: Thu, 13 Jan 2011 11:47:07 +0100 +Subject: [PATCH 7/7] default-applications: Select current default browser/mailer on start + +--- + capplets/default-applications/gnome-da-capplet.c | 29 ++++++++++++++++++++++ + 1 files changed, 29 insertions(+), 0 deletions(-) + +diff --git a/capplets/default-applications/gnome-da-capplet.c b/capplets/default-applications/gnome-da-capplet.c +index 3d41c6a..2c04161 100644 +--- a/capplets/default-applications/gnome-da-capplet.c ++++ b/capplets/default-applications/gnome-da-capplet.c +@@ -433,6 +433,32 @@ fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list, gb + } + } + ++static void ++select_current_for_uri_scheme (GtkComboBox *combo_box, GList *app_list, const gchar *uri) ++{ ++ GAppInfo *current_default; ++ GList *l; ++ int index; ++ ++ current_default = g_app_info_get_default_for_uri_scheme (uri); ++ if (!current_default) ++ return; ++ ++ index = 0; ++ ++ for (l = app_list; l != NULL; l = l->next) { ++ if (!g_app_info_equal (current_default, ((GnomeDAURLItem *) l->data)->app_info)) { ++ index++; ++ continue; ++ } ++ ++ gtk_combo_box_set_active (combo_box, index); ++ break; ++ } ++ ++ g_object_unref (current_default); ++} ++ + static GtkWidget* + _gtk_builder_get_widget (GtkBuilder *builder, const gchar *name) + { +@@ -506,6 +532,9 @@ show_dialog (GnomeDACapplet *capplet, const gchar *start_page) + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats, TRUE); + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats, TRUE); + ++ select_current_for_uri_scheme (GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers, "http"); ++ select_current_for_uri_scheme (GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers, "mailto"); ++ + g_signal_connect (capplet->web_combo_box, "changed", G_CALLBACK (web_combo_changed_cb), capplet); + g_signal_connect (capplet->mail_combo_box, "changed", G_CALLBACK (mail_combo_changed_cb), capplet); + g_signal_connect (capplet->term_combo_box, "changed", G_CALLBACK (terminal_combo_changed_cb), capplet); +-- +1.7.3.4 + diff --git a/gnome-control-center.changes b/gnome-control-center.changes index 4564555..8e99ba9 100644 --- a/gnome-control-center.changes +++ b/gnome-control-center.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Thu Jan 13 09:57:07 CET 2011 - vuntz@opensuse.org + +- Add gnome-control-center-mime-scheme-handler.patch: correctly + handle default browser and mailer. Because of a change in how gio + works, the way to register default mailer and browser has changed + to use MIME types instead of gconf keys. The patch is based on + cherry-picked changes from git to the gnome-2-32 branch. +- Drop gnome-control-center-bnc436206-add-to-default.patch: + groupwise should be updated to declare that it supports the + x-scheme-handler/mailto mime type to be added to the list of + mailers. + ------------------------------------------------------------------- Fri Nov 19 10:16:12 CET 2010 - vuntz@opensuse.org diff --git a/gnome-control-center.spec b/gnome-control-center.spec index a62bc9a..3e631ba 100644 --- a/gnome-control-center.spec +++ b/gnome-control-center.spec @@ -59,12 +59,12 @@ Source: %{name}-%{version}.tar.bz2 Patch0: gnome-control-center-shell-common-tasks-i18n.patch # PATCH-FIX-UPSTREAM gnome-control-center-bnc427745-force-dpi.patch bnc427745 bgo553652 vuntz@novell.com -- Force the DPI to 96 right now to avoid big fonts. Patch1: gnome-control-center-bnc427745-force-dpi.patch +# PATCH-FIX-UPSTREAM gnome-control-center-mime-scheme-handler.patch vuntz@opensuse.org -- Use x-scheme-handler/* mime types to set default web browser and mailer. Cherry-picked to gonme-2-32 branch from master/3.0 branch +Patch2: gnome-control-center-mime-scheme-handler.patch # PATCH-NEEDS-REBASE gnome-control-center-system-proxy-configuration.patch -- this needs to be reimplemented to be more distro-generic before submitting upstream - docs at http://en.opensuse.org/GNOME/Proxy_configuration (was PATCH-FEATURE-OPENSUSE) Patch14: gnome-control-center-system-proxy-configuration.patch # PATCH-FEATURE-OPENSUSE gnome-control-center-use-settings-menu.patch Patch28: gnome-control-center-use-settings-menu.patch -# PATCH-FIX-UPSTREAM gnome-control-center-bnc436206-add-to-default.patch bnc436206 sreeves@novell.com -- Add groupwise to defaults list -Patch31: gnome-control-center-bnc436206-add-to-default.patch Url: http://www.gnome.org Requires: nautilus gnome-settings-daemon gnome-menus Requires: %{name}-lang = %{version} @@ -116,10 +116,10 @@ translation-update-upstream gnome-patch-translation-prepare %patch0 -p1 %patch1 -p1 +%patch2 -p1 #NEEDS-REBASE #%patch14 -p1 %patch28 -%patch31 -p1 gnome-patch-translation-update %build