Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37752546
en ru br
ALT Linux repos
S:45.0-alt1
5.0: 2.26.0-alt1
4.1: 2.22.2.1-alt1.M41.1
4.0: 2.16.3-alt2
3.0: 2.10.2-alt1

Group :: Graphical desktop/GNOME
RPM: gnome-control-center

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: gnome-control-center-2.32.1-mime-handler3.patch
Download


++ gnome-control-center-2.32.1/debian/patches/142_fix_icons_for_default_apps.patch
Description: Fix icons for new glib url handlers
Author: Michael Terry <michael.terry@canonical.com>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=638775
Index: gnome-control-center-2.32.1/capplets/default-applications/gnome-da-capplet.c
===================================================================
--- gnome-control-center-2.32.1.orig/capplets/default-applications/gnome-da-capplet.c	2011-01-05 16:05:40.623854462 -0500
+++ gnome-control-center-2.32.1/capplets/default-applications/gnome-da-capplet.c	2011-01-05 16:12:03.030460004 -0500
@@ -35,7 +35,7 @@
 
 enum
 {
-    PIXBUF_COL,
+    ICON_COL,
     TEXT_COL,
     N_COLUMNS
 };
@@ -193,33 +193,6 @@
     gtk_widget_set_sensitive (capplet->mobility_command_label, is_custom_active);
 }
 
-static void
-refresh_combo_box_icons (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list)
-{
-    GList *entry;
-    GnomeDAItem *item;
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    GdkPixbuf *pixbuf;
-
-    for (entry = app_list; entry != NULL; entry = g_list_next (entry)) {
-	item = (GnomeDAItem *) entry->data;
-
-	model = gtk_combo_box_get_model (combo_box);
-
-	if (item->icon_path && gtk_tree_model_get_iter_from_string (model, &iter, item->icon_path)) {
-	    pixbuf = gtk_icon_theme_load_icon (theme, item->icon_name, 22, 0, NULL);
-
-	    gtk_list_store_set (GTK_LIST_STORE (model), &iter,
-				PIXBUF_COL, pixbuf,
-				-1);
-
-	    if (pixbuf)
-		g_object_unref (pixbuf);
-	}
-    }
-}
-
 static struct {
     const gchar *name;
     const gchar *icon;
@@ -246,13 +219,6 @@
 	icon = gtk_builder_get_object (capplet->builder, icons[i].name);
 	set_icon (GTK_IMAGE (icon), theme, icons[i].icon);
     }
-
-    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers);
-    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers);
-    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players);
-    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals);
-    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats);
-    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats);
 }
 
 static void
@@ -397,33 +363,31 @@
 }
 
 static void
-fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list, gboolean add_custom)
+fill_combo_box (GtkComboBox *combo_box, GList *app_list, gboolean add_custom)
 {
     GList *entry;
     GtkTreeModel *model;
     GtkCellRenderer *renderer;
     GtkTreeIter iter;
-    GdkPixbuf *pixbuf;
-
-    if (theme == NULL) {
-	theme = gtk_icon_theme_get_default ();
-    }
 
     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));
+    model = GTK_TREE_MODEL (gtk_list_store_new (2, G_TYPE_ICON, G_TYPE_STRING));
     gtk_combo_box_set_model (combo_box, model);
 
     renderer = gtk_cell_renderer_pixbuf_new ();
 
     /* not all cells have a pixbuf, this prevents the combo box to shrink */
-    gtk_cell_renderer_set_fixed_size (renderer, -1, 22);
+    gtk_cell_renderer_set_fixed_size (renderer, -1, 24);
+    g_object_set (G_OBJECT (renderer),
+                  "stock-size", GTK_ICON_SIZE_LARGE_TOOLBAR,
+                  NULL);
     gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, FALSE);
     gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
-				    "pixbuf", PIXBUF_COL,
+				    "gicon", ICON_COL,
 				    NULL);
 
     renderer = gtk_cell_renderer_text_new ();
@@ -436,18 +400,11 @@
 	GnomeDAItem *item;
 	item = (GnomeDAItem *) entry->data;
 
-	pixbuf = gtk_icon_theme_load_icon (theme, item->icon_name, 22, 0, NULL);
-
 	gtk_list_store_append (GTK_LIST_STORE (model), &iter);
 	gtk_list_store_set (GTK_LIST_STORE (model), &iter,
-			    PIXBUF_COL, pixbuf,
+			    ICON_COL, item->icon,
 			    TEXT_COL, item->name,
 			    -1);
-
-	item->icon_path = gtk_tree_model_get_string_from_iter (model, &iter);
-
-	if (pixbuf)
-	    g_object_unref (pixbuf);
     }
 
     if (add_custom) {
@@ -455,7 +412,7 @@
 	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,
+			    ICON_COL, NULL,
 			    TEXT_COL, _("Custom"),
 			    -1);
     }
@@ -528,12 +485,12 @@
     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, 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);
+    fill_combo_box (GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers, FALSE);
+    fill_combo_box (GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers, FALSE);
+    fill_combo_box (GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals, TRUE);
+    fill_combo_box (GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players, TRUE);
+    fill_combo_box (GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats, TRUE);
+    fill_combo_box (GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats, TRUE);
 
     set_combo_to_default_for_scheme (GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers, "http");
     set_combo_to_default_for_scheme (GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers, "mailto");
Index: gnome-control-center-2.32.1/capplets/default-applications/gnome-da-item.c
===================================================================
--- gnome-control-center-2.32.1.orig/capplets/default-applications/gnome-da-item.c	2011-01-05 16:04:48.644316418 -0500
+++ gnome-control-center-2.32.1/capplets/default-applications/gnome-da-item.c	2011-01-05 16:05:40.653854197 -0500
@@ -79,8 +79,8 @@
     g_free (item->generic.name);
     g_free (item->generic.executable);
     g_free (item->generic.command);
-    g_free (item->generic.icon_name);
-    g_free (item->generic.icon_path);
+    if (item->generic.icon)
+        g_object_unref (item->generic.icon);
 
     g_object_unref (item->app_info);
 
@@ -95,8 +95,8 @@
     g_free (item->generic.name);
     g_free (item->generic.executable);
     g_free (item->generic.command);
-    g_free (item->generic.icon_name);
-    g_free (item->generic.icon_path);
+    if (item->generic.icon)
+        g_object_unref (item->generic.icon);
 
     g_free (item);
 }
@@ -109,8 +109,8 @@
     g_free (item->generic.name);
     g_free (item->generic.executable);
     g_free (item->generic.command);
-    g_free (item->generic.icon_name);
-    g_free (item->generic.icon_path);
+    if (item->generic.icon)
+        g_object_unref (item->generic.icon);
 
     g_free (item->exec_flag);
 
@@ -125,8 +125,8 @@
     g_free (item->generic.name);
     g_free (item->generic.executable);
     g_free (item->generic.command);
-    g_free (item->generic.icon_name);
-    g_free (item->generic.icon_path);
+    if (item->generic.icon)
+        g_object_unref (item->generic.icon);
 
     g_free (item);
 }
@@ -139,8 +139,8 @@
     g_free (item->generic.name);
     g_free (item->generic.executable);
     g_free (item->generic.command);
-    g_free (item->generic.icon_name);
-    g_free (item->generic.icon_path);
+    if (item->generic.icon)
+        g_object_unref (item->generic.icon);
 
     g_free (item);
 }
Index: gnome-control-center-2.32.1/capplets/default-applications/gnome-da-item.h
===================================================================
--- gnome-control-center-2.32.1.orig/capplets/default-applications/gnome-da-item.h	2011-01-05 16:04:48.684316062 -0500
+++ gnome-control-center-2.32.1/capplets/default-applications/gnome-da-item.h	2011-01-05 16:05:40.653854197 -0500
@@ -35,8 +35,7 @@
     gchar *name;
     gchar *executable;
     gchar *command;
-    gchar *icon_name;
-    gchar *icon_path;
+    GIcon *icon;
 };
 
 struct _GnomeDASimpleItem {
Index: gnome-control-center-2.32.1/capplets/default-applications/gnome-da-xml.c
===================================================================
--- gnome-control-center-2.32.1.orig/capplets/default-applications/gnome-da-xml.c	2011-01-05 16:04:48.624316596 -0500
+++ gnome-control-center-2.32.1/capplets/default-applications/gnome-da-xml.c	2011-01-05 16:05:40.653854197 -0500
@@ -152,7 +152,7 @@
 			term_item->generic.name = gnome_da_xml_get_string (element, "name");
 			term_item->generic.executable = executable;
 			term_item->generic.command = gnome_da_xml_get_string (element, "command");
-			term_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
+			term_item->generic.icon = g_themed_icon_new (gnome_da_xml_get_string (element, "icon-name"));
 
 			term_item->exec_flag = gnome_da_xml_get_string (element, "exec-flag");
 
@@ -173,7 +173,7 @@
 			media_item->generic.name = gnome_da_xml_get_string (element, "name");
 			media_item->generic.executable = executable;
 			media_item->generic.command = gnome_da_xml_get_string (element, "command");
-			media_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
+			media_item->generic.icon = g_themed_icon_new (gnome_da_xml_get_string (element, "icon-name"));
 
 			media_item->run_in_terminal = gnome_da_xml_get_bool (element, "run-in-terminal");
 
@@ -194,7 +194,7 @@
 			visual_item->generic.name = gnome_da_xml_get_string (element, "name");
 			visual_item->generic.executable = executable;
 			visual_item->generic.command = gnome_da_xml_get_string (element, "command");
-			visual_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
+			visual_item->generic.icon = g_themed_icon_new (gnome_da_xml_get_string (element, "icon-name"));
 
 			visual_item->run_at_startup = gnome_da_xml_get_bool (element, "run-at-startup");
 
@@ -215,7 +215,7 @@
 			mobility_item->generic.name = gnome_da_xml_get_string (element, "name");
 			mobility_item->generic.executable = executable;
 			mobility_item->generic.command = gnome_da_xml_get_string (element, "command");
-			mobility_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
+			mobility_item->generic.icon = g_themed_icon_new (gnome_da_xml_get_string (element, "icon-name"));
 
 			mobility_item->run_at_startup = gnome_da_xml_get_bool (element, "run-at-startup");
 
@@ -246,12 +246,18 @@
 	executable = g_app_info_get_executable (app_info);
 	if (is_executable_valid (executable)) {
             GnomeDAURLItem *url_item;
+            GIcon *icon;
 
 	    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));
+
+	    icon = g_app_info_get_icon (app_info);
+	    if (icon != NULL) {
+	        url_item->generic.icon = g_object_ref (icon);
+	    }
+
 	    /* Steal the reference */
 	    url_item->app_info = app_info;
 
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin