From 806873964e5f381fe8e1097f8e1ab35ac1ec6e7f Mon Sep 17 00:00:00 2001
From: terencehill <piuntn@gmail.com>
Date: Tue, 24 Feb 2015 13:33:47 +0100
Subject: [PATCH] Quickmenu: Always highlight the activated entry

---
 qcsrc/client/hud.qc | 38 ++++++++++++++++++++++++++------------
 1 file changed, 26 insertions(+), 12 deletions(-)

diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc
index 1ed7ffe5ef..156dbcd0fc 100644
--- a/qcsrc/client/hud.qc
+++ b/qcsrc/client/hud.qc
@@ -4469,6 +4469,9 @@ string QuickMenu_Page_Command[QUICKMENU_MAXLINES];
 string QuickMenu_Page_Description[QUICKMENU_MAXLINES];
 int QuickMenu_Page_Entries;
 int QuickMenu_Page;
+int QuickMenu_Page_ActivatedEntry = -1;
+bool QuickMenu_Page_ActivatedEntry_Close;
+float QuickMenu_Page_ActivatedEntry_Time;
 bool QuickMenu_IsLastPage;
 // all the entries are loaded into QuickMenu_Buffer
 // each entry (submenu or command) is composed of 2 entries
@@ -4821,6 +4824,13 @@ bool HUD_QuickMenu_ActionForNumber(int num)
 	return false;
 }
 
+void HUD_QuickMenu_Page_ActiveEntry(float entry_num)
+{
+	QuickMenu_Page_ActivatedEntry = entry_num;
+	QuickMenu_Page_ActivatedEntry_Time = time + 0.1;
+	QuickMenu_Page_ActivatedEntry_Close = (!(hudShiftState & S_CTRL));
+}
+
 bool HUD_QuickMenu_InputEvent(float bInputType, float nPrimary, float nSecondary)
 {
 	// we only care for keyboard events
@@ -4872,9 +4882,7 @@ bool HUD_QuickMenu_InputEvent(float bInputType, float nPrimary, float nSecondary
 	{
 		if (bInputType == 1)
 			return true;
-		float f = HUD_QuickMenu_ActionForNumber(stof(chr2str(nPrimary)));
-		if(f && !(hudShiftState & S_CTRL))
-			HUD_QuickMenu_Close();
+		HUD_QuickMenu_Page_ActiveEntry(stof(chr2str(nPrimary)));
 	}
 	if(nPrimary == K_MOUSE1)
 	{
@@ -4946,15 +4954,7 @@ void HUD_QuickMenu_Mouse()
 			drawfill(panel_pos, eX * panel_size_x + eY * fontsize_y, color, .2, DRAWFLAG_NORMAL);
 
 			if(!mouseClicked && (prevMouseClicked & S_MOUSE1))
-			{
-				bool f;
-				if (entry_num < QUICKMENU_MAXLINES - 1)
-					f = HUD_QuickMenu_ActionForNumber(entry_num + 1);
-				else
-					f = HUD_QuickMenu_ActionForNumber(0);
-				if(f && !(hudShiftState & S_CTRL))
-					HUD_QuickMenu_Close();
-			}
+				HUD_QuickMenu_Page_ActiveEntry((entry_num < QUICKMENU_MAXLINES - 1) ? entry_num + 1 : 0);
 		}
 	}
 
@@ -5046,8 +5046,22 @@ void HUD_QuickMenu(void)
 		else
 			color = "^3";
 		HUD_QuickMenu_DrawEntry(panel_pos, sprintf("%d: %s%s", i, color, QuickMenu_Page_Description[i]), fontsize);
+
+		if(QuickMenu_Page_ActivatedEntry_Time && time < QuickMenu_Page_ActivatedEntry_Time
+			&& QuickMenu_Page_ActivatedEntry == i)
+			drawfill(panel_pos, eX * panel_size_x + eY * fontsize_y, '0.5 1 0.5', .2, DRAWFLAG_NORMAL);
+
 		panel_pos_y += fontsize_y;
 	}
+
+	if(QuickMenu_Page_ActivatedEntry >= 0 && time >= QuickMenu_Page_ActivatedEntry_Time)
+	{
+		bool f = HUD_QuickMenu_ActionForNumber(QuickMenu_Page_ActivatedEntry);
+		if(f && QuickMenu_Page_ActivatedEntry_Close)
+			HUD_QuickMenu_Close();
+		QuickMenu_Page_ActivatedEntry = -1;
+		QuickMenu_Page_ActivatedEntry_Time = 0;
+	}
 }
 
 
-- 
2.39.5