From 70ad1396ea83e2e407e9f2e7f9a9f128412f5aa2 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 10 Oct 2021 20:17:44 -0500 Subject: [PATCH] Gui: Add option to show alpha in QColorDialog --- src/Gui/Widgets.cpp | 19 +++++++++++++++++++ src/Gui/Widgets.h | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/src/Gui/Widgets.cpp b/src/Gui/Widgets.cpp index 2c850c95b0..d1cfad653d 100644 --- a/src/Gui/Widgets.cpp +++ b/src/Gui/Widgets.cpp @@ -595,6 +595,7 @@ struct ColorButtonP bool allowChange; bool autoChange; bool drawFrame; + bool allowTransparency; bool modal; bool dirty; @@ -603,6 +604,7 @@ struct ColorButtonP , allowChange(true) , autoChange(false) , drawFrame(true) + , allowTransparency(false) , modal(true) , dirty(true) { @@ -672,6 +674,21 @@ bool ColorButton::drawFrame() const return d->drawFrame; } +void Gui::ColorButton::setAllowTransparency(bool allow) +{ + d->allowTransparency = allow; + if (d->cd) + d->cd->setOption(QColorDialog::ColorDialogOption::ShowAlphaChannel, allow); +} + +bool Gui::ColorButton::allowTransparency() const +{ + if (d->cd) + return d->cd->testOption(QColorDialog::ColorDialogOption::ShowAlphaChannel); + else + return d->allowTransparency; +} + void ColorButton::setModal(bool b) { d->modal = b; @@ -764,6 +781,7 @@ void ColorButton::onChooseColor() QColor currentColor = d->col; QColorDialog cd(d->col, this); cd.setOptions(QColorDialog::DontUseNativeDialog); + cd.setOption(QColorDialog::ColorDialogOption::ShowAlphaChannel, d->allowTransparency); if (d->autoChange) { connect(&cd, SIGNAL(currentColorChanged(const QColor &)), @@ -789,6 +807,7 @@ void ColorButton::onChooseColor() d->old = d->col; d->cd = new QColorDialog(d->col, this); d->cd->setOptions(QColorDialog::DontUseNativeDialog); + d->cd->setOption(QColorDialog::ColorDialogOption::ShowAlphaChannel, d->allowTransparency); d->cd->setAttribute(Qt::WA_DeleteOnClose); connect(d->cd, SIGNAL(rejected()), this, SLOT(onRejected())); diff --git a/src/Gui/Widgets.h b/src/Gui/Widgets.h index f472a59966..09d9013a99 100644 --- a/src/Gui/Widgets.h +++ b/src/Gui/Widgets.h @@ -202,6 +202,7 @@ class GuiExport ColorButton : public QPushButton Q_PROPERTY( QColor color READ color WRITE setColor ) Q_PROPERTY( bool allowChangeColor READ allowChangeColor WRITE setAllowChangeColor ) Q_PROPERTY( bool drawFrame READ drawFrame WRITE setDrawFrame ) + Q_PROPERTY( bool allowTransparency READ allowTransparency WRITE setAllowTransparency) public: ColorButton(QWidget* parent = 0); @@ -216,6 +217,9 @@ public: void setDrawFrame(bool); bool drawFrame() const; + void setAllowTransparency(bool); + bool allowTransparency() const; + void setModal(bool); bool isModal() const;