diff --git a/examples/dockwidgets/MyMainWindow.cpp b/examples/dockwidgets/MyMainWindow.cpp index cd85f1b3..7f4cfcf1 100644 --- a/examples/dockwidgets/MyMainWindow.cpp +++ b/examples/dockwidgets/MyMainWindow.cpp @@ -50,8 +50,9 @@ static MyWidget *newMyWidget() } MyMainWindow::MyMainWindow(const QString &uniqueName, KDDockWidgets::MainWindowOptions options, - const QString &affinityName, QWidget *parent) + bool dockWidget0IsNonClosable, const QString &affinityName, QWidget *parent) : MainWindow(uniqueName, options, parent) + , m_dockWidget0IsNonClosable(dockWidget0IsNonClosable) { // qApp->installEventFilter(this); @@ -125,7 +126,13 @@ void MyMainWindow::createDockWidgets() KDDockWidgets::DockWidgetBase *MyMainWindow::newDockWidget() { static int count = 0; - auto dock = new KDDockWidgets::DockWidget(QStringLiteral("DockWidget #%1").arg(count)); + + // Passing options is optional, we just want to illustrate Option_NotClosable here + KDDockWidgets::DockWidget::Options options = KDDockWidgets::DockWidget::Option_None; + if (count == 0 && m_dockWidget0IsNonClosable) + options |= KDDockWidgets::DockWidget::Option_NotClosable; + + auto dock = new KDDockWidgets::DockWidget(QStringLiteral("DockWidget #%1").arg(count), options); dock->setAffinityName(affinityName()); // optional, just to show the feature. Pass -mi to the example to see incompatible dock widgets if (count == 1) diff --git a/examples/dockwidgets/MyMainWindow.h b/examples/dockwidgets/MyMainWindow.h index 1d002321..e75c016b 100644 --- a/examples/dockwidgets/MyMainWindow.h +++ b/examples/dockwidgets/MyMainWindow.h @@ -27,6 +27,7 @@ class MyMainWindow : public KDDockWidgets::MainWindow Q_OBJECT public: explicit MyMainWindow(const QString &uniqueName, KDDockWidgets::MainWindowOptions options, + bool dockWidget0IsNonClosable, const QString &affinityName = {}, // Usually not needed. Just here to show the feature. QWidget *parent = nullptr); @@ -34,4 +35,5 @@ private: void createDockWidgets(); KDDockWidgets::DockWidgetBase* newDockWidget(); QMenu *m_toggleMenu = nullptr; + const bool m_dockWidget0IsNonClosable; }; diff --git a/examples/dockwidgets/main.cpp b/examples/dockwidgets/main.cpp index eb948943..29b415a3 100644 --- a/examples/dockwidgets/main.cpp +++ b/examples/dockwidgets/main.cpp @@ -67,6 +67,9 @@ int main(int argc, char **argv) QCommandLineOption tabsHaveCloseButton("c", QCoreApplication::translate("main", "Tabs have a close button")); parser.addOption(tabsHaveCloseButton); + QCommandLineOption nonClosableDockWidget("n", QCoreApplication::translate("main", "DockWidget #0 will be non-closable")); + parser.addOption(nonClosableDockWidget); + #if defined(DOCKS_DEVELOPER_MODE) QCommandLineOption noCentralFrame("c", QCoreApplication::translate("main", "No central frame")); parser.addOption(noCentralFrame); @@ -107,7 +110,9 @@ int main(int argc, char **argv) KDDockWidgets::Config::self().setFlags(flags); - MyMainWindow mainWindow(QStringLiteral("MyMainWindow"), options); + const bool nonClosableDockWidget0 = parser.isSet(nonClosableDockWidget); + + MyMainWindow mainWindow(QStringLiteral("MyMainWindow"), options, nonClosableDockWidget0); mainWindow.setWindowTitle("Main Window 1"); mainWindow.resize(1200, 1200); mainWindow.show(); @@ -118,7 +123,8 @@ int main(int argc, char **argv) const QString affinity = parser.isSet(incompatibleMainWindows) ? QStringLiteral("affinity1") : QString(); - auto mainWindow2 = new MyMainWindow(QStringLiteral("MyMainWindow-2"), options, affinity); + auto mainWindow2 = new MyMainWindow(QStringLiteral("MyMainWindow-2"), options, + nonClosableDockWidget0, affinity); if (affinity.isEmpty()) mainWindow2->setWindowTitle("Main Window 2"); else