コード例 #1
0
ファイル: ui_windows.cpp プロジェクト: MyWifeRules/ufoai-1
/**
 * @todo Find  better name
 */
static void UI_CloseWindowByRef (uiNode_t *window)
{
	int i;

	/** @todo If the focus is not on the window we close, we don't need to remove it */
	UI_ReleaseInput();

	assert(ui_global.windowStackPos);
	i = UI_GetWindowPositionFromStackByName(window->name);
	if (i == -1) {
		Com_Printf("Window '%s' is not on the active stack\n", window->name);
		return;
	}

	/* close child */
	while (i + 1 < ui_global.windowStackPos) {
		uiNode_t *m = ui_global.windowStack[i + 1];
		if (WINDOWEXTRADATA(m).parent != window) {
			break;
		}

		UI_Node_WindowClosed(window);
		WINDOWEXTRADATA(m).parent = NULL;
		UI_RemoveWindowAtPositionFromStack(i + 1);
	}

	/* close the window */
	UI_Node_WindowClosed(window);
	WINDOWEXTRADATA(window).parent = NULL;
	UI_RemoveWindowAtPositionFromStack(i);

	UI_InvalidateMouse();
}
コード例 #2
0
void uiNode::onWindowClosed (uiNode_t* node)
{
	uiNode_t* child;
	for (child = node->firstChild; child; child = child->next) {
		UI_Node_WindowClosed(child);
	}
}
コード例 #3
0
ファイル: ui_windows.cpp プロジェクト: MyWifeRules/ufoai-1
static void UI_CloseAllWindow (void)
{
	int i;
	for (i = ui_global.windowStackPos - 1; i >= 0; i--) {
		uiNode_t *window = ui_global.windowStack[i];

		UI_Node_WindowClosed(window);

		/* safe: unlink window */
		WINDOWEXTRADATA(window).parent = NULL;
		ui_global.windowStackPos--;
		ui_global.windowStack[ui_global.windowStackPos] = NULL;
	}
}