summaryrefslogtreecommitdiff
path: root/src/nautilus-files-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nautilus-files-view.c')
-rw-r--r--src/nautilus-files-view.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 5ae94bbae..f9701d200 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -35,6 +35,7 @@
#include "nautilus-error-reporting.h"
#include "nautilus-file-undo-manager.h"
#include "nautilus-floating-bar.h"
+#include "nautilus-view-icon-controller.h"
#include "nautilus-list-view.h"
#include "nautilus-canvas-view.h"
#include "nautilus-mime-actions.h"
@@ -130,10 +131,10 @@
#define MIN_COMMON_FILENAME_PREFIX_LENGTH 4
-
enum
{
ADD_FILE,
+ ADD_FILES,
BEGIN_FILE_CHANGES,
BEGIN_LOADING,
CLEAR,
@@ -4055,6 +4056,7 @@ process_old_files (NautilusFilesView *view)
GList *files_added, *files_changed, *node;
FileAndDirectory *pending;
GList *selection, *files;
+ g_autoptr (GList) pending_additions = NULL;
priv = nautilus_files_view_get_instance_private (view);
files_added = priv->old_added_files;
@@ -4070,8 +4072,7 @@ process_old_files (NautilusFilesView *view)
for (node = files_added; node != NULL; node = node->next)
{
pending = node->data;
- g_signal_emit (view,
- signals[ADD_FILE], 0, pending->file, pending->directory);
+ pending_additions = g_list_prepend (pending_additions, pending->file);
/* Acknowledge the files that were pending to be revealed */
if (g_hash_table_contains (priv->pending_reveal, pending->file))
{
@@ -4081,6 +4082,12 @@ process_old_files (NautilusFilesView *view)
}
}
+ if (files_added != NULL)
+ {
+ g_signal_emit (view,
+ signals[ADD_FILES], 0, pending_additions, pending->directory);
+ }
+
for (node = files_changed; node != NULL; node = node->next)
{
gboolean should_show_file;
@@ -8018,9 +8025,11 @@ nautilus_files_view_reset_view_menu (NautilusFilesView *view)
gboolean show_sort_trash, show_sort_access, show_sort_modification, sort_available;
const gchar *hint;
g_autofree gchar *zoom_level_percent = NULL;
+ NautilusFile *file;
view_action_group = nautilus_files_view_get_action_group (view);
priv = nautilus_files_view_get_instance_private (view);
+ file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (view));
gtk_widget_set_visible (priv->visible_columns,
g_action_group_has_action (view_action_group, "visible-columns"));
@@ -8028,6 +8037,8 @@ nautilus_files_view_reset_view_menu (NautilusFilesView *view)
sort_available = g_action_group_get_action_enabled (view_action_group, "sort");
show_sort_trash = show_sort_modification = show_sort_access = FALSE;
gtk_widget_set_visible (priv->sort_menu, sort_available);
+ gtk_widget_set_visible (priv->sort_trash_time,
+ nautilus_file_is_in_trash (file));
/* We want to make insensitive available actions but that are not current
* available due to the directory
@@ -8037,24 +8048,6 @@ nautilus_files_view_reset_view_menu (NautilusFilesView *view)
gtk_widget_set_sensitive (priv->zoom_controls_box,
!nautilus_files_view_is_empty (view));
- if (sort_available)
- {
- variant = g_action_group_get_action_state_hint (view_action_group, "sort");
- g_variant_iter_init (&iter, variant);
-
- while (g_variant_iter_next (&iter, "&s", &hint))
- {
- if (g_strcmp0 (hint, "trash-time") == 0)
- {
- show_sort_trash = TRUE;
- }
- }
-
- g_variant_unref (variant);
- }
-
- gtk_widget_set_visible (priv->sort_trash_time, show_sort_trash);
-
zoom_level_percent = g_strdup_printf ("%.0f%%", nautilus_files_view_get_zoom_level_percentage (view) * 100.0);
gtk_label_set_label (GTK_LABEL (priv->zoom_level_label), zoom_level_percent);
}
@@ -9339,6 +9332,14 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass)
NULL, NULL,
g_cclosure_marshal_generic,
G_TYPE_NONE, 2, NAUTILUS_TYPE_FILE, NAUTILUS_TYPE_DIRECTORY);
+ signals[ADD_FILES] =
+ g_signal_new ("add-files",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (NautilusFilesViewClass, add_files),
+ NULL, NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE, 2, G_TYPE_POINTER, NAUTILUS_TYPE_DIRECTORY);
signals[BEGIN_FILE_CHANGES] =
g_signal_new ("begin-file-changes",
G_TYPE_FROM_CLASS (klass),
@@ -9698,7 +9699,7 @@ nautilus_files_view_new (guint id,
{
case NAUTILUS_VIEW_GRID_ID:
{
- view = nautilus_canvas_view_new (slot);
+ view = NAUTILUS_FILES_VIEW (nautilus_view_icon_controller_new (slot));
}
break;