From 76219cd4594150e31bad702bebcc1ec9e09f896f Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 19 Jun 2013 16:08:47 +0200 Subject: [PATCH 1/2] Fix the Octopus to hold on to connections and to disconnect them using boost rather than setting a zero callback. --- indra/newview/hippofloaterxml.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/indra/newview/hippofloaterxml.cpp b/indra/newview/hippofloaterxml.cpp index 76aa9abcf..e2d3c3bf7 100644 --- a/indra/newview/hippofloaterxml.cpp +++ b/indra/newview/hippofloaterxml.cpp @@ -363,18 +363,24 @@ bool HippoFloaterXmlImpl::execute(LLFloater *floater, LLUICtrl *ctrl, if (HippoFloaterXmlImpl *floaterp = dynamic_cast(ctrl)) { floaterp->mIsNotifyOnClose = set; } else { - if (set) - ctrl->setCommitCallback(boost::bind(¬ifyCallback, _1, floater), ctrl); - else - ctrl->setCommitCallback(0); + HippoFloaterXmlImpl *floaterp = static_cast(floater); + if (set) { + notice_ptr_t connptr(new notice_connection_t(ctrl->setCommitCallback(boost::bind(¬ifyCallback, _1, floater), ctrl))); + floaterp->mNotices[ctrl] = connptr; + } else { + floaterp->mNotices.erase(ctrl); + } } } else if (key == "picker") { bool set = (value != "0"); if (!dynamic_cast(ctrl)) { - if (set) - ctrl->setCommitCallback(boost::bind(&pickerCallback, _1, floater), ctrl); - else - ctrl->setCommitCallback(0); + HippoFloaterXmlImpl *floaterp = static_cast(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); + } } } } From 94cfa613ecfb3acf40f94912186c23fe39b4c6c8 Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 19 Jun 2013 16:54:41 +0200 Subject: [PATCH 2/2] Rename inner scope floater var to satisfy MSVC --- indra/newview/hippofloaterxml.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/indra/newview/hippofloaterxml.cpp b/indra/newview/hippofloaterxml.cpp index e2d3c3bf7..210094508 100644 --- a/indra/newview/hippofloaterxml.cpp +++ b/indra/newview/hippofloaterxml.cpp @@ -363,23 +363,23 @@ bool HippoFloaterXmlImpl::execute(LLFloater *floater, LLUICtrl *ctrl, if (HippoFloaterXmlImpl *floaterp = dynamic_cast(ctrl)) { floaterp->mIsNotifyOnClose = set; } else { - HippoFloaterXmlImpl *floaterp = static_cast(floater); + HippoFloaterXmlImpl *thisFloater = static_cast(floater); if (set) { notice_ptr_t connptr(new notice_connection_t(ctrl->setCommitCallback(boost::bind(¬ifyCallback, _1, floater), ctrl))); - floaterp->mNotices[ctrl] = connptr; + thisFloater->mNotices[ctrl] = connptr; } else { - floaterp->mNotices.erase(ctrl); + thisFloater->mNotices.erase(ctrl); } } } else if (key == "picker") { bool set = (value != "0"); if (!dynamic_cast(ctrl)) { - HippoFloaterXmlImpl *floaterp = static_cast(floater); + HippoFloaterXmlImpl *thisFloater = static_cast(floater); if (set) { notice_ptr_t connptr(new notice_connection_t(ctrl->setCommitCallback(boost::bind(&pickerCallback, _1, floater), ctrl))); - floaterp->mNotices[ctrl] = connptr; + thisFloater->mNotices[ctrl] = connptr; } else { - floaterp->mNotices.erase(ctrl); + thisFloater->mNotices.erase(ctrl); } } }