diff options
author | christian neumair <chris@gnome-de.org> | 2005-09-20 16:05:44 +0000 |
---|---|---|
committer | Christian Neumair <cneumair@src.gnome.org> | 2005-09-20 16:05:44 +0000 |
commit | be75326784f9d4bb44993091c837f5ecb7605f1a (patch) | |
tree | 9aee010f0e26f9236126d2a694f4b0b3ded7f5cd | |
parent | 934f0851ef1841b5089f57ac484948b271adbdf2 (diff) | |
download | nautilus-be75326784f9d4bb44993091c837f5ecb7605f1a.tar.gz |
Fix leak and crasher. Fixes #314730.
2005-09-20 christian neumair <chris@gnome-de.org>
* src/nautilus-connect-server-dialog.c: (connect_to_server):
Fix leak and crasher. Fixes #314730.
* src/file-manager/fm-directory-view.c: (connect_proxy):
Don't poke around with null pixbuf if icon theme lookup failed.
* libnautilus-private/nautilus-desktop-directory-file.c:
(desktop_directory_file_get_deep_counts):
* libnautilus-private/nautilus-file.c:
(nautilus_file_get_deep_counts),
(nautilus_file_get_string_attribute_with_default:):
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-trash-file.c:
(trash_file_get_deep_counts):
* src/file-manager/fm-properties-window.c:
(directory_contents_value_field_update),
(attach_directory_contents_value_field),
(update_visibility_of_item_count_fields),
(update_visibility_of_item_count_fields_wrapper),
(remember_directory_contents_widget),
(append_directory_contents_fields), (real_destroy):
Add force flag to nautilus_file_get_deep_counts, which forces
generation even if the "show deep count" preference is turned off.
pass TRUE in property window and FALSE everywhere else. Fixes #126068.
-rw-r--r-- | ChangeLog | 27 | ||||
-rw-r--r-- | libnautilus-private/nautilus-desktop-directory-file.c | 3 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file.c | 14 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file.h | 3 | ||||
-rw-r--r-- | libnautilus-private/nautilus-trash-file.c | 3 | ||||
-rw-r--r-- | src/file-manager/fm-directory-view.c | 9 | ||||
-rw-r--r-- | src/file-manager/fm-properties-window.c | 59 | ||||
-rw-r--r-- | src/nautilus-connect-server-dialog.c | 12 |
8 files changed, 58 insertions, 72 deletions
@@ -1,3 +1,30 @@ +2005-09-20 christian neumair <chris@gnome-de.org> + + * src/nautilus-connect-server-dialog.c: (connect_to_server): + Fix leak and crasher. Fixes #314730. + + * src/file-manager/fm-directory-view.c: (connect_proxy): + Don't poke around with null pixbuf if icon theme lookup failed. + + * libnautilus-private/nautilus-desktop-directory-file.c: + (desktop_directory_file_get_deep_counts): + * libnautilus-private/nautilus-file.c: + (nautilus_file_get_deep_counts), + (nautilus_file_get_string_attribute_with_default:): + * libnautilus-private/nautilus-file.h: + * libnautilus-private/nautilus-trash-file.c: + (trash_file_get_deep_counts): + * src/file-manager/fm-properties-window.c: + (directory_contents_value_field_update), + (attach_directory_contents_value_field), + (update_visibility_of_item_count_fields), + (update_visibility_of_item_count_fields_wrapper), + (remember_directory_contents_widget), + (append_directory_contents_fields), (real_destroy): + Add force flag to nautilus_file_get_deep_counts, which forces + generation even if the "show deep count" preference is turned off. + pass TRUE in property window and FALSE everywhere else. Fixes #126068. + 2005-09-19 Nate Nielsen <nielsen@memberwebs.com> * nautilus-connect-server-dialog-main.c: (main): diff --git a/libnautilus-private/nautilus-desktop-directory-file.c b/libnautilus-private/nautilus-desktop-directory-file.c index 49bd4d84c..65516a633 100644 --- a/libnautilus-private/nautilus-desktop-directory-file.c +++ b/libnautilus-private/nautilus-desktop-directory-file.c @@ -413,7 +413,8 @@ desktop_directory_file_get_deep_counts (NautilusFile *file, directory_count, file_count, unreadable_directory_count, - total_size); + total_size, + TRUE); if (file_count) { *file_count += g_list_length (file->details->directory->details->file_list); diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c index 89a285b4b..d0676c295 100644 --- a/libnautilus-private/nautilus-file.c +++ b/libnautilus-private/nautilus-file.c @@ -3285,6 +3285,9 @@ nautilus_file_get_directory_item_count (NautilusFile *file, * @unreadable_directory_count: Number of directories encountered * that were unreadable. * @total_size: Total size of all files and directories visited. + * @force: Whether the deep counts should even be collected if + * nautilus_file_should_show_directory_item_count returns FALSE + * for this file. * * Returns: Status to indicate whether sizes are available. * @@ -3294,7 +3297,8 @@ nautilus_file_get_deep_counts (NautilusFile *file, guint *directory_count, guint *file_count, guint *unreadable_directory_count, - GnomeVFSFileSize *total_size) + GnomeVFSFileSize *total_size, + gboolean force) { if (directory_count != NULL) { *directory_count = 0; @@ -3311,7 +3315,7 @@ nautilus_file_get_deep_counts (NautilusFile *file, g_return_val_if_fail (NAUTILUS_IS_FILE (file), NAUTILUS_REQUEST_DONE); - if (!nautilus_file_should_show_directory_item_count (file)) { + if (!force && !nautilus_file_should_show_directory_item_count (file)) { /* Set field so an existing value isn't treated as up-to-date * when preference changes later. */ @@ -4357,7 +4361,7 @@ nautilus_file_get_deep_count_as_string_internal (NautilusFile *file, g_return_val_if_fail (nautilus_file_is_directory (file), NULL); status = nautilus_file_get_deep_counts - (file, &directory_count, &file_count, &unreadable_count, &total_size); + (file, &directory_count, &file_count, &unreadable_count, &total_size, FALSE); /* Check whether any info is available. */ if (status == NAUTILUS_REQUEST_NOT_STARTED) { @@ -4621,7 +4625,7 @@ nautilus_file_get_string_attribute_with_default (NautilusFile *file, const char return g_strdup (count_unreadable ? _("? items") : "..."); } if (strcmp (attribute_name, "deep_size") == 0) { - status = nautilus_file_get_deep_counts (file, NULL, NULL, NULL, NULL); + status = nautilus_file_get_deep_counts (file, NULL, NULL, NULL, NULL, FALSE); if (status == NAUTILUS_REQUEST_DONE) { /* This means no contents at all were readable */ return g_strdup (_("? bytes")); @@ -4631,7 +4635,7 @@ nautilus_file_get_string_attribute_with_default (NautilusFile *file, const char if (strcmp (attribute_name, "deep_file_count") == 0 || strcmp (attribute_name, "deep_directory_count") == 0 || strcmp (attribute_name, "deep_total_count") == 0) { - status = nautilus_file_get_deep_counts (file, NULL, NULL, NULL, NULL); + status = nautilus_file_get_deep_counts (file, NULL, NULL, NULL, NULL, FALSE); if (status == NAUTILUS_REQUEST_DONE) { /* This means no contents at all were readable */ return g_strdup (_("? items")); diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h index dcaf53fee..187748b95 100644 --- a/libnautilus-private/nautilus-file.h +++ b/libnautilus-private/nautilus-file.h @@ -164,7 +164,8 @@ NautilusRequestStatus nautilus_file_get_deep_counts (Nautilu guint *directory_count, guint *file_count, guint *unreadable_directory_count, - GnomeVFSFileSize *total_size); + GnomeVFSFileSize *total_size, + gboolean force); gboolean nautilus_file_should_show_directory_item_count (NautilusFile *file); GList * nautilus_file_get_keywords (NautilusFile *file); void nautilus_file_set_keywords (NautilusFile *file, diff --git a/libnautilus-private/nautilus-trash-file.c b/libnautilus-private/nautilus-trash-file.c index 77126bdf4..07fe30484 100644 --- a/libnautilus-private/nautilus-trash-file.c +++ b/libnautilus-private/nautilus-trash-file.c @@ -624,7 +624,8 @@ trash_file_get_deep_counts (NautilusFile *file, &one_directory_count, &one_file_count, &one_unreadable_directory_count, - &one_total_size); + &one_total_size, + TRUE); if (one_status < status) { status = one_status; diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index 2571cda61..e954a5ca7 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -6277,11 +6277,12 @@ connect_proxy (FMDirectoryView *view, "gnome-fs-regular", NAUTILUS_ICON_SIZE_FOR_MENUS, 0, NULL); + if (pixbuf != NULL) { + image = gtk_image_new_from_pixbuf (pixbuf); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (proxy), image); - image = gtk_image_new_from_pixbuf (pixbuf); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (proxy), image); - - gdk_pixbuf_unref (pixbuf); + gdk_pixbuf_unref (pixbuf); + } } } diff --git a/src/file-manager/fm-properties-window.c b/src/file-manager/fm-properties-window.c index 267149463..b873cf92d 100644 --- a/src/file-manager/fm-properties-window.c +++ b/src/file-manager/fm-properties-window.c @@ -104,9 +104,6 @@ struct FMPropertiesWindowDetails { guint update_directory_contents_timeout_id; guint update_files_timeout_id; - GList *directory_contents_widgets; - int directory_contents_row; - GList *special_flags_widgets; int first_special_flags_row; int num_special_flags_rows; @@ -1870,7 +1867,8 @@ directory_contents_value_field_update (FMPropertiesWindow *window) &directory_count, &file_count, &file_unreadable, - &file_size); + &file_size, + TRUE); total_count += (file_count + directory_count); total_size += file_size; @@ -2001,7 +1999,6 @@ attach_directory_contents_value_field (FMPropertiesWindow *window, /* Fill in the initial value. */ directory_contents_value_field_update (window); - for (l = window->details->target_files; l; l = l->next) { file = NAUTILUS_FILE (l->data); nautilus_file_recompute_deep_counts (file); @@ -2100,44 +2097,6 @@ update_visibility_of_table_rows (GtkTable *table, } } -static void -update_visibility_of_item_count_fields (FMPropertiesWindow *window) -{ - gboolean should_show_count; - GList *l; - guint count = 0; - NautilusFile *file; - - for (l = window->details->target_files; l; l = l->next) { - file = NAUTILUS_FILE (l->data); - count += nautilus_file_should_show_directory_item_count (file); - } - should_show_count = count; - - update_visibility_of_table_rows - (window->details->basic_table, - should_show_count, - window->details->directory_contents_row, - 1, - window->details->directory_contents_widgets); -} - -static void -update_visibility_of_item_count_fields_wrapper (gpointer callback_data) -{ - update_visibility_of_item_count_fields (FM_PROPERTIES_WINDOW (callback_data)); -} - -static void -remember_directory_contents_widget (FMPropertiesWindow *window, GtkWidget *widget) -{ - g_assert (FM_IS_PROPERTIES_WINDOW (window)); - g_assert (GTK_IS_WIDGET (widget)); - - window->details->directory_contents_widgets = - g_list_prepend (window->details->directory_contents_widgets, widget); -} - static guint append_directory_contents_fields (FMPropertiesWindow *window, GtkTable *table) @@ -2154,17 +2113,6 @@ append_directory_contents_fields (FMPropertiesWindow *window, value_field = attach_directory_contents_value_field (window, table, last_row); - remember_directory_contents_widget (window, GTK_WIDGET (title_field)); - remember_directory_contents_widget (window, GTK_WIDGET (value_field)); - window->details->directory_contents_row = last_row; - - update_visibility_of_item_count_fields (window); - eel_preferences_add_callback_while_alive - (NAUTILUS_PREFERENCES_SHOW_DIRECTORY_ITEM_COUNTS, - update_visibility_of_item_count_fields_wrapper, - window, - G_OBJECT (window)); - return last_row; } @@ -3746,9 +3694,6 @@ real_destroy (GtkObject *object) window->details->changed_files = NULL; window->details->name_field = NULL; - - g_list_free (window->details->directory_contents_widgets); - window->details->directory_contents_widgets = NULL; g_list_free (window->details->special_flags_widgets); window->details->special_flags_widgets = NULL; diff --git a/src/nautilus-connect-server-dialog.c b/src/nautilus-connect-server-dialog.c index 90a298028..331a70f8c 100644 --- a/src/nautilus-connect-server-dialog.c +++ b/src/nautilus-connect-server-dialog.c @@ -212,14 +212,20 @@ connect_to_server (NautilusConnectServerDialog *dialog) g_free (t); } if (dialog->details->domain_entry->parent != NULL) { - free_domain = TRUE; domain = gtk_editable_get_chars (GTK_EDITABLE (dialog->details->domain_entry), 0, -1); if (strlen (domain) != 0) { - g_free (user); - user = g_strconcat (domain , ";" , user, NULL); + t = user; + + user = g_strconcat (domain , ";" , t, NULL); + + if (free_user) { + g_free (t); + } + + free_user = TRUE; } } |