mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Data types: DragScalar: Fixed speed of integer values tweaking with keyboard/gamepad when speed < 1. Enforce min/max bounds when power curves are used. SliderScalar: Fixed integer/slow tweaking. (#643)
This commit is contained in:
		| @@ -8891,8 +8891,8 @@ static bool ImGui::SliderBehaviorT(const ImRect& bb, ImGuiID id, ImGuiDataType d | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     if (v_max - v_min <= 100.0f || v_max - v_min >= -100.0f || IsNavInputDown(ImGuiNavInput_TweakSlow)) | ||||
|                         delta = ((delta < 0.0f) ? -1.0f : +1.0f) / (float)(v_max - v_min); // Gamepad/keyboard tweak speeds in integer steps | ||||
|                     if ((v_range >= -100.0f && v_range <= 100.0f) || IsNavInputDown(ImGuiNavInput_TweakSlow)) | ||||
|                         delta = ((delta < 0.0f) ? -1.0f : +1.0f) / (float)v_range; // Gamepad/keyboard tweak speeds in integer steps | ||||
|                     else | ||||
|                         delta /= 100.0f; | ||||
|                 } | ||||
| @@ -9257,7 +9257,7 @@ static bool ImGui::DragBehaviorT(ImGuiDataType data_type, TYPE* v, float v_speed | ||||
|     } | ||||
|     if (g.ActiveIdSource == ImGuiInputSource_Nav) | ||||
|     { | ||||
|         int decimal_precision = ImParseFormatPrecision(format, 3); | ||||
|         int decimal_precision = (data_type == ImGuiDataType_Float || data_type == ImGuiDataType_Double) ? ImParseFormatPrecision(format, 3) : 0; | ||||
|         adjust_delta = GetNavInputAmount2d(ImGuiNavDirSourceFlags_Keyboard|ImGuiNavDirSourceFlags_PadDPad, ImGuiInputReadMode_RepeatFast, 1.0f/10.0f, 10.0f).x; | ||||
|         v_speed = ImMax(v_speed, GetMinimumStepAtDecimalPrecision(decimal_precision)); | ||||
|     } | ||||
| @@ -9367,7 +9367,7 @@ bool ImGui::DragScalar(const char* label, ImGuiDataType data_type, void* v, floa | ||||
|         return false; | ||||
|  | ||||
|     if (power != 1.0f) | ||||
|         IM_ASSERT(v_min != v_max); // When using a power curve the drag needs to have known bounds | ||||
|         IM_ASSERT(v_min != NULL && v_max != NULL); // When using a power curve the drag needs to have known bounds | ||||
|  | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     const ImGuiStyle& style = g.Style; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user