コード例 #1
0
void WAbstractToggleButton::updateDom(DomElement& element, bool all)
{
  if (checkedChanged_ || all) {
    element.setProperty(Wt::PropertyChecked, checked_ ? "true" : "false");
    checkedChanged_ = false;
  }

  const WSignalInstance_ *changeS = getSignal(SIGNAL(changed()));
  const WSignalInstance_ *checkedS = getSignal(SIGNAL(checked()));
  const WSignalInstance_ *unCheckedS = getSignal(SIGNAL(unChecked()));

  bool needUpdateChangeSignal =
    (changeS->connectivityChanged()
     || checkedS->connectivityChanged()
     || unCheckedS->connectivityChanged()
     || changeS->staticCodeChanged()
     || checkedS->staticCodeChanged()
     || unCheckedS->staticCodeChanged());

  WFormWidget::updateDom(element, all);

  if (needUpdateChangeSignal || all) {
    element.removeEventSignal("change");

    DomElement *e = DomElement::getForUpdate(this, DomElement::INPUT);

    if (isConnected(changeS))
      element.addEventSignal("change", *changeS, 0, 0);
    if (isConnected(checkedS))
      element.addEventSignal("change", *checkedS, 0,
			     (e->createReference()
			      + ".checked == true").c_str());
    if (isConnected(unCheckedS))
      element.addEventSignal("change", *unCheckedS, 0,
			     (e->createReference()
			      + ".checked == false").c_str());
    delete e;
  }
}