diff --git a/rtgui/locallabtools.cc b/rtgui/locallabtools.cc index f360d944f..bbda6b50d 100644 --- a/rtgui/locallabtools.cc +++ b/rtgui/locallabtools.cc @@ -216,11 +216,12 @@ void LocallabTool::removeLocallabTool(bool raiseEvent) locToolListener->toolRemoved(this); } - if (exp->getEnabled()) { + if (exp->getEnabled() || isMaskViewActive()) { // Disable tool while removing it disableListener(); exp->setEnabled(false); enableListener(); + // Note: Mask views are all resetted when removing tool (in toolpanelcoord.cc) // Raise event if required refreshing image if (raiseEvent && listener) { @@ -842,6 +843,11 @@ void LocallabColor::setListener(ToolPanelListener* tpl) labgridmerg->setListener(tpl); } +bool LocallabColor::isMaskViewActive() +{ + return ((showmaskcolMethod->get_active_row_number() != 0) || (showmaskcolMethodinv->get_active_row_number() != 0)); +} + void LocallabColor::resetMaskView() { showmaskcolMethodConn.block(true); @@ -2401,6 +2407,11 @@ LocallabExposure::~LocallabExposure() delete mask2expCurveEditorG; } +bool LocallabExposure::isMaskViewActive() +{ + return ((showmaskexpMethod->get_active_row_number() != 0) || (showmaskexpMethodinv->get_active_row_number() != 0)); +} + void LocallabExposure::resetMaskView() { showmaskexpMethodConn.block(true); @@ -3402,6 +3413,11 @@ LocallabShadow::~LocallabShadow() delete mask2SHCurveEditorG; } +bool LocallabShadow::isMaskViewActive() +{ + return ((showmaskSHMethod->get_active_row_number() != 0) || (showmaskSHMethodinv->get_active_row_number() != 0)); +} + void LocallabShadow::resetMaskView() { showmaskSHMethodConn.block(true); @@ -4220,12 +4236,15 @@ LocallabVibrance::~LocallabVibrance() delete mask2vibCurveEditorG; } +bool LocallabVibrance::isMaskViewActive() +{ + return (showmaskvibMethod->get_active_row_number() != 0); +} + void LocallabVibrance::resetMaskView() { showmaskvibMethodConn.block(true); - showmaskvibMethod->set_active(0); - showmaskvibMethodConn.block(false); } @@ -4840,6 +4859,11 @@ LocallabSoft::LocallabSoft(): pack_start(*sensisf); } +bool LocallabSoft::isMaskViewActive() +{ + return (showmasksoftMethod->get_active_row_number() != 0); +} + void LocallabSoft::resetMaskView() { showmasksoftMethodConn.block(true); @@ -5376,6 +5400,11 @@ LocallabBlur::~LocallabBlur() delete LocalcurveEditorwavden; } +bool LocallabBlur::isMaskViewActive() +{ + return (showmaskblMethod->get_active_row_number() != 0); +} + void LocallabBlur::resetMaskView() { showmaskblMethodConn.block(true); diff --git a/rtgui/locallabtools.h b/rtgui/locallabtools.h index 87bcb955d..9821ce5ed 100644 --- a/rtgui/locallabtools.h +++ b/rtgui/locallabtools.h @@ -118,6 +118,10 @@ public: void refChanged(const double huer, const double lumar, const double chromar); // Mask preview functions + virtual bool isMaskViewActive() + { + return false; + }; virtual void resetMaskView() {}; virtual void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) {}; @@ -253,6 +257,7 @@ public: void setListener(ToolPanelListener* tpl) override; + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -362,6 +367,7 @@ public: LocallabExposure(); ~LocallabExposure(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -445,6 +451,7 @@ public: LocallabShadow(); ~LocallabShadow(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -522,6 +529,7 @@ public: LocallabVibrance(); ~LocallabVibrance(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -577,6 +585,7 @@ private: public: LocallabSoft(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -670,6 +679,7 @@ public: LocallabBlur(); ~LocallabBlur(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -749,6 +759,7 @@ public: LocallabTone(); ~LocallabTone(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -838,6 +849,7 @@ public: void updateMinMax(const double cdma, const double cdmin, const double mini, const double maxi, const double Tmean, const double Tsigma, const double Tmin, const double Tmax); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -895,6 +907,7 @@ private: public: LocallabSharp(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -1014,6 +1027,7 @@ public: LocallabContrast(); ~LocallabContrast(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; @@ -1103,6 +1117,7 @@ public: LocallabCBDL(); ~LocallabCBDL(); + bool isMaskViewActive() override; void resetMaskView() override; void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask) override; diff --git a/rtgui/locallabtools2.cc b/rtgui/locallabtools2.cc index cfc4d227f..0e0fb2d92 100644 --- a/rtgui/locallabtools2.cc +++ b/rtgui/locallabtools2.cc @@ -254,6 +254,11 @@ LocallabTone::~LocallabTone() delete mask2tmCurveEditorG; } +bool LocallabTone::isMaskViewActive() +{ + return (showmasktmMethod->get_active_row_number() != 0); +} + void LocallabTone::resetMaskView() { showmasktmMethodConn.block(true); @@ -984,6 +989,11 @@ void LocallabRetinex::updateMinMax(const double cdma, const double cdmin, const ); } +bool LocallabRetinex::isMaskViewActive() +{ + return (showmaskretiMethod->get_active_row_number() != 0); +} + void LocallabRetinex::resetMaskView() { showmaskretiMethodConn.block(true); @@ -1769,6 +1779,11 @@ LocallabSharp::LocallabSharp(): pack_start(*sharFrame); } +bool LocallabSharp::isMaskViewActive() +{ + return (showmasksharMethod->get_active_row_number() != 0); +} + void LocallabSharp::resetMaskView() { showmasksharMethodConn.block(true); @@ -2501,6 +2516,11 @@ LocallabContrast::~LocallabContrast() delete mask2lcCurveEditorG; } +bool LocallabContrast::isMaskViewActive() +{ + return (showmasklcMethod->get_active_row_number() != 0); +} + void LocallabContrast::resetMaskView() { showmasklcMethodConn.block(true); @@ -3804,6 +3824,12 @@ LocallabCBDL::~LocallabCBDL() delete mask2cbCurveEditorG; } +bool LocallabCBDL::isMaskViewActive() +{ + return (showmaskcbMethod->get_active_row_number() != 0); +} + + void LocallabCBDL::resetMaskView() { showmaskcbMethodConn.block(true); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 1f7e1d3b5..9d9aeca9d 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -530,7 +530,7 @@ void ToolPanelCoordinator::panelChanged(const rtengine::ProcEvent& event, const maskStruc.lcMask, maskStruc.cbMask); } else if (event == rtengine::EvLocallabSpotCreated || event == rtengine::EvLocallabSpotSelectedWithMask || event == rtengine::EvLocallabSpotDeleted || event == rtengine::Evlocallabshowreset || - event == rtengine::EvlocallabToolRemovedWithRefresh || event == rtengine::EvlocallabToolRemovedWithoutRefresh) { + event == rtengine::EvlocallabToolRemovedWithRefresh) { locallab->resetMaskVisibility(); ipc->setLocallabMaskVisibility(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); }