diff --git a/src/UI/DockWidgetTitleBar.hh b/src/UI/DockWidgetTitleBar.hh index 7b9402c00ef410d0ff45d45c9e9396b870ad3a5c..620c9a947e3537b566ee45a69be521cf63b97005 100644 --- a/src/UI/DockWidgetTitleBar.hh +++ b/src/UI/DockWidgetTitleBar.hh @@ -1,9 +1,6 @@ #pragma once #include "Utils.hh" -#include "../Lib/Utils.hh" - -class QDockWidget; namespace Vivy { diff --git a/src/UI/UnclosableDockWidget.cc b/src/UI/UnclosableDockWidget.cc new file mode 100644 index 0000000000000000000000000000000000000000..504fb790be0ec2834ef951fd5000c453fa632dd1 --- /dev/null +++ b/src/UI/UnclosableDockWidget.cc @@ -0,0 +1,16 @@ +#include "UnclosableDockWidget.hh" +#include "DockWidgetTitleBar.hh" + +using namespace Vivy; + +UnclosableDockWidget::UnclosableDockWidget(const QString &name, QWidget *parent) noexcept + : QDockWidget(name, parent) +{ + DockWidgetTitleBar::addToDock(this); +} + +void +UnclosableDockWidget::closeEvent(QCloseEvent *event) noexcept +{ + event->ignore(); +} diff --git a/src/UI/UnclosableDockWidget.hh b/src/UI/UnclosableDockWidget.hh new file mode 100644 index 0000000000000000000000000000000000000000..2e13bcaa077e73a51c7f05952a616b6833ba3251 --- /dev/null +++ b/src/UI/UnclosableDockWidget.hh @@ -0,0 +1,17 @@ +#pragma once + +#include "Utils.hh" + +namespace Vivy +{ +class UnclosableDockWidget final : public QDockWidget { + Q_OBJECT + VIVY_UNMOVABLE_OBJECT(UnclosableDockWidget) + +public: + explicit UnclosableDockWidget(const QString &, QWidget *parent) noexcept; + +protected: + void closeEvent(QCloseEvent *event) noexcept override; +}; +} diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc index 1bc93560dee72eb95ede95222d56f7175f89ecb6..95ba41cfaf0132077932f253acfb359d960ced4c 100644 --- a/src/UI/VivyDocumentView.cc +++ b/src/UI/VivyDocumentView.cc @@ -1,6 +1,5 @@ #include "VivyDocumentView.hh" #include "PropertyModel.hh" -#include "DockWidgetTitleBar.hh" #include "Utils.hh" #include "DocumentViews/AudioVisualizer.hh" #include "DocumentViews/AssLinesView.hh" @@ -77,11 +76,10 @@ VivyDocumentView::loadVideoView() noexcept { if (document->checkDocumentCapabilities(VivyDocument::Capabilities::VideoAble)) { if (!videoView) { - videoView = new QDockWidget("Video View", this); + videoView = new UnclosableDockWidget("Video View", this); videoView->setAllowedAreas(Qt::AllDockWidgetAreas); videoView->setFeatures(allDockFeatures); addDockWidget(Qt::BottomDockWidgetArea, videoView, Qt::Vertical); - DockWidgetTitleBar::addToDock(videoView); } // Kubat: because the dock is "closable", when closed the widget itself @@ -98,12 +96,11 @@ VivyDocumentView::loadAssView() noexcept { if (document->checkDocumentCapabilities(VivyDocument::Capabilities::AssAble)) { if (!assLines) { - assLines = new QDockWidget("ASS Lines", this); + assLines = new UnclosableDockWidget("ASS Lines", this); assLines->setFeatures(onlyClosableDockFeatures); assLines->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); addDockWidget(Qt::BottomDockWidgetArea, assLines, Qt::Vertical); - DockWidgetTitleBar::addToDock(assLines); } assModel.reset(new AssLinesModel(document->getAssSubDocument()->getLines())); @@ -126,14 +123,12 @@ VivyDocumentView::loadAudioView() noexcept } if (!visualizer) { - visualizer = new QDockWidget("Visualizer", this); - + visualizer = new UnclosableDockWidget("Visualizer", this); visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum); visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); visualizer->setFeatures(onlyClosableDockFeatures); addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal); - DockWidgetTitleBar::addToDock(visualizer); } // Kubat: don't check, may throw an error but don't think we can @@ -178,11 +173,10 @@ VivyDocumentView::openProperties() noexcept view->expandAll(); if (!property) { - property = new QDockWidget("Properties", this); + property = new UnclosableDockWidget("Properties", this); property->setAllowedAreas(Qt::AllDockWidgetAreas); property->setFeatures(allDockFeatures); addDockWidget(Qt::RightDockWidgetArea, property, Qt::Vertical); - DockWidgetTitleBar::addToDock(property); } property->setWidget(view); diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh index 59db8987710f841d955d25da28a53d8142f347c6..0a6f13b4519362f6468632348a854051a44e4b64 100644 --- a/src/UI/VivyDocumentView.hh +++ b/src/UI/VivyDocumentView.hh @@ -11,6 +11,7 @@ #include "DocumentViews/AssLinesView.hh" #include "DocumentViews/AssLinesModel.hh" #include "PropertyModel.hh" +#include "UnclosableDockWidget.hh" namespace Vivy { @@ -46,10 +47,10 @@ private: std::shared_ptr<VivyDocument> document; std::unique_ptr<PropertyModel> propertyModel{ nullptr }; std::unique_ptr<AssLinesModel> assModel{ nullptr }; - QDockWidget *visualizer{ nullptr }; - QDockWidget *property{ nullptr }; - QDockWidget *assLines{ nullptr }; - QDockWidget *videoView{ nullptr }; + UnclosableDockWidget *visualizer{ nullptr }; + UnclosableDockWidget *property{ nullptr }; + UnclosableDockWidget *assLines{ nullptr }; + UnclosableDockWidget *videoView{ nullptr }; QAction *openPropertiesAct{ nullptr }; };