|  | @@ -611,7 +611,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
 | 
	
		
			
				|  |  |      if (g.NavActivateDownId == id)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          bool nav_activated_by_code = (g.NavActivateId == id);
 | 
	
		
			
				|  |  | -        bool nav_activated_by_inputs = IsNavInputTest(ImGuiNavInput_Activate, (flags & ImGuiButtonFlags_Repeat) ? ImGuiNavReadMode_Repeat : ImGuiNavReadMode_Pressed);
 | 
	
		
			
				|  |  | +        bool nav_activated_by_inputs = (flags & ImGuiButtonFlags_Repeat) ? IsNavInputTest(ImGuiNavInput_Activate, ImGuiNavReadMode_Repeat) : IsNavInputPressed(ImGuiNavInput_Activate);
 | 
	
		
			
				|  |  |          if (nav_activated_by_code || nav_activated_by_inputs)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              // Set active id so it can be queried by user via IsItemActive(), equivalent of holding the mouse button.
 | 
	
	
		
			
				|  | @@ -2789,25 +2789,27 @@ bool ImGui::SliderBehaviorT(const ImRect& bb, ImGuiID id, ImGuiDataType data_typ
 | 
	
		
			
				|  |  |                  g.SliderCurrentAccumDirty = false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            const ImVec2 input_delta2 = GetNavInputAmount2d(ImGuiNavDirSourceFlags_Keyboard | ImGuiNavDirSourceFlags_PadDPad, ImGuiNavReadMode_RepeatFast, 0.0f, 0.0f);
 | 
	
		
			
				|  |  | +            const ImVec2 input_delta2 = GetNavInputAmount2d(ImGuiNavDirSourceFlags_Keyboard | ImGuiNavDirSourceFlags_PadDPad, ImGuiNavReadMode_RepeatFast);
 | 
	
		
			
				|  |  |              float input_delta = (axis == ImGuiAxis_X) ? input_delta2.x : -input_delta2.y;
 | 
	
		
			
				|  |  |              if (input_delta != 0.0f)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | +                const bool tweak_slow = IsNavInputDown(ImGuiNavInput_TweakSlow);
 | 
	
		
			
				|  |  | +                const bool tweak_fast = IsNavInputDown(ImGuiNavInput_TweakFast);
 | 
	
		
			
				|  |  |                  const int decimal_precision = is_floating_point ? ImParseFormatPrecision(format, 3) : 0;
 | 
	
		
			
				|  |  |                  if (decimal_precision > 0)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      input_delta /= 100.0f;    // Gamepad/keyboard tweak speeds in % of slider bounds
 | 
	
		
			
				|  |  | -                    if (IsNavInputDown(ImGuiNavInput_TweakSlow))
 | 
	
		
			
				|  |  | +                    if (tweak_slow)
 | 
	
		
			
				|  |  |                          input_delta /= 10.0f;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  else
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | -                    if ((v_range >= -100.0f && v_range <= 100.0f) || IsNavInputDown(ImGuiNavInput_TweakSlow))
 | 
	
		
			
				|  |  | +                    if ((v_range >= -100.0f && v_range <= 100.0f) || tweak_slow)
 | 
	
		
			
				|  |  |                          input_delta = ((input_delta < 0.0f) ? -1.0f : +1.0f) / (float)v_range; // Gamepad/keyboard tweak speeds in integer steps
 | 
	
		
			
				|  |  |                      else
 | 
	
		
			
				|  |  |                          input_delta /= 100.0f;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if (IsNavInputDown(ImGuiNavInput_TweakFast))
 | 
	
		
			
				|  |  | +                if (tweak_fast)
 | 
	
		
			
				|  |  |                      input_delta *= 10.0f;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  g.SliderCurrentAccum += input_delta;
 | 
	
	
		
			
				|  | @@ -4340,8 +4342,8 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // We allow validate/cancel with Nav source (gamepad) to makes it easier to undo an accidental NavInput press with no keyboard wired, but otherwise it isn't very useful.
 | 
	
		
			
				|  |  |          const bool is_enter_pressed = IsKeyPressed(ImGuiKey_Enter) || IsKeyPressed(ImGuiKey_KeypadEnter);
 | 
	
		
			
				|  |  | -        const bool is_validate_nav = (IsNavInputTest(ImGuiNavInput_Activate, ImGuiNavReadMode_Pressed) && !IsKeyPressed(ImGuiKey_Space)) || IsNavInputTest(ImGuiNavInput_Input, ImGuiNavReadMode_Pressed);
 | 
	
		
			
				|  |  | -        const bool is_cancel = IsKeyPressed(ImGuiKey_Escape) || IsNavInputTest(ImGuiNavInput_Cancel, ImGuiNavReadMode_Pressed);
 | 
	
		
			
				|  |  | +        const bool is_validate_nav = (IsNavInputPressed(ImGuiNavInput_Activate) && !IsKeyPressed(ImGuiKey_Space)) || IsNavInputPressed(ImGuiNavInput_Input);
 | 
	
		
			
				|  |  | +        const bool is_cancel = IsKeyPressed(ImGuiKey_Escape) || IsNavInputPressed(ImGuiNavInput_Cancel);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (IsKeyPressed(ImGuiKey_LeftArrow))                        { state->OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINESTART : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDLEFT : STB_TEXTEDIT_K_LEFT) | k_mask); }
 | 
	
		
			
				|  |  |          else if (IsKeyPressed(ImGuiKey_RightArrow))                  { state->OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINEEND : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDRIGHT : STB_TEXTEDIT_K_RIGHT) | k_mask); }
 |