diff --git a/toonz/sources/common/tfx/tfx.cpp b/toonz/sources/common/tfx/tfx.cpp index 90a0f36..4b3a708 100644 --- a/toonz/sources/common/tfx/tfx.cpp +++ b/toonz/sources/common/tfx/tfx.cpp @@ -1002,7 +1002,10 @@ TFx *TFx::getLinkedFx() const { //-------------------------------------------------- -void TFx::setFxVersion(int v) { m_imp->m_attributes.setFxVersion(v); } +void TFx::setFxVersion(int v) { + m_imp->m_attributes.setFxVersion(v); + onFxVersionSet(); +} //-------------------------------------------------- diff --git a/toonz/sources/include/tfx.h b/toonz/sources/include/tfx.h index a462ead..78ac433 100644 --- a/toonz/sources/include/tfx.h +++ b/toonz/sources/include/tfx.h @@ -505,6 +505,7 @@ public: void setFxVersion(int); int getFxVersion() const; + virtual void onFxVersionSet() {} public: // Id-related functions diff --git a/toonz/sources/toonzqt/fxsettings.cpp b/toonz/sources/toonzqt/fxsettings.cpp index 40bc869..a0e1863 100644 --- a/toonz/sources/toonzqt/fxsettings.cpp +++ b/toonz/sources/toonzqt/fxsettings.cpp @@ -194,7 +194,10 @@ void ParamsPage::setPageField(TIStream &is, const TFxP &fx, bool isVertical) { is.matchEndTag(); /*-- Layout設定名とFxParameterの名前が一致するものを取得 --*/ TParamP param = fx->getParams()->getParam(name); - if (param) { + bool isHidden = + (param) ? fx->getParams()->getParamVar(name)->isHidden() : true; + + if (param && !isHidden) { std::string paramName = fx->getFxType() + "." + name; QString str = QString::fromStdWString(TStringTable::translate(paramName)); @@ -315,6 +318,17 @@ void ParamsPage::setPageField(TIStream &is, const TFxP &fx, bool isVertical) { modeChanger = field; break; } + // modeChanger may be in another vbox in the page + if (!modeChanger) { + QList allModeChangers = + findChildren(); + for (auto field : allModeChangers) { + if (field->getParamName().toStdString() == modeSensitiveStr) { + modeChanger = field; + break; + } + } + } assert(modeChanger); tmpWidget = new ModeSensitiveBox(this, modeChanger, modes); } @@ -567,8 +581,7 @@ void ParamsPage::setFx(const TFxP ¤tFx, const TFxP &actualFx, int frame) { for (int i = 0; i < (int)m_fields.size(); i++) { ParamField *field = m_fields[i]; QString fieldName = field->getParamName(); - - TFxP fx = getCurrentFx(currentFx, actualFx->getFxId()); + TFxP fx = getCurrentFx(currentFx, actualFx->getFxId()); assert(fx.getPointer()); TParamP currentParam = currentFx->getParams()->getParam(fieldName.toStdString()); @@ -1096,6 +1109,8 @@ void ParamViewer::setFx(const TFxP ¤tFx, const TFxP &actualFx, int frame, if (name == "macroFx") { TMacroFx *macroFx = dynamic_cast(currentFx.getPointer()); if (macroFx) name = macroFx->getMacroFxType(); + } else { + name += std::to_string(actualFx->getFxVersion()); } int currentIndex = -1; diff --git a/toonz/sources/toonzqt/paramfield.cpp b/toonz/sources/toonzqt/paramfield.cpp index e9b5e78..e3a1605 100644 --- a/toonz/sources/toonzqt/paramfield.cpp +++ b/toonz/sources/toonzqt/paramfield.cpp @@ -1320,7 +1320,7 @@ ModeSensitiveBox::ModeSensitiveBox(QWidget *parent, QCheckBox *checkBox) //----------------------------------------------------------------------------- void ModeSensitiveBox::onModeChanged(int modeValue) { - bool wasVisible = isVisible(); + bool wasVisible = isVisibleTo(parentWidget()); m_currentMode = modeValue; if (wasVisible == m_modes.contains(modeValue)) return; setVisible(!wasVisible);