diff --git a/app/gui/oven_control/mainwindow.cpp b/app/gui/oven_control/mainwindow.cpp index 5f869bb..a595ceb 100644 --- a/app/gui/oven_control/mainwindow.cpp +++ b/app/gui/oven_control/mainwindow.cpp @@ -43,15 +43,19 @@ void MainWindow::jump(QMainWindow *newChild) if (instance->child) instance->child->deleteLater(); - instance->child = newChild; + instance->newChild(newChild); } void MainWindow::killChild() { if (instance->child) instance->child->deleteLater(); +} - instance->child = NULL; +void MainWindow::killChildCook() +{ + if (instance->child && !instance->child->inherits("ConfigWindow")) + instance->child->deleteLater(); } void MainWindow::keyPressEvent(QKeyEvent *event) @@ -113,7 +117,7 @@ void MainWindow::showManualCookWindow(Define::Mode mode) w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::showAutoCookSelectionWindow(Define::CookType type) @@ -123,7 +127,19 @@ void MainWindow::showAutoCookSelectionWindow(Define::CookType type) w->showFullScreen(); w->raise(); - child = w; + newChild(w); +} + +void MainWindow::newChild(QMainWindow *newChild) +{ + child = newChild; + connect(newChild, SIGNAL(destroyed(QObject*)), this, SLOT(onChildDestroyed(QObject*))); +} + +void MainWindow::onChildDestroyed(QObject *destroyed) +{ + if (destroyed == child) + child = NULL; } void MainWindow::on_steamButton_clicked() @@ -183,7 +199,7 @@ void MainWindow::on_primeButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_multiButton_clicked() @@ -198,7 +214,7 @@ void MainWindow::on_programmingButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_washButton_clicked() @@ -208,7 +224,7 @@ void MainWindow::on_washButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_configButton_clicked() @@ -218,7 +234,7 @@ void MainWindow::on_configButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_helpButton_clicked() diff --git a/app/gui/oven_control/mainwindow.h b/app/gui/oven_control/mainwindow.h index 741d2c3..4c767d6 100644 --- a/app/gui/oven_control/mainwindow.h +++ b/app/gui/oven_control/mainwindow.h @@ -22,6 +22,7 @@ public: static MainWindow *getInstance() { return instance; } static void jump(QMainWindow *newChild); static void killChild(); + static void killChildCook(); protected: void keyPressEvent(QKeyEvent *event); @@ -40,6 +41,9 @@ private slots: void showManualCookWindow(Define::Mode mode); void showAutoCookSelectionWindow(Define::CookType type); + void newChild(QMainWindow *newChild); + void onChildDestroyed(QObject *destroyed); + void on_steamButton_clicked(); void on_combiButton_clicked(); void on_dryheatButton_clicked();