diff --git a/src/DialogToolkit.cpp b/src/DialogToolkit.cpp index 979a1ce..940a5b1 100644 --- a/src/DialogToolkit.cpp +++ b/src/DialogToolkit.cpp @@ -713,7 +713,7 @@ std::tuple openColorDialog( std::tuple 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; } diff --git a/src/DisplaysView.cpp b/src/DisplaysView.cpp index f54624c..7e16570 100644 --- a/src/DisplaysView.cpp +++ b/src/DisplaysView.cpp @@ -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(); diff --git a/src/ImGuiVisitor.cpp b/src/ImGuiVisitor.cpp index 57fb89a..2c76a04 100644 --- a/src/ImGuiVisitor.cpp +++ b/src/ImGuiVisitor.cpp @@ -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");