mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
parent
1ad8ad623e
commit
16ddc1698d
28
imgui.cpp
28
imgui.cpp
@ -3697,20 +3697,23 @@ void ImGui::GetAllocatorFunctions(ImGuiMemAllocFunc* p_alloc_func, ImGuiMemFreeF
|
|||||||
|
|
||||||
ImGuiContext* ImGui::CreateContext(ImFontAtlas* shared_font_atlas)
|
ImGuiContext* ImGui::CreateContext(ImFontAtlas* shared_font_atlas)
|
||||||
{
|
{
|
||||||
|
ImGuiContext* prev_ctx = GetCurrentContext();
|
||||||
ImGuiContext* ctx = IM_NEW(ImGuiContext)(shared_font_atlas);
|
ImGuiContext* ctx = IM_NEW(ImGuiContext)(shared_font_atlas);
|
||||||
if (GImGui == NULL)
|
|
||||||
SetCurrentContext(ctx);
|
SetCurrentContext(ctx);
|
||||||
Initialize(ctx);
|
Initialize();
|
||||||
|
if (prev_ctx != NULL)
|
||||||
|
SetCurrentContext(prev_ctx); // Restore previous context if any, else keep new one.
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGui::DestroyContext(ImGuiContext* ctx)
|
void ImGui::DestroyContext(ImGuiContext* ctx)
|
||||||
{
|
{
|
||||||
|
ImGuiContext* prev_ctx = GetCurrentContext();
|
||||||
if (ctx == NULL)
|
if (ctx == NULL)
|
||||||
ctx = GImGui;
|
ctx = prev_ctx;
|
||||||
Shutdown(ctx);
|
SetCurrentContext(ctx);
|
||||||
if (GImGui == ctx)
|
Shutdown();
|
||||||
SetCurrentContext(NULL);
|
SetCurrentContext((prev_ctx != ctx) ? prev_ctx : NULL);
|
||||||
IM_DELETE(ctx);
|
IM_DELETE(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4464,9 +4467,9 @@ void ImGui::NewFrame()
|
|||||||
CallContextHooks(&g, ImGuiContextHookType_NewFramePost);
|
CallContextHooks(&g, ImGuiContextHookType_NewFramePost);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGui::Initialize(ImGuiContext* context)
|
void ImGui::Initialize()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *context;
|
ImGuiContext& g = *GImGui;
|
||||||
IM_ASSERT(!g.Initialized && !g.SettingsLoaded);
|
IM_ASSERT(!g.Initialized && !g.SettingsLoaded);
|
||||||
|
|
||||||
// Add .ini handle for ImGuiWindow type
|
// Add .ini handle for ImGuiWindow type
|
||||||
@ -4496,10 +4499,10 @@ void ImGui::Initialize(ImGuiContext* context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This function is merely here to free heap allocations.
|
// This function is merely here to free heap allocations.
|
||||||
void ImGui::Shutdown(ImGuiContext* context)
|
void ImGui::Shutdown()
|
||||||
{
|
{
|
||||||
// The fonts atlas can be used prior to calling NewFrame(), so we clear it even if g.Initialized is FALSE (which would happen if we never called NewFrame)
|
// The fonts atlas can be used prior to calling NewFrame(), so we clear it even if g.Initialized is FALSE (which would happen if we never called NewFrame)
|
||||||
ImGuiContext& g = *context;
|
ImGuiContext& g = *GImGui;
|
||||||
if (g.IO.Fonts && g.FontAtlasOwnedByContext)
|
if (g.IO.Fonts && g.FontAtlasOwnedByContext)
|
||||||
{
|
{
|
||||||
g.IO.Fonts->Locked = false;
|
g.IO.Fonts->Locked = false;
|
||||||
@ -4513,12 +4516,7 @@ void ImGui::Shutdown(ImGuiContext* context)
|
|||||||
|
|
||||||
// Save settings (unless we haven't attempted to load them: CreateContext/DestroyContext without a call to NewFrame shouldn't save an empty file)
|
// Save settings (unless we haven't attempted to load them: CreateContext/DestroyContext without a call to NewFrame shouldn't save an empty file)
|
||||||
if (g.SettingsLoaded && g.IO.IniFilename != NULL)
|
if (g.SettingsLoaded && g.IO.IniFilename != NULL)
|
||||||
{
|
|
||||||
ImGuiContext* backup_context = GImGui;
|
|
||||||
SetCurrentContext(&g);
|
|
||||||
SaveIniSettingsToDisk(g.IO.IniFilename);
|
SaveIniSettingsToDisk(g.IO.IniFilename);
|
||||||
SetCurrentContext(backup_context);
|
|
||||||
}
|
|
||||||
|
|
||||||
CallContextHooks(&g, ImGuiContextHookType_Shutdown);
|
CallContextHooks(&g, ImGuiContextHookType_Shutdown);
|
||||||
|
|
||||||
|
2
imgui.h
2
imgui.h
@ -65,7 +65,7 @@ Index of this file:
|
|||||||
// Version
|
// Version
|
||||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
|
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
|
||||||
#define IMGUI_VERSION "1.88 WIP"
|
#define IMGUI_VERSION "1.88 WIP"
|
||||||
#define IMGUI_VERSION_NUM 18710
|
#define IMGUI_VERSION_NUM 18711
|
||||||
#define IMGUI_CHECKVERSION() ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
|
#define IMGUI_CHECKVERSION() ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
|
||||||
#define IMGUI_HAS_TABLE
|
#define IMGUI_HAS_TABLE
|
||||||
|
|
||||||
|
@ -2519,8 +2519,8 @@ namespace ImGui
|
|||||||
IMGUI_API ImDrawList* GetForegroundDrawList(ImGuiViewport* viewport); // get foreground draw list for the given viewport. this draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents.
|
IMGUI_API ImDrawList* GetForegroundDrawList(ImGuiViewport* viewport); // get foreground draw list for the given viewport. this draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents.
|
||||||
|
|
||||||
// Init
|
// Init
|
||||||
IMGUI_API void Initialize(ImGuiContext* context);
|
IMGUI_API void Initialize();
|
||||||
IMGUI_API void Shutdown(ImGuiContext* context); // Since 1.60 this is a _private_ function. You can call DestroyContext() to destroy the context created by CreateContext().
|
IMGUI_API void Shutdown(); // Since 1.60 this is a _private_ function. You can call DestroyContext() to destroy the context created by CreateContext().
|
||||||
|
|
||||||
// NewFrame
|
// NewFrame
|
||||||
IMGUI_API void UpdateInputEvents(bool trickle_fast_inputs);
|
IMGUI_API void UpdateInputEvents(bool trickle_fast_inputs);
|
||||||
|
Loading…
Reference in New Issue
Block a user