summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchristian neumair <chris@gnome-de.org>2005-09-20 16:05:44 +0000
committerChristian Neumair <cneumair@src.gnome.org>2005-09-20 16:05:44 +0000
commitbe75326784f9d4bb44993091c837f5ecb7605f1a (patch)
tree9aee010f0e26f9236126d2a694f4b0b3ded7f5cd
parent934f0851ef1841b5089f57ac484948b271adbdf2 (diff)
downloadnautilus-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--ChangeLog27
-rw-r--r--libnautilus-private/nautilus-desktop-directory-file.c3
-rw-r--r--libnautilus-private/nautilus-file.c14
-rw-r--r--libnautilus-private/nautilus-file.h3
-rw-r--r--libnautilus-private/nautilus-trash-file.c3
-rw-r--r--src/file-manager/fm-directory-view.c9
-rw-r--r--src/file-manager/fm-properties-window.c59
-rw-r--r--src/nautilus-connect-server-dialog.c12
8 files changed, 58 insertions, 72 deletions
diff --git a/ChangeLog b/ChangeLog
index 1975d78c5..9d3afe0f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}
}