From d47c75b9db4a937754ad13911eef27dbd511b3cb Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 12 Jul 2013 11:40:37 +0000 Subject: [PATCH] parameter attributes can be changed by the client if the parameter is invisible --- Common/GmshMessage.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp index ea648eba9c..6900c87ca1 100644 --- a/Common/GmshMessage.cpp +++ b/Common/GmshMessage.cpp @@ -885,18 +885,20 @@ void Msg::ExchangeOnelabParameter(const std::string &key, ps[0].setValue(val[0]); // use local value else val[0] = ps[0].getValue(); // use value from server - // keep track of these attributes, which can be changed server-side (unless, - // for the range/choices, when explicitely setting these attributes as - // ReadOnly) - if(!(fopt.count("ReadOnlyRange") && fopt["ReadOnlyRange"][0])){ - if(ps[0].getMin() != -onelab::parameter::maxNumber() || - ps[0].getMax() != onelab::parameter::maxNumber() || - ps[0].getStep() != 0.) noRange = false; - if(ps[0].getChoices().size()) noChoices = false; + // keep track of these attributes, which can be changed server-side (unless + // they are not visible or, for the range/choices, when explicitely setting + // these attributes as ReadOnly) + if(ps[0].getVisible()){ + if(!(fopt.count("ReadOnlyRange") && fopt["ReadOnlyRange"][0])){ + if(ps[0].getMin() != -onelab::parameter::maxNumber() || + ps[0].getMax() != onelab::parameter::maxNumber() || + ps[0].getStep() != 0.) noRange = false; + if(ps[0].getChoices().size()) noChoices = false; + } + if(ps[0].getAttribute("Loop").size()) noLoop = false; + if(ps[0].getAttribute("Graph").size()) noGraph = false; + if(ps[0].getAttribute("Closed").size()) noClosed = false; } - if(ps[0].getAttribute("Loop").size()) noLoop = false; - if(ps[0].getAttribute("Graph").size()) noGraph = false; - if(ps[0].getAttribute("Closed").size()) noClosed = false; } else{ ps.resize(1); @@ -977,10 +979,13 @@ void Msg::ExchangeOnelabParameter(const std::string &key, ps[0].setValue(val); // use local value else val = ps[0].getValue(); // use value from server - // keep track of these attributes, which can be changed server-side - if(ps[0].getChoices().size()) noChoices = false; - if(ps[0].getAttribute("Closed").size()) noClosed = false; - if(ps[0].getAttribute("MultipleSelection").size()) noMultipleSelection = false; + // keep track of these attributes, which can be changed server-side (unless + // they are not visible) + if(ps[0].getVisible()){ + if(ps[0].getChoices().size()) noChoices = false; + if(ps[0].getAttribute("Closed").size()) noClosed = false; + if(ps[0].getAttribute("MultipleSelection").size()) noMultipleSelection = false; + } } else{ ps.resize(1); -- GitLab