void uiNode::onWindowOpened (uiNode_t* node, linkedList_t* params) { uiNode_t* child; for (child = node->firstChild; child; child = child->next) { UI_Node_WindowOpened(child, nullptr); } }
/** * @brief Push a window onto the window stack * @param[in] name Name of the window to push onto window stack * @param[in] parentName Window name to link as parent-child (else NULL) * @param[in] params List of string parameters to send to the onWindowOpened method. * It can be NULL when there is no parameters, else this object must be freed by the caller. * @return A pointer to @c uiNode_t */ uiNode_t* UI_PushWindow (const char *name, const char *parentName, linkedList_t *params) { uiNode_t *window; UI_ReleaseInput(); window = UI_GetWindow(name); if (window == NULL) { Com_Printf("Window \"%s\" not found.\n", name); return NULL; } UI_DeleteWindowFromStack(window); if (ui_global.windowStackPos < UI_MAX_WINDOWSTACK) if (parentName) { const int parentPos = UI_GetWindowPositionFromStackByName(parentName); if (parentPos == -1) { Com_Printf("Didn't find parent window \"%s\" for window push of \"%s\"\n", parentName, name); return NULL; } UI_InsertWindowIntoStack(window, parentPos + 1); WINDOWEXTRADATA(window).parent = ui_global.windowStack[parentPos]; } else ui_global.windowStack[ui_global.windowStackPos++] = window; else Com_Printf("Window stack overflow\n"); UI_Node_WindowOpened(window, params); /* change from e.g. console mode to game input mode (fetch input) */ Key_SetDest(key_game); UI_InvalidateMouse(); return window; }