From 03c6141b24ef8deabfc21cc432d187ef4618a95f Mon Sep 17 00:00:00 2001 From: Pandagrapher Date: Thu, 25 Apr 2019 16:39:40 +0200 Subject: [PATCH] Corrects unsaved parameters behavior when showing/hidding all spots --- rtgui/controlspotpanel.cc | 1 + rtgui/controlspotpanel.h | 3 ++- rtgui/locallab.cc | 23 +++++++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/rtgui/controlspotpanel.cc b/rtgui/controlspotpanel.cc index 2b2a3b034..51c18d453 100644 --- a/rtgui/controlspotpanel.cc +++ b/rtgui/controlspotpanel.cc @@ -483,6 +483,7 @@ bool ControlSpotPanel::on_button_visibility(GdkEventButton* event) // Raise event visibilityChanged_ = true; + eventType = SpotAllVisibilityChanged; if (!selVisibility) { listener->panelChanged(EvLocallabSpotVisibility, M("TP_LOCALLAB_EV_VIS_ALL")); diff --git a/rtgui/controlspotpanel.h b/rtgui/controlspotpanel.h index 289a97410..3abda6d1f 100644 --- a/rtgui/controlspotpanel.h +++ b/rtgui/controlspotpanel.h @@ -105,7 +105,8 @@ public: SpotCreation = 1, SpotDeletion = 2, SpotSelection = 3, - SpotDuplication = 4 + SpotDuplication = 4, + SpotAllVisibilityChanged = 5 }; // Constructor and management functions diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index ab957d32a..7cec443b5 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -1794,6 +1794,29 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) break; + case (ControlSpotPanel::SpotAllVisibilityChanged): // Event when updating visibility of all spots + r = expsettings->getSpot(expsettings->getSelectedSpot()); + + // ProcParams update + for (size_t i = 0; i < pp->locallab.spots.size(); i++) { + pp->locallab.spots.at(i).isvisible = r->isvisible; + } + + if (pe) { + for (size_t i = 0; i < pe->locallab.spots.size(); i++) { + pe->locallab.spots.at(i).isvisible = true; + } + } + + // ParamsEdited update + if (pedited) { + for (size_t i = 0; i < pedited->locallab.spots.size(); i++) { + pedited->locallab.spots.at(i).isvisible = true; + } + } + + break; + default: // Spot or locallab GUI updated if (pp->locallab.nbspot > 0) { r = expsettings->getSpot(expsettings->getSelectedSpot());