diff --git a/GUI/Views/JobView.cpp b/GUI/Views/JobView.cpp
index 8b91d570d477cd3f0785455073de7bae188c7451..1704ddc827f04a32beffcd5699a8b7150f966919 100644
--- a/GUI/Views/JobView.cpp
+++ b/GUI/Views/JobView.cpp
@@ -25,6 +25,7 @@
 #include "GUI/Views/JobWidgets/JobSelectorWidget.h"
 #include "GUI/Views/JobWidgets/JobViewActivities.h"
 #include "GUI/mainwindow/mainwindow.h"
+#include "GUI/mainwindow/projectmanager.h"
 #include <QMenu>
 
 JobView::JobView(MainWindow* mainWindow)
@@ -56,6 +57,11 @@ void JobView::fillViewMenu(QMenu* menu)
     menu->addAction(action);
 }
 
+ProjectDocument* JobView::document() const
+{
+    return ProjectManager::instance()->document();
+}
+
 void JobView::onFocusRequest(JobItem* jobItem)
 {
     if (jobItem->runInBackground())
@@ -96,10 +102,10 @@ void JobView::onSelectionChanged(JobItem* jobItem)
 
 void JobView::createSubWindows()
 {
-    m_jobOutputDataWidget = new JobOutputDataWidget(m_mainWindow->jobModel(), this);
-    m_jobSelector = new JobSelectorWidget(m_mainWindow->jobModel(), this);
-    m_jobRealTimeWidget = new JobRealTimeWidget(m_mainWindow->jobModel(), this);
-    m_fitActivityPanel = new FitActivityPanel(m_mainWindow->jobModel(), this);
+    m_jobOutputDataWidget = new JobOutputDataWidget(document()->jobModel(), this);
+    m_jobSelector = new JobSelectorWidget(document()->jobModel(), this);
+    m_jobRealTimeWidget = new JobRealTimeWidget(document()->jobModel(), this);
+    m_fitActivityPanel = new FitActivityPanel(document()->jobModel(), this);
     m_jobMessagePanel = new JobMessagePanel(this);
 
     m_docks->addWidget(JobViewFlags::JOB_LIST_DOCK, m_jobSelector, Qt::LeftDockWidgetArea);
@@ -151,7 +157,7 @@ void JobView::connectActivityRelated()
 void JobView::connectJobRelated()
 {
     // Focus request: JobModel -> this
-    connect(m_mainWindow->jobModel(), &JobModel::focusRequest, this, &JobView::onFocusRequest);
+    connect(document()->jobModel(), &JobModel::focusRequest, this, &JobView::onFocusRequest);
 
     // JobItem selection: JobSelectorWidget -> this
     connect(m_jobSelector, &JobSelectorWidget::selectionChanged, this,
diff --git a/GUI/Views/JobView.h b/GUI/Views/JobView.h
index 78b0d84d8f68115ace2b98b8a677c8f50f67b8e3..3970b97020ec9866c4cd3f21b83a6c8d98be2814 100644
--- a/GUI/Views/JobView.h
+++ b/GUI/Views/JobView.h
@@ -28,6 +28,7 @@ class JobMessagePanel;
 class JobProgressAssistant;
 class JobItem;
 class DocksController;
+class ProjectDocument;
 
 //! The JobView class is a main view to show list of jobs, job results and widgets for real time
 //! and fitting activities.
@@ -40,6 +41,8 @@ public:
 
     void fillViewMenu(QMenu* menu);
 
+    ProjectDocument* document() const;
+
 signals:
     void focusRequest(int);
     void activityChanged(int activity);
diff --git a/GUI/Views/SampleView.cpp b/GUI/Views/SampleView.cpp
index e73618a2150550eca380ddffcb56c66fb634821a..b18eb6b279eb24a974a67eccaee93958adef5275 100644
--- a/GUI/Views/SampleView.cpp
+++ b/GUI/Views/SampleView.cpp
@@ -25,6 +25,7 @@
 #include "GUI/Views/SampleDesigner/SampleTreeWidget.h"
 #include "GUI/Views/SampleDesigner/ScriptPanel.h"
 #include "GUI/mainwindow/mainwindow.h"
+#include "GUI/mainwindow/projectmanager.h"
 #include <QDockWidget>
 #include <QMenu>
 #include <memory>
@@ -60,6 +61,11 @@ void SampleView::fillViewMenu(QMenu* menu)
     menu->addAction(action);
 }
 
+ProjectDocument* SampleView::document() const
+{
+    return ProjectManager::instance()->document();
+}
+
 void SampleView::createSubWindows()
 {
     m_sampleDesigner = new SampleDesigner(this);
diff --git a/GUI/Views/SampleView.h b/GUI/Views/SampleView.h
index 5bb86cd6745df454a40e481ae4e41f26f0d18a6d..23ac209ed14ac61208b70137e213ceefe387006e 100644
--- a/GUI/Views/SampleView.h
+++ b/GUI/Views/SampleView.h
@@ -28,6 +28,7 @@ class SampleTreeWidget;
 class SamplePropertyWidget;
 class ScriptPanel;
 class RealSpacePanel;
+class ProjectDocument;
 
 class SampleView : public QMainWindow {
     Q_OBJECT
@@ -40,6 +41,8 @@ public:
     void toggleRealSpaceView();
     void fillViewMenu(QMenu* menu);
 
+    ProjectDocument* document() const;
+
 private:
     void createSubWindows();
     void connectSignals();
diff --git a/GUI/mainwindow/mainwindow.cpp b/GUI/mainwindow/mainwindow.cpp
index bb02ee956a1db12ad4e7be7fe608c7a58847a8ca..ac83c8b0bd321895148dc6d909e80e282b50d29f 100644
--- a/GUI/mainwindow/mainwindow.cpp
+++ b/GUI/mainwindow/mainwindow.cpp
@@ -248,7 +248,8 @@ void MainWindow::onSessionModelViewActive(bool isActive)
 
 void MainWindow::closeEvent(QCloseEvent* event)
 {
-    if (jobModel()->hasUnfinishedJobs()) {
+    if (m_projectManager->document() != nullptr
+        && m_projectManager->document()->jobModel()->hasUnfinishedJobs()) {
         QMessageBox::warning(this, "Can't quit the application.",
                              "Can't quit the application while jobs are running.\n"
                              "Cancel running jobs or wait until they are completed.");