diff options
author | Carlos Soriano <csoriano@gnome.org> | 2016-04-04 11:14:11 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2016-04-14 10:35:17 +0200 |
commit | f7abcb7fc087431536cfa7091a2a5d96fb04bfa3 (patch) | |
tree | 984f653e5027e46aa18c3a0aa448402be38e593b /src | |
parent | 1caab8d5d388ebd3250a329a0c67bee64052aeac (diff) | |
download | nautilus-f7abcb7fc087431536cfa7091a2a5d96fb04bfa3.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.
https://bugzilla.gnome.org/show_bug.cgi?id=712620
Diffstat (limited to 'src')
-rw-r--r-- | src/nautilus-canvas-view.c | 20 | ||||
-rw-r--r-- | src/nautilus-canvas-view.h | 2 |
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 */ |