/** * @brief Remove a function callback from a node event */ static void UI_RemoveListener_f (void) { uiNode_t *node; uiNode_t *function; const value_t *property; if (Cmd_Argc() != 3) { Com_Printf("Usage: %s <pathnode@event> <pathnode>\n", Cmd_Argv(0)); return; } UI_ReadNodePath(Cmd_Argv(1), NULL, &node, &property); if (node == NULL) { Com_Printf("UI_RemoveListener_f: '%s' node not found.\n", Cmd_Argv(1)); return; } if (property == NULL || property->type != V_UI_ACTION) { Com_Printf("UI_RemoveListener_f: '%s' property not found, or is not an event.\n", Cmd_Argv(1)); return; } function = UI_GetNodeByPath(Cmd_Argv(2)); if (function == NULL) { Com_Printf("UI_RemoveListener_f: '%s' node not found.\n", Cmd_Argv(2)); return; } UI_RemoveListener(node, property, function); }
/** * @brief Callback every time the parent window is closed (pop from the active window stack) */ static void UI_ConFuncNodeClose (uiNode_t *node) { if (UI_ConFuncIsVirtual(node)) { const value_t *property = UI_GetPropertyFromBehaviour(node->behaviour, "onClick"); uiNode_t *userData = (uiNode_t*) Cmd_GetUserdata(node->name); UI_RemoveListener(userData, property, node); } }
/** * @brief Callback every time the parent window is closed (pop from the active window stack) */ void uiConFuncNode::onWindowClosed (uiNode_t* node) { if (UI_ConFuncIsVirtual(node)) { const value_t* property = UI_GetPropertyFromBehaviour(node->behaviour, "onClick"); uiNode_t* userData = static_cast<uiNode_t*>(Cmd_GetUserdata(node->name)); UI_RemoveListener(userData, property, node); } }