diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc index 289a319c282f0876004563223dc1e65b99ef1731..1bc93560dee72eb95ede95222d56f7175f89ecb6 100644 --- a/src/UI/VivyDocumentView.cc +++ b/src/UI/VivyDocumentView.cc @@ -21,7 +21,7 @@ VivyDocumentView::VivyDocumentView(std::shared_ptr<VivyDocument> doc, QWidget *p loadAssView(); // Add some actions... - QAction *openPropertiesAct = new QAction("Open properties", this); + openPropertiesAct = new QAction("Open properties", this); connect(openPropertiesAct, &QAction::triggered, this, &VivyDocumentView::openProperties); connect(document.get(), &AbstractDocument::documentChanged, this, [=, this]() { if (property) @@ -79,9 +79,7 @@ VivyDocumentView::loadVideoView() noexcept if (!videoView) { videoView = new QDockWidget("Video View", this); videoView->setAllowedAreas(Qt::AllDockWidgetAreas); - videoView->setFeatures(QDockWidget::DockWidgetMovable | - QDockWidget::DockWidgetFloatable | - QDockWidget::DockWidgetClosable); + videoView->setFeatures(allDockFeatures); addDockWidget(Qt::BottomDockWidgetArea, videoView, Qt::Vertical); DockWidgetTitleBar::addToDock(videoView); } @@ -101,7 +99,7 @@ VivyDocumentView::loadAssView() noexcept if (document->checkDocumentCapabilities(VivyDocument::Capabilities::AssAble)) { if (!assLines) { assLines = new QDockWidget("ASS Lines", this); - assLines->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); + assLines->setFeatures(onlyClosableDockFeatures); assLines->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); addDockWidget(Qt::BottomDockWidgetArea, assLines, Qt::Vertical); @@ -133,8 +131,7 @@ VivyDocumentView::loadAudioView() noexcept visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum); visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); - visualizer->setFeatures(QDockWidget::DockWidgetMovable | - QDockWidget::DockWidgetClosable); + visualizer->setFeatures(onlyClosableDockFeatures); addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal); DockWidgetTitleBar::addToDock(visualizer); } @@ -174,7 +171,7 @@ VivyDocumentView::getDocumentTabIcon() const noexcept void VivyDocumentView::openProperties() noexcept { - propertyModel.reset(new PropertyModel(*document.get())); + propertyModel = std::make_unique<PropertyModel>(*document.get()); QTreeView *view = new QTreeView(property); view->setModel(propertyModel.get()); view->header()->setSectionResizeMode(QHeaderView::ResizeToContents); @@ -183,9 +180,11 @@ VivyDocumentView::openProperties() noexcept if (!property) { property = new QDockWidget("Properties", this); property->setAllowedAreas(Qt::AllDockWidgetAreas); + property->setFeatures(allDockFeatures); addDockWidget(Qt::RightDockWidgetArea, property, Qt::Vertical); DockWidgetTitleBar::addToDock(property); } property->setWidget(view); + openPropertiesAct->setVisible(false); } diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh index b38bd6c04a87e5551c336e443c84b886e1b519cd..59db8987710f841d955d25da28a53d8142f347c6 100644 --- a/src/UI/VivyDocumentView.hh +++ b/src/UI/VivyDocumentView.hh @@ -18,6 +18,12 @@ class VivyDocumentView final : public AbstractDocumentView { Q_OBJECT VIVY_UNMOVABLE_OBJECT(VivyDocumentView) + static inline constexpr QDockWidget::DockWidgetFeatures allDockFeatures = + QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable | + QDockWidget::DockWidgetMovable; + static inline constexpr QDockWidget::DockWidgetFeatures onlyClosableDockFeatures = + QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable; + public: explicit VivyDocumentView(std::shared_ptr<VivyDocument>, QWidget *parent) noexcept; ~VivyDocumentView() noexcept override; @@ -44,6 +50,7 @@ private: QDockWidget *property{ nullptr }; QDockWidget *assLines{ nullptr }; QDockWidget *videoView{ nullptr }; + QAction *openPropertiesAct{ nullptr }; }; }