Fix the Octopus to hold on to connections and to disconnect them using boost rather than setting a zero callback.

This commit is contained in:
Melanie
2013-06-19 16:08:47 +02:00
parent 6025af25be
commit 76219cd459

View File

@@ -363,18 +363,24 @@ bool HippoFloaterXmlImpl::execute(LLFloater *floater, LLUICtrl *ctrl,
if (HippoFloaterXmlImpl *floaterp = dynamic_cast<HippoFloaterXmlImpl*>(ctrl)) {
floaterp->mIsNotifyOnClose = set;
} else {
if (set)
ctrl->setCommitCallback(boost::bind(&notifyCallback, _1, floater), ctrl);
else
ctrl->setCommitCallback(0);
HippoFloaterXmlImpl *floaterp = static_cast<HippoFloaterXmlImpl*>(floater);
if (set) {
notice_ptr_t connptr(new notice_connection_t(ctrl->setCommitCallback(boost::bind(&notifyCallback, _1, floater), ctrl)));
floaterp->mNotices[ctrl] = connptr;
} else {
floaterp->mNotices.erase(ctrl);
}
}
} else if (key == "picker") {
bool set = (value != "0");
if (!dynamic_cast<HippoFloaterXmlImpl*>(ctrl)) {
if (set)
ctrl->setCommitCallback(boost::bind(&pickerCallback, _1, floater), ctrl);
else
ctrl->setCommitCallback(0);
HippoFloaterXmlImpl *floaterp = static_cast<HippoFloaterXmlImpl*>(floater);
if (set) {
notice_ptr_t connptr(new notice_connection_t(ctrl->setCommitCallback(boost::bind(&pickerCallback, _1, floater), ctrl)));
floaterp->mNotices[ctrl] = connptr;
} else {
floaterp->mNotices.erase(ctrl);
}
}
}
}