mirror of
https://github.com/Drezil/imgui.git
synced 2025-07-04 12:08:47 +02:00
28
imgui.cpp
28
imgui.cpp
@ -1859,8 +1859,7 @@ ImGuiWindow::ImGuiWindow(ImGuiContext* context, const char* name)
|
||||
ItemWidthDefault = 0.0f;
|
||||
FontWindowScale = 1.0f;
|
||||
|
||||
DrawList = (ImDrawList*)ImGui::MemAlloc(sizeof(ImDrawList));
|
||||
IM_PLACEMENT_NEW(DrawList) ImDrawList(&context->DrawListSharedData);
|
||||
DrawList = IM_NEW(ImDrawList)(&context->DrawListSharedData);
|
||||
DrawList->_OwnerName = Name;
|
||||
ParentWindow = NULL;
|
||||
RootWindow = NULL;
|
||||
@ -1873,11 +1872,8 @@ ImGuiWindow::ImGuiWindow(ImGuiContext* context, const char* name)
|
||||
|
||||
ImGuiWindow::~ImGuiWindow()
|
||||
{
|
||||
DrawList->~ImDrawList();
|
||||
ImGui::MemFree(DrawList);
|
||||
DrawList = NULL;
|
||||
ImGui::MemFree(Name);
|
||||
Name = NULL;
|
||||
IM_DELETE(DrawList);
|
||||
IM_DELETE(Name);
|
||||
}
|
||||
|
||||
ImGuiID ImGuiWindow::GetID(const char* str, const char* str_end)
|
||||
@ -2579,8 +2575,7 @@ static void SettingsHandlerWindow_WriteAll(ImGuiContext& g, ImGuiTextBuffer* buf
|
||||
void ImGui::Initialize()
|
||||
{
|
||||
ImGuiContext& g = *GImGui;
|
||||
g.LogClipboard = (ImGuiTextBuffer*)ImGui::MemAlloc(sizeof(ImGuiTextBuffer));
|
||||
IM_PLACEMENT_NEW(g.LogClipboard) ImGuiTextBuffer();
|
||||
g.LogClipboard = IM_NEW(ImGuiTextBuffer)();
|
||||
|
||||
// Add .ini handle for ImGuiWindow type
|
||||
ImGuiSettingsHandler ini_handler;
|
||||
@ -2613,10 +2608,7 @@ void ImGui::Shutdown()
|
||||
SaveIniSettingsToDisk(g.IO.IniFilename);
|
||||
|
||||
for (int i = 0; i < g.Windows.Size; i++)
|
||||
{
|
||||
g.Windows[i]->~ImGuiWindow();
|
||||
ImGui::MemFree(g.Windows[i]);
|
||||
}
|
||||
IM_DELETE(g.Windows[i]);
|
||||
g.Windows.clear();
|
||||
g.WindowsSortBuffer.clear();
|
||||
g.CurrentWindow = NULL;
|
||||
@ -2628,7 +2620,7 @@ void ImGui::Shutdown()
|
||||
g.ActiveIdWindow = NULL;
|
||||
g.MovingWindow = NULL;
|
||||
for (int i = 0; i < g.SettingsWindows.Size; i++)
|
||||
ImGui::MemFree(g.SettingsWindows[i].Name);
|
||||
IM_DELETE(g.SettingsWindows[i].Name);
|
||||
g.ColorModifiers.clear();
|
||||
g.StyleModifiers.clear();
|
||||
g.FontStack.clear();
|
||||
@ -2653,10 +2645,7 @@ void ImGui::Shutdown()
|
||||
g.LogFile = NULL;
|
||||
}
|
||||
if (g.LogClipboard)
|
||||
{
|
||||
g.LogClipboard->~ImGuiTextBuffer();
|
||||
ImGui::MemFree(g.LogClipboard);
|
||||
}
|
||||
IM_DELETE(g.LogClipboard);
|
||||
|
||||
g.Initialized = false;
|
||||
}
|
||||
@ -4157,8 +4146,7 @@ static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFl
|
||||
ImGuiContext& g = *GImGui;
|
||||
|
||||
// Create window the first time
|
||||
ImGuiWindow* window = (ImGuiWindow*)ImGui::MemAlloc(sizeof(ImGuiWindow));
|
||||
IM_PLACEMENT_NEW(window) ImGuiWindow(&g, name);
|
||||
ImGuiWindow* window = IM_NEW(ImGuiWindow)(&g, name);
|
||||
window->Flags = flags;
|
||||
g.WindowsById.SetVoidPtr(window->ID, window);
|
||||
|
||||
|
Reference in New Issue
Block a user