summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nautilus-view.c286
-rw-r--r--src/nautilus-view.h5
-rw-r--r--src/nautilus-window-slot.c296
-rw-r--r--src/nautilus-window-slot.h3
4 files changed, 261 insertions, 329 deletions
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index e0d42234d..521adee11 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -32,6 +32,7 @@
#include "nautilus-application.h"
#include "nautilus-desktop-canvas-view.h"
#include "nautilus-error-reporting.h"
+#include "nautilus-floating-bar.h"
#include "nautilus-list-view.h"
#include "nautilus-mime-actions.h"
#include "nautilus-previewer.h"
@@ -118,6 +119,9 @@
/* Time to show the duplicated folder label */
#define DIALOG_DUPLICATED_NAME_ERROR_LABEL_TIMEOUT 500
+/* Delay to show the Loading... floating bar */
+#define FLOATING_BAR_LOADING_DELAY 500 /* ms */
+
enum {
ADD_FILE,
BEGIN_FILE_CHANGES,
@@ -227,10 +231,16 @@ struct NautilusViewDetails
GActionGroup *view_action_group;
+ GtkWidget *scrolled_window;
+
/* Empty states */
- GtkWidget *overlay;
GtkWidget *folder_is_empty_widget;
GtkWidget *no_search_results_widget;
+
+ /* Floating bar */
+ guint floating_bar_set_status_timeout_id;
+ guint floating_bar_loading_timeout_id;
+ GtkWidget *floating_bar;
};
typedef struct {
@@ -275,7 +285,7 @@ static void check_empty_states (NautilusView *vi
static void unschedule_pop_up_pathbar_context_menu (NautilusView *view);
-G_DEFINE_TYPE (NautilusView, nautilus_view, GTK_TYPE_SCROLLED_WINDOW);
+G_DEFINE_TYPE (NautilusView, nautilus_view, GTK_TYPE_OVERLAY);
static void
check_empty_states (NautilusView *view)
@@ -292,7 +302,7 @@ check_empty_states (NautilusView *view)
NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES);
filtered = nautilus_file_list_filter_hidden (files, show_hidden_files);
if (g_list_length (filtered) == 0) {
- if (NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model)) {
+ if (nautilus_view_is_search (view)) {
gtk_widget_show (view->details->no_search_results_widget);
} else {
gtk_widget_show (view->details->folder_is_empty_widget);
@@ -303,6 +313,180 @@ check_empty_states (NautilusView *view)
}
}
+/*
+ * Floating Bar code
+ */
+static void
+remove_loading_floating_bar (NautilusView *view)
+{
+ if (view->details->floating_bar_loading_timeout_id != 0) {
+ g_source_remove (view->details->floating_bar_loading_timeout_id);
+ view->details->floating_bar_loading_timeout_id = 0;
+ }
+
+ gtk_widget_hide (view->details->floating_bar);
+ nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (view->details->floating_bar));
+}
+
+static void
+real_setup_loading_floating_bar (NautilusView *view)
+{
+ gboolean disable_chrome;
+
+ g_object_get (nautilus_view_get_window (view),
+ "disable-chrome", &disable_chrome,
+ NULL);
+
+ if (disable_chrome) {
+ gtk_widget_hide (view->details->floating_bar);
+ return;
+ }
+
+ nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (view->details->floating_bar));
+ nautilus_floating_bar_set_primary_label (NAUTILUS_FLOATING_BAR (view->details->floating_bar),
+ nautilus_view_is_search (view) ? _("Searching…") : _("Loading…"));
+ nautilus_floating_bar_set_details_label (NAUTILUS_FLOATING_BAR (view->details->floating_bar), NULL);
+ nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (view->details->floating_bar), view->details->loading);
+ nautilus_floating_bar_add_action (NAUTILUS_FLOATING_BAR (view->details->floating_bar),
+ "process-stop-symbolic",
+ NAUTILUS_FLOATING_BAR_ACTION_ID_STOP);
+
+ gtk_widget_set_halign (view->details->floating_bar, GTK_ALIGN_END);
+ gtk_widget_show (view->details->floating_bar);
+}
+
+static gboolean
+setup_loading_floating_bar_timeout_cb (gpointer user_data)
+{
+ NautilusView *view = user_data;
+
+ view->details->floating_bar_loading_timeout_id = 0;
+ real_setup_loading_floating_bar (view);
+
+ return FALSE;
+}
+
+static void
+setup_loading_floating_bar (NautilusView *view)
+{
+ /* setup loading overlay */
+ if (view->details->floating_bar_set_status_timeout_id != 0) {
+ g_source_remove (view->details->floating_bar_set_status_timeout_id);
+ view->details->floating_bar_set_status_timeout_id = 0;
+ }
+
+ if (view->details->floating_bar_loading_timeout_id != 0) {
+ g_source_remove (view->details->floating_bar_loading_timeout_id);
+ view->details->floating_bar_loading_timeout_id = 0;
+ }
+
+ view->details->floating_bar_loading_timeout_id =
+ g_timeout_add (FLOATING_BAR_LOADING_DELAY, setup_loading_floating_bar_timeout_cb, view);
+}
+
+static void
+floating_bar_action_cb (NautilusFloatingBar *floating_bar,
+ gint action,
+ NautilusView *view)
+{
+ if (action == NAUTILUS_FLOATING_BAR_ACTION_ID_STOP) {
+ remove_loading_floating_bar (view);
+ nautilus_window_slot_stop_loading (view->details->slot);
+ }
+}
+
+static void
+real_floating_bar_set_short_status (NautilusView *view,
+ const gchar *primary_status,
+ const gchar *detail_status)
+{
+ gboolean disable_chrome;
+
+ nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (view->details->floating_bar));
+ nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (view->details->floating_bar), view->details->loading);
+
+ g_object_get (nautilus_view_get_window (view),
+ "disable-chrome", &disable_chrome,
+ NULL);
+
+ if ((primary_status == NULL && detail_status == NULL) || disable_chrome) {
+ gtk_widget_hide (view->details->floating_bar);
+ return;
+ }
+
+ nautilus_floating_bar_set_labels (NAUTILUS_FLOATING_BAR (view->details->floating_bar),
+ primary_status,
+ detail_status);
+
+ gtk_widget_show (view->details->floating_bar);
+}
+
+typedef struct {
+ gchar *primary_status;
+ gchar *detail_status;
+ NautilusView *view;
+} FloatingBarSetStatusData;
+
+static void
+floating_bar_set_status_data_free (gpointer data)
+{
+ FloatingBarSetStatusData *status_data = data;
+
+ g_free (status_data->primary_status);
+ g_free (status_data->detail_status);
+
+ g_slice_free (FloatingBarSetStatusData, data);
+}
+
+static gboolean
+floating_bar_set_status_timeout_cb (gpointer data)
+{
+ FloatingBarSetStatusData *status_data = data;
+
+ status_data->view->details->floating_bar_set_status_timeout_id = 0;
+ real_floating_bar_set_short_status (status_data->view,
+ status_data->primary_status,
+ status_data->detail_status);
+
+ return FALSE;
+}
+
+static void
+set_floating_bar_status (NautilusView *view,
+ const gchar *primary_status,
+ const gchar *detail_status)
+{
+ GtkSettings *settings;
+ gint double_click_time;
+ FloatingBarSetStatusData *status_data;
+
+ if (view->details->floating_bar_set_status_timeout_id != 0) {
+ g_source_remove (view->details->floating_bar_set_status_timeout_id);
+ view->details->floating_bar_set_status_timeout_id = 0;
+ }
+
+ settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (view)));
+ g_object_get (settings,
+ "gtk-double-click-time", &double_click_time,
+ NULL);
+
+ status_data = g_slice_new0 (FloatingBarSetStatusData);
+ status_data->primary_status = g_strdup (primary_status);
+ status_data->detail_status = g_strdup (detail_status);
+ status_data->view = view;
+
+ /* waiting for half of the double-click-time before setting
+ * the status seems to be a good approximation of not setting it
+ * too often and not delaying the statusbar too much.
+ */
+ view->details->floating_bar_set_status_timeout_id =
+ g_timeout_add_full (G_PRIORITY_DEFAULT,
+ (guint) (double_click_time / 2),
+ floating_bar_set_status_timeout_cb,
+ status_data,
+ floating_bar_set_status_data_free);
+}
+
static char *
real_get_backing_uri (NautilusView *view)
{
@@ -577,6 +761,15 @@ nautilus_view_restore_default_zoom_level (NautilusView *view)
NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->restore_default_zoom_level (view);
}
+gboolean
+nautilus_view_is_search (NautilusView *view)
+{
+ if (!view->details->model)
+ return FALSE;
+
+ return NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model);
+}
+
const char *
nautilus_view_get_view_id (NautilusView *view)
{
@@ -2507,7 +2700,7 @@ nautilus_view_grab_focus (NautilusView *view)
{
/* focus the child of the scrolled window if it exists */
GtkWidget *child;
- child = gtk_bin_get_child (GTK_BIN (view));
+ child = gtk_bin_get_child (GTK_BIN (view->details->scrolled_window));
if (child) {
gtk_widget_grab_focus (GTK_WIDGET (child));
}
@@ -2609,6 +2802,16 @@ nautilus_view_destroy (GtkWidget *object)
view->details->reveal_selection_idle_id = 0;
}
+ if (view->details->floating_bar_set_status_timeout_id != 0) {
+ g_source_remove (view->details->floating_bar_set_status_timeout_id);
+ view->details->floating_bar_set_status_timeout_id = 0;
+ }
+
+ if (view->details->floating_bar_loading_timeout_id != 0) {
+ g_source_remove (view->details->floating_bar_loading_timeout_id);
+ view->details->floating_bar_loading_timeout_id = 0;
+ }
+
if (view->details->directory_as_file) {
nautilus_file_unref (view->details->directory_as_file);
@@ -2821,8 +3024,7 @@ nautilus_view_display_selection_info (NautilusView *view)
g_free (non_folder_count_str);
g_free (non_folder_item_count_str);
- nautilus_window_slot_set_status (view->details->slot,
- primary_status, detail_status);
+ set_floating_bar_status (view, primary_status, detail_status);
g_free (primary_status);
g_free (detail_status);
@@ -2839,12 +3041,10 @@ nautilus_view_load_location (NautilusView *nautilus_view,
GFile *location)
{
NautilusDirectory *directory;
- NautilusView *directory_view;
- directory_view = NAUTILUS_VIEW (nautilus_view);
nautilus_profile_start (NULL);
directory = nautilus_directory_get (location);
- load_directory (directory_view, directory);
+ load_directory (nautilus_view, directory);
nautilus_directory_unref (directory);
nautilus_profile_end (NULL);
}
@@ -2879,14 +3079,14 @@ done_loading (NautilusView *view,
* as NULL. */
if (view->details->model != NULL) {
nautilus_view_update_toolbar_menus (view);
+ remove_loading_floating_bar (view);
schedule_update_context_menus (view);
schedule_update_status (view);
reset_update_interval (view);
selection = view->details->pending_selection;
- if (NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model)
- && all_files_seen) {
+ if (nautilus_view_is_search (view) && all_files_seen) {
nautilus_view_select_first (view);
do_reveal = TRUE;
} else if (selection != NULL && all_files_seen) {
@@ -3616,6 +3816,8 @@ done_loading_callback (NautilusDirectory *directory,
*/
unschedule_display_of_pending_files (view);
schedule_timeout_display_of_pending_files (view, UPDATE_INTERVAL_MIN);
+
+ remove_loading_floating_bar (view);
}
nautilus_profile_end (NULL);
}
@@ -3733,7 +3935,7 @@ nautilus_view_get_content_widget (NautilusView *view)
{
g_return_val_if_fail (NAUTILUS_IS_VIEW (view), NULL);
- return view->details->overlay;
+ return view->details->scrolled_window;
}
GdkAtom
@@ -6074,8 +6276,7 @@ real_update_actions_state (NautilusView *view)
selection_contains_special_link = special_link_in_selection (selection);
selection_contains_desktop_or_home_dir = desktop_or_home_dir_in_selection (selection);
selection_contains_recent = showing_recent_directory (view);
- selection_contains_search = view->details->model &&
- NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model);
+ selection_contains_search = nautilus_view_is_search (view);
selection_is_read_only = selection_count == 1 &&
(!nautilus_file_can_write (NAUTILUS_FILE (selection->data)) &&
!nautilus_file_has_activation_uri (NAUTILUS_FILE (selection->data)));
@@ -6922,6 +7123,8 @@ load_directory (NautilusView *view,
view->details->loading = TRUE;
+ setup_loading_floating_bar (view);
+
/* Update menus when directory is empty, before going to new
* location, so they won't have any false lingering knowledge
* of old selection.
@@ -7493,7 +7696,7 @@ nautilus_view_scroll_event (GtkWidget *widget,
return TRUE;
}
- return GTK_WIDGET_CLASS (nautilus_view_parent_class)->scroll_event (widget, event);
+ return FALSE;
}
static void
@@ -7529,10 +7732,8 @@ nautilus_view_class_init (NautilusViewClass *klass)
{
GObjectClass *oclass;
GtkWidgetClass *widget_class;
- GtkScrolledWindowClass *scrolled_window_class;
widget_class = GTK_WIDGET_CLASS (klass);
- scrolled_window_class = GTK_SCROLLED_WINDOW_CLASS (klass);
oclass = G_OBJECT_CLASS (klass);
oclass->finalize = nautilus_view_finalize;
@@ -7544,11 +7745,6 @@ nautilus_view_class_init (NautilusViewClass *klass)
g_type_class_add_private (klass, sizeof (NautilusViewDetails));
- /* Get rid of the strange 3-pixel gap that GtkScrolledWindow
- * uses by default. It does us no good.
- */
- scrolled_window_class->scrollbar_spacing = 0;
-
signals[ADD_FILE] =
g_signal_new ("add-file",
G_TYPE_FROM_CLASS (klass),
@@ -7671,25 +7867,49 @@ nautilus_view_init (NautilusView *view)
view->details = G_TYPE_INSTANCE_GET_PRIVATE (view, NAUTILUS_TYPE_VIEW,
NautilusViewDetails);
- /* Overlay */
- view->details->overlay = gtk_overlay_new ();
- gtk_widget_show (view->details->overlay);
+ /* NautilusFloatingBar listen to its parent's 'enter-notify-event' signal
+ * and GtkOverlay doesn't have it enabled by default, so we have to add them
+ * here.
+ */
+ gtk_widget_add_events (GTK_WIDGET (view),
+ GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
- gtk_container_add (GTK_CONTAINER (view), view->details->overlay);
+ /* Scrolled Window */
+ view->details->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (view->details->scrolled_window),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_widget_show (view->details->scrolled_window);
+
+ g_signal_connect_swapped (view->details->scrolled_window,
+ "scroll-event",
+ G_CALLBACK (nautilus_view_scroll_event),
+ view);
+
+ gtk_container_add (GTK_CONTAINER (view), view->details->scrolled_window);
/* Empty states */
builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-no-search-results.ui");
view->details->no_search_results_widget = GTK_WIDGET (gtk_builder_get_object (builder, "no_search_results"));
- gtk_overlay_add_overlay (GTK_OVERLAY (view->details->overlay),
- view->details->no_search_results_widget);
+ gtk_overlay_add_overlay (GTK_OVERLAY (view), view->details->no_search_results_widget);
g_object_unref (builder);
builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-folder-is-empty.ui");
view->details->folder_is_empty_widget = GTK_WIDGET (gtk_builder_get_object (builder, "folder_is_empty"));
- gtk_overlay_add_overlay (GTK_OVERLAY (view->details->overlay),
- view->details->folder_is_empty_widget);
+ gtk_overlay_add_overlay (GTK_OVERLAY (view), view->details->folder_is_empty_widget);
g_object_unref (builder);
+ /* Floating bar */
+ view->details->floating_bar = nautilus_floating_bar_new (NULL, NULL, FALSE);
+ gtk_widget_set_halign (view->details->floating_bar, GTK_ALIGN_END);
+ gtk_widget_set_valign (view->details->floating_bar, GTK_ALIGN_END);
+ gtk_overlay_add_overlay (GTK_OVERLAY (view), view->details->floating_bar);
+
+ g_signal_connect (view->details->floating_bar,
+ "action",
+ G_CALLBACK (floating_bar_action_cb),
+ view);
+
/* Default to true; desktop-icon-view sets to false */
view->details->show_foreign_files = TRUE;
@@ -7699,12 +7919,6 @@ nautilus_view_init (NautilusView *view)
(GDestroyNotify)file_and_directory_free,
NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (view),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (view), NULL);
- gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (view), NULL);
-
gtk_style_context_set_junction_sides (gtk_widget_get_style_context (GTK_WIDGET (view)),
GTK_JUNCTION_TOP | GTK_JUNCTION_LEFT);
diff --git a/src/nautilus-view.h b/src/nautilus-view.h
index b822793e4..95770f72e 100644
--- a/src/nautilus-view.h
+++ b/src/nautilus-view.h
@@ -62,13 +62,13 @@ typedef struct NautilusViewClass NautilusViewClass;
typedef struct NautilusViewDetails NautilusViewDetails;
struct NautilusView {
- GtkScrolledWindow parent;
+ GtkOverlay parent;
NautilusViewDetails *details;
};
struct NautilusViewClass {
- GtkScrolledWindowClass parent_class;
+ GtkOverlayClass parent_class;
/* The 'clear' signal is emitted to empty the view of its contents.
* It must be replaced by each subclass.
@@ -392,5 +392,6 @@ void nautilus_view_action_show_hidden_files (NautilusView *view,
GActionGroup * nautilus_view_get_action_group (NautilusView *view);
GtkWidget* nautilus_view_get_content_widget (NautilusView *view);
+gboolean nautilus_view_is_search (NautilusView *view);
#endif /* NAUTILUS_VIEW_H */
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 43f98841c..7c1daf9e1 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -27,7 +27,6 @@
#include "nautilus-application.h"
#include "nautilus-canvas-view.h"
#include "nautilus-desktop-window.h"
-#include "nautilus-floating-bar.h"
#include "nautilus-list-view.h"
#include "nautilus-special-location-bar.h"
#include "nautilus-trash-bar.h"
@@ -62,12 +61,6 @@ enum {
struct NautilusWindowSlotDetails {
NautilusWindow *window;
- /* floating bar */
- guint set_status_timeout_id;
- guint loading_timeout_id;
- GtkWidget *floating_bar;
- GtkWidget *view_overlay;
-
/* slot contains
* 1) an vbox containing extra_location_widgets
* 2) the view
@@ -131,28 +124,18 @@ static void location_has_really_changed (NautilusWindowSlot *slot);
static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot);
static void nautilus_window_slot_disconnect_content_view (NautilusWindowSlot *slot);
static void nautilus_window_slot_emit_location_change (NautilusWindowSlot *slot, GFile *from, GFile *to);
-static void setup_loading_floating_bar (NautilusWindowSlot *slot);
static void
nautilus_window_slot_sync_search_widgets (NautilusWindowSlot *slot)
{
- NautilusDirectory *directory;
- gboolean toggle;
-
if (slot != nautilus_window_get_active_slot (slot->details->window)) {
return;
}
- toggle = slot->details->search_visible;
-
- if (slot->details->content_view != NULL) {
- directory = nautilus_view_get_model (slot->details->content_view);
- if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
- toggle = TRUE;
- }
- }
-
- nautilus_window_slot_set_search_visible (slot, toggle);
+ nautilus_window_slot_set_search_visible (slot,
+ slot->details->search_visible ||
+ (slot->details->content_view &&
+ nautilus_view_is_search (slot->details->content_view)));
}
static gboolean
@@ -190,49 +173,6 @@ nautilus_window_slot_sync_view_mode (NautilusWindowSlot *slot)
}
static void
-remove_loading_floating_bar (NautilusWindowSlot *slot)
-{
- if (slot->details->loading_timeout_id != 0) {
- g_source_remove (slot->details->loading_timeout_id);
- slot->details->loading_timeout_id = 0;
- }
-
- gtk_widget_hide (slot->details->floating_bar);
- nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (slot->details->floating_bar));
-}
-
-static void
-nautilus_window_slot_on_done_loading (NautilusDirectory *directory,
- NautilusWindowSlot *slot)
-{
-
- remove_loading_floating_bar (slot);
- nautilus_window_slot_set_allow_stop (slot, FALSE);
-}
-
-static void
-connect_directory_signals (NautilusWindowSlot *slot,
- NautilusDirectory *directory)
-{
- if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
- g_signal_connect_object (directory, "done-loading",
- G_CALLBACK (nautilus_window_slot_on_done_loading),
- slot, 0);
- }
-}
-
-static void
-disconnect_directory_signals (NautilusWindowSlot *slot,
- NautilusDirectory *directory)
-{
- if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
- g_signal_handlers_disconnect_by_func (directory,
- G_CALLBACK (nautilus_window_slot_on_done_loading),
- slot);
- }
-}
-
-static void
sync_search_directory (NautilusWindowSlot *slot)
{
NautilusDirectory *directory;
@@ -526,16 +466,6 @@ real_inactive (NautilusWindowSlot *slot)
}
static void
-floating_bar_action_cb (NautilusFloatingBar *floating_bar,
- gint action,
- NautilusWindowSlot *slot)
-{
- if (action == NAUTILUS_FLOATING_BAR_ACTION_ID_STOP) {
- nautilus_window_slot_stop_loading (slot);
- }
-}
-
-static void
remove_all_extra_location_widgets (GtkWidget *widget,
gpointer data)
{
@@ -627,22 +557,6 @@ nautilus_window_slot_constructed (GObject *object)
gtk_widget_show_all (slot->details->query_editor_revealer);
nautilus_window_slot_add_extra_location_widget (slot, slot->details->query_editor_revealer);
- slot->details->view_overlay = gtk_overlay_new ();
- gtk_widget_add_events (slot->details->view_overlay,
- GDK_ENTER_NOTIFY_MASK |
- GDK_LEAVE_NOTIFY_MASK);
- gtk_box_pack_start (GTK_BOX (slot), slot->details->view_overlay, TRUE, TRUE, 0);
- gtk_widget_show (slot->details->view_overlay);
-
- slot->details->floating_bar = nautilus_floating_bar_new (NULL, NULL, FALSE);
- gtk_widget_set_halign (slot->details->floating_bar, GTK_ALIGN_END);
- gtk_widget_set_valign (slot->details->floating_bar, GTK_ALIGN_END);
- gtk_overlay_add_overlay (GTK_OVERLAY (slot->details->view_overlay),
- slot->details->floating_bar);
-
- g_signal_connect (slot->details->floating_bar, "action",
- G_CALLBACK (floating_bar_action_cb), slot);
-
slot->details->title = g_strdup (_("Loading…"));
}
@@ -889,7 +803,6 @@ begin_location_change (NautilusWindowSlot *slot,
NautilusWindowGoToCallback callback,
gpointer user_data)
{
- NautilusDirectory *previous_directory;
NautilusDirectory *directory;
NautilusFile *file;
gboolean force_reload;
@@ -905,12 +818,8 @@ begin_location_change (NautilusWindowSlot *slot,
nautilus_profile_start (NULL);
- previous_directory = nautilus_directory_get (previous_location);
directory = nautilus_directory_get (location);
- /* Disconnect search signals from the old directory if it was a search directory */
- disconnect_directory_signals (slot, previous_directory);
- nautilus_directory_unref (previous_directory);
/* Avoid to update status from the current view in our async calls */
nautilus_window_slot_disconnect_content_view (slot);
@@ -945,7 +854,6 @@ begin_location_change (NautilusWindowSlot *slot,
end_location_change (slot);
nautilus_window_slot_set_allow_stop (slot, TRUE);
- nautilus_window_slot_set_status (slot, NULL, NULL);
g_assert (slot->details->pending_location == NULL);
g_assert (slot->details->pending_selection == NULL);
@@ -1466,10 +1374,6 @@ create_content_view (NautilusWindowSlot *slot,
old_directory = nautilus_directory_get (old_location);
new_directory = nautilus_directory_get (slot->details->pending_location);
- /* Connect to the done loading signal if it is a search directory to update
- * the no results widget */
- connect_directory_signals (slot, new_directory);
-
if (NAUTILUS_IS_SEARCH_DIRECTORY (new_directory) &&
!NAUTILUS_IS_SEARCH_DIRECTORY (old_directory)) {
nautilus_search_directory_set_base_model (NAUTILUS_SEARCH_DIRECTORY (new_directory), old_directory);
@@ -1629,7 +1533,6 @@ cancel_location_change (NautilusWindowSlot *slot)
location = nautilus_window_slot_get_location (slot);
directory = nautilus_directory_get (slot->details->location);
- disconnect_directory_signals (slot, directory);
/* Stops current loading or search if any, so we are not slow */
nautilus_view_stop_loading (slot->details->content_view);
nautilus_directory_unref (directory);
@@ -2237,70 +2140,7 @@ view_end_loading_cb (NautilusView *view,
slot->details->needs_reload = FALSE;
}
- /* If it is a search directory, it will hide the toolbar when the search engine
- * finishes, not every time the view end loading the new files */
- if (!NAUTILUS_IS_SEARCH_DIRECTORY (nautilus_view_get_model (slot->details->content_view))) {
- remove_loading_floating_bar (slot);
- nautilus_window_slot_set_allow_stop (slot, FALSE);
- }
-}
-
-static void
-real_setup_loading_floating_bar (NautilusWindowSlot *slot)
-{
- gboolean disable_chrome;
-
- g_object_get (nautilus_window_slot_get_window (slot),
- "disable-chrome", &disable_chrome,
- NULL);
-
- if (disable_chrome) {
- gtk_widget_hide (slot->details->floating_bar);
- return;
- }
-
- nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (slot->details->floating_bar));
- nautilus_floating_bar_set_primary_label (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
- NAUTILUS_IS_SEARCH_DIRECTORY (nautilus_view_get_model (slot->details->content_view)) ?
- _("Searching…") : _("Loading…"));
- nautilus_floating_bar_set_details_label (NAUTILUS_FLOATING_BAR (slot->details->floating_bar), NULL);
- nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
- slot->details->allow_stop);
- nautilus_floating_bar_add_action (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
- "process-stop-symbolic",
- NAUTILUS_FLOATING_BAR_ACTION_ID_STOP);
-
- gtk_widget_set_halign (slot->details->floating_bar, GTK_ALIGN_END);
- gtk_widget_show (slot->details->floating_bar);
-}
-
-static gboolean
-setup_loading_floating_bar_timeout_cb (gpointer user_data)
-{
- NautilusWindowSlot *slot = user_data;
-
- slot->details->loading_timeout_id = 0;
- real_setup_loading_floating_bar (slot);
-
- return FALSE;
-}
-
-static void
-setup_loading_floating_bar (NautilusWindowSlot *slot)
-{
- /* setup loading overlay */
- if (slot->details->set_status_timeout_id != 0) {
- g_source_remove (slot->details->set_status_timeout_id);
- slot->details->set_status_timeout_id = 0;
- }
-
- if (slot->details->loading_timeout_id != 0) {
- g_source_remove (slot->details->loading_timeout_id);
- slot->details->loading_timeout_id = 0;
- }
-
- slot->details->loading_timeout_id =
- g_timeout_add (500, setup_loading_floating_bar_timeout_cb, slot);
+ nautilus_window_slot_set_allow_stop (slot, FALSE);
}
static void
@@ -2315,9 +2155,7 @@ view_begin_loading_cb (NautilusView *view,
nautilus_window_slot_set_allow_stop (slot, TRUE);
}
- setup_loading_floating_bar (slot);
-
- nautilus_profile_end (NULL);
+ nautilus_profile_end (NULL);
}
static void
@@ -2422,7 +2260,8 @@ nautilus_window_slot_switch_new_content_view (NautilusWindowSlot *slot)
slot->details->new_content_view = NULL;
widget = GTK_WIDGET (slot->details->content_view);
- gtk_container_add (GTK_CONTAINER (slot->details->view_overlay), widget);
+ gtk_container_add (GTK_CONTAINER (slot), widget);
+ gtk_widget_set_vexpand (widget, TRUE);
gtk_widget_show (widget);
}
}
@@ -2476,7 +2315,6 @@ static void
nautilus_window_slot_dispose (GObject *object)
{
NautilusWindowSlot *slot;
- NautilusDirectory *directory;
GtkWidget *widget;
slot = NAUTILUS_WINDOW_SLOT (object);
@@ -2500,16 +2338,6 @@ nautilus_window_slot_dispose (GObject *object)
slot->details->new_content_view = NULL;
}
- if (slot->details->set_status_timeout_id != 0) {
- g_source_remove (slot->details->set_status_timeout_id);
- slot->details->set_status_timeout_id = 0;
- }
-
- if (slot->details->loading_timeout_id != 0) {
- g_source_remove (slot->details->loading_timeout_id);
- slot->details->loading_timeout_id = 0;
- }
-
nautilus_window_slot_set_viewed_file (slot, NULL);
/* TODO? why do we unref here? the file is NULL.
* It was already here before the slot move, though */
@@ -2519,10 +2347,6 @@ nautilus_window_slot_dispose (GObject *object)
/* TODO? why do we ref here, instead of unreffing?
* It was already here before the slot migration, though */
g_object_ref (slot->details->location);
-
- directory = nautilus_directory_get (slot->details->location);
- disconnect_directory_signals (slot, directory);
- g_object_unref (directory);
}
if (slot->details->view_mode_before_search) {
@@ -2715,113 +2539,9 @@ nautilus_window_slot_set_allow_stop (NautilusWindowSlot *slot,
void
nautilus_window_slot_stop_loading (NautilusWindowSlot *slot)
{
- remove_loading_floating_bar (slot);
cancel_location_change (slot);
}
-static void
-real_slot_set_short_status (NautilusWindowSlot *slot,
- const gchar *primary_status,
- const gchar *detail_status)
-{
- gboolean disable_chrome;
-
- nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (slot->details->floating_bar));
- nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
- slot->details->allow_stop);
-
- g_object_get (nautilus_window_slot_get_window (slot),
- "disable-chrome", &disable_chrome,
- NULL);
-
- if ((primary_status == NULL && detail_status == NULL) || disable_chrome) {
- gtk_widget_hide (slot->details->floating_bar);
- return;
- }
-
- nautilus_floating_bar_set_labels (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
- primary_status, detail_status);
- gtk_widget_show (slot->details->floating_bar);
-}
-
-typedef struct {
- gchar *primary_status;
- gchar *detail_status;
- NautilusWindowSlot *slot;
-} SetStatusData;
-
-static void
-set_status_data_free (gpointer data)
-{
- SetStatusData *status_data = data;
-
- g_free (status_data->primary_status);
- g_free (status_data->detail_status);
-
- g_slice_free (SetStatusData, data);
-}
-
-static gboolean
-set_status_timeout_cb (gpointer data)
-{
- SetStatusData *status_data = data;
-
- status_data->slot->details->set_status_timeout_id = 0;
- real_slot_set_short_status (status_data->slot,
- status_data->primary_status,
- status_data->detail_status);
-
- return FALSE;
-}
-
-static void
-set_floating_bar_status (NautilusWindowSlot *slot,
- const gchar *primary_status,
- const gchar *detail_status)
-{
- GtkSettings *settings;
- gint double_click_time;
- SetStatusData *status_data;
-
- if (slot->details->set_status_timeout_id != 0) {
- g_source_remove (slot->details->set_status_timeout_id);
- slot->details->set_status_timeout_id = 0;
- }
-
- settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (slot->details->content_view)));
- g_object_get (settings,
- "gtk-double-click-time", &double_click_time,
- NULL);
-
- status_data = g_slice_new0 (SetStatusData);
- status_data->primary_status = g_strdup (primary_status);
- status_data->detail_status = g_strdup (detail_status);
- status_data->slot = slot;
-
- /* waiting for half of the double-click-time before setting
- * the status seems to be a good approximation of not setting it
- * too often and not delaying the statusbar too much.
- */
- slot->details->set_status_timeout_id =
- g_timeout_add_full (G_PRIORITY_DEFAULT,
- (guint) (double_click_time / 2),
- set_status_timeout_cb,
- status_data,
- set_status_data_free);
-}
-
-void
-nautilus_window_slot_set_status (NautilusWindowSlot *slot,
- const char *primary_status,
- const char *detail_status)
-{
- g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
-
- if (slot->details->content_view != NULL) {
- set_floating_bar_status (slot, primary_status, detail_status);
- }
-}
-
/* returns either the pending or the actual current uri */
char *
nautilus_window_slot_get_current_uri (NautilusWindowSlot *slot)
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index ed7e780c7..97ff788ae 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -120,9 +120,6 @@ void nautilus_window_slot_go_home (NautilusWindowSlot *slot,
void nautilus_window_slot_go_up (NautilusWindowSlot *slot,
NautilusWindowOpenFlags flags);
-void nautilus_window_slot_set_status (NautilusWindowSlot *slot,
- const char *primary_status,
- const char *detail_status);
void nautilus_window_slot_sync_view_mode (NautilusWindowSlot *slot);
void nautilus_window_slot_display_view_selection_failure (NautilusWindow *window,