Преглед изворни кода

ItemWidthStack can be empty, to remove one allocation per window

ocornut пре 10 година
родитељ
комит
405785ea62
1 измењених фајлова са 2 додато и 3 уклоњено
  1. 2 3
      imgui.cpp

+ 2 - 3
imgui.cpp

@@ -3791,9 +3791,8 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_
         window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f;
         window->DC.ChildWindows.resize(0);
         window->DC.LayoutType = ImGuiLayoutType_Vertical;
-        window->DC.ItemWidthStack.resize(0); 
-        window->DC.ItemWidthStack.push_back(window->ItemWidthDefault);
         window->DC.ItemWidth = window->ItemWidthDefault;
+        window->DC.ItemWidthStack.resize(0); 
         window->DC.ButtonRepeat = false;
         window->DC.ButtonRepeatStack.resize(0);
         window->DC.AllowKeyboardFocus = true;
@@ -4031,7 +4030,7 @@ void ImGui::PopItemWidth()
 {
     ImGuiWindow* window = GetCurrentWindow();
     window->DC.ItemWidthStack.pop_back();
-    window->DC.ItemWidth = window->DC.ItemWidthStack.back();
+    window->DC.ItemWidth = window->DC.ItemWidthStack.empty() ? window->ItemWidthDefault : window->DC.ItemWidthStack.back();
 }
 
 float ImGui::CalcItemWidth()