summaryrefslogtreecommitdiff
path: root/indra/llui/lltabcontainer.cpp
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2014-06-16 16:41:52 -0400
committerMonty Brandenberg <monty@lindenlab.com>2014-06-16 16:41:52 -0400
commit903729d5c97c9f93daf463e155055653b92f8fe4 (patch)
tree178e5b9e774702c046f3e7d279ef5b9ef8fc4d1b /indra/llui/lltabcontainer.cpp
parentf3a037f8ad520b7b070fdd057ce2d0b012121efd (diff)
parent977476171ddcc057d7c28b6c14ae988b8189ed75 (diff)
Merge. Refresh from viewer-release after 3.7.9 release.
Diffstat (limited to 'indra/llui/lltabcontainer.cpp')
-rwxr-xr-xindra/llui/lltabcontainer.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index ebc6183b8b..6f858cdeb3 100755
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -1140,6 +1140,17 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
addChild( btn, 0 );
}
}
+ else
+ {
+ if (textbox)
+ {
+ LLUICtrl::addChild(textbox, 0);
+ }
+ if (btn)
+ {
+ LLUICtrl::addChild(btn, 0);
+ }
+ }
if (child)
{
@@ -1636,16 +1647,26 @@ void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon)
{
LLTabTuple* tuple = getTabByPanel(child);
LLCustomButtonIconCtrl* button;
+ bool hasButton = false;
if(tuple)
{
button = dynamic_cast<LLCustomButtonIconCtrl*>(tuple->mButton);
if(button)
{
+ hasButton = true;
button->setIcon(icon);
reshapeTuple(tuple);
}
}
+
+ if (!hasButton && (icon != NULL))
+ {
+ // It was assumed that the tab's button would take ownership of the icon pointer.
+ // But since the tab did not have a button, kill the icon to prevent the memory
+ // leak.
+ icon->die();
+ }
}
void LLTabContainer::reshapeTuple(LLTabTuple* tuple)