From: terencehill Date: Sun, 27 Dec 2020 16:10:02 +0000 (+0100) Subject: Map vote screen: capture and ignore key release events; it prevents triggering -... X-Git-Tag: xonotic-v0.8.5~597^2~13 X-Git-Url: http://de.git.xonotic.org/?a=commitdiff_plain;h=49413224791578b67a5863962fc91df408ca3b00;hp=937599c7e334235384cc319be71904f7efbf0eb2;p=xonotic%2Fxonotic-data.pk3dir.git Map vote screen: capture and ignore key release events; it prevents triggering -* aliases (e.g. -crouch) when voting with a number key --- diff --git a/qcsrc/client/mapvoting.qc b/qcsrc/client/mapvoting.qc index 5be42cda9..0d2db8724 100644 --- a/qcsrc/client/mapvoting.qc +++ b/qcsrc/client/mapvoting.qc @@ -812,13 +812,19 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) return true; } - if (bInputType == 0) + if (bInputType == 2) + return false; + + // at this point bInputType can be 0 or 1 (key pressed or released) + bool key_pressed = (bInputType == 0); + + if (key_pressed) { if (nPrimary == K_ALT) hudShiftState |= S_ALT; if (nPrimary == K_CTRL) hudShiftState |= S_CTRL; if (nPrimary == K_SHIFT) hudShiftState |= S_SHIFT; } - else if (bInputType == 1) + else { if (nPrimary == K_ALT) hudShiftState -= (hudShiftState & S_ALT); if (nPrimary == K_CTRL) hudShiftState -= (hudShiftState & S_CTRL); @@ -828,31 +834,33 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) first_digit = 0; } - if (bInputType != 0) - return false; - int imp = 0; switch(nPrimary) { case K_RIGHTARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveRight(mv_selection); return true; case K_LEFTARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveLeft(mv_selection); return true; case K_DOWNARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveDown(mv_selection); return true; case K_UPARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveUp(mv_selection); return true; case K_KP_ENTER: case K_ENTER: case K_SPACE: + if (!key_pressed) return true; if ( mv_selection_keyboard ) MapVote_SendChoice(mv_selection); return true; @@ -872,6 +880,8 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) { if (!first_digit) { + if (!key_pressed) + return true; first_digit = imp % 10; return true; } @@ -881,6 +891,8 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) if (nPrimary == K_MOUSE1) { + if (!key_pressed) + return true; mv_selection_keyboard = 0; mv_selection = mv_mouse_selection; if (mv_selection >= 0) @@ -889,6 +901,8 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) if (imp) { + if (!key_pressed) + return true; if (imp <= mv_num_maps) localcmd(strcat("\nimpulse ", ftos(imp), "\n")); return true;