diff --git a/src/app/GUI/mainwindow.cpp b/src/app/GUI/mainwindow.cpp index e93afac7a..46435295b 100644 --- a/src/app/GUI/mainwindow.cpp +++ b/src/app/GUI/mainwindow.cpp @@ -331,8 +331,8 @@ MainWindow::MainWindow(Document& document, addToolBar(mColorToolBar); mCanvasToolBar->addSeparator(); - mCanvasToolBar->addAction(new QAction(QIcon::fromTheme("workspace"), - tr("Layout"), this)); + mCanvasToolBar->addAction(QIcon::fromTheme("workspace"), + tr("Layout")); const auto workspaceLayoutCombo = mLayoutHandler->comboWidget(); workspaceLayoutCombo->setMaximumWidth(150); mCanvasToolBar->addWidget(workspaceLayoutCombo); diff --git a/src/ui/widgets/canvastoolbar.cpp b/src/ui/widgets/canvastoolbar.cpp index 0b2a98423..05448b54c 100644 --- a/src/ui/widgets/canvastoolbar.cpp +++ b/src/ui/widgets/canvastoolbar.cpp @@ -37,6 +37,9 @@ CanvasToolBar::CanvasToolBar(QWidget *parent) , mSpinWidth(nullptr) , mSpinHeight(nullptr) , mComboResolution(nullptr) + , mIconsOnly(AppSupport::getSettings("ui", + "CanvasToolbarIconsOnly", + false).toBool()) { eSizesUI::widget.add(this, [this](const int size) { this->setIconSize({size, size}); @@ -45,7 +48,14 @@ CanvasToolBar::CanvasToolBar(QWidget *parent) setEnabled(false); setWindowTitle(tr("Canvas Toolbar")); setObjectName("CanvasToolBar"); - setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + setToolButtonStyle(mIconsOnly ? + Qt::ToolButtonIconOnly : + Qt::ToolButtonTextBesideIcon); + + setContextMenuPolicy(Qt::CustomContextMenu); + connect(this, &QWidget::customContextMenuRequested, + this, &CanvasToolBar::showContextMenu); + #ifdef Q_OS_MAC setStyleSheet(QString("font-size: %1pt;").arg(font().pointSize())); #endif @@ -110,13 +120,13 @@ void CanvasToolBar::setupDimensions() mSpinHeight->setMaximum(99999); mSpinHeight->setKeyboardTracking(false); - addAction(new QAction(QIcon::fromTheme("width"), - tr("Width"), this)); + addAction(QIcon::fromTheme("width"), + tr("Width")); addWidget(mSpinWidth); - //addSeparator(); - addAction(new QAction(QIcon::fromTheme("height"), - tr("Height"), this)); + addAction(QIcon::fromTheme("height"), + tr("Height")); + addWidget(mSpinHeight); } @@ -132,12 +142,10 @@ void CanvasToolBar::setupResolution() mComboResolution->lineEdit()->setInputMask("D00 %"); mComboResolution->setCurrentText("100 %"); mComboResolution->setInsertPolicy(QComboBox::NoInsert); - //mComboResolution->setSizePolicy(QSizePolicy::Preferred, - // QSizePolicy::Preferred); addSeparator(); - addAction(new QAction(QIcon::fromTheme("resolution"), - tr("Resolution"), this)); + addAction(QIcon::fromTheme("resolution"), + tr("Resolution")); addWidget(mComboResolution); } @@ -198,3 +206,31 @@ void CanvasToolBar::setDimension(const QSize dim, dim.height()); Document::sInstance->actionFinished(); } + +void CanvasToolBar::showContextMenu(const QPoint &pos) +{ + QMenu menu(this); + { + const auto act = menu.addAction(QIcon::fromTheme("window"), + windowTitle()); + act->setEnabled(false); + menu.addSeparator(); + } + { + const auto act = menu.addAction(tr("Labels")); + act->setCheckable(true); + act->setChecked(!mIconsOnly); + connect(act, &QAction::triggered, + this, [this](bool checked) { + mIconsOnly = !checked; + setToolButtonStyle(mIconsOnly ? + Qt::ToolButtonIconOnly : + Qt::ToolButtonTextBesideIcon); + update(); + AppSupport::setSettings("ui", + "CanvasToolbarIconsOnly", + mIconsOnly); + }); + } + menu.exec(mapToGlobal(pos)); +} diff --git a/src/ui/widgets/canvastoolbar.h b/src/ui/widgets/canvastoolbar.h index 860bdae5c..2f36b2366 100644 --- a/src/ui/widgets/canvastoolbar.h +++ b/src/ui/widgets/canvastoolbar.h @@ -42,9 +42,7 @@ namespace Friction { public: explicit CanvasToolBar(QWidget *parent = nullptr); - void setCurrentCanvas(Canvas * const target); - QComboBox* getResolutionComboBox(); private: @@ -57,12 +55,14 @@ namespace Friction Canvas * const target); void setDimension(const QSize dim, Canvas * const target); + void showContextMenu(const QPoint &pos); QSpinBox *mSpinWidth; QSpinBox *mSpinHeight; QComboBox *mComboResolution; ConnContextQPtr<Canvas> mCanvas; + bool mIconsOnly; }; } }