optimize UIWidget for largers NPC trades

This commit is contained in:
Eduardo Bart 2012-04-30 03:34:29 -03:00
parent ec9ea9e33d
commit 3f689e0edf
3 changed files with 19 additions and 5 deletions

View File

@ -133,6 +133,8 @@ void UIWidget::addChild(const UIWidgetPtr& child)
return; return;
} }
UIWidgetPtr oldLastChild = getLastChild();
m_children.push_back(child); m_children.push_back(child);
child->setParent(asUIWidget()); child->setParent(asUIWidget());
@ -145,7 +147,12 @@ void UIWidget::addChild(const UIWidgetPtr& child)
// update new child states // update new child states
child->updateStates(); child->updateStates();
updateChildrenIndexStates();
// update old child index states
if(oldLastChild) {
oldLastChild->updateState(Fw::MiddleState);
oldLastChild->updateState(Fw::LastState);
}
g_ui.onWidgetAppear(child); g_ui.onWidgetAppear(child);
} }
@ -714,8 +721,15 @@ void UIWidget::destroyChildren()
if(layout) if(layout)
layout->disableUpdates(); layout->disableUpdates();
while(!m_children.empty()) m_focusedChild = nullptr;
m_children[0]->destroy(); m_lockedChildren.clear();
while(!m_children.empty()) {
UIWidgetPtr child = m_children.front();
m_children.pop_front();
child->setParent(nullptr);
m_layout->removeWidget(child);
child->destroy();
}
layout->enableUpdates(); layout->enableUpdates();
} }