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) :
|
ColorButton::ColorButton(ColorManager* color_manager, bool show_dialog_on_click, QWidget *parent) :
|
||||||
QPushButton(parent),
|
QPushButton(parent),
|
||||||
color_manager_(color_manager),
|
color_manager_(color_manager),
|
||||||
color_processor_(nullptr)
|
color_processor_(nullptr),
|
||||||
|
dialog_open_(false)
|
||||||
{
|
{
|
||||||
setAutoFillBackground(true);
|
setAutoFillBackground(true);
|
||||||
|
|
||||||
@@ -55,11 +56,14 @@ void ColorButton::SetColor(const ManagedColor &c)
|
|||||||
|
|
||||||
void ColorButton::ShowColorDialog()
|
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)
|
void ColorButton::ColorDialogFinished(int e)
|
||||||
@@ -75,6 +79,8 @@ void ColorButton::ColorDialogFinished(int e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cd->deleteLater();
|
cd->deleteLater();
|
||||||
|
|
||||||
|
dialog_open_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColorButton::UpdateColor()
|
void ColorButton::UpdateColor()
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ private:
|
|||||||
|
|
||||||
ColorProcessorPtr color_processor_;
|
ColorProcessorPtr color_processor_;
|
||||||
|
|
||||||
|
bool dialog_open_;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user