Explorar el Código

BeginChild() fixed missing rounding for child sizes which leaked into layout

ocornut hace 10 años
padre
commit
a3cad2ff06
Se han modificado 2 ficheros con 2 adiciones y 1 borrados
  1. 1 1
      imgui.cpp
  2. 1 0
      imgui_internal.h

+ 1 - 1
imgui.cpp

@@ -3188,7 +3188,7 @@ bool ImGui::BeginChild(const char* str_id, const ImVec2& size_arg, bool border,
     ImGuiWindowFlags flags = ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoSavedSettings|ImGuiWindowFlags_ChildWindow;
 
     const ImVec2 content_avail = ImGui::GetContentRegionAvail();
-    ImVec2 size = size_arg;
+    ImVec2 size = ImRound(size_arg);
     if (size.x <= 0.0f)
     {
         if (size.x == 0.0f)

+ 1 - 0
imgui_internal.h

@@ -129,6 +129,7 @@ static inline ImVec2 ImLerp(const ImVec2& a, const ImVec2& b, const ImVec2& t)
 static inline float  ImLengthSqr(const ImVec2& lhs)                             { return lhs.x*lhs.x + lhs.y*lhs.y; }
 static inline float  ImLengthSqr(const ImVec4& lhs)                             { return lhs.x*lhs.x + lhs.y*lhs.y + lhs.z*lhs.z + lhs.w*lhs.w; }
 static inline float  ImInvLength(const ImVec2& lhs, float fail_value)           { float d = lhs.x*lhs.x + lhs.y*lhs.y; if (d > 0.0f) return 1.0f / sqrtf(d); return fail_value; }
+static inline ImVec2 ImRound(ImVec2 v)                                          { return ImVec2((float)(int)v.x, (float)(int)v.y); }
 
 //-----------------------------------------------------------------------------
 // Types