diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop.cpp | 8 | ||||
| -rw-r--r-- | src/inkscape.cpp | 2 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 3 |
3 files changed, 4 insertions, 9 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp index 61a64fe22..f798079fd 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -322,7 +322,6 @@ SPDesktop::init (SPNamedView *nv, SPCanvas *aCanvas, Inkscape::UI::View::EditWid // canvas_debug = sp_canvas_item_new (main, SP_TYPE_CANVAS_DEBUG, NULL); } - void SPDesktop::destroy() { _destroy_signal.emit(this); @@ -331,6 +330,7 @@ void SPDesktop::destroy() delete snapindicator; snapindicator = NULL; } + if (temporary_item_list) { delete temporary_item_list; temporary_item_list = NULL; @@ -356,12 +356,6 @@ void SPDesktop::destroy() g_signal_handlers_disconnect_by_func(G_OBJECT (main), (gpointer) G_CALLBACK(sp_desktop_root_handler), this); g_signal_handlers_disconnect_by_func(G_OBJECT (drawing), (gpointer) G_CALLBACK(_arena_handler), this); - if (event_context) { - event_context->finish(); - delete event_context; - event_context = NULL; - } - delete layers; if (layer_manager) { diff --git a/src/inkscape.cpp b/src/inkscape.cpp index e7e93929b..b30d06168 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -864,6 +864,8 @@ Application::remove_desktop (SPDesktop * desktop) g_error("Attempted to remove desktop not in list."); } + desktop->setEventContext(""); + if (DESKTOP_IS_ACTIVE (desktop)) { signal_deactivate_desktop.emit(desktop); if (_desktops->size() > 1) { diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 571f920bf..f9c8e4ac6 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -736,10 +736,9 @@ static void sp_desktop_widget_dispose(GObject *object) g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas), (gpointer) G_CALLBACK (sp_desktop_widget_event), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas_tbl), (gpointer) G_CALLBACK (canvas_tbl_size_allocate), dtw); - dtw->layer_selector->setDesktop(NULL); dtw->layer_selector->unreference(); - INKSCAPE.remove_desktop (dtw->desktop); // clears selection too + INKSCAPE.remove_desktop(dtw->desktop); // clears selection and event_context dtw->modified_connection.disconnect(); dtw->desktop->destroy(); Inkscape::GC::release (dtw->desktop); |
