|
@@ -8619,14 +8619,12 @@ static void ImGui::UpdateMouseInputs()
|
|
else
|
|
else
|
|
io.MouseDelta = ImVec2(0.0f, 0.0f);
|
|
io.MouseDelta = ImVec2(0.0f, 0.0f);
|
|
|
|
|
|
- // Update stationary timer. Only reset on 2 successive moving frames.
|
|
|
|
- // FIXME: May need to expose threshold or treat touch inputs differently.
|
|
|
|
|
|
+ // Update stationary timer.
|
|
|
|
+ // FIXME: May need to rework again to have some tolerance for occasional small movement, while being functional on high-framerates.
|
|
const float mouse_stationary_threshold = (io.MouseSource == ImGuiMouseSource_Mouse) ? 2.0f : 3.0f; // Slightly higher threshold for ImGuiMouseSource_TouchScreen/ImGuiMouseSource_Pen, may need rework.
|
|
const float mouse_stationary_threshold = (io.MouseSource == ImGuiMouseSource_Mouse) ? 2.0f : 3.0f; // Slightly higher threshold for ImGuiMouseSource_TouchScreen/ImGuiMouseSource_Pen, may need rework.
|
|
- g.MouseMovingFrames = (ImLengthSqr(io.MouseDelta) >= mouse_stationary_threshold * mouse_stationary_threshold) ? (g.MouseMovingFrames + 1) : 0;
|
|
|
|
- if (g.MouseMovingFrames == 0)
|
|
|
|
- g.MouseStationaryTimer += io.DeltaTime;
|
|
|
|
- else if (g.MouseMovingFrames > 1)
|
|
|
|
- g.MouseStationaryTimer = 0.0f;
|
|
|
|
|
|
+ const bool mouse_stationary = (ImLengthSqr(io.MouseDelta) <= mouse_stationary_threshold * mouse_stationary_threshold);
|
|
|
|
+ g.MouseStationaryTimer = mouse_stationary ? (g.MouseStationaryTimer + io.DeltaTime) : 0.0f;
|
|
|
|
+ //IMGUI_DEBUG_LOG("%.4f\n", g.MouseStationaryTimer);
|
|
|
|
|
|
// If mouse moved we re-enable mouse hovering in case it was disabled by gamepad/keyboard. In theory should use a >0.0f threshold but would need to reset in everywhere we set this to true.
|
|
// If mouse moved we re-enable mouse hovering in case it was disabled by gamepad/keyboard. In theory should use a >0.0f threshold but would need to reset in everywhere we set this to true.
|
|
if (io.MouseDelta.x != 0.0f || io.MouseDelta.y != 0.0f)
|
|
if (io.MouseDelta.x != 0.0f || io.MouseDelta.y != 0.0f)
|