Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_glfw.cpp # docs/CHANGELOG.txt # imgui.cpp # imgui_internal.h
This commit is contained in:
commit
595a428baa
@ -21,6 +21,7 @@
|
|||||||
// CHANGELOG
|
// CHANGELOG
|
||||||
// (minor and older changes stripped away, please see git history for details)
|
// (minor and older changes stripped away, please see git history for details)
|
||||||
// 2022-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
|
// 2022-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
|
||||||
|
// 2022-11-22: Perform a dummy glfwGetError() read to cancel missing names with glfwGetKeyName(). (#5908)
|
||||||
// 2022-10-18: Perform a dummy glfwGetError() read to cancel missing mouse cursors errors. Using GLFW_VERSION_COMBINED directly. (#5785)
|
// 2022-10-18: Perform a dummy glfwGetError() read to cancel missing mouse cursors errors. Using GLFW_VERSION_COMBINED directly. (#5785)
|
||||||
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
|
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
|
||||||
// 2022-09-26: Inputs: Renamed ImGuiKey_ModXXX introduced in 1.87 to ImGuiMod_XXX (old names still supported).
|
// 2022-09-26: Inputs: Renamed ImGuiKey_ModXXX introduced in 1.87 to ImGuiMod_XXX (old names still supported).
|
||||||
@ -339,7 +340,12 @@ static int ImGui_ImplGlfw_TranslateUntranslatedKey(int key, int scancode)
|
|||||||
// This won't cover edge cases but this is at least going to cover common cases.
|
// This won't cover edge cases but this is at least going to cover common cases.
|
||||||
if (key >= GLFW_KEY_KP_0 && key <= GLFW_KEY_KP_EQUAL)
|
if (key >= GLFW_KEY_KP_0 && key <= GLFW_KEY_KP_EQUAL)
|
||||||
return key;
|
return key;
|
||||||
|
GLFWerrorfun prev_error_callback = glfwSetErrorCallback(nullptr);
|
||||||
const char* key_name = glfwGetKeyName(key, scancode);
|
const char* key_name = glfwGetKeyName(key, scancode);
|
||||||
|
glfwSetErrorCallback(prev_error_callback);
|
||||||
|
#if (GLFW_VERSION_COMBINED >= 3300) // Eat errors (see #5908)
|
||||||
|
(void)glfwGetError(NULL);
|
||||||
|
#endif
|
||||||
if (key_name && key_name[0] != 0 && key_name[1] == 0)
|
if (key_name && key_name[0] != 0 && key_name[1] == 0)
|
||||||
{
|
{
|
||||||
const char char_names[] = "`-=[]\\,;\'./";
|
const char char_names[] = "`-=[]\\,;\'./";
|
||||||
@ -540,10 +546,10 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw
|
|||||||
bd->MouseCursors[ImGuiMouseCursor_ResizeNWSE] = glfwCreateStandardCursor(GLFW_ARROW_CURSOR);
|
bd->MouseCursors[ImGuiMouseCursor_ResizeNWSE] = glfwCreateStandardCursor(GLFW_ARROW_CURSOR);
|
||||||
bd->MouseCursors[ImGuiMouseCursor_NotAllowed] = glfwCreateStandardCursor(GLFW_ARROW_CURSOR);
|
bd->MouseCursors[ImGuiMouseCursor_NotAllowed] = glfwCreateStandardCursor(GLFW_ARROW_CURSOR);
|
||||||
#endif
|
#endif
|
||||||
|
glfwSetErrorCallback(prev_error_callback);
|
||||||
#if (GLFW_VERSION_COMBINED >= 3300) // Eat errors (see #5785)
|
#if (GLFW_VERSION_COMBINED >= 3300) // Eat errors (see #5785)
|
||||||
(void)glfwGetError(NULL);
|
(void)glfwGetError(NULL);
|
||||||
#endif
|
#endif
|
||||||
glfwSetErrorCallback(prev_error_callback);
|
|
||||||
|
|
||||||
// Chain GLFW callbacks: our callbacks will call the user's previously installed callbacks, if any.
|
// Chain GLFW callbacks: our callbacks will call the user's previously installed callbacks, if any.
|
||||||
if (install_callbacks)
|
if (install_callbacks)
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
// CHANGELOG
|
// CHANGELOG
|
||||||
// (minor and older changes stripped away, please see git history for details)
|
// (minor and older changes stripped away, please see git history for details)
|
||||||
|
// 2022-11-24: Fixed validation error with default depth buffer settings.
|
||||||
// 2022-11-10: Fixed rendering when a depth buffer is enabled. Added 'WGPUTextureFormat depth_format' parameter to ImGui_ImplWGPU_Init().
|
// 2022-11-10: Fixed rendering when a depth buffer is enabled. Added 'WGPUTextureFormat depth_format' parameter to ImGui_ImplWGPU_Init().
|
||||||
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
|
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
|
||||||
// 2021-11-29: Passing explicit buffer sizes to wgpuRenderPassEncoderSetVertexBuffer()/wgpuRenderPassEncoderSetIndexBuffer().
|
// 2021-11-29: Passing explicit buffer sizes to wgpuRenderPassEncoderSetVertexBuffer()/wgpuRenderPassEncoderSetIndexBuffer().
|
||||||
@ -606,6 +607,9 @@ bool ImGui_ImplWGPU_CreateDeviceObjects()
|
|||||||
WGPUDepthStencilState depth_stencil_state = {};
|
WGPUDepthStencilState depth_stencil_state = {};
|
||||||
depth_stencil_state.format = g_depthStencilFormat;
|
depth_stencil_state.format = g_depthStencilFormat;
|
||||||
depth_stencil_state.depthWriteEnabled = false;
|
depth_stencil_state.depthWriteEnabled = false;
|
||||||
|
depth_stencil_state.depthCompare = WGPUCompareFunction_Always;
|
||||||
|
depth_stencil_state.stencilFront.compare = WGPUCompareFunction_Always;
|
||||||
|
depth_stencil_state.stencilBack.compare = WGPUCompareFunction_Always;
|
||||||
|
|
||||||
// Configure disabled depth-stencil state
|
// Configure disabled depth-stencil state
|
||||||
graphics_pipeline_desc.depthStencil = g_depthStencilFormat == WGPUTextureFormat_Undefined ? nullptr : &depth_stencil_state;
|
graphics_pipeline_desc.depthStencil = g_depthStencilFormat == WGPUTextureFormat_Undefined ? nullptr : &depth_stencil_state;
|
||||||
|
@ -99,12 +99,27 @@ Other changes:
|
|||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
VERSION 1.89.1 WIP (In Progress)
|
VERSION 1.89.1 (Released 2022-11-24)
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.1
|
||||||
|
|
||||||
|
- Scrolling, Focus: fixed SetKeyboardFocusHere()/SetItemDefaultFocus() during a window-appearing
|
||||||
|
frame (and associated lower-level functions e.g. ScrollToRectEx()) from not centering item. (#5902)
|
||||||
- Inputs: fixed moving a window or drag and dropping from preventing input-owner-unaware code
|
- Inputs: fixed moving a window or drag and dropping from preventing input-owner-unaware code
|
||||||
from accessing keys. (#5888, #4921, #456)
|
from accessing keys. (#5888, #4921, #456)
|
||||||
- Inputs: fixed moving a window or drag and dropping from capturing mods. (#5888, #4921, #456)
|
- Inputs: fixed moving a window or drag and dropping from capturing mods. (#5888, #4921, #456)
|
||||||
|
- Layout: fixed End()/EndChild() incorrectly asserting if users manipulates cursor position
|
||||||
|
inside a collapsed/culled window and IMGUI_DISABLE_OBSOLETE_FUNCTIONS is enabled. (#5548, #5911)
|
||||||
|
- Combo: fixed selected item (marked with SetItemDefaultFocus()) from not being centered when
|
||||||
|
the combo window initially appears. (#5902).
|
||||||
|
- ColorEdit: fixed label overlapping when using style.ColorButtonPosition == ImGuiDir_Left to
|
||||||
|
move the color button on the left side (regression introduced in 1.88 WIP 2022/02/28). (#5912)
|
||||||
|
- Drag and Drop: fixed GetDragDropPayload() returning a non-NULL value if a drag source is
|
||||||
|
active but a payload hasn't been submitted yet. This is convenient to detect new payload
|
||||||
|
from within a drag source handler. (#5910, #143)
|
||||||
|
- Backends: GLFW: cancel out errors emitted by glfwGetKeyName() when a name is missing. (#5908)
|
||||||
|
- Backends: WebGPU: fixed validation error with default depth buffer settings. (#5869, #5914) [@kdchambers]
|
||||||
|
|
||||||
Docking+Viewports Branch:
|
Docking+Viewports Branch:
|
||||||
|
|
||||||
@ -180,7 +195,6 @@ Breaking changes:
|
|||||||
- Removed support for 1.42-era IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H. (#255)
|
- Removed support for 1.42-era IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H. (#255)
|
||||||
They only made sense before we could use IMGUI_USER_CONFIG.
|
They only made sense before we could use IMGUI_USER_CONFIG.
|
||||||
|
|
||||||
|
|
||||||
Other Changes:
|
Other Changes:
|
||||||
|
|
||||||
- Popups & Modals: fixed nested Begin() inside a popup being erroneously input-inhibited.
|
- Popups & Modals: fixed nested Begin() inside a popup being erroneously input-inhibited.
|
||||||
|
60
imgui.cpp
60
imgui.cpp
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.90 WIP
|
// dear imgui, v1.89.1
|
||||||
// (main code and documentation)
|
// (main code and documentation)
|
||||||
|
|
||||||
// Help:
|
// Help:
|
||||||
@ -80,6 +80,7 @@ CODE
|
|||||||
// [SECTION] DRAG AND DROP
|
// [SECTION] DRAG AND DROP
|
||||||
// [SECTION] LOGGING/CAPTURING
|
// [SECTION] LOGGING/CAPTURING
|
||||||
// [SECTION] SETTINGS
|
// [SECTION] SETTINGS
|
||||||
|
// [SECTION] LOCALIZATION
|
||||||
// [SECTION] VIEWPORTS, PLATFORM WINDOWS
|
// [SECTION] VIEWPORTS, PLATFORM WINDOWS
|
||||||
// [SECTION] DOCKING
|
// [SECTION] DOCKING
|
||||||
// [SECTION] PLATFORM DEPENDENT HELPERS
|
// [SECTION] PLATFORM DEPENDENT HELPERS
|
||||||
@ -4953,12 +4954,24 @@ void ImGui::NewFrame()
|
|||||||
CallContextHooks(&g, ImGuiContextHookType_NewFramePost);
|
CallContextHooks(&g, ImGuiContextHookType_NewFramePost);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IMPORTANT: ###xxx suffixes must be same in ALL languages
|
||||||
|
static const ImGuiLocEntry GLocalizationEntriesEnUS[] =
|
||||||
|
{
|
||||||
|
{ ImGuiLocKey_TableSizeOne, "Size column to fit###SizeOne" },
|
||||||
|
{ ImGuiLocKey_TableSizeAllFit, "Size all columns to fit###SizeAll" },
|
||||||
|
{ ImGuiLocKey_TableSizeAllDefault, "Size all columns to default###SizeAll" },
|
||||||
|
{ ImGuiLocKey_TableResetOrder, "Reset order###ResetOrder" },
|
||||||
|
{ ImGuiLocKey_WindowingMainMenuBar, "(Main menu bar)" },
|
||||||
|
{ ImGuiLocKey_WindowingPopup, "(Popup)" },
|
||||||
|
{ ImGuiLocKey_WindowingUntitled, "(Untitled)" },
|
||||||
|
};
|
||||||
|
|
||||||
void ImGui::Initialize()
|
void ImGui::Initialize()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
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 and ImGuiTable types
|
||||||
{
|
{
|
||||||
ImGuiSettingsHandler ini_handler;
|
ImGuiSettingsHandler ini_handler;
|
||||||
ini_handler.TypeName = "Window";
|
ini_handler.TypeName = "Window";
|
||||||
@ -4970,10 +4983,11 @@ void ImGui::Initialize()
|
|||||||
ini_handler.WriteAllFn = WindowSettingsHandler_WriteAll;
|
ini_handler.WriteAllFn = WindowSettingsHandler_WriteAll;
|
||||||
AddSettingsHandler(&ini_handler);
|
AddSettingsHandler(&ini_handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add .ini handle for ImGuiTable type
|
|
||||||
TableSettingsAddSettingsHandler();
|
TableSettingsAddSettingsHandler();
|
||||||
|
|
||||||
|
// Setup default localization table
|
||||||
|
LocalizeRegisterEntries(GLocalizationEntriesEnUS, IM_ARRAYSIZE(GLocalizationEntriesEnUS));
|
||||||
|
|
||||||
// Create default viewport
|
// Create default viewport
|
||||||
ImGuiViewportP* viewport = IM_NEW(ImGuiViewportP)();
|
ImGuiViewportP* viewport = IM_NEW(ImGuiViewportP)();
|
||||||
viewport->ID = IMGUI_VIEWPORT_DEFAULT_ID;
|
viewport->ID = IMGUI_VIEWPORT_DEFAULT_ID;
|
||||||
@ -9308,6 +9322,8 @@ void ImGui::ErrorCheckUsingSetCursorPosToExtendParentBoundaries()
|
|||||||
#ifdef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
#ifdef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||||
if (window->DC.CursorPos.x <= window->DC.CursorMaxPos.x && window->DC.CursorPos.y <= window->DC.CursorMaxPos.y)
|
if (window->DC.CursorPos.x <= window->DC.CursorMaxPos.x && window->DC.CursorPos.y <= window->DC.CursorMaxPos.y)
|
||||||
return;
|
return;
|
||||||
|
if (window->SkipItems)
|
||||||
|
return;
|
||||||
IM_ASSERT(0 && "Code uses SetCursorPos()/SetCursorScreenPos() to extend window/parent boundaries. Please submit an item e.g. Dummy() to validate extent.");
|
IM_ASSERT(0 && "Code uses SetCursorPos()/SetCursorScreenPos() to extend window/parent boundaries. Please submit an item e.g. Dummy() to validate extent.");
|
||||||
#else
|
#else
|
||||||
window->DC.CursorMaxPos = ImMax(window->DC.CursorMaxPos, window->DC.CursorPos);
|
window->DC.CursorMaxPos = ImMax(window->DC.CursorMaxPos, window->DC.CursorPos);
|
||||||
@ -10157,8 +10173,8 @@ ImVec2 ImGui::ScrollToRectEx(ImGuiWindow* window, const ImRect& item_rect, ImGui
|
|||||||
|
|
||||||
const bool fully_visible_x = item_rect.Min.x >= window_rect.Min.x && item_rect.Max.x <= window_rect.Max.x;
|
const bool fully_visible_x = item_rect.Min.x >= window_rect.Min.x && item_rect.Max.x <= window_rect.Max.x;
|
||||||
const bool fully_visible_y = item_rect.Min.y >= window_rect.Min.y && item_rect.Max.y <= window_rect.Max.y;
|
const bool fully_visible_y = item_rect.Min.y >= window_rect.Min.y && item_rect.Max.y <= window_rect.Max.y;
|
||||||
const bool can_be_fully_visible_x = (item_rect.GetWidth() + g.Style.ItemSpacing.x * 2.0f) <= window_rect.GetWidth();
|
const bool can_be_fully_visible_x = (item_rect.GetWidth() + g.Style.ItemSpacing.x * 2.0f) <= window_rect.GetWidth() || (window->AutoFitFramesX > 0) || (window->Flags & ImGuiWindowFlags_AlwaysAutoResize) != 0;
|
||||||
const bool can_be_fully_visible_y = (item_rect.GetHeight() + g.Style.ItemSpacing.y * 2.0f) <= window_rect.GetHeight();
|
const bool can_be_fully_visible_y = (item_rect.GetHeight() + g.Style.ItemSpacing.y * 2.0f) <= window_rect.GetHeight() || (window->AutoFitFramesY > 0) || (window->Flags & ImGuiWindowFlags_AlwaysAutoResize) != 0;
|
||||||
|
|
||||||
if ((flags & ImGuiScrollFlags_KeepVisibleEdgeX) && !fully_visible_x)
|
if ((flags & ImGuiScrollFlags_KeepVisibleEdgeX) && !fully_visible_x)
|
||||||
{
|
{
|
||||||
@ -10169,8 +10185,10 @@ ImVec2 ImGui::ScrollToRectEx(ImGuiWindow* window, const ImRect& item_rect, ImGui
|
|||||||
}
|
}
|
||||||
else if (((flags & ImGuiScrollFlags_KeepVisibleCenterX) && !fully_visible_x) || (flags & ImGuiScrollFlags_AlwaysCenterX))
|
else if (((flags & ImGuiScrollFlags_KeepVisibleCenterX) && !fully_visible_x) || (flags & ImGuiScrollFlags_AlwaysCenterX))
|
||||||
{
|
{
|
||||||
float target_x = can_be_fully_visible_x ? ImFloor((item_rect.Min.x + item_rect.Max.x - window->InnerRect.GetWidth()) * 0.5f) : item_rect.Min.x;
|
if (can_be_fully_visible_x)
|
||||||
SetScrollFromPosX(window, target_x - window->Pos.x, 0.0f);
|
SetScrollFromPosX(window, ImFloor((item_rect.Min.x + item_rect.Max.y) * 0.5f) - window->Pos.x, 0.5f);
|
||||||
|
else
|
||||||
|
SetScrollFromPosX(window, item_rect.Min.x - window->Pos.x, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((flags & ImGuiScrollFlags_KeepVisibleEdgeY) && !fully_visible_y)
|
if ((flags & ImGuiScrollFlags_KeepVisibleEdgeY) && !fully_visible_y)
|
||||||
@ -10182,8 +10200,10 @@ ImVec2 ImGui::ScrollToRectEx(ImGuiWindow* window, const ImRect& item_rect, ImGui
|
|||||||
}
|
}
|
||||||
else if (((flags & ImGuiScrollFlags_KeepVisibleCenterY) && !fully_visible_y) || (flags & ImGuiScrollFlags_AlwaysCenterY))
|
else if (((flags & ImGuiScrollFlags_KeepVisibleCenterY) && !fully_visible_y) || (flags & ImGuiScrollFlags_AlwaysCenterY))
|
||||||
{
|
{
|
||||||
float target_y = can_be_fully_visible_y ? ImFloor((item_rect.Min.y + item_rect.Max.y - window->InnerRect.GetHeight()) * 0.5f) : item_rect.Min.y;
|
if (can_be_fully_visible_y)
|
||||||
SetScrollFromPosY(window, target_y - window->Pos.y, 0.0f);
|
SetScrollFromPosY(window, ImFloor((item_rect.Min.y + item_rect.Max.y) * 0.5f) - window->Pos.y, 0.5f);
|
||||||
|
else
|
||||||
|
SetScrollFromPosY(window, item_rect.Min.y - window->Pos.y, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImVec2 next_scroll = CalcNextScrollFromScrollTargetAndClamp(window);
|
ImVec2 next_scroll = CalcNextScrollFromScrollTargetAndClamp(window);
|
||||||
@ -12333,12 +12353,12 @@ static void ImGui::NavUpdateWindowing()
|
|||||||
static const char* GetFallbackWindowNameForWindowingList(ImGuiWindow* window)
|
static const char* GetFallbackWindowNameForWindowingList(ImGuiWindow* window)
|
||||||
{
|
{
|
||||||
if (window->Flags & ImGuiWindowFlags_Popup)
|
if (window->Flags & ImGuiWindowFlags_Popup)
|
||||||
return "(Popup)";
|
return ImGui::LocalizeGetMsg(ImGuiLocKey_WindowingPopup);
|
||||||
if ((window->Flags & ImGuiWindowFlags_MenuBar) && strcmp(window->Name, "##MainMenuBar") == 0)
|
if ((window->Flags & ImGuiWindowFlags_MenuBar) && strcmp(window->Name, "##MainMenuBar") == 0)
|
||||||
return "(Main menu bar)";
|
return ImGui::LocalizeGetMsg(ImGuiLocKey_WindowingMainMenuBar);
|
||||||
if (window->DockNodeAsHost)
|
if (window->DockNodeAsHost)
|
||||||
return "(Dock node)";
|
return "(Dock node)";
|
||||||
return "(Untitled)";
|
return ImGui::LocalizeGetMsg(ImGuiLocKey_WindowingUntitled);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overlay displayed when using CTRL+TAB. Called by EndFrame().
|
// Overlay displayed when using CTRL+TAB. Called by EndFrame().
|
||||||
@ -12684,7 +12704,7 @@ void ImGui::RenderDragDropTargetRect(const ImRect& bb)
|
|||||||
const ImGuiPayload* ImGui::GetDragDropPayload()
|
const ImGuiPayload* ImGui::GetDragDropPayload()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
return g.DragDropActive ? &g.DragDropPayload : NULL;
|
return (g.DragDropActive && g.DragDropPayload.DataFrameCount != -1) ? &g.DragDropPayload : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We don't really use/need this now, but added it for the sake of consistency and because we might need it later.
|
// We don't really use/need this now, but added it for the sake of consistency and because we might need it later.
|
||||||
@ -13296,6 +13316,18 @@ static void WindowSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandl
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// [SECTION] LOCALIZATION
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ImGui::LocalizeRegisterEntries(const ImGuiLocEntry* entries, int count)
|
||||||
|
{
|
||||||
|
ImGuiContext& g = *GImGui;
|
||||||
|
for (int n = 0; n < count; n++)
|
||||||
|
g.LocalizationTable[entries[n].Key] = entries[n].Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// [SECTION] VIEWPORTS, PLATFORM WINDOWS
|
// [SECTION] VIEWPORTS, PLATFORM WINDOWS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
4
imgui.h
4
imgui.h
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.89.1 WIP
|
// dear imgui, v1.89.1
|
||||||
// (headers)
|
// (headers)
|
||||||
|
|
||||||
// Help:
|
// Help:
|
||||||
@ -23,7 +23,7 @@
|
|||||||
// Library Version
|
// Library Version
|
||||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM > 12345')
|
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM > 12345')
|
||||||
#define IMGUI_VERSION "1.89.1 WIP"
|
#define IMGUI_VERSION "1.89.1 WIP"
|
||||||
#define IMGUI_VERSION_NUM 18902
|
#define IMGUI_VERSION_NUM 18910
|
||||||
#define IMGUI_HAS_TABLE
|
#define IMGUI_HAS_TABLE
|
||||||
#define IMGUI_HAS_VIEWPORT // Viewport WIP branch
|
#define IMGUI_HAS_VIEWPORT // Viewport WIP branch
|
||||||
#define IMGUI_HAS_DOCK // Docking WIP branch
|
#define IMGUI_HAS_DOCK // Docking WIP branch
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.89.1 WIP
|
// dear imgui, v1.89.1
|
||||||
// (demo code)
|
// (demo code)
|
||||||
|
|
||||||
// Help:
|
// Help:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.89.1 WIP
|
// dear imgui, v1.89.1
|
||||||
// (drawing and font code)
|
// (drawing and font code)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.89.1 WIP
|
// dear imgui, v1.89.1
|
||||||
// (internal structures/api)
|
// (internal structures/api)
|
||||||
|
|
||||||
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
|
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
|
||||||
@ -26,6 +26,7 @@ Index of this file:
|
|||||||
// [SECTION] Docking support
|
// [SECTION] Docking support
|
||||||
// [SECTION] Viewport support
|
// [SECTION] Viewport support
|
||||||
// [SECTION] Settings support
|
// [SECTION] Settings support
|
||||||
|
// [SECTION] Localization support
|
||||||
// [SECTION] Metrics, Debug tools
|
// [SECTION] Metrics, Debug tools
|
||||||
// [SECTION] Generic context hooks
|
// [SECTION] Generic context hooks
|
||||||
// [SECTION] ImGuiContext (main imgui context)
|
// [SECTION] ImGuiContext (main imgui context)
|
||||||
@ -125,6 +126,7 @@ struct ImGuiDockNodeSettings; // Storage for a dock node in .ini file (we
|
|||||||
struct ImGuiGroupData; // Stacked storage data for BeginGroup()/EndGroup()
|
struct ImGuiGroupData; // Stacked storage data for BeginGroup()/EndGroup()
|
||||||
struct ImGuiInputTextState; // Internal state of the currently focused/edited text input box
|
struct ImGuiInputTextState; // Internal state of the currently focused/edited text input box
|
||||||
struct ImGuiLastItemData; // Status storage for last submitted items
|
struct ImGuiLastItemData; // Status storage for last submitted items
|
||||||
|
struct ImGuiLocEntry; // A localization entry.
|
||||||
struct ImGuiMenuColumns; // Simple column measurement, currently used for MenuItem() only
|
struct ImGuiMenuColumns; // Simple column measurement, currently used for MenuItem() only
|
||||||
struct ImGuiNavItemData; // Result of a gamepad/keyboard directional navigation move query result
|
struct ImGuiNavItemData; // Result of a gamepad/keyboard directional navigation move query result
|
||||||
struct ImGuiMetricsConfig; // Storage for ShowMetricsWindow() and DebugNodeXXX() functions
|
struct ImGuiMetricsConfig; // Storage for ShowMetricsWindow() and DebugNodeXXX() functions
|
||||||
@ -148,9 +150,13 @@ struct ImGuiWindow; // Storage for one window
|
|||||||
struct ImGuiWindowTempData; // Temporary storage for one window (that's the data which in theory we could ditch at the end of the frame, in practice we currently keep it for each window)
|
struct ImGuiWindowTempData; // Temporary storage for one window (that's the data which in theory we could ditch at the end of the frame, in practice we currently keep it for each window)
|
||||||
struct ImGuiWindowSettings; // Storage for a window .ini settings (we keep one of those even if the actual window wasn't instanced during this session)
|
struct ImGuiWindowSettings; // Storage for a window .ini settings (we keep one of those even if the actual window wasn't instanced during this session)
|
||||||
|
|
||||||
|
// Enumerations
|
||||||
// Use your programming IDE "Go to definition" facility on the names of the center columns to find the actual flags/enum lists.
|
// Use your programming IDE "Go to definition" facility on the names of the center columns to find the actual flags/enum lists.
|
||||||
|
enum ImGuiLocKey : int; // -> enum ImGuiLocKey // Enum: a localization entry for translation.
|
||||||
typedef int ImGuiDataAuthority; // -> enum ImGuiDataAuthority_ // Enum: for storing the source authority (dock node vs window) of a field
|
typedef int ImGuiDataAuthority; // -> enum ImGuiDataAuthority_ // Enum: for storing the source authority (dock node vs window) of a field
|
||||||
typedef int ImGuiLayoutType; // -> enum ImGuiLayoutType_ // Enum: Horizontal or vertical
|
typedef int ImGuiLayoutType; // -> enum ImGuiLayoutType_ // Enum: Horizontal or vertical
|
||||||
|
|
||||||
|
// Flags
|
||||||
typedef int ImGuiActivateFlags; // -> enum ImGuiActivateFlags_ // Flags: for navigation/focus function (will be for ActivateItem() later)
|
typedef int ImGuiActivateFlags; // -> enum ImGuiActivateFlags_ // Flags: for navigation/focus function (will be for ActivateItem() later)
|
||||||
typedef int ImGuiDebugLogFlags; // -> enum ImGuiDebugLogFlags_ // Flags: for ShowDebugLogWindow(), g.DebugLogFlags
|
typedef int ImGuiDebugLogFlags; // -> enum ImGuiDebugLogFlags_ // Flags: for ShowDebugLogWindow(), g.DebugLogFlags
|
||||||
typedef int ImGuiInputFlags; // -> enum ImGuiInputFlags_ // Flags: for IsKeyPressed(), IsMouseClicked(), SetKeyOwner(), SetItemKeyOwner() etc.
|
typedef int ImGuiInputFlags; // -> enum ImGuiInputFlags_ // Flags: for IsKeyPressed(), IsMouseClicked(), SetKeyOwner(), SetItemKeyOwner() etc.
|
||||||
@ -1228,8 +1234,10 @@ typedef ImBitArray<ImGuiKey_NamedKey_COUNT, -ImGuiKey_NamedKey_BEGIN> ImBitAr
|
|||||||
#define ImGuiKey_Keyboard_END (ImGuiKey_GamepadStart)
|
#define ImGuiKey_Keyboard_END (ImGuiKey_GamepadStart)
|
||||||
#define ImGuiKey_Gamepad_BEGIN (ImGuiKey_GamepadStart)
|
#define ImGuiKey_Gamepad_BEGIN (ImGuiKey_GamepadStart)
|
||||||
#define ImGuiKey_Gamepad_END (ImGuiKey_GamepadRStickDown + 1)
|
#define ImGuiKey_Gamepad_END (ImGuiKey_GamepadRStickDown + 1)
|
||||||
#define ImGuiKey_Aliases_BEGIN (ImGuiKey_MouseLeft)
|
#define ImGuiKey_Mouse_BEGIN (ImGuiKey_MouseLeft)
|
||||||
#define ImGuiKey_Aliases_END (ImGuiKey_MouseWheelY + 1)
|
#define ImGuiKey_Mouse_END (ImGuiKey_MouseWheelY + 1)
|
||||||
|
#define ImGuiKey_Aliases_BEGIN (ImGuiKey_Mouse_BEGIN)
|
||||||
|
#define ImGuiKey_Aliases_END (ImGuiKey_Mouse_END)
|
||||||
|
|
||||||
// [Internal] Named shortcuts for Navigation
|
// [Internal] Named shortcuts for Navigation
|
||||||
#define ImGuiKey_NavKeyboardTweakSlow ImGuiMod_Ctrl
|
#define ImGuiKey_NavKeyboardTweakSlow ImGuiMod_Ctrl
|
||||||
@ -1780,6 +1788,30 @@ struct ImGuiSettingsHandler
|
|||||||
ImGuiSettingsHandler() { memset(this, 0, sizeof(*this)); }
|
ImGuiSettingsHandler() { memset(this, 0, sizeof(*this)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// [SECTION] Localization support
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// This is experimental and not officially supported, it'll probably fall short of features, if/when it does we may backtrack.
|
||||||
|
enum ImGuiLocKey : int
|
||||||
|
{
|
||||||
|
ImGuiLocKey_TableSizeOne,
|
||||||
|
ImGuiLocKey_TableSizeAllFit,
|
||||||
|
ImGuiLocKey_TableSizeAllDefault,
|
||||||
|
ImGuiLocKey_TableResetOrder,
|
||||||
|
ImGuiLocKey_WindowingMainMenuBar,
|
||||||
|
ImGuiLocKey_WindowingPopup,
|
||||||
|
ImGuiLocKey_WindowingUntitled,
|
||||||
|
ImGuiLocKey_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ImGuiLocEntry
|
||||||
|
{
|
||||||
|
ImGuiLocKey Key;
|
||||||
|
const char* Text;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// [SECTION] Metrics, Debug Tools
|
// [SECTION] Metrics, Debug Tools
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -2130,6 +2162,9 @@ struct ImGuiContext
|
|||||||
ImVector<ImGuiContextHook> Hooks; // Hooks for extensions (e.g. test engine)
|
ImVector<ImGuiContextHook> Hooks; // Hooks for extensions (e.g. test engine)
|
||||||
ImGuiID HookIdNext; // Next available HookId
|
ImGuiID HookIdNext; // Next available HookId
|
||||||
|
|
||||||
|
// Localization
|
||||||
|
const char* LocalizationTable[ImGuiLocKey_COUNT];
|
||||||
|
|
||||||
// Capture/Logging
|
// Capture/Logging
|
||||||
bool LogEnabled; // Currently capturing
|
bool LogEnabled; // Currently capturing
|
||||||
ImGuiLogType LogType; // Capture target
|
ImGuiLogType LogType; // Capture target
|
||||||
@ -2310,6 +2345,8 @@ struct ImGuiContext
|
|||||||
SettingsDirtyTimer = 0.0f;
|
SettingsDirtyTimer = 0.0f;
|
||||||
HookIdNext = 0;
|
HookIdNext = 0;
|
||||||
|
|
||||||
|
memset(LocalizationTable, 0, sizeof(LocalizationTable));
|
||||||
|
|
||||||
LogEnabled = false;
|
LogEnabled = false;
|
||||||
LogType = ImGuiLogType_None;
|
LogType = ImGuiLogType_None;
|
||||||
LogNextPrefix = LogNextSuffix = NULL;
|
LogNextPrefix = LogNextSuffix = NULL;
|
||||||
@ -2960,6 +2997,10 @@ namespace ImGui
|
|||||||
IMGUI_API void RemoveSettingsHandler(const char* type_name);
|
IMGUI_API void RemoveSettingsHandler(const char* type_name);
|
||||||
IMGUI_API ImGuiSettingsHandler* FindSettingsHandler(const char* type_name);
|
IMGUI_API ImGuiSettingsHandler* FindSettingsHandler(const char* type_name);
|
||||||
|
|
||||||
|
// Localization
|
||||||
|
IMGUI_API void LocalizeRegisterEntries(const ImGuiLocEntry* entries, int count);
|
||||||
|
inline const char* LocalizeGetMsg(ImGuiLocKey key) { ImGuiContext& g = *GImGui; const char* msg = g.LocalizationTable[key]; return msg ? msg : "*Missing Text*"; }
|
||||||
|
|
||||||
// Scrolling
|
// Scrolling
|
||||||
IMGUI_API void SetScrollX(ImGuiWindow* window, float scroll_x);
|
IMGUI_API void SetScrollX(ImGuiWindow* window, float scroll_x);
|
||||||
IMGUI_API void SetScrollY(ImGuiWindow* window, float scroll_y);
|
IMGUI_API void SetScrollY(ImGuiWindow* window, float scroll_y);
|
||||||
@ -3058,7 +3099,9 @@ namespace ImGui
|
|||||||
inline bool IsNamedKey(ImGuiKey key) { return key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END; }
|
inline bool IsNamedKey(ImGuiKey key) { return key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END; }
|
||||||
inline bool IsNamedKeyOrModKey(ImGuiKey key) { return (key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END) || key == ImGuiMod_Ctrl || key == ImGuiMod_Shift || key == ImGuiMod_Alt || key == ImGuiMod_Super; }
|
inline bool IsNamedKeyOrModKey(ImGuiKey key) { return (key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END) || key == ImGuiMod_Ctrl || key == ImGuiMod_Shift || key == ImGuiMod_Alt || key == ImGuiMod_Super; }
|
||||||
inline bool IsLegacyKey(ImGuiKey key) { return key >= ImGuiKey_LegacyNativeKey_BEGIN && key < ImGuiKey_LegacyNativeKey_END; }
|
inline bool IsLegacyKey(ImGuiKey key) { return key >= ImGuiKey_LegacyNativeKey_BEGIN && key < ImGuiKey_LegacyNativeKey_END; }
|
||||||
|
inline bool IsKeyboardKey(ImGuiKey key) { return key >= ImGuiKey_Keyboard_BEGIN && key < ImGuiKey_Keyboard_END; }
|
||||||
inline bool IsGamepadKey(ImGuiKey key) { return key >= ImGuiKey_Gamepad_BEGIN && key < ImGuiKey_Gamepad_END; }
|
inline bool IsGamepadKey(ImGuiKey key) { return key >= ImGuiKey_Gamepad_BEGIN && key < ImGuiKey_Gamepad_END; }
|
||||||
|
inline bool IsMouseKey(ImGuiKey key) { return key >= ImGuiKey_Mouse_BEGIN && key < ImGuiKey_Mouse_END; }
|
||||||
inline bool IsAliasKey(ImGuiKey key) { return key >= ImGuiKey_Aliases_BEGIN && key < ImGuiKey_Aliases_END; }
|
inline bool IsAliasKey(ImGuiKey key) { return key >= ImGuiKey_Aliases_BEGIN && key < ImGuiKey_Aliases_END; }
|
||||||
inline ImGuiKey ConvertSingleModFlagToKey(ImGuiKey key)
|
inline ImGuiKey ConvertSingleModFlagToKey(ImGuiKey key)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.89.1 WIP
|
// dear imgui, v1.89.1
|
||||||
// (tables and columns code)
|
// (tables and columns code)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3070,15 +3070,15 @@ void ImGui::TableDrawContextMenu(ImGuiTable* table)
|
|||||||
if (column != NULL)
|
if (column != NULL)
|
||||||
{
|
{
|
||||||
const bool can_resize = !(column->Flags & ImGuiTableColumnFlags_NoResize) && column->IsEnabled;
|
const bool can_resize = !(column->Flags & ImGuiTableColumnFlags_NoResize) && column->IsEnabled;
|
||||||
if (MenuItem("Size column to fit###SizeOne", NULL, false, can_resize))
|
if (MenuItem(LocalizeGetMsg(ImGuiLocKey_TableSizeOne), NULL, false, can_resize)) // "###SizeOne"
|
||||||
TableSetColumnWidthAutoSingle(table, column_n);
|
TableSetColumnWidthAutoSingle(table, column_n);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* size_all_desc;
|
const char* size_all_desc;
|
||||||
if (table->ColumnsEnabledFixedCount == table->ColumnsEnabledCount && (table->Flags & ImGuiTableFlags_SizingMask_) != ImGuiTableFlags_SizingFixedSame)
|
if (table->ColumnsEnabledFixedCount == table->ColumnsEnabledCount && (table->Flags & ImGuiTableFlags_SizingMask_) != ImGuiTableFlags_SizingFixedSame)
|
||||||
size_all_desc = "Size all columns to fit###SizeAll"; // All fixed
|
size_all_desc = LocalizeGetMsg(ImGuiLocKey_TableSizeAllFit); // "###SizeAll" All fixed
|
||||||
else
|
else
|
||||||
size_all_desc = "Size all columns to default###SizeAll"; // All stretch or mixed
|
size_all_desc = LocalizeGetMsg(ImGuiLocKey_TableSizeAllDefault); // "###SizeAll" All stretch or mixed
|
||||||
if (MenuItem(size_all_desc, NULL))
|
if (MenuItem(size_all_desc, NULL))
|
||||||
TableSetColumnWidthAutoAll(table);
|
TableSetColumnWidthAutoAll(table);
|
||||||
want_separator = true;
|
want_separator = true;
|
||||||
@ -3087,7 +3087,7 @@ void ImGui::TableDrawContextMenu(ImGuiTable* table)
|
|||||||
// Ordering
|
// Ordering
|
||||||
if (table->Flags & ImGuiTableFlags_Reorderable)
|
if (table->Flags & ImGuiTableFlags_Reorderable)
|
||||||
{
|
{
|
||||||
if (MenuItem("Reset order", NULL, false, !table->IsDefaultDisplayOrder))
|
if (MenuItem(LocalizeGetMsg(ImGuiLocKey_TableResetOrder), NULL, false, !table->IsDefaultDisplayOrder))
|
||||||
table->IsResetDisplayOrderRequest = true;
|
table->IsResetDisplayOrderRequest = true;
|
||||||
want_separator = true;
|
want_separator = true;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.89.1 WIP
|
// dear imgui, v1.89.1
|
||||||
// (widgets code)
|
// (widgets code)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -5112,7 +5112,10 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
|
|
||||||
if (label != label_display_end && !(flags & ImGuiColorEditFlags_NoLabel))
|
if (label != label_display_end && !(flags & ImGuiColorEditFlags_NoLabel))
|
||||||
{
|
{
|
||||||
|
// Position not necessarily next to last submitted button (e.g. if style.ColorButtonPosition == ImGuiDir_Left),
|
||||||
|
// but we need to use SameLine() to setup baseline correctly. Might want to refactor SameLine() to simplify this.
|
||||||
SameLine(0.0f, style.ItemInnerSpacing.x);
|
SameLine(0.0f, style.ItemInnerSpacing.x);
|
||||||
|
window->DC.CursorPos.x = pos.x + ((flags & ImGuiColorEditFlags_NoInputs) ? w_button : w_full + style.ItemInnerSpacing.x);
|
||||||
TextEx(label, label_display_end);
|
TextEx(label, label_display_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user