summaryrefslogtreecommitdiff
path: root/muse2/muse/midiedit/pianoroll.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/midiedit/pianoroll.cpp')
-rw-r--r--muse2/muse/midiedit/pianoroll.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/muse2/muse/midiedit/pianoroll.cpp b/muse2/muse/midiedit/pianoroll.cpp
index 82a75f7f..8c2a7a87 100644
--- a/muse2/muse/midiedit/pianoroll.cpp
+++ b/muse2/muse/midiedit/pianoroll.cpp
@@ -56,6 +56,7 @@
#include "tb1.h"
#include "utils.h"
#include "globals.h"
+#include "app.h"
#include "gconfig.h"
#include "icons.h"
#include "audio.h"
@@ -118,7 +119,7 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
mapper->setMapping(editPasteAction, PianoCanvas::CMD_PASTE);
connect(editPasteAction, SIGNAL(triggered()), mapper, SLOT(map()));
- editPasteDialogAction = menuEdit->addAction(QIcon(*editpasteIconSet), tr("&Paste (with dialog)"));
+ editPasteDialogAction = menuEdit->addAction(QIcon(*editpasteIconSet), tr("Paste (with dialog)"));
mapper->setMapping(editPasteDialogAction, PianoCanvas::CMD_PASTE_DIALOG);
connect(editPasteDialogAction, SIGNAL(triggered()), mapper, SLOT(map()));
@@ -532,6 +533,7 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
}
initTopwinState();
+ MusEGlobal::muse->topwinMenuInited(this);
}
//---------------------------------------------------------
@@ -540,6 +542,8 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
void PianoRoll::songChanged1(int bits)
{
+ if(_isDeleting) // Ignore while while deleting to prevent crash.
+ return;
if (bits & SC_SOLO)
{
@@ -815,15 +819,19 @@ void PianoRoll::removeCtrl(CtrlEdit* ctrl)
//---------------------------------------------------------
// closeEvent
+// Save state.
+// Disconnect signals which may cause crash due to Qt deferred deletion on close.
//---------------------------------------------------------
void PianoRoll::closeEvent(QCloseEvent* e)
{
+ _isDeleting = true; // Set flag so certain signals like songChanged, which may cause crash during delete, can be ignored.
+
QSettings settings("MusE", "MusE-qt");
//settings.setValue("Pianoroll/geometry", saveGeometry());
settings.setValue("Pianoroll/windowState", saveState());
- emit deleted(static_cast<TopWin*>(this));
+ emit isDeleting(static_cast<TopWin*>(this));
e->accept();
}