Experimental test, Joerg I hope you won't hate me ;) Switch some GUI code to for_each instead of for, i think it's easier to read
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@8511 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -1206,10 +1206,10 @@ void IrrDriver::update(float dt)
|
||||
{
|
||||
// This code needs to go outside beginScene() / endScene() since
|
||||
// the model view widget will do off-screen rendering there
|
||||
const int updateAmount = GUIEngine::needsUpdate.size();
|
||||
for(int n=0; n<updateAmount; n++)
|
||||
GUIEngine::Widget* widget;
|
||||
for_each (widget, GUIEngine::needsUpdate)
|
||||
{
|
||||
GUIEngine::needsUpdate[n].update(dt);
|
||||
widget->update(dt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -138,10 +138,10 @@ ModalDialog::~ModalDialog()
|
||||
void ModalDialog::clearWindow()
|
||||
{
|
||||
// TODO: extract this code and its eqauivalent from Screen into the common base class?
|
||||
const int children_amount = m_widgets.size();
|
||||
for(int i=0; i<children_amount; i++)
|
||||
Widget* w;
|
||||
for_each (w, m_widgets);
|
||||
{
|
||||
m_irrlicht_window->removeChild( m_widgets[i].getIrrlichtElement() );
|
||||
m_irrlicht_window->removeChild( w->getIrrlichtElement() );
|
||||
}
|
||||
m_widgets.clearAndDeleteAll();
|
||||
|
||||
|
||||
@@ -134,9 +134,10 @@ void Screen::loadFromFile()
|
||||
void Screen::unload()
|
||||
{
|
||||
assert(m_magic_number == 0xCAFEC001);
|
||||
for (int n=0; n<m_widgets.size(); n++)
|
||||
Widget* w;
|
||||
for_each (w, m_widgets)
|
||||
{
|
||||
assert(m_widgets[n].m_magic_number == 0xCAFEC001);
|
||||
assert(w->m_magic_number == 0xCAFEC001);
|
||||
}
|
||||
|
||||
m_loaded = false;
|
||||
|
||||
@@ -488,35 +488,31 @@ const irr::core::stringw& DynamicRibbonWidget::getSelectionText(const int player
|
||||
return nothing;
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
RibbonWidget* DynamicRibbonWidget::getRowContaining(Widget* w) const
|
||||
RibbonWidget* DynamicRibbonWidget::getRowContaining(Widget* w)
|
||||
{
|
||||
const int row_amount = m_rows.size();
|
||||
for(int n=0; n<row_amount; n++)
|
||||
RibbonWidget* row;
|
||||
for_each (row, m_rows)
|
||||
{
|
||||
const RibbonWidget* row = &m_rows[n];
|
||||
if(row != NULL)
|
||||
if (row != NULL)
|
||||
{
|
||||
if(m_children.contains( w ) ) return (RibbonWidget*)row;
|
||||
if (row->m_children.contains( w ) ) return row;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
RibbonWidget* DynamicRibbonWidget::getSelectedRibbon(const int playerID) const
|
||||
RibbonWidget* DynamicRibbonWidget::getSelectedRibbon(const int playerID)
|
||||
{
|
||||
|
||||
const int row_amount = m_rows.size();
|
||||
for(int n=0; n<row_amount; n++)
|
||||
RibbonWidget* row;
|
||||
for_each (row, m_rows)
|
||||
{
|
||||
const RibbonWidget* row = &m_rows[n];
|
||||
if (GUIEngine::isFocusedForPlayer(row, playerID))
|
||||
{
|
||||
return (RibbonWidget*)row;
|
||||
return row;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -568,11 +564,11 @@ EventPropagation DynamicRibbonWidget::leftPressed(const int playerID)
|
||||
updateLabel();
|
||||
propagateSelection();
|
||||
|
||||
const int listenerAmount = m_hover_listeners.size();
|
||||
for (int n=0; n<listenerAmount; n++)
|
||||
DynamicRibbonHoverListener* listener;
|
||||
for_each( listener, m_hover_listeners )
|
||||
{
|
||||
m_hover_listeners[n].onSelectionChanged(this, w->getSelectionIDString(playerID),
|
||||
w->getSelectionText(playerID), playerID);
|
||||
listener->onSelectionChanged(this, w->getSelectionIDString(playerID),
|
||||
w->getSelectionText(playerID), playerID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -621,11 +617,11 @@ EventPropagation DynamicRibbonWidget::mouseHovered(Widget* child, const int play
|
||||
|
||||
if (getSelectedRibbon(playerID) != NULL)
|
||||
{
|
||||
const int listenerAmount = m_hover_listeners.size();
|
||||
for (int n=0; n<listenerAmount; n++)
|
||||
DynamicRibbonHoverListener* listener;
|
||||
for_each( listener, m_hover_listeners )
|
||||
{
|
||||
m_hover_listeners[n].onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
|
||||
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
|
||||
listener->onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
|
||||
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -637,11 +633,11 @@ EventPropagation DynamicRibbonWidget::focused(const int playerID)
|
||||
Widget::focused(playerID);
|
||||
updateLabel();
|
||||
|
||||
const int listenerAmount = m_hover_listeners.size();
|
||||
for(int n=0; n<listenerAmount; n++)
|
||||
DynamicRibbonHoverListener* listener;
|
||||
for_each( listener, m_hover_listeners )
|
||||
{
|
||||
m_hover_listeners[n].onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
|
||||
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
|
||||
listener->onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
|
||||
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
|
||||
}
|
||||
|
||||
return EVENT_LET;
|
||||
@@ -667,11 +663,11 @@ void DynamicRibbonWidget::onRibbonWidgetFocus(RibbonWidget* emitter, const int p
|
||||
|
||||
updateLabel(emitter);
|
||||
|
||||
const int listenerAmount = m_hover_listeners.size();
|
||||
for (int n=0; n<listenerAmount; n++)
|
||||
DynamicRibbonHoverListener* listener;
|
||||
for_each( listener, m_hover_listeners )
|
||||
{
|
||||
m_hover_listeners[n].onSelectionChanged(this, emitter->getSelectionIDString(playerID),
|
||||
emitter->getSelectionText(playerID), playerID);
|
||||
listener->onSelectionChanged(this, emitter->getSelectionIDString(playerID),
|
||||
emitter->getSelectionText(playerID), playerID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -743,10 +739,9 @@ void DynamicRibbonWidget::propagateSelection()
|
||||
}
|
||||
|
||||
// set same selection in all ribbons
|
||||
const int row_amount = m_rows.size();
|
||||
for (int n=0; n<row_amount; n++)
|
||||
RibbonWidget* ribbon;
|
||||
for_each( ribbon, m_rows )
|
||||
{
|
||||
RibbonWidget* ribbon = m_rows.get(n);
|
||||
if (ribbon != selected_ribbon)
|
||||
{
|
||||
ribbon->m_selection[p] = (int)round(where*(ribbon->m_children.size()-1));
|
||||
@@ -778,7 +773,7 @@ void DynamicRibbonWidget::updateLabel(RibbonWidget* from_this_ribbon)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (selection_id == RibbonWidget::NO_ITEM_ID) m_label->setText( L"" );
|
||||
else m_label->setText( L"Unknown Item" );
|
||||
}
|
||||
|
||||
@@ -133,10 +133,10 @@ namespace GUIEngine
|
||||
Widget* m_right_widget;
|
||||
|
||||
/** Returns the currently selected row */
|
||||
RibbonWidget* getSelectedRibbon(const int playerID) const;
|
||||
RibbonWidget* getSelectedRibbon(const int playerID);
|
||||
|
||||
/** Returns the row */
|
||||
RibbonWidget* getRowContaining(Widget* w) const;
|
||||
RibbonWidget* getRowContaining(Widget* w);
|
||||
|
||||
/** Updates the visible label to match the currently selected item */
|
||||
void updateLabel(RibbonWidget* from_this_ribbon=NULL);
|
||||
|
||||
@@ -274,9 +274,10 @@ public:
|
||||
|
||||
|
||||
template<typename T, typename U>
|
||||
int init_foreach(T& val, const U& vect)
|
||||
int init_foreach(T& val, U& vect)
|
||||
{
|
||||
val = vect.get(0);
|
||||
if (vect.size() > 0)
|
||||
val = vect.get(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user