Fixed bug 3040, Action column has wrong contents

2000-10-16  Gene Z. Ragan  <gzr@eazel.com>

	Fixed bug 3040, Action column has wrong contents

	Corrected an instance where text was not getting freed
	and reset.  Also fixed a few leaks in the list
	population code.

	* mime-type-capplet/nautilus-mime-type-capplet.c:
	(populate_application_menu), (populate_viewer_menu),
	(add_mime_clicked), (populate_mime_list):
This commit is contained in:
Gene Z. Ragan 2000-10-16 21:27:40 +00:00 committed by Gene Ragan
parent 63dbc343bd
commit 6ff265240c

View file

@ -699,6 +699,7 @@ populate_application_menu (GtkWidget *application_menu, const char *mime_type)
/* Set it as active */ /* Set it as active */
gtk_menu_set_active (GTK_MENU (new_menu), index); gtk_menu_set_active (GTK_MENU (new_menu), index);
} }
gnome_vfs_mime_application_free (default_app);
} }
} }
@ -844,6 +845,7 @@ populate_viewer_menu (GtkWidget *component_menu, const char *mime_type)
/* Set it as active */ /* Set it as active */
gtk_menu_set_active (GTK_MENU (new_menu), index); gtk_menu_set_active (GTK_MENU (new_menu), index);
} }
CORBA_free (default_component);
} }
} }
@ -899,7 +901,7 @@ add_mime_clicked (GtkWidget *widget, gpointer data)
if (description != NULL && strlen (description) > 0) { if (description != NULL && strlen (description) > 0) {
text[0] = g_strdup (description); text[0] = g_strdup (description);
} else { } else {
text[0] = g_strdup (""); text[0] = "";
} }
/* Add mime type to second column */ /* Add mime type to second column */
@ -914,7 +916,7 @@ add_mime_clicked (GtkWidget *widget, gpointer data)
} }
/* Add default action to fourth column */ /* Add default action to fourth column */
text[3] = _("None"); text[3] = g_strdup(_("None"));
/* Insert item into list */ /* Insert item into list */
row = gtk_clist_insert (GTK_CLIST (mime_list), 1, text); row = gtk_clist_insert (GTK_CLIST (mime_list), 1, text);
@ -949,8 +951,8 @@ add_mime_clicked (GtkWidget *widget, gpointer data)
case GNOME_VFS_MIME_ACTION_TYPE_APPLICATION: case GNOME_VFS_MIME_ACTION_TYPE_APPLICATION:
/* Get the default application */ /* Get the default application */
default_app = gnome_vfs_mime_get_default_application (mime_string); default_app = gnome_vfs_mime_get_default_application (mime_string);
text[3] = default_app->name; g_free (text[3]);
text[3] = g_strdup (default_app->name);
action_icon_name = gnome_vfs_mime_get_icon (mime_string); action_icon_name = gnome_vfs_mime_get_icon (mime_string);
if (action_icon_name != NULL) { if (action_icon_name != NULL) {
/* Get custom icon */ /* Get custom icon */
@ -963,13 +965,16 @@ add_mime_clicked (GtkWidget *widget, gpointer data)
/* Use default icon */ /* Use default icon */
pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/i-executable.png"); pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/i-executable.png");
} }
gnome_vfs_mime_application_free (default_app);
break; break;
case GNOME_VFS_MIME_ACTION_TYPE_COMPONENT: case GNOME_VFS_MIME_ACTION_TYPE_COMPONENT:
/* Get the default component */ /* Get the default component */
default_component = gnome_vfs_mime_get_default_component (mime_string); default_component = gnome_vfs_mime_get_default_component (mime_string);
g_free (text[3]);
text[3] = name_from_oaf_server_info (default_component); text[3] = name_from_oaf_server_info (default_component);
pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/gnome-library.png"); pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/gnome-library.png");
CORBA_free (default_component);
break; break;
default: default:
@ -987,6 +992,7 @@ add_mime_clicked (GtkWidget *widget, gpointer data)
} }
g_free (text[0]); g_free (text[0]);
g_free (text[3]);
g_free (extensions); g_free (extensions);
} }
} }
@ -1056,9 +1062,11 @@ nautilus_mime_type_capplet_update_viewer_info (const char *mime_type)
static void static void
populate_mime_list (GList *type_list, GtkCList *clist) populate_mime_list (GList *type_list, GtkCList *clist)
{ {
static gchar *text[3]; static gchar *text[4];
const char *description, *action_icon_name, *description_icon_name; const char *description, *description_icon_name;
char *extensions, *mime_string, *action_icon_path, *description_icon_path; const char *action_icon_name;
char *extensions, *mime_string, *description_icon_path;
char *action_icon_path;
gint row; gint row;
GList *element; GList *element;
GdkPixbuf *pixbuf; GdkPixbuf *pixbuf;
@ -1097,7 +1105,7 @@ populate_mime_list (GList *type_list, GtkCList *clist)
} }
/* Add default action to fourth column */ /* Add default action to fourth column */
text[3] = _("None"); text[3] = g_strdup(_("None"));
/* Insert item into list */ /* Insert item into list */
row = gtk_clist_insert (GTK_CLIST (clist), 1, text); row = gtk_clist_insert (GTK_CLIST (clist), 1, text);
@ -1132,7 +1140,8 @@ populate_mime_list (GList *type_list, GtkCList *clist)
case GNOME_VFS_MIME_ACTION_TYPE_APPLICATION: case GNOME_VFS_MIME_ACTION_TYPE_APPLICATION:
/* Get the default application */ /* Get the default application */
default_app = gnome_vfs_mime_get_default_application (mime_string); default_app = gnome_vfs_mime_get_default_application (mime_string);
text[3] = default_app->name; g_free (text[3]);
text[3] = g_strdup (default_app->name);
action_icon_name = gnome_vfs_mime_get_icon (mime_string); action_icon_name = gnome_vfs_mime_get_icon (mime_string);
if (action_icon_name != NULL) { if (action_icon_name != NULL) {
@ -1146,13 +1155,16 @@ populate_mime_list (GList *type_list, GtkCList *clist)
/* Use default icon */ /* Use default icon */
pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/i-executable.png"); pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/i-executable.png");
} }
gnome_vfs_mime_application_free (default_app);
break; break;
case GNOME_VFS_MIME_ACTION_TYPE_COMPONENT: case GNOME_VFS_MIME_ACTION_TYPE_COMPONENT:
/* Get the default component */ /* Get the default component */
default_component = gnome_vfs_mime_get_default_component (mime_string); default_component = gnome_vfs_mime_get_default_component (mime_string);
g_free (text[3]);
text[3] = name_from_oaf_server_info (default_component); text[3] = name_from_oaf_server_info (default_component);
pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/gnome-library.png"); pixbuf = gdk_pixbuf_new_from_file ("/gnome/share/pixmaps/nautilus/gnome-library.png");
CORBA_free (default_component);
break; break;
default: default:
@ -1170,6 +1182,7 @@ populate_mime_list (GList *type_list, GtkCList *clist)
} }
g_free (text[0]); g_free (text[0]);
g_free (text[3]);
g_free (extensions); g_free (extensions);
} }
} }