diff options
Diffstat (limited to 'src/mainwindow/menubar.cpp')
-rw-r--r-- | src/mainwindow/menubar.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/mainwindow/menubar.cpp b/src/mainwindow/menubar.cpp index f1b3565..b695a20 100644 --- a/src/mainwindow/menubar.cpp +++ b/src/mainwindow/menubar.cpp @@ -26,10 +26,10 @@ #include <QPrintDialog> #include <QPrinter> #include <QPrinterInfo> +#include <QToolBar> #include <QVBoxLayout> #include <QWidgetAction> #include <functional> -#include <QToolBar> inline void run_if(SubWindow *_subwindow, const std::function<void(SubWindow *, int)> &f) { @@ -170,15 +170,29 @@ MenuBar::MenuBar(MainWindow *parent) window->addSeparator()->setText(tr("Toolbars")); - for(auto *toolbar : parent->findChildren<QToolBar*>()) { + bool hasMovableToolbar = false; + + for(auto *toolbar : parent->findChildren<QToolBar *>()) { auto *action = window->addAction(toolbar->windowTitle()); action->setCheckable(true); action->setChecked(toolbar->isVisible()); connect(toolbar, &QToolBar::visibilityChanged, action, &QAction::setChecked); connect(action, &QAction::triggered, toolbar, &QToolBar::setVisible); - setShortcut(action, qUtf8Printable("shortcuts."+toolbar->objectName()+".show")); + setShortcut(action, qUtf8Printable(toolbar->objectName() + ".show")); + + if(toolbar->isMovable()) + hasMovableToolbar = true; } + auto *lockAction = window->addAction(tr("Unlock toolbars")); + lockAction->setCheckable(true); + lockAction->setChecked(hasMovableToolbar); + connect(lockAction, &QAction::triggered, parent, [parent](bool checked) { + for(auto *toolbar : parent->findChildren<QToolBar *>()) { + toolbar->setMovable(checked); + } + }); + window->addSeparator()->setText(tr("Subwindows")); } |