colorbutton: Ensure only one color dialog can open

Fixes #2161

Previously it was possible to open multiple color dialoges for one
color button.
This commit is contained in:
Thomas Wilshaw
2023-02-11 13:15:18 +00:00
parent bf049f98f0
commit e9432b766e
2 changed files with 12 additions and 4 deletions
+10 -4
View File
@@ -27,7 +27,8 @@ namespace olive {
ColorButton::ColorButton(ColorManager* color_manager, bool show_dialog_on_click, QWidget *parent) :
QPushButton(parent),
color_manager_(color_manager),
color_processor_(nullptr)
color_processor_(nullptr),
dialog_open_(false)
{
setAutoFillBackground(true);
@@ -55,11 +56,14 @@ void ColorButton::SetColor(const ManagedColor &c)
void ColorButton::ShowColorDialog()
{
ColorDialog *cd = new ColorDialog(color_manager_, color_, this);
if (!dialog_open_) {
dialog_open_ = true;
ColorDialog *cd = new ColorDialog(color_manager_, color_, this);
connect(cd, &ColorDialog::finished, this, &ColorButton::ColorDialogFinished);
connect(cd, &ColorDialog::finished, this, &ColorButton::ColorDialogFinished);
cd->show();
cd->show();
}
}
void ColorButton::ColorDialogFinished(int e)
@@ -75,6 +79,8 @@ void ColorButton::ColorDialogFinished(int e)
}
cd->deleteLater();
dialog_open_ = false;
}
void ColorButton::UpdateColor()
+2
View File
@@ -60,6 +60,8 @@ private:
ColorProcessorPtr color_processor_;
bool dialog_open_;
};
}