Avoid re-issuing LLPanel::postBuild() needlessly. Essential to avoid callbacks being double-registered to ui element signals (eg, LLOverlayBar::toggleMusicPlay was being called twice per click).
This commit is contained in:
@@ -476,7 +476,8 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLUICtrlFactory *fac
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
panelp->initPanelXML(node, parent, factory);
|
if(!factory->builtPanel(panelp))
|
||||||
|
panelp->initPanelXML(node, parent, factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
return panelp;
|
return panelp;
|
||||||
|
|||||||
@@ -455,9 +455,11 @@ LLPieMenu *LLUICtrlFactory::buildPieMenu(const std::string &filename, LLView* pa
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void LLUICtrlFactory::rebuild()
|
void LLUICtrlFactory::rebuild()
|
||||||
{
|
{
|
||||||
|
built_panel_t built_panels = mBuiltPanels;
|
||||||
|
mBuiltPanels.clear();
|
||||||
built_panel_t::iterator built_panel_it;
|
built_panel_t::iterator built_panel_it;
|
||||||
for (built_panel_it = mBuiltPanels.begin();
|
for (built_panel_it = built_panels.begin();
|
||||||
built_panel_it != mBuiltPanels.end();
|
built_panel_it != built_panels.end();
|
||||||
++built_panel_it)
|
++built_panel_it)
|
||||||
{
|
{
|
||||||
std::string filename = built_panel_it->second;
|
std::string filename = built_panel_it->second;
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ public:
|
|||||||
void removePanel(LLPanel* panelp) { mBuiltPanels.erase(panelp->getHandle()); }
|
void removePanel(LLPanel* panelp) { mBuiltPanels.erase(panelp->getHandle()); }
|
||||||
void removeFloater(LLFloater* floaterp) { mBuiltFloaters.erase(floaterp->getHandle()); }
|
void removeFloater(LLFloater* floaterp) { mBuiltFloaters.erase(floaterp->getHandle()); }
|
||||||
|
|
||||||
|
bool builtPanel(LLPanel* panelp) {return mBuiltPanels.find(panelp->getHandle()) != mBuiltPanels.end();}
|
||||||
|
|
||||||
class LLMenuGL *buildMenu(const std::string &filename, LLView* parentp);
|
class LLMenuGL *buildMenu(const std::string &filename, LLView* parentp);
|
||||||
class LLPieMenu *buildPieMenu(const std::string &filename, LLView* parentp);
|
class LLPieMenu *buildPieMenu(const std::string &filename, LLView* parentp);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user