message: DragFloat: Fix/workaround for backends which do not preserve a valid mouse position when dragged out of bounds.
diff: @@ -3587,6 +3587,7 @@ bool ImGui::IsMousePosValid(const ImVec2* mouse_pos)
  return mouse_pos->x >= MOUSE_INVALID && mouse_pos->y >= MOUSE_INVALID;
  }
  +// NB: This is only valid if IsMousePosValid(). Backends in theory should always keep mouse position valid when dragging even outside the client window.
  ImVec2 ImGui::GetMouseDragDelta(int button, float lock_threshold)
  {
  ImGuiContext& g = *GImGui;
  @@ -7629,6 +7630,8 @@ bool ImGui::DragBehavior(const ImRect& frame_bb, ImGuiID id, float* v, float v_s
  float v_cur = g.DragCurrentValue;
  const ImVec2 mouse_drag_delta = GetMouseDragDelta(0, 1.0f);
  float adjust_delta = 0.0f;
  + if (IsMousePosValid())
  + {
  //if (g.ActiveIdSource == ImGuiInputSource_Mouse)
  {
  adjust_delta = mouse_drag_delta.x - g.DragLastMouseDelta.x;
  @@ -7637,8 +7640,9 @@ bool ImGui::DragBehavior(const ImRect& frame_bb, ImGuiID id, float* v, float v_s
  if (g.IO.KeyAlt && g.DragSpeedScaleSlow >= 0.0f)
  adjust_delta *= g.DragSpeedScaleSlow;
  }
  - adjust_delta *= v_speed;
  g.DragLastMouseDelta.x = mouse_drag_delta.x;
  + }
  + adjust_delta *= v_speed;
  if (fabsf(adjust_delta) > 0.0f)
  {
  