mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 11:57:00 +00:00
Internals: Added IMGUI_DEBUG_INI_SETTINGS. Made IMGUI_DEBUG_LOG redefinable in imconfig.h. Comments. Fix to allow Metrics's NodeWindow() being called with a NULL window.
This commit is contained in:
parent
baae057a03
commit
824e8c53b4
15
imgui.cpp
15
imgui.cpp
@ -998,6 +998,7 @@ CODE
|
|||||||
// Debug options
|
// Debug options
|
||||||
#define IMGUI_DEBUG_NAV_SCORING 0 // Display navigation scoring preview when hovering items. Display last moving direction matches when holding CTRL
|
#define IMGUI_DEBUG_NAV_SCORING 0 // Display navigation scoring preview when hovering items. Display last moving direction matches when holding CTRL
|
||||||
#define IMGUI_DEBUG_NAV_RECTS 0 // Display the reference navigation rectangle for each window
|
#define IMGUI_DEBUG_NAV_RECTS 0 // Display the reference navigation rectangle for each window
|
||||||
|
#define IMGUI_DEBUG_INI_SETTINGS 0 // Save additional comments in .ini file
|
||||||
|
|
||||||
// Visual Studio warnings
|
// Visual Studio warnings
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
@ -4795,6 +4796,7 @@ ImGuiWindow* ImGui::FindWindowByName(const char* name)
|
|||||||
static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFlags flags)
|
static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFlags flags)
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
|
//IMGUI_DEBUG_LOG("CreateNewWindow '%s', flags = 0x%08X\n", name, flags);
|
||||||
|
|
||||||
// Create window the first time
|
// Create window the first time
|
||||||
ImGuiWindow* window = IM_NEW(ImGuiWindow)(&g, name);
|
ImGuiWindow* window = IM_NEW(ImGuiWindow)(&g, name);
|
||||||
@ -9265,8 +9267,12 @@ ImGuiWindowSettings* ImGui::CreateNewWindowSettings(const char* name)
|
|||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
g.SettingsWindows.push_back(ImGuiWindowSettings());
|
g.SettingsWindows.push_back(ImGuiWindowSettings());
|
||||||
ImGuiWindowSettings* settings = &g.SettingsWindows.back();
|
ImGuiWindowSettings* settings = &g.SettingsWindows.back();
|
||||||
if (const char* p = strstr(name, "###")) // Skip to the "###" marker if any. We don't skip past to match the behavior of GetID()
|
#if !IMGUI_DEBUG_INI_SETTINGS
|
||||||
|
// Skip to the "###" marker if any. We don't skip past to match the behavior of GetID()
|
||||||
|
// Preserve the full string when IMGUI_DEBUG_INI_SETTINGS is set to make .ini inspection easier.
|
||||||
|
if (const char* p = strstr(name, "###"))
|
||||||
name = p;
|
name = p;
|
||||||
|
#endif
|
||||||
settings->Name = ImStrdup(name);
|
settings->Name = ImStrdup(name);
|
||||||
settings->ID = ImHashStr(name);
|
settings->ID = ImHashStr(name);
|
||||||
return settings;
|
return settings;
|
||||||
@ -9791,7 +9797,12 @@ void ImGui::ShowMetricsWindow(bool* p_open)
|
|||||||
|
|
||||||
static void NodeWindow(ImGuiWindow* window, const char* label)
|
static void NodeWindow(ImGuiWindow* window, const char* label)
|
||||||
{
|
{
|
||||||
if (!ImGui::TreeNode(window, "%s '%s', %d @ 0x%p", label, window->Name, window->Active || window->WasActive, window))
|
if (window == NULL)
|
||||||
|
{
|
||||||
|
ImGui::BulletText("%s: NULL", label);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!ImGui::TreeNode(window, "%s '%s', %d @ 0x%p", label, window->Name, (window->Active || window->WasActive), window))
|
||||||
return;
|
return;
|
||||||
ImGuiWindowFlags flags = window->Flags;
|
ImGuiWindowFlags flags = window->Flags;
|
||||||
NodeDrawList(window, window->DrawList, "DrawList");
|
NodeDrawList(window, window->DrawList, "DrawList");
|
||||||
|
@ -141,12 +141,15 @@ extern IMGUI_API ImGuiContext* GImGui; // Current implicit context pointer
|
|||||||
#define IM_NEWLINE "\n"
|
#define IM_NEWLINE "\n"
|
||||||
#endif
|
#endif
|
||||||
#define IM_TABSIZE (4)
|
#define IM_TABSIZE (4)
|
||||||
|
|
||||||
#define IMGUI_DEBUG_LOG(_FMT,...) printf("[%05d] " _FMT, GImGui->FrameCount, __VA_ARGS__)
|
|
||||||
#define IM_STATIC_ASSERT(_COND) typedef char static_assertion_##__line__[(_COND)?1:-1]
|
#define IM_STATIC_ASSERT(_COND) typedef char static_assertion_##__line__[(_COND)?1:-1]
|
||||||
#define IM_F32_TO_INT8_UNBOUND(_VAL) ((int)((_VAL) * 255.0f + ((_VAL)>=0 ? 0.5f : -0.5f))) // Unsaturated, for display purpose
|
#define IM_F32_TO_INT8_UNBOUND(_VAL) ((int)((_VAL) * 255.0f + ((_VAL)>=0 ? 0.5f : -0.5f))) // Unsaturated, for display purpose
|
||||||
#define IM_F32_TO_INT8_SAT(_VAL) ((int)(ImSaturate(_VAL) * 255.0f + 0.5f)) // Saturated, always output 0..255
|
#define IM_F32_TO_INT8_SAT(_VAL) ((int)(ImSaturate(_VAL) * 255.0f + 0.5f)) // Saturated, always output 0..255
|
||||||
|
|
||||||
|
// Debug Logging
|
||||||
|
#ifndef IMGUI_DEBUG_LOG
|
||||||
|
#define IMGUI_DEBUG_LOG(_FMT,...) printf("[%05d] " _FMT, GImGui->FrameCount, __VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
// Enforce cdecl calling convention for functions called by the standard library, in case compilation settings changed the default to e.g. __vectorcall
|
// Enforce cdecl calling convention for functions called by the standard library, in case compilation settings changed the default to e.g. __vectorcall
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#define IMGUI_CDECL __cdecl
|
#define IMGUI_CDECL __cdecl
|
||||||
|
@ -5935,6 +5935,10 @@ void ImGui::EndMainMenuBar()
|
|||||||
End();
|
End();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: Provided a rectangle perhaps e.g. a BeginMenuBarEx() could be used anywhere..
|
||||||
|
// Currently the main responsibility of this function being to setup clip-rect + horizontal layout + menu navigation layer.
|
||||||
|
// Ideally we also want this to be responsible for claiming space out of the main window scrolling rectangle, in which case ImGuiWindowFlags_MenuBar will become unnecessary.
|
||||||
|
// Then later the same system could be used for multiple menu-bars, scrollbars, side-bars.
|
||||||
bool ImGui::BeginMenuBar()
|
bool ImGui::BeginMenuBar()
|
||||||
{
|
{
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
@ -5944,7 +5948,7 @@ bool ImGui::BeginMenuBar()
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
IM_ASSERT(!window->DC.MenuBarAppending);
|
IM_ASSERT(!window->DC.MenuBarAppending);
|
||||||
BeginGroup(); // Backup position on layer 0
|
BeginGroup(); // Backup position on layer 0 // FIXME: Misleading to use a group for that backup/restore
|
||||||
PushID("##menubar");
|
PushID("##menubar");
|
||||||
|
|
||||||
// We don't clip with current window clipping rectangle as it is already set to the area below. However we clip with window full rect.
|
// We don't clip with current window clipping rectangle as it is already set to the area below. However we clip with window full rect.
|
||||||
|
Loading…
Reference in New Issue
Block a user