summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-03-18 15:22:47 +0100
committerCarlos Soriano <csoriano@gnome.org>2016-04-06 10:38:08 +0200
commitbaa4671887c81d2a7f9e8e17523ed4c233ca86b0 (patch)
tree19e54593351280b8bd94163cf2134fc827c03ba2
parent7df9ea75c2fd0532bcee25c3a5159bf4075a07e0 (diff)
downloadnautilus-baa4671887c81d2a7f9e8e17523ed4c233ca86b0.tar.gz
files-view: use inheritance for empty states
We don't want always empty states, for example, in the desktop. Use inheritance to allow children to do its own handling.
-rw-r--r--src/nautilus-desktop-canvas-view.c8
-rw-r--r--src/nautilus-files-view.c18
-rw-r--r--src/nautilus-files-view.h4
3 files changed, 24 insertions, 6 deletions
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index 2d8e5a5da..32bd0c4a6 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -67,6 +67,7 @@ struct NautilusDesktopCanvasViewDetails
static void default_zoom_level_changed (gpointer user_data);
static void real_update_context_menus (NautilusFilesView *view);
static char* real_get_backing_uri (NautilusFilesView *view);
+static void real_check_empty_states (NautilusFilesView *view);
static void nautilus_desktop_canvas_view_update_canvas_container_fonts (NautilusDesktopCanvasView *view);
static void font_changed_callback (gpointer callback_data);
@@ -292,6 +293,7 @@ nautilus_desktop_canvas_view_class_init (NautilusDesktopCanvasViewClass *class)
vclass->get_view_id = real_get_id;
vclass->end_loading = nautilus_desktop_canvas_view_end_loading;
vclass->get_backing_uri = real_get_backing_uri;
+ vclass->check_empty_states = real_check_empty_states;
g_type_class_add_private (class, sizeof (NautilusDesktopCanvasViewDetails));
}
@@ -558,6 +560,12 @@ const GActionEntry desktop_view_entries[] = {
{ "unstretch", action_unstretch },
};
+/* Do nothing */
+static void
+real_check_empty_states (NautilusFilesView *view)
+{
+}
+
static char*
real_get_backing_uri (NautilusFilesView *view)
{
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 5e2c6268d..ed9788a96 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -316,7 +316,7 @@ static void nautilus_files_view_select_file (NautilusFi
static void update_templates_directory (NautilusFilesView *view);
-static void check_empty_states (NautilusFilesView *view);
+static void nautilus_files_view_check_empty_states (NautilusFilesView *view);
static gboolean nautilus_files_view_is_searching (NautilusView *view);
@@ -3098,12 +3098,17 @@ reveal_selection_idle_callback (gpointer data)
}
static void
-check_empty_states (NautilusFilesView *view)
+nautilus_files_view_check_empty_states (NautilusFilesView *view)
+{
+ NAUTILUS_FILES_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->check_empty_states (view);
+}
+
+static void
+real_check_empty_states (NautilusFilesView *view)
{
gtk_widget_hide (view->details->no_search_results_widget);
gtk_widget_hide (view->details->folder_is_empty_widget);
if (!view->details->loading &&
- !NAUTILUS_IS_DESKTOP_CANVAS_VIEW (view) &&
nautilus_files_view_is_empty (view)) {
if (nautilus_view_is_searching (NAUTILUS_VIEW (view))) {
gtk_widget_show (view->details->no_search_results_widget);
@@ -3179,7 +3184,7 @@ done_loading (NautilusFilesView *view,
g_signal_emit (view, signals[END_LOADING], 0, all_files_seen);
g_object_notify (G_OBJECT (view), "is-loading");
- check_empty_states (view);
+ nautilus_files_view_check_empty_states (view);
nautilus_profile_end (NULL);
}
@@ -3547,7 +3552,7 @@ static void
on_end_file_changes (NautilusFilesView *view)
{
/* Addition and removal of files modify the empty state */
- check_empty_states (view);
+ nautilus_files_view_check_empty_states (view);
/* If the view is empty, zoom slider and sort menu are insensitive */
nautilus_files_view_update_toolbar_menus (view);
}
@@ -7124,7 +7129,7 @@ finish_loading (NautilusFilesView *view)
g_signal_emit (view, signals[BEGIN_LOADING], 0);
nautilus_profile_end ("BEGIN_LOADING");
- check_empty_states (view);
+ nautilus_files_view_check_empty_states (view);
if (nautilus_directory_are_all_files_seen (view->details->model)) {
/* Unschedule a pending update and schedule a new one with the minimal
@@ -7986,6 +7991,7 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass)
klass->get_window = nautilus_files_view_get_window;
klass->update_context_menus = real_update_context_menus;
klass->update_actions_state = real_update_actions_state;
+ klass->check_empty_states = real_check_empty_states;
copied_files_atom = gdk_atom_intern ("x-special/gnome-copied-files", FALSE);
diff --git a/src/nautilus-files-view.h b/src/nautilus-files-view.h
index c8c70acf5..efb4dea7f 100644
--- a/src/nautilus-files-view.h
+++ b/src/nautilus-files-view.h
@@ -258,6 +258,10 @@ struct NautilusFilesViewClass {
GdkRectangle * (*compute_rename_popover_relative_to) (NautilusFilesView *view);
GIcon * (* get_icon) (NautilusFilesView *view);
+
+ /* Use this to show an optional visual feedback when the directory is empty.
+ * By default it shows a widget overlay on top of the view */
+ void (* check_empty_states) (NautilusFilesView *view);
};
/* GObject support */