summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-04-04 11:14:11 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-04-06 10:58:22 +0200
commit2fbbeafd274b01a868d7b3b4899bc414577d38d2 (patch)
tree5b90878791ecce038ab0fc8b1f57f263a2a1e971
parent1918ccb28a1fa20097c8a3bdf4ca4dec897fd970 (diff)
downloadnautilus-2fbbeafd274b01a868d7b3b4899bc414577d38d2.tar.gz
canvas-view: allow creation of canvas view container subclasses
This will be used by the desktop, so it can use its own canvas-view-container.
-rw-r--r--src/nautilus-canvas-view.c20
-rw-r--r--src/nautilus-canvas-view.h2
2 files changed, 18 insertions, 4 deletions
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index d9ae065e7..a72b4b543 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -1639,11 +1639,22 @@ store_layout_timestamp (NautilusCanvasContainer *container,
static NautilusCanvasContainer *
create_canvas_container (NautilusCanvasView *canvas_view)
{
- NautilusCanvasContainer *canvas_container;
+ return NAUTILUS_CANVAS_VIEW_CLASS (G_OBJECT_GET_CLASS (canvas_view))->create_canvas_container (canvas_view);
+}
+
+static NautilusCanvasContainer *
+real_create_canvas_container (NautilusCanvasView *canvas_view)
+{
+ return nautilus_canvas_view_container_new (canvas_view);
+}
+
+static void
+initialize_canvas_container (NautilusCanvasView *canvas_view,
+ NautilusCanvasContainer *canvas_container)
+{
GtkWidget *content_widget;
content_widget = nautilus_files_view_get_content_widget (NAUTILUS_FILES_VIEW (canvas_view));
- canvas_container = nautilus_canvas_view_container_new (canvas_view);
canvas_view->details->canvas_container = GTK_WIDGET (canvas_container);
g_object_add_weak_pointer (G_OBJECT (canvas_container),
(gpointer *) &canvas_view->details->canvas_container);
@@ -1705,8 +1716,6 @@ create_canvas_container (NautilusCanvasView *canvas_view)
get_default_zoom_level (canvas_view));
gtk_widget_show (GTK_WIDGET (canvas_container));
-
- return canvas_container;
}
/* Handles an URL received from Mozilla */
@@ -1876,6 +1885,8 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass)
oclass->finalize = nautilus_canvas_view_finalize;
GTK_WIDGET_CLASS (klass)->destroy = nautilus_canvas_view_destroy;
+
+ klass->create_canvas_container = real_create_canvas_container;
nautilus_files_view_class->add_file = nautilus_canvas_view_add_file;
nautilus_files_view_class->begin_loading = nautilus_canvas_view_begin_loading;
@@ -1950,6 +1961,7 @@ nautilus_canvas_view_init (NautilusCanvasView *canvas_view)
canvas_view->details->icon = g_themed_icon_new ("view-grid-symbolic");
canvas_container = create_canvas_container (canvas_view);
+ initialize_canvas_container (canvas_view, canvas_container);
g_signal_connect_swapped (nautilus_preferences,
"changed::" NAUTILUS_PREFERENCES_DEFAULT_SORT_ORDER,
diff --git a/src/nautilus-canvas-view.h b/src/nautilus-canvas-view.h
index 994b51f31..3e515b4b9 100644
--- a/src/nautilus-canvas-view.h
+++ b/src/nautilus-canvas-view.h
@@ -52,6 +52,8 @@ struct NautilusCanvasView {
struct NautilusCanvasViewClass {
NautilusFilesViewClass parent_class;
+
+ NautilusCanvasContainer * (* create_canvas_container) (NautilusCanvasView *canvas_view);
};
/* GObject support */