1
0
forked from 0ad/0ad

Change CGUIManager::SendEventToAll to send to all GUI pages.

Notably enables processing of GuiInterface messages when dialogs are
opened.

Differential Revision: https://code.wildfiregames.com/D2408
Tested on: clang 9.0.0, Jenkins/vs2015

This was SVN commit r23138.
This commit is contained in:
elexis 2019-11-06 00:30:18 +00:00
parent 992d740a58
commit 6a97c59c67
2 changed files with 12 additions and 3 deletions

View File

@ -335,12 +335,21 @@ InReaction CGUIManager::HandleEvent(const SDL_Event_* ev)
void CGUIManager::SendEventToAll(const CStr& eventName) const
{
top()->SendEventToAll(eventName);
// Save an immutable copy so iterators aren't invalidated by handlers
PageStackType pageStack = m_PageStack;
for (const SGUIPage& p : pageStack)
p.gui->SendEventToAll(eventName);
}
void CGUIManager::SendEventToAll(const CStr& eventName, JS::HandleValueArray paramData) const
{
top()->SendEventToAll(eventName, paramData);
// Save an immutable copy so iterators aren't invalidated by handlers
PageStackType pageStack = m_PageStack;
for (const SGUIPage& p : pageStack)
p.gui->SendEventToAll(eventName, paramData);
}
void CGUIManager::TickObjects()

View File

@ -194,7 +194,7 @@ void GUI_DisplayLoadProgress(int percent, const wchar_t* pending_task)
scriptInterface.ToJSVal(cx, &valPendingTask, pending_task);
paramData.append(valPendingTask);
g_GUI->GetActiveGUI()->SendEventToAll("GameLoadProgress", paramData);
g_GUI->SendEventToAll("GameLoadProgress", paramData);
}
bool ShouldRender()