diff --git a/src/db/db/built-in-macros/pcell_declaration_helper.lym b/src/db/db/built-in-macros/pcell_declaration_helper.lym index f37f64344..30023a97a 100644 --- a/src/db/db/built-in-macros/pcell_declaration_helper.lym +++ b/src/db/db/built-in-macros/pcell_declaration_helper.lym @@ -297,7 +297,7 @@ module RBA def _get_param(nth, name) if @param_states - if @param_states.size <= nth + if ! @param_states.has_parameter?(name) return RBA::PCellParameterState::new else return @param_states.parameter(name) diff --git a/src/edt/edt/edtPCellParametersPage.cc b/src/edt/edt/edtPCellParametersPage.cc index 0f505113a..043034b75 100644 --- a/src/edt/edt/edtPCellParametersPage.cc +++ b/src/edt/edt/edtPCellParametersPage.cc @@ -605,12 +605,8 @@ PCellParametersPage::parameter_changed () get_parameters_internal (states, edit_error); if (! edit_error) { - mp_pcell_decl->callback (mp_view->cellview (m_cv_index)->layout (), pd ? pd->get_name () : std::string (), states); - - update_widgets_from_states (states); m_states = states; - } } catch (tl::Exception &ex) { @@ -631,6 +627,7 @@ PCellParametersPage::do_parameter_changed () bool ok = true; db::ParameterStates states = m_states; get_parameters (states, &ok); // includes coerce + update_widgets_from_states (states); if (ok && ! lazy_evaluation ()) { emit edited (); } @@ -893,7 +890,9 @@ PCellParametersPage::update_widgets_from_states (const db::ParameterStates &stat if (*w != m_widgets [i]) { (*w)->setEnabled (ps.is_enabled ()); } - (*w)->setVisible (ps.is_visible ()); + if (*w != m_icon_widgets [i]) { + (*w)->setVisible (ps.is_visible ()); + } (*w)->setToolTip (tl::to_qstring (ps.tooltip ())); }