mirror of
https://github.com/ocornut/imgui.git
synced 2025-01-19 01:34:08 +01:00
Merge branch 'master' into docking
# Conflicts: # docs/CHANGELOG.txt # imgui_internal.h
This commit is contained in:
commit
aa81272900
@ -259,13 +259,15 @@ static WGPUProgrammableStageDescriptor ImGui_ImplWGPU_CreateShaderModule(const c
|
|||||||
{
|
{
|
||||||
ImGui_ImplWGPU_Data* bd = ImGui_ImplWGPU_GetBackendData();
|
ImGui_ImplWGPU_Data* bd = ImGui_ImplWGPU_GetBackendData();
|
||||||
|
|
||||||
WGPUShaderModuleWGSLDescriptor wgsl_desc = {};
|
|
||||||
#ifdef IMGUI_IMPL_WEBGPU_BACKEND_DAWN
|
#ifdef IMGUI_IMPL_WEBGPU_BACKEND_DAWN
|
||||||
|
WGPUShaderSourceWGSL wgsl_desc = {};
|
||||||
wgsl_desc.chain.sType = WGPUSType_ShaderSourceWGSL;
|
wgsl_desc.chain.sType = WGPUSType_ShaderSourceWGSL;
|
||||||
|
wgsl_desc.code = { wgsl_source, WGPU_STRLEN };
|
||||||
#else
|
#else
|
||||||
|
WGPUShaderModuleWGSLDescriptor wgsl_desc = {};
|
||||||
wgsl_desc.chain.sType = WGPUSType_ShaderModuleWGSLDescriptor;
|
wgsl_desc.chain.sType = WGPUSType_ShaderModuleWGSLDescriptor;
|
||||||
|
wgsl_desc.code = wgsl_source;
|
||||||
#endif
|
#endif
|
||||||
wgsl_desc.code = wgsl_source;
|
|
||||||
|
|
||||||
WGPUShaderModuleDescriptor desc = {};
|
WGPUShaderModuleDescriptor desc = {};
|
||||||
desc.nextInChain = reinterpret_cast<WGPUChainedStruct*>(&wgsl_desc);
|
desc.nextInChain = reinterpret_cast<WGPUChainedStruct*>(&wgsl_desc);
|
||||||
|
@ -47,12 +47,13 @@ Other changes:
|
|||||||
- Scrollbar: added io.ConfigScrollbarScrollByPage setting (default to true). (#8002, #7328)
|
- Scrollbar: added io.ConfigScrollbarScrollByPage setting (default to true). (#8002, #7328)
|
||||||
Set io.ConfigScrollbarScrollByPage=false to enforce always scrolling to clicked location.
|
Set io.ConfigScrollbarScrollByPage=false to enforce always scrolling to clicked location.
|
||||||
- Backends: SDL3: Update for API changes: SDL_bool removal. SDL_INIT_TIMER removal.
|
- Backends: SDL3: Update for API changes: SDL_bool removal. SDL_INIT_TIMER removal.
|
||||||
|
- Backends: WebGPU: Fixed DAWN api change using WGPUStringView in WGPUShaderSourceWGSL.
|
||||||
|
(#8009, #8010) [@blitz-research]
|
||||||
|
|
||||||
Docking+Viewports Branch:
|
Docking+Viewports Branch:
|
||||||
|
|
||||||
- Backends: SDL2, SDL3: Fixed building for UWP platforms. (#8008)
|
- Backends: SDL2, SDL3: Fixed building for UWP platforms. (#8008)
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
VERSION 1.91.2 (Released 2024-09-19)
|
VERSION 1.91.2 (Released 2024-09-19)
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
226
imgui.cpp
226
imgui.cpp
@ -3870,6 +3870,222 @@ static const ImGuiLocEntry GLocalizationEntriesEnUS[] =
|
|||||||
{ ImGuiLocKey_DockingDragToUndockOrMoveNode,"Click and drag to move or undock whole node." },
|
{ ImGuiLocKey_DockingDragToUndockOrMoveNode,"Click and drag to move or undock whole node." },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ImGuiContext::ImGuiContext(ImFontAtlas* shared_font_atlas)
|
||||||
|
{
|
||||||
|
IO.Ctx = this;
|
||||||
|
InputTextState.Ctx = this;
|
||||||
|
|
||||||
|
Initialized = false;
|
||||||
|
ConfigFlagsCurrFrame = ConfigFlagsLastFrame = ImGuiConfigFlags_None;
|
||||||
|
FontAtlasOwnedByContext = shared_font_atlas ? false : true;
|
||||||
|
Font = NULL;
|
||||||
|
FontSize = FontBaseSize = FontScale = CurrentDpiScale = 0.0f;
|
||||||
|
IO.Fonts = shared_font_atlas ? shared_font_atlas : IM_NEW(ImFontAtlas)();
|
||||||
|
Time = 0.0f;
|
||||||
|
FrameCount = 0;
|
||||||
|
FrameCountEnded = FrameCountPlatformEnded = FrameCountRendered = -1;
|
||||||
|
WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild = false;
|
||||||
|
GcCompactAll = false;
|
||||||
|
TestEngineHookItems = false;
|
||||||
|
TestEngine = NULL;
|
||||||
|
memset(ContextName, 0, sizeof(ContextName));
|
||||||
|
|
||||||
|
InputEventsNextMouseSource = ImGuiMouseSource_Mouse;
|
||||||
|
InputEventsNextEventId = 1;
|
||||||
|
|
||||||
|
WindowsActiveCount = 0;
|
||||||
|
CurrentWindow = NULL;
|
||||||
|
HoveredWindow = NULL;
|
||||||
|
HoveredWindowUnderMovingWindow = NULL;
|
||||||
|
HoveredWindowBeforeClear = NULL;
|
||||||
|
MovingWindow = NULL;
|
||||||
|
WheelingWindow = NULL;
|
||||||
|
WheelingWindowStartFrame = WheelingWindowScrolledFrame = -1;
|
||||||
|
WheelingWindowReleaseTimer = 0.0f;
|
||||||
|
|
||||||
|
DebugDrawIdConflicts = 0;
|
||||||
|
DebugHookIdInfo = 0;
|
||||||
|
HoveredId = HoveredIdPreviousFrame = 0;
|
||||||
|
HoveredIdPreviousFrameItemCount = 0;
|
||||||
|
HoveredIdAllowOverlap = false;
|
||||||
|
HoveredIdIsDisabled = false;
|
||||||
|
HoveredIdTimer = HoveredIdNotActiveTimer = 0.0f;
|
||||||
|
ItemUnclipByLog = false;
|
||||||
|
ActiveId = 0;
|
||||||
|
ActiveIdIsAlive = 0;
|
||||||
|
ActiveIdTimer = 0.0f;
|
||||||
|
ActiveIdIsJustActivated = false;
|
||||||
|
ActiveIdAllowOverlap = false;
|
||||||
|
ActiveIdNoClearOnFocusLoss = false;
|
||||||
|
ActiveIdHasBeenPressedBefore = false;
|
||||||
|
ActiveIdHasBeenEditedBefore = false;
|
||||||
|
ActiveIdHasBeenEditedThisFrame = false;
|
||||||
|
ActiveIdFromShortcut = false;
|
||||||
|
ActiveIdClickOffset = ImVec2(-1, -1);
|
||||||
|
ActiveIdWindow = NULL;
|
||||||
|
ActiveIdSource = ImGuiInputSource_None;
|
||||||
|
ActiveIdMouseButton = -1;
|
||||||
|
ActiveIdPreviousFrame = 0;
|
||||||
|
ActiveIdPreviousFrameIsAlive = false;
|
||||||
|
ActiveIdPreviousFrameHasBeenEditedBefore = false;
|
||||||
|
ActiveIdPreviousFrameWindow = NULL;
|
||||||
|
LastActiveId = 0;
|
||||||
|
LastActiveIdTimer = 0.0f;
|
||||||
|
|
||||||
|
LastKeyboardKeyPressTime = LastKeyModsChangeTime = LastKeyModsChangeFromNoneTime = -1.0;
|
||||||
|
|
||||||
|
ActiveIdUsingNavDirMask = 0x00;
|
||||||
|
ActiveIdUsingAllKeyboardKeys = false;
|
||||||
|
|
||||||
|
CurrentFocusScopeId = 0;
|
||||||
|
CurrentItemFlags = ImGuiItemFlags_None;
|
||||||
|
DebugShowGroupRects = false;
|
||||||
|
|
||||||
|
CurrentViewport = NULL;
|
||||||
|
MouseViewport = MouseLastHoveredViewport = NULL;
|
||||||
|
PlatformLastFocusedViewportId = 0;
|
||||||
|
ViewportCreatedCount = PlatformWindowsCreatedCount = 0;
|
||||||
|
ViewportFocusedStampCount = 0;
|
||||||
|
|
||||||
|
NavWindow = NULL;
|
||||||
|
NavId = NavFocusScopeId = NavActivateId = NavActivateDownId = NavActivatePressedId = 0;
|
||||||
|
NavLayer = ImGuiNavLayer_Main;
|
||||||
|
NavNextActivateId = 0;
|
||||||
|
NavActivateFlags = NavNextActivateFlags = ImGuiActivateFlags_None;
|
||||||
|
NavHighlightActivatedId = 0;
|
||||||
|
NavHighlightActivatedTimer = 0.0f;
|
||||||
|
NavInputSource = ImGuiInputSource_Keyboard;
|
||||||
|
NavLastValidSelectionUserData = ImGuiSelectionUserData_Invalid;
|
||||||
|
NavIdIsAlive = false;
|
||||||
|
NavMousePosDirty = false;
|
||||||
|
NavDisableHighlight = true;
|
||||||
|
NavDisableMouseHover = false;
|
||||||
|
|
||||||
|
NavAnyRequest = false;
|
||||||
|
NavInitRequest = false;
|
||||||
|
NavInitRequestFromMove = false;
|
||||||
|
NavMoveSubmitted = false;
|
||||||
|
NavMoveScoringItems = false;
|
||||||
|
NavMoveForwardToNextFrame = false;
|
||||||
|
NavMoveFlags = ImGuiNavMoveFlags_None;
|
||||||
|
NavMoveScrollFlags = ImGuiScrollFlags_None;
|
||||||
|
NavMoveKeyMods = ImGuiMod_None;
|
||||||
|
NavMoveDir = NavMoveDirForDebug = NavMoveClipDir = ImGuiDir_None;
|
||||||
|
NavScoringDebugCount = 0;
|
||||||
|
NavTabbingDir = 0;
|
||||||
|
NavTabbingCounter = 0;
|
||||||
|
|
||||||
|
NavJustMovedFromFocusScopeId = NavJustMovedToId = NavJustMovedToFocusScopeId = 0;
|
||||||
|
NavJustMovedToKeyMods = ImGuiMod_None;
|
||||||
|
NavJustMovedToIsTabbing = false;
|
||||||
|
NavJustMovedToHasSelectionData = false;
|
||||||
|
|
||||||
|
// All platforms use Ctrl+Tab but Ctrl<>Super are swapped on Mac...
|
||||||
|
// FIXME: Because this value is stored, it annoyingly interfere with toggling io.ConfigMacOSXBehaviors updating this..
|
||||||
|
ConfigNavWindowingKeyNext = IO.ConfigMacOSXBehaviors ? (ImGuiMod_Super | ImGuiKey_Tab) : (ImGuiMod_Ctrl | ImGuiKey_Tab);
|
||||||
|
ConfigNavWindowingKeyPrev = IO.ConfigMacOSXBehaviors ? (ImGuiMod_Super | ImGuiMod_Shift | ImGuiKey_Tab) : (ImGuiMod_Ctrl | ImGuiMod_Shift | ImGuiKey_Tab);
|
||||||
|
NavWindowingTarget = NavWindowingTargetAnim = NavWindowingListWindow = NULL;
|
||||||
|
NavWindowingTimer = NavWindowingHighlightAlpha = 0.0f;
|
||||||
|
NavWindowingToggleLayer = false;
|
||||||
|
NavWindowingToggleKey = ImGuiKey_None;
|
||||||
|
|
||||||
|
DimBgRatio = 0.0f;
|
||||||
|
|
||||||
|
DragDropActive = DragDropWithinSource = DragDropWithinTarget = false;
|
||||||
|
DragDropSourceFlags = ImGuiDragDropFlags_None;
|
||||||
|
DragDropSourceFrameCount = -1;
|
||||||
|
DragDropMouseButton = -1;
|
||||||
|
DragDropTargetId = 0;
|
||||||
|
DragDropAcceptFlags = ImGuiDragDropFlags_None;
|
||||||
|
DragDropAcceptIdCurrRectSurface = 0.0f;
|
||||||
|
DragDropAcceptIdPrev = DragDropAcceptIdCurr = 0;
|
||||||
|
DragDropAcceptFrameCount = -1;
|
||||||
|
DragDropHoldJustPressedId = 0;
|
||||||
|
memset(DragDropPayloadBufLocal, 0, sizeof(DragDropPayloadBufLocal));
|
||||||
|
|
||||||
|
ClipperTempDataStacked = 0;
|
||||||
|
|
||||||
|
CurrentTable = NULL;
|
||||||
|
TablesTempDataStacked = 0;
|
||||||
|
CurrentTabBar = NULL;
|
||||||
|
CurrentMultiSelect = NULL;
|
||||||
|
MultiSelectTempDataStacked = 0;
|
||||||
|
|
||||||
|
HoverItemDelayId = HoverItemDelayIdPreviousFrame = HoverItemUnlockedStationaryId = HoverWindowUnlockedStationaryId = 0;
|
||||||
|
HoverItemDelayTimer = HoverItemDelayClearTimer = 0.0f;
|
||||||
|
|
||||||
|
MouseCursor = ImGuiMouseCursor_Arrow;
|
||||||
|
MouseStationaryTimer = 0.0f;
|
||||||
|
|
||||||
|
TempInputId = 0;
|
||||||
|
memset(&DataTypeZeroValue, 0, sizeof(DataTypeZeroValue));
|
||||||
|
BeginMenuDepth = BeginComboDepth = 0;
|
||||||
|
ColorEditOptions = ImGuiColorEditFlags_DefaultOptions_;
|
||||||
|
ColorEditCurrentID = ColorEditSavedID = 0;
|
||||||
|
ColorEditSavedHue = ColorEditSavedSat = 0.0f;
|
||||||
|
ColorEditSavedColor = 0;
|
||||||
|
WindowResizeRelativeMode = false;
|
||||||
|
ScrollbarSeekMode = 0;
|
||||||
|
ScrollbarClickDeltaToGrabCenter = 0.0f;
|
||||||
|
SliderGrabClickOffset = 0.0f;
|
||||||
|
SliderCurrentAccum = 0.0f;
|
||||||
|
SliderCurrentAccumDirty = false;
|
||||||
|
DragCurrentAccumDirty = false;
|
||||||
|
DragCurrentAccum = 0.0f;
|
||||||
|
DragSpeedDefaultRatio = 1.0f / 100.0f;
|
||||||
|
DisabledAlphaBackup = 0.0f;
|
||||||
|
DisabledStackSize = 0;
|
||||||
|
LockMarkEdited = 0;
|
||||||
|
TooltipOverrideCount = 0;
|
||||||
|
|
||||||
|
PlatformImeData.InputPos = ImVec2(0.0f, 0.0f);
|
||||||
|
PlatformImeDataPrev.InputPos = ImVec2(-1.0f, -1.0f); // Different to ensure initial submission
|
||||||
|
PlatformImeViewport = 0;
|
||||||
|
|
||||||
|
DockNodeWindowMenuHandler = NULL;
|
||||||
|
|
||||||
|
SettingsLoaded = false;
|
||||||
|
SettingsDirtyTimer = 0.0f;
|
||||||
|
HookIdNext = 0;
|
||||||
|
|
||||||
|
memset(LocalizationTable, 0, sizeof(LocalizationTable));
|
||||||
|
|
||||||
|
LogEnabled = false;
|
||||||
|
LogType = ImGuiLogType_None;
|
||||||
|
LogNextPrefix = LogNextSuffix = NULL;
|
||||||
|
LogFile = NULL;
|
||||||
|
LogLinePosY = FLT_MAX;
|
||||||
|
LogLineFirstItem = false;
|
||||||
|
LogDepthRef = 0;
|
||||||
|
LogDepthToExpand = LogDepthToExpandDefault = 2;
|
||||||
|
|
||||||
|
DebugLogFlags = ImGuiDebugLogFlags_OutputToTTY;
|
||||||
|
DebugLocateId = 0;
|
||||||
|
DebugLogAutoDisableFlags = ImGuiDebugLogFlags_None;
|
||||||
|
DebugLogAutoDisableFrames = 0;
|
||||||
|
DebugLocateFrames = 0;
|
||||||
|
DebugBeginReturnValueCullDepth = -1;
|
||||||
|
DebugItemPickerActive = false;
|
||||||
|
DebugItemPickerMouseButton = ImGuiMouseButton_Left;
|
||||||
|
DebugItemPickerBreakId = 0;
|
||||||
|
DebugFlashStyleColorTime = 0.0f;
|
||||||
|
DebugFlashStyleColorIdx = ImGuiCol_COUNT;
|
||||||
|
DebugHoveredDockNode = NULL;
|
||||||
|
|
||||||
|
// Same as DebugBreakClearData(). Those fields are scattered in their respective subsystem to stay in hot-data locations
|
||||||
|
DebugBreakInWindow = 0;
|
||||||
|
DebugBreakInTable = 0;
|
||||||
|
DebugBreakInLocateId = false;
|
||||||
|
DebugBreakKeyChord = ImGuiKey_Pause;
|
||||||
|
DebugBreakInShortcutRouting = ImGuiKey_None;
|
||||||
|
|
||||||
|
memset(FramerateSecPerFrame, 0, sizeof(FramerateSecPerFrame));
|
||||||
|
FramerateSecPerFrameIdx = FramerateSecPerFrameCount = 0;
|
||||||
|
FramerateSecPerFrameAccum = 0.0f;
|
||||||
|
WantCaptureMouseNextFrame = WantCaptureKeyboardNextFrame = WantTextInputNextFrame = -1;
|
||||||
|
memset(TempKeychordName, 0, sizeof(TempKeychordName));
|
||||||
|
}
|
||||||
|
|
||||||
void ImGui::Initialize()
|
void ImGui::Initialize()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
@ -8298,9 +8514,8 @@ void ImGui::PopItemFlag()
|
|||||||
// - Those can be nested but it cannot be used to enable an already disabled section (a single BeginDisabled(true) in the stack is enough to keep everything disabled)
|
// - Those can be nested but it cannot be used to enable an already disabled section (a single BeginDisabled(true) in the stack is enough to keep everything disabled)
|
||||||
// - Visually this is currently altering alpha, but it is expected that in a future styling system this would work differently.
|
// - Visually this is currently altering alpha, but it is expected that in a future styling system this would work differently.
|
||||||
// - Feedback welcome at https://github.com/ocornut/imgui/issues/211
|
// - Feedback welcome at https://github.com/ocornut/imgui/issues/211
|
||||||
// - BeginDisabled(false) essentially does nothing useful but is provided to facilitate use of boolean expressions.
|
// - BeginDisabled(false)/EndDisabled() essentially does nothing but is provided to facilitate use of boolean expressions.
|
||||||
// (as a micro-optimisation if you can avoid calling BeginDisabled(false)/EndDisabled() tens of thousands of times by doing a local check, it won't hurt)
|
// (as a micro-optimization: if you have tens of thousands of BeginDisabled(false)/EndDisabled() pairs, you might want to reformulate your code to avoid making those calls)
|
||||||
// - Optimized shortcuts instead of PushStyleVar() + PushItemFlag()
|
|
||||||
// - Note: mixing up BeginDisabled() and PushItemFlag(ImGuiItemFlags_Disabled) is currently NOT SUPPORTED.
|
// - Note: mixing up BeginDisabled() and PushItemFlag(ImGuiItemFlags_Disabled) is currently NOT SUPPORTED.
|
||||||
void ImGui::BeginDisabled(bool disabled)
|
void ImGui::BeginDisabled(bool disabled)
|
||||||
{
|
{
|
||||||
@ -10908,7 +11123,6 @@ void ImGui::ErrorLogCallbackToDebugLog(void*, const char* fmt, ...)
|
|||||||
// Must be called during or before EndFrame().
|
// Must be called during or before EndFrame().
|
||||||
// This is generally flawed as we are not necessarily End/Popping things in the right order.
|
// This is generally flawed as we are not necessarily End/Popping things in the right order.
|
||||||
// FIXME: Can't recover from inside BeginTabItem/EndTabItem yet.
|
// FIXME: Can't recover from inside BeginTabItem/EndTabItem yet.
|
||||||
// FIXME: Can't recover from interleaved BeginTabBar/Begin
|
|
||||||
void ImGui::ErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback, void* user_data)
|
void ImGui::ErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback, void* user_data)
|
||||||
{
|
{
|
||||||
// PVS-Studio V1044 is "Loop break conditions do not depend on the number of iterations"
|
// PVS-Studio V1044 is "Loop break conditions do not depend on the number of iterations"
|
||||||
@ -10939,7 +11153,7 @@ void ImGui::ErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback, voi
|
|||||||
void ImGui::ErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback, void* user_data)
|
void ImGui::ErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback, void* user_data)
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
while (g.CurrentTable && (g.CurrentTable->OuterWindow == g.CurrentWindow || g.CurrentTable->InnerWindow == g.CurrentWindow))
|
while (g.CurrentTable != NULL && g.CurrentTable->InnerWindow == g.CurrentWindow)
|
||||||
{
|
{
|
||||||
if (log_callback) log_callback(user_data, "Recovered from missing EndTable() in '%s'\n", g.CurrentTable->OuterWindow->Name);
|
if (log_callback) log_callback(user_data, "Recovered from missing EndTable() in '%s'\n", g.CurrentTable->OuterWindow->Name);
|
||||||
EndTable();
|
EndTable();
|
||||||
@ -10948,7 +11162,7 @@ void ImGui::ErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback, vo
|
|||||||
ImGuiWindow* window = g.CurrentWindow;
|
ImGuiWindow* window = g.CurrentWindow;
|
||||||
ImGuiStackSizes* stack_sizes = &g.CurrentWindowStack.back().StackSizesOnBegin;
|
ImGuiStackSizes* stack_sizes = &g.CurrentWindowStack.back().StackSizesOnBegin;
|
||||||
IM_ASSERT(window != NULL);
|
IM_ASSERT(window != NULL);
|
||||||
while (g.CurrentTabBar != NULL) //-V1044
|
while (g.CurrentTabBar != NULL && g.CurrentTabBar->Window == window) //-V1044
|
||||||
{
|
{
|
||||||
if (log_callback) log_callback(user_data, "Recovered from missing EndTabBar() in '%s'\n", window->Name);
|
if (log_callback) log_callback(user_data, "Recovered from missing EndTabBar() in '%s'\n", window->Name);
|
||||||
EndTabBar();
|
EndTabBar();
|
||||||
|
2
imgui.h
2
imgui.h
@ -916,7 +916,7 @@ namespace ImGui
|
|||||||
// - Disable all user interactions and dim items visuals (applying style.DisabledAlpha over current colors)
|
// - Disable all user interactions and dim items visuals (applying style.DisabledAlpha over current colors)
|
||||||
// - Those can be nested but it cannot be used to enable an already disabled section (a single BeginDisabled(true) in the stack is enough to keep everything disabled)
|
// - Those can be nested but it cannot be used to enable an already disabled section (a single BeginDisabled(true) in the stack is enough to keep everything disabled)
|
||||||
// - Tooltips windows by exception are opted out of disabling.
|
// - Tooltips windows by exception are opted out of disabling.
|
||||||
// - BeginDisabled(false) essentially does nothing useful but is provided to facilitate use of boolean expressions. If you can avoid calling BeginDisabled(False)/EndDisabled() best to avoid it.
|
// - BeginDisabled(false)/EndDisabled() essentially does nothing but is provided to facilitate use of boolean expressions (as a micro-optimization: if you have tens of thousands of BeginDisabled(false)/EndDisabled() pairs, you might want to reformulate your code to avoid making those calls)
|
||||||
IMGUI_API void BeginDisabled(bool disabled = true);
|
IMGUI_API void BeginDisabled(bool disabled = true);
|
||||||
IMGUI_API void EndDisabled();
|
IMGUI_API void EndDisabled();
|
||||||
|
|
||||||
|
221
imgui_internal.h
221
imgui_internal.h
@ -2548,221 +2548,7 @@ struct ImGuiContext
|
|||||||
ImVector<char> TempBuffer; // Temporary text buffer
|
ImVector<char> TempBuffer; // Temporary text buffer
|
||||||
char TempKeychordName[64];
|
char TempKeychordName[64];
|
||||||
|
|
||||||
ImGuiContext(ImFontAtlas* shared_font_atlas)
|
ImGuiContext(ImFontAtlas* shared_font_atlas);
|
||||||
{
|
|
||||||
IO.Ctx = this;
|
|
||||||
InputTextState.Ctx = this;
|
|
||||||
|
|
||||||
Initialized = false;
|
|
||||||
ConfigFlagsCurrFrame = ConfigFlagsLastFrame = ImGuiConfigFlags_None;
|
|
||||||
FontAtlasOwnedByContext = shared_font_atlas ? false : true;
|
|
||||||
Font = NULL;
|
|
||||||
FontSize = FontBaseSize = FontScale = CurrentDpiScale = 0.0f;
|
|
||||||
IO.Fonts = shared_font_atlas ? shared_font_atlas : IM_NEW(ImFontAtlas)();
|
|
||||||
Time = 0.0f;
|
|
||||||
FrameCount = 0;
|
|
||||||
FrameCountEnded = FrameCountPlatformEnded = FrameCountRendered = -1;
|
|
||||||
WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild = false;
|
|
||||||
GcCompactAll = false;
|
|
||||||
TestEngineHookItems = false;
|
|
||||||
TestEngine = NULL;
|
|
||||||
memset(ContextName, 0, sizeof(ContextName));
|
|
||||||
|
|
||||||
InputEventsNextMouseSource = ImGuiMouseSource_Mouse;
|
|
||||||
InputEventsNextEventId = 1;
|
|
||||||
|
|
||||||
WindowsActiveCount = 0;
|
|
||||||
CurrentWindow = NULL;
|
|
||||||
HoveredWindow = NULL;
|
|
||||||
HoveredWindowUnderMovingWindow = NULL;
|
|
||||||
HoveredWindowBeforeClear = NULL;
|
|
||||||
MovingWindow = NULL;
|
|
||||||
WheelingWindow = NULL;
|
|
||||||
WheelingWindowStartFrame = WheelingWindowScrolledFrame = -1;
|
|
||||||
WheelingWindowReleaseTimer = 0.0f;
|
|
||||||
|
|
||||||
DebugDrawIdConflicts = 0;
|
|
||||||
DebugHookIdInfo = 0;
|
|
||||||
HoveredId = HoveredIdPreviousFrame = 0;
|
|
||||||
HoveredIdPreviousFrameItemCount = 0;
|
|
||||||
HoveredIdAllowOverlap = false;
|
|
||||||
HoveredIdIsDisabled = false;
|
|
||||||
HoveredIdTimer = HoveredIdNotActiveTimer = 0.0f;
|
|
||||||
ItemUnclipByLog = false;
|
|
||||||
ActiveId = 0;
|
|
||||||
ActiveIdIsAlive = 0;
|
|
||||||
ActiveIdTimer = 0.0f;
|
|
||||||
ActiveIdIsJustActivated = false;
|
|
||||||
ActiveIdAllowOverlap = false;
|
|
||||||
ActiveIdNoClearOnFocusLoss = false;
|
|
||||||
ActiveIdHasBeenPressedBefore = false;
|
|
||||||
ActiveIdHasBeenEditedBefore = false;
|
|
||||||
ActiveIdHasBeenEditedThisFrame = false;
|
|
||||||
ActiveIdFromShortcut = false;
|
|
||||||
ActiveIdClickOffset = ImVec2(-1, -1);
|
|
||||||
ActiveIdWindow = NULL;
|
|
||||||
ActiveIdSource = ImGuiInputSource_None;
|
|
||||||
ActiveIdMouseButton = -1;
|
|
||||||
ActiveIdPreviousFrame = 0;
|
|
||||||
ActiveIdPreviousFrameIsAlive = false;
|
|
||||||
ActiveIdPreviousFrameHasBeenEditedBefore = false;
|
|
||||||
ActiveIdPreviousFrameWindow = NULL;
|
|
||||||
LastActiveId = 0;
|
|
||||||
LastActiveIdTimer = 0.0f;
|
|
||||||
|
|
||||||
LastKeyboardKeyPressTime = LastKeyModsChangeTime = LastKeyModsChangeFromNoneTime = -1.0;
|
|
||||||
|
|
||||||
ActiveIdUsingNavDirMask = 0x00;
|
|
||||||
ActiveIdUsingAllKeyboardKeys = false;
|
|
||||||
|
|
||||||
CurrentFocusScopeId = 0;
|
|
||||||
CurrentItemFlags = ImGuiItemFlags_None;
|
|
||||||
DebugShowGroupRects = false;
|
|
||||||
|
|
||||||
CurrentViewport = NULL;
|
|
||||||
MouseViewport = MouseLastHoveredViewport = NULL;
|
|
||||||
PlatformLastFocusedViewportId = 0;
|
|
||||||
ViewportCreatedCount = PlatformWindowsCreatedCount = 0;
|
|
||||||
ViewportFocusedStampCount = 0;
|
|
||||||
|
|
||||||
NavWindow = NULL;
|
|
||||||
NavId = NavFocusScopeId = NavActivateId = NavActivateDownId = NavActivatePressedId = 0;
|
|
||||||
NavLayer = ImGuiNavLayer_Main;
|
|
||||||
NavNextActivateId = 0;
|
|
||||||
NavActivateFlags = NavNextActivateFlags = ImGuiActivateFlags_None;
|
|
||||||
NavHighlightActivatedId = 0;
|
|
||||||
NavHighlightActivatedTimer = 0.0f;
|
|
||||||
NavInputSource = ImGuiInputSource_Keyboard;
|
|
||||||
NavLastValidSelectionUserData = ImGuiSelectionUserData_Invalid;
|
|
||||||
NavIdIsAlive = false;
|
|
||||||
NavMousePosDirty = false;
|
|
||||||
NavDisableHighlight = true;
|
|
||||||
NavDisableMouseHover = false;
|
|
||||||
|
|
||||||
NavAnyRequest = false;
|
|
||||||
NavInitRequest = false;
|
|
||||||
NavInitRequestFromMove = false;
|
|
||||||
NavMoveSubmitted = false;
|
|
||||||
NavMoveScoringItems = false;
|
|
||||||
NavMoveForwardToNextFrame = false;
|
|
||||||
NavMoveFlags = ImGuiNavMoveFlags_None;
|
|
||||||
NavMoveScrollFlags = ImGuiScrollFlags_None;
|
|
||||||
NavMoveKeyMods = ImGuiMod_None;
|
|
||||||
NavMoveDir = NavMoveDirForDebug = NavMoveClipDir = ImGuiDir_None;
|
|
||||||
NavScoringDebugCount = 0;
|
|
||||||
NavTabbingDir = 0;
|
|
||||||
NavTabbingCounter = 0;
|
|
||||||
|
|
||||||
NavJustMovedFromFocusScopeId = NavJustMovedToId = NavJustMovedToFocusScopeId = 0;
|
|
||||||
NavJustMovedToKeyMods = ImGuiMod_None;
|
|
||||||
NavJustMovedToIsTabbing = false;
|
|
||||||
NavJustMovedToHasSelectionData = false;
|
|
||||||
|
|
||||||
// All platforms use Ctrl+Tab but Ctrl<>Super are swapped on Mac...
|
|
||||||
// FIXME: Because this value is stored, it annoyingly interfere with toggling io.ConfigMacOSXBehaviors updating this..
|
|
||||||
ConfigNavWindowingKeyNext = IO.ConfigMacOSXBehaviors ? (ImGuiMod_Super | ImGuiKey_Tab) : (ImGuiMod_Ctrl | ImGuiKey_Tab);
|
|
||||||
ConfigNavWindowingKeyPrev = IO.ConfigMacOSXBehaviors ? (ImGuiMod_Super | ImGuiMod_Shift | ImGuiKey_Tab) : (ImGuiMod_Ctrl | ImGuiMod_Shift | ImGuiKey_Tab);
|
|
||||||
NavWindowingTarget = NavWindowingTargetAnim = NavWindowingListWindow = NULL;
|
|
||||||
NavWindowingTimer = NavWindowingHighlightAlpha = 0.0f;
|
|
||||||
NavWindowingToggleLayer = false;
|
|
||||||
NavWindowingToggleKey = ImGuiKey_None;
|
|
||||||
|
|
||||||
DimBgRatio = 0.0f;
|
|
||||||
|
|
||||||
DragDropActive = DragDropWithinSource = DragDropWithinTarget = false;
|
|
||||||
DragDropSourceFlags = ImGuiDragDropFlags_None;
|
|
||||||
DragDropSourceFrameCount = -1;
|
|
||||||
DragDropMouseButton = -1;
|
|
||||||
DragDropTargetId = 0;
|
|
||||||
DragDropAcceptFlags = ImGuiDragDropFlags_None;
|
|
||||||
DragDropAcceptIdCurrRectSurface = 0.0f;
|
|
||||||
DragDropAcceptIdPrev = DragDropAcceptIdCurr = 0;
|
|
||||||
DragDropAcceptFrameCount = -1;
|
|
||||||
DragDropHoldJustPressedId = 0;
|
|
||||||
memset(DragDropPayloadBufLocal, 0, sizeof(DragDropPayloadBufLocal));
|
|
||||||
|
|
||||||
ClipperTempDataStacked = 0;
|
|
||||||
|
|
||||||
CurrentTable = NULL;
|
|
||||||
TablesTempDataStacked = 0;
|
|
||||||
CurrentTabBar = NULL;
|
|
||||||
CurrentMultiSelect = NULL;
|
|
||||||
MultiSelectTempDataStacked = 0;
|
|
||||||
|
|
||||||
HoverItemDelayId = HoverItemDelayIdPreviousFrame = HoverItemUnlockedStationaryId = HoverWindowUnlockedStationaryId = 0;
|
|
||||||
HoverItemDelayTimer = HoverItemDelayClearTimer = 0.0f;
|
|
||||||
|
|
||||||
MouseCursor = ImGuiMouseCursor_Arrow;
|
|
||||||
MouseStationaryTimer = 0.0f;
|
|
||||||
|
|
||||||
TempInputId = 0;
|
|
||||||
memset(&DataTypeZeroValue, 0, sizeof(DataTypeZeroValue));
|
|
||||||
BeginMenuDepth = BeginComboDepth = 0;
|
|
||||||
ColorEditOptions = ImGuiColorEditFlags_DefaultOptions_;
|
|
||||||
ColorEditCurrentID = ColorEditSavedID = 0;
|
|
||||||
ColorEditSavedHue = ColorEditSavedSat = 0.0f;
|
|
||||||
ColorEditSavedColor = 0;
|
|
||||||
WindowResizeRelativeMode = false;
|
|
||||||
ScrollbarSeekMode = 0;
|
|
||||||
ScrollbarClickDeltaToGrabCenter = 0.0f;
|
|
||||||
SliderGrabClickOffset = 0.0f;
|
|
||||||
SliderCurrentAccum = 0.0f;
|
|
||||||
SliderCurrentAccumDirty = false;
|
|
||||||
DragCurrentAccumDirty = false;
|
|
||||||
DragCurrentAccum = 0.0f;
|
|
||||||
DragSpeedDefaultRatio = 1.0f / 100.0f;
|
|
||||||
DisabledAlphaBackup = 0.0f;
|
|
||||||
DisabledStackSize = 0;
|
|
||||||
LockMarkEdited = 0;
|
|
||||||
TooltipOverrideCount = 0;
|
|
||||||
|
|
||||||
PlatformImeData.InputPos = ImVec2(0.0f, 0.0f);
|
|
||||||
PlatformImeDataPrev.InputPos = ImVec2(-1.0f, -1.0f); // Different to ensure initial submission
|
|
||||||
PlatformImeViewport = 0;
|
|
||||||
|
|
||||||
DockNodeWindowMenuHandler = NULL;
|
|
||||||
|
|
||||||
SettingsLoaded = false;
|
|
||||||
SettingsDirtyTimer = 0.0f;
|
|
||||||
HookIdNext = 0;
|
|
||||||
|
|
||||||
memset(LocalizationTable, 0, sizeof(LocalizationTable));
|
|
||||||
|
|
||||||
LogEnabled = false;
|
|
||||||
LogType = ImGuiLogType_None;
|
|
||||||
LogNextPrefix = LogNextSuffix = NULL;
|
|
||||||
LogFile = NULL;
|
|
||||||
LogLinePosY = FLT_MAX;
|
|
||||||
LogLineFirstItem = false;
|
|
||||||
LogDepthRef = 0;
|
|
||||||
LogDepthToExpand = LogDepthToExpandDefault = 2;
|
|
||||||
|
|
||||||
DebugLogFlags = ImGuiDebugLogFlags_OutputToTTY;
|
|
||||||
DebugLocateId = 0;
|
|
||||||
DebugLogAutoDisableFlags = ImGuiDebugLogFlags_None;
|
|
||||||
DebugLogAutoDisableFrames = 0;
|
|
||||||
DebugLocateFrames = 0;
|
|
||||||
DebugBeginReturnValueCullDepth = -1;
|
|
||||||
DebugItemPickerActive = false;
|
|
||||||
DebugItemPickerMouseButton = ImGuiMouseButton_Left;
|
|
||||||
DebugItemPickerBreakId = 0;
|
|
||||||
DebugFlashStyleColorTime = 0.0f;
|
|
||||||
DebugFlashStyleColorIdx = ImGuiCol_COUNT;
|
|
||||||
DebugHoveredDockNode = NULL;
|
|
||||||
|
|
||||||
// Same as DebugBreakClearData(). Those fields are scattered in their respective subsystem to stay in hot-data locations
|
|
||||||
DebugBreakInWindow = 0;
|
|
||||||
DebugBreakInTable = 0;
|
|
||||||
DebugBreakInLocateId = false;
|
|
||||||
DebugBreakKeyChord = ImGuiKey_Pause;
|
|
||||||
DebugBreakInShortcutRouting = ImGuiKey_None;
|
|
||||||
|
|
||||||
memset(FramerateSecPerFrame, 0, sizeof(FramerateSecPerFrame));
|
|
||||||
FramerateSecPerFrameIdx = FramerateSecPerFrameCount = 0;
|
|
||||||
FramerateSecPerFrameAccum = 0.0f;
|
|
||||||
WantCaptureMouseNextFrame = WantCaptureKeyboardNextFrame = WantTextInputNextFrame = -1;
|
|
||||||
memset(TempKeychordName, 0, sizeof(TempKeychordName));
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -3010,9 +2796,10 @@ struct ImGuiTabItem
|
|||||||
ImGuiTabItem() { memset(this, 0, sizeof(*this)); LastFrameVisible = LastFrameSelected = -1; RequestedWidth = -1.0f; NameOffset = -1; BeginOrder = IndexDuringLayout = -1; }
|
ImGuiTabItem() { memset(this, 0, sizeof(*this)); LastFrameVisible = LastFrameSelected = -1; RequestedWidth = -1.0f; NameOffset = -1; BeginOrder = IndexDuringLayout = -1; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// Storage for a tab bar (sizeof() 152 bytes)
|
// Storage for a tab bar (sizeof() 160 bytes)
|
||||||
struct IMGUI_API ImGuiTabBar
|
struct IMGUI_API ImGuiTabBar
|
||||||
{
|
{
|
||||||
|
ImGuiWindow* Window;
|
||||||
ImVector<ImGuiTabItem> Tabs;
|
ImVector<ImGuiTabItem> Tabs;
|
||||||
ImGuiTabBarFlags Flags;
|
ImGuiTabBarFlags Flags;
|
||||||
ImGuiID ID; // Zero for tab-bars used by docking
|
ImGuiID ID; // Zero for tab-bars used by docking
|
||||||
@ -4016,7 +3803,7 @@ extern const char* ImGuiTestEngine_FindItemDebugLabel(ImGuiContext* ctx, ImGuiI
|
|||||||
// In IMGUI_VERSION_NUM >= 18934: changed IMGUI_TEST_ENGINE_ITEM_ADD(bb,id) to IMGUI_TEST_ENGINE_ITEM_ADD(id,bb,item_data);
|
// In IMGUI_VERSION_NUM >= 18934: changed IMGUI_TEST_ENGINE_ITEM_ADD(bb,id) to IMGUI_TEST_ENGINE_ITEM_ADD(id,bb,item_data);
|
||||||
#define IMGUI_TEST_ENGINE_ITEM_ADD(_ID,_BB,_ITEM_DATA) if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemAdd(&g, _ID, _BB, _ITEM_DATA) // Register item bounding box
|
#define IMGUI_TEST_ENGINE_ITEM_ADD(_ID,_BB,_ITEM_DATA) if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemAdd(&g, _ID, _BB, _ITEM_DATA) // Register item bounding box
|
||||||
#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS) if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemInfo(&g, _ID, _LABEL, _FLAGS) // Register item label and status flags (optional)
|
#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS) if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemInfo(&g, _ID, _LABEL, _FLAGS) // Register item label and status flags (optional)
|
||||||
#define IMGUI_TEST_ENGINE_LOG(_FMT,...) if (g.TestEngineHookItems) ImGuiTestEngineHook_Log(&g, _FMT, __VA_ARGS__) // Custom log entry from user land into test log
|
#define IMGUI_TEST_ENGINE_LOG(_FMT,...) ImGuiTestEngineHook_Log(&g, _FMT, __VA_ARGS__) // Custom log entry from user land into test log
|
||||||
#else
|
#else
|
||||||
#define IMGUI_TEST_ENGINE_ITEM_ADD(_BB,_ID) ((void)0)
|
#define IMGUI_TEST_ENGINE_ITEM_ADD(_BB,_ID) ((void)0)
|
||||||
#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS) ((void)g)
|
#define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS) ((void)g)
|
||||||
|
@ -9159,6 +9159,7 @@ bool ImGui::BeginTabBarEx(ImGuiTabBar* tab_bar, const ImRect& tab_bar_bb, ImG
|
|||||||
// Add to stack
|
// Add to stack
|
||||||
g.CurrentTabBarStack.push_back(GetTabBarRefFromTabBar(tab_bar));
|
g.CurrentTabBarStack.push_back(GetTabBarRefFromTabBar(tab_bar));
|
||||||
g.CurrentTabBar = tab_bar;
|
g.CurrentTabBar = tab_bar;
|
||||||
|
tab_bar->Window = window;
|
||||||
|
|
||||||
// Append with multiple BeginTabBar()/EndTabBar() pairs.
|
// Append with multiple BeginTabBar()/EndTabBar() pairs.
|
||||||
tab_bar->BackupCursorPos = window->DC.CursorPos;
|
tab_bar->BackupCursorPos = window->DC.CursorPos;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user