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:
@@ -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()
|
||||
|
||||
@@ -60,6 +60,8 @@ private:
|
||||
|
||||
ColorProcessorPtr color_processor_;
|
||||
|
||||
bool dialog_open_;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user