summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Lacage <mathieu@gnome.org>2003-09-12 08:45:53 +0000
committerMathieu Lacage <mathieu@src.gnome.org>2003-09-12 08:45:53 +0000
commit887e6cae5bded5d0e9b90c871223922310dcc88b (patch)
tree96da01fd19ce05142d8a14adab00f3d3ec1db070
parent0bc745c9ffeafcdd985ac75d3dcc98daefa38d73 (diff)
downloadnautilus-NAUTILUS_SPATIAL_PLAYGROUND_BRANCHPOINT.tar.gz
add a wait cursor during permission change. This is most useful whenNAUTILUS_SPATIAL_PLAYGROUND_BRANCHPOINT
2003-09-11 Mathieu Lacage <mathieu@gnome.org> * src/file-manager/fm-properties-window.c: add a wait cursor during permission change. This is most useful when changing the permission a big group of files.
-rw-r--r--ChangeLog6
-rw-r--r--src/file-manager/fm-properties-window.c23
2 files changed, 26 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e0454acf9..59eaf5ea2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-09-11 Mathieu Lacage <mathieu@gnome.org>
+
+ * src/file-manager/fm-properties-window.c: add a wait cursor during
+ permission change. This is most useful when changing the permission
+ a big group of files.
+
2003-09-11 Bastien Nocera <hadess@hadess.net>
* libnautilus-private/nautilus-volume-monitor.c:
diff --git a/src/file-manager/fm-properties-window.c b/src/file-manager/fm-properties-window.c
index 2f8393ffd..8435f8ac3 100644
--- a/src/file-manager/fm-properties-window.c
+++ b/src/file-manager/fm-properties-window.c
@@ -123,6 +123,8 @@ struct FMPropertiesWindowDetails {
guint total_count;
GnomeVFSFileSize total_size;
+
+ guint long_operation_underway;
};
enum {
@@ -2436,7 +2438,14 @@ create_emblems_page (FMPropertiesWindow *window)
static void
permission_change_callback (NautilusFile *file, GnomeVFSResult result, gpointer callback_data)
{
- g_assert (callback_data == NULL);
+ g_assert (callback_data != NULL);
+
+ FMPropertiesWindow *window = (FMPropertiesWindow *)callback_data;
+ if (window->details->long_operation_underway == 1) {
+ /* finished !! */
+ gdk_window_set_cursor (GTK_WIDGET (window)->window, NULL);
+ }
+ window->details->long_operation_underway--;
/* Report the error if it's an error. */
fm_report_error_setting_permissions (file, result, NULL);
@@ -2514,6 +2523,14 @@ permission_button_toggled (GtkToggleButton *button,
G_CALLBACK (permission_button_toggled),
window);
+ if (window->details->long_operation_underway == 0) {
+ /* start long operation */
+ GdkCursor * cursor = gdk_cursor_new (GDK_WATCH);
+ gdk_window_set_cursor (GTK_WIDGET (window)->window, cursor);
+ }
+ window->details->long_operation_underway += g_list_length (files_on);
+ window->details->long_operation_underway += g_list_length (files_off);
+
for (l = files_on; l != NULL; l = l->next) {
NautilusFile *file;
@@ -2527,7 +2544,7 @@ permission_button_toggled (GtkToggleButton *button,
nautilus_file_set_permissions
(file, permissions,
permission_change_callback,
- NULL);
+ window);
}
}
@@ -2546,7 +2563,7 @@ permission_button_toggled (GtkToggleButton *button,
nautilus_file_set_permissions
(file, permissions,
permission_change_callback,
- NULL);
+ window);
}
}