From f77087e734165d33a098e793572c76201ccab108 Mon Sep 17 00:00:00 2001 From: Oliver Duis Date: Thu, 24 Nov 2011 08:04:44 +0100 Subject: [PATCH] Fixed crash on closing second window see issue 1113 --- rtgui/editwindow.cc | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/rtgui/editwindow.cc b/rtgui/editwindow.cc index 9e003ac51..9355b2a12 100644 --- a/rtgui/editwindow.cc +++ b/rtgui/editwindow.cc @@ -186,10 +186,24 @@ void EditWindow::toggleFullscreen () { } bool EditWindow::on_delete_event(GdkEventAny* event) { - for ( std::set ::iterator iter = filesEdited.begin(); iter != filesEdited.end();iter++ ) { - remEditorPanel(epanels[*iter]); + // Check if any editor is still processing, and do NOT quit if so. Otherwise crashes and inconsistent caches + bool isProcessing=false; + + for ( std::set ::iterator iter = filesEdited.begin(); iter != filesEdited.end() && !isProcessing; iter++ ) { + if (epanels[*iter]->getIsProcessing()) isProcessing=true; } + if (isProcessing) return false; + + + for ( std::set ::iterator iter = filesEdited.begin(); iter != filesEdited.end(); iter++ ) + mainNB->remove_page (*epanels[*iter]); + + epanels.clear(); + + filesEdited.clear(); + parent->fpanel->refreshEditedState (filesEdited); + hide (); return true; }