rendered paste bodyIndex: menu/m_input.c===================================================================--- menu/m_input.c (revision 19638)+++ menu/m_input.c (working copy)@@ -352,7 +352,7 @@ sp = mn.menuStackPos; - while (sp > 0) {+ while (sp > 0 && !clickedInside) { menu_t *menu = mn.menuStack[--sp]; menuNode_t *execute_node = NULL; for (node = menu->firstNode; node; node = node->next) {@@ -478,8 +478,9 @@ { int mouseOver; int sp = mn.menuStackPos;+ qboolean clickedInside = qfalse; - while (sp > 0) {+ while (sp > 0 && !clickedInside) { menu_t *menu = mn.menuStack[--sp]; menuNode_t *node; @@ -493,6 +494,8 @@ if (!mouseOver) continue; + clickedInside = qtrue;+ /* found a node -> do actions */ switch (node->type) { case MN_CONTAINER:@@ -535,16 +538,19 @@ menuNode_t *node; menu_t *menu; int sp, mouseOver;+ qboolean clickedInside = qfalse; sp = mn.menuStackPos; - while (sp > 0) {+ while (sp > 0 && !clickedInside) { menu = mn.menuStack[--sp]; for (node = menu->firstNode; node; node = node->next) { /* no middle click for this node defined */ if (!node->mclick) continue; + clickedInside = qtrue;+ /* check whether mouse if over this node */ mouseOver = MN_CheckNodeZone(node, x, y); if (!mouseOver)@@ -586,10 +592,11 @@ menuNode_t *node; menu_t *menu; int sp, mouseOver;+ qboolean wheelInside = qfalse; sp = mn.menuStackPos; - while (sp > 0) {+ while (sp > 0 && !wheelInside) { menu = mn.menuStack[--sp]; for (node = menu->firstNode; node; node = node->next) { /* no middle click for this node defined */@@ -602,6 +609,8 @@ if (!mouseOver) continue; + wheelInside = qtrue;+ /* found a node -> do actions */ switch (node->type) { case MN_MAP: