Prevent multiple color pickers and inform user

This commit is contained in:
Bruno Herbelin
2023-03-03 20:23:05 +01:00
parent 7d91ffbafa
commit 3be08a3e63
3 changed files with 17 additions and 5 deletions

View File

@@ -713,7 +713,7 @@ std::tuple<float, float, float> openColorDialog( std::tuple<float, float, float>
void DialogToolkit::ColorPickerDialog::open()
{
if ( !busy_ && promises_.empty() ) {
if ( !DialogToolkit::ColorPickerDialog::busy_ && promises_.empty() ) {
promises_.emplace_back( std::async(std::launch::async, openColorDialog, rgb_) );
busy_ = true;
}

View File

@@ -30,6 +30,7 @@
#include "ImGuiToolkit.h"
#include "imgui_internal.h"
#include "Log.h"
#include "Mixer.h"
#include "defines.h"
#include "Source.h"
@@ -431,10 +432,15 @@ void DisplaysView::draw()
Settings::application.windows[1+current_window_].whitebalance.y,
Settings::application.windows[1+current_window_].whitebalance.z, 1.f),
ImGuiColorEditFlags_NoAlpha)) {
whitebalancedialog.setRGB( std::make_tuple(Settings::application.windows[1+current_window_].whitebalance.x,
if ( DialogToolkit::ColorPickerDialog::busy()) {
Log::Warning("Close previously openned color picker.");
}
else {
whitebalancedialog.setRGB( std::make_tuple(Settings::application.windows[1+current_window_].whitebalance.x,
Settings::application.windows[1+current_window_].whitebalance.y,
Settings::application.windows[1+current_window_].whitebalance.z) );
whitebalancedialog.open();
whitebalancedialog.open();
}
}
ImGui::PopFont();

View File

@@ -33,6 +33,7 @@
#include "imgui.h"
#include "imgui_internal.h"
#include "Log.h"
#include "defines.h"
#include "Scene.h"
#include "Primitives.h"
@@ -999,8 +1000,13 @@ void ImGuiVisitor::visit (AlphaFilter& f)
ImGui::SameLine(0, IMGUI_SAME_LINE);
ImGui::SetNextItemWidth(IMGUI_RIGHT_ALIGN);
if ( ImGui::Button( ICON_FA_EYE_DROPPER " Open selector", ImVec2(IMGUI_RIGHT_ALIGN, 0)) ){
colordialog.setRGB( std::make_tuple(color[0], color[1], color[2]) );
colordialog.open();
if ( DialogToolkit::ColorPickerDialog::busy()) {
Log::Warning("Close previously openned color picker.");
}
else {
colordialog.setRGB( std::make_tuple(color[0], color[1], color[2]) );
colordialog.open();
}
}
ImGui::SameLine(0, IMGUI_SAME_LINE);
ImGui::Text("Color");