From 4f65588d1a8cbc392239bee467695846323d5713 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Thu, 28 May 2015 21:27:47 +0000
Subject: [PATCH] Changed, ButtonsNumericTextbox: turns out this problem can be
 solved without manual focus shifting.

---
 .../ButtonsNumericTextbox.Designer.cs         |  3 ---
 Source/Core/Controls/ButtonsNumericTextbox.cs | 25 ++++++-------------
 Source/Core/Controls/NumericTextbox.cs        |  6 -----
 3 files changed, 7 insertions(+), 27 deletions(-)

diff --git a/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs b/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs
index 3429dd91c..09ad9e053 100644
--- a/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs
+++ b/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs
@@ -44,9 +44,6 @@ namespace CodeImp.DoomBuilder.Controls
 			this.buttons.Size = new System.Drawing.Size(18, 24);
 			this.buttons.TabIndex = 1;
 			this.buttons.ValueChanged += new System.EventHandler(this.buttons_ValueChanged);
-			this.buttons.KeyUp += new System.Windows.Forms.KeyEventHandler(this.buttons_KeyStateChanged);
-			this.buttons.MouseEnter += new System.EventHandler(this.buttons_MouseEnter);
-			this.buttons.KeyDown += new System.Windows.Forms.KeyEventHandler(this.buttons_KeyStateChanged);
 			// 
 			// textbox
 			// 
diff --git a/Source/Core/Controls/ButtonsNumericTextbox.cs b/Source/Core/Controls/ButtonsNumericTextbox.cs
index d37da03d8..43abf5a4f 100644
--- a/Source/Core/Controls/ButtonsNumericTextbox.cs
+++ b/Source/Core/Controls/ButtonsNumericTextbox.cs
@@ -118,7 +118,10 @@ namespace CodeImp.DoomBuilder.Controls
 				ignorebuttonchange = true;
 				if(!textbox.CheckIsRelative())
 				{
-					if(steps != null && (!usemodifierkeys || (!textbox.ControlPressed && !textbox.ShiftPressed)))
+					bool ctrl = ((ModifierKeys & Keys.Control) == Keys.Control); //mxd
+					bool shift = ((ModifierKeys & Keys.Shift) == Keys.Shift); //mxd
+
+					if(steps != null && (!usemodifierkeys || (!ctrl && !shift)))
 					{
 						if(buttons.Value < 0)
 							textbox.Text = steps.GetNextHigherWrap(textbox.GetResult(0), wrapsteps).ToString(); //mxd
@@ -129,7 +132,7 @@ namespace CodeImp.DoomBuilder.Controls
 					{
 						float stepsizemod; //mxd
 						if(usemodifierkeys)
-							stepsizemod = (textbox.ControlPressed ? stepsizeSmall : (textbox.ShiftPressed ? stepsizeBig : stepsizeFloat));
+							stepsizemod = (ctrl ? stepsizeSmall : (shift ? stepsizeBig : stepsizeFloat));
 						else
 							stepsizemod = stepsizeFloat;
 						
@@ -141,7 +144,7 @@ namespace CodeImp.DoomBuilder.Controls
 					{
 						int stepsizemod; //mxd
 						if(usemodifierkeys) 
-							stepsizemod = (textbox.ControlPressed ? (int)stepsizeSmall : (textbox.ShiftPressed ? (int)stepsizeBig : stepsize));
+							stepsizemod = (ctrl ? (int)stepsizeSmall : (shift ? (int)stepsizeBig : stepsize));
 						else
 							stepsizemod = stepsize;
 						
@@ -160,24 +163,10 @@ namespace CodeImp.DoomBuilder.Controls
 			}
 		}
 
-		//mxd
-		private void buttons_KeyStateChanged(object sender, KeyEventArgs e) 
-		{
-			if(!usemodifierkeys) return;
-			textbox.ControlPressed = e.Control;
-			textbox.ShiftPressed = e.Shift;
-		}
-
-		//mxd
-		private void buttons_MouseEnter(object sender, EventArgs e) 
-		{
-			if(usemodifierkeys) buttons.Focus();
-		}
-
 		// Mouse wheel used
 		private void textbox_MouseWheel(object sender, MouseEventArgs e)
 		{
-			if(steps != null && (!usemodifierkeys || (!textbox.ControlPressed && !textbox.ShiftPressed)))
+			if(steps != null && (!usemodifierkeys || ((ModifierKeys & Keys.Control) != Keys.Control && (ModifierKeys & Keys.Shift) != Keys.Shift)))
 			{
 				if(e.Delta > 0)
 					textbox.Text = steps.GetNextHigher(textbox.GetResult(0)).ToString();
diff --git a/Source/Core/Controls/NumericTextbox.cs b/Source/Core/Controls/NumericTextbox.cs
index 5ee6bf115..242a109f5 100644
--- a/Source/Core/Controls/NumericTextbox.cs
+++ b/Source/Core/Controls/NumericTextbox.cs
@@ -38,7 +38,6 @@ namespace CodeImp.DoomBuilder.Controls
 		private bool allowrelative;		// Allow ++, --, * and / prefix for relative changes
 		private bool allowdecimal;		// Allow decimal (float) numbers
 		private bool controlpressed;
-		private bool shiftpressed; //mxd
 		private readonly ToolTip tooltip; //mxd
 		
 		#endregion
@@ -49,9 +48,6 @@ namespace CodeImp.DoomBuilder.Controls
 		public bool AllowRelative { get { return allowrelative; } set { allowrelative = value; UpdateTextboxStyle(); } }
 		public bool AllowDecimal  { get { return allowdecimal; } set { allowdecimal = value; } }
 
-		public bool ControlPressed { get { return controlpressed; } internal set { controlpressed = value; } } //mxd
-		public bool ShiftPressed { get { return shiftpressed; } internal set { shiftpressed = value; } } //mxd
-
 		#endregion
 
 		#region ================== Constructor / Disposer
@@ -73,7 +69,6 @@ namespace CodeImp.DoomBuilder.Controls
 		protected override void OnKeyDown(KeyEventArgs e)
 		{
 			controlpressed = e.Control;
-			shiftpressed = e.Shift; //mxd
 			base.OnKeyDown(e);
 		}
 
@@ -81,7 +76,6 @@ namespace CodeImp.DoomBuilder.Controls
 		protected override void OnKeyUp(KeyEventArgs e)
 		{
 			controlpressed = e.Control;
-			shiftpressed = e.Shift; //mxd
 			base.OnKeyUp(e);
 		}
 		
-- 
GitLab