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
|
||||
{
|
||||
panelp->initPanelXML(node, parent, factory);
|
||||
if(!factory->builtPanel(panelp))
|
||||
panelp->initPanelXML(node, parent, factory);
|
||||
}
|
||||
|
||||
return panelp;
|
||||
|
||||
@@ -455,9 +455,11 @@ LLPieMenu *LLUICtrlFactory::buildPieMenu(const std::string &filename, LLView* pa
|
||||
//-----------------------------------------------------------------------------
|
||||
void LLUICtrlFactory::rebuild()
|
||||
{
|
||||
built_panel_t built_panels = mBuiltPanels;
|
||||
mBuiltPanels.clear();
|
||||
built_panel_t::iterator built_panel_it;
|
||||
for (built_panel_it = mBuiltPanels.begin();
|
||||
built_panel_it != mBuiltPanels.end();
|
||||
for (built_panel_it = built_panels.begin();
|
||||
built_panel_it != built_panels.end();
|
||||
++built_panel_it)
|
||||
{
|
||||
std::string filename = built_panel_it->second;
|
||||
|
||||
@@ -63,6 +63,8 @@ public:
|
||||
|
||||
void removePanel(LLPanel* panelp) { mBuiltPanels.erase(panelp->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 LLPieMenu *buildPieMenu(const std::string &filename, LLView* parentp);
|
||||
|
||||
Reference in New Issue
Block a user