mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-27 17:10:57 +01:00
Misc merge/small stuff from docking to reduce drift.
Among other things: - mergedcfd23957
(#7940, #7823), also seeac64b6563
(#6716): moved above on 2023/08/14 in both branches. - moving the RenderDimmedBackgrounds() call, fromf422e782
, see676497fe
intently undoingac64b65
-> confusing. (#6716)
This commit is contained in:
parent
30dcdcbe73
commit
a93f7db875
@ -105,14 +105,11 @@ Other changes:
|
|||||||
since GLFW own tests are doing that and it seems unnecessary.
|
since GLFW own tests are doing that and it seems unnecessary.
|
||||||
- Backends: SDL2, SDL3, GLFW, OSX, Allegro: update to set function handlers in ImGuiPlatformIO
|
- Backends: SDL2, SDL3, GLFW, OSX, Allegro: update to set function handlers in ImGuiPlatformIO
|
||||||
instead of ImGuiIO.
|
instead of ImGuiIO.
|
||||||
|
|
||||||
- Examples:
|
- Examples:
|
||||||
- Examples: GLFW (all), SDL2 (all), SDL3 (all), Win32+OpenGL3: rework examples main loop
|
- Examples: GLFW (all), SDL2 (all), SDL3 (all), Win32+OpenGL3: rework examples main loop
|
||||||
to handle minimization without burning CPU or GPU by running unthrottled code. (#7844)
|
to handle minimization without burning CPU or GPU by running unthrottled code. (#7844)
|
||||||
- Examples: SDL3: Update for API changes: SDL_Init() returns 0 on failure.
|
- Examples: SDL3: Update for API changes: SDL_Init() returns 0 on failure.
|
||||||
|
|
||||||
Backends: SDL3: following SDL3 reverting their change, result of SDL_GetGamepads must be freed. (#7918, #7898)
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
VERSION 1.91.0 (Released 2024-07-30)
|
VERSION 1.91.0 (Released 2024-07-30)
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
49
imgui.cpp
49
imgui.cpp
@ -1380,12 +1380,6 @@ ImGuiIO::ImGuiIO()
|
|||||||
FontAllowUserScaling = false;
|
FontAllowUserScaling = false;
|
||||||
DisplayFramebufferScale = ImVec2(1.0f, 1.0f);
|
DisplayFramebufferScale = ImVec2(1.0f, 1.0f);
|
||||||
|
|
||||||
MouseDoubleClickTime = 0.30f;
|
|
||||||
MouseDoubleClickMaxDist = 6.0f;
|
|
||||||
MouseDragThreshold = 6.0f;
|
|
||||||
KeyRepeatDelay = 0.275f;
|
|
||||||
KeyRepeatRate = 0.050f;
|
|
||||||
|
|
||||||
// Miscellaneous options
|
// Miscellaneous options
|
||||||
MouseDrawCursor = false;
|
MouseDrawCursor = false;
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
@ -1404,6 +1398,13 @@ ImGuiIO::ImGuiIO()
|
|||||||
ConfigDebugBeginReturnValueOnce = false;
|
ConfigDebugBeginReturnValueOnce = false;
|
||||||
ConfigDebugBeginReturnValueLoop = false;
|
ConfigDebugBeginReturnValueLoop = false;
|
||||||
|
|
||||||
|
// Inputs Behaviors
|
||||||
|
MouseDoubleClickTime = 0.30f;
|
||||||
|
MouseDoubleClickMaxDist = 6.0f;
|
||||||
|
MouseDragThreshold = 6.0f;
|
||||||
|
KeyRepeatDelay = 0.275f;
|
||||||
|
KeyRepeatRate = 0.050f;
|
||||||
|
|
||||||
// Platform Functions
|
// Platform Functions
|
||||||
// Note: Initialize() will setup default clipboard/ime handlers.
|
// Note: Initialize() will setup default clipboard/ime handlers.
|
||||||
BackendPlatformName = BackendRendererName = NULL;
|
BackendPlatformName = BackendRendererName = NULL;
|
||||||
@ -4229,8 +4230,9 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags)
|
|||||||
// Test if another item is active (e.g. being dragged)
|
// Test if another item is active (e.g. being dragged)
|
||||||
const ImGuiID id = g.LastItemData.ID;
|
const ImGuiID id = g.LastItemData.ID;
|
||||||
if ((flags & ImGuiHoveredFlags_AllowWhenBlockedByActiveItem) == 0)
|
if ((flags & ImGuiHoveredFlags_AllowWhenBlockedByActiveItem) == 0)
|
||||||
if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap && g.ActiveId != window->MoveId)
|
if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap)
|
||||||
return false;
|
if (g.ActiveId != window->MoveId)
|
||||||
|
return false;
|
||||||
|
|
||||||
// Test if interactions on this window are blocked by an active popup or modal.
|
// Test if interactions on this window are blocked by an active popup or modal.
|
||||||
// The ImGuiHoveredFlags_AllowWhenBlockedByPopup flag will be tested here.
|
// The ImGuiHoveredFlags_AllowWhenBlockedByPopup flag will be tested here.
|
||||||
@ -4242,7 +4244,8 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Special handling for calling after Begin() which represent the title bar or tab.
|
// Special handling for calling after Begin() which represent the title bar or tab.
|
||||||
// When the window is skipped/collapsed (SkipItems==true) that last item will never be overwritten so we need to detect the case.
|
// When the window is skipped/collapsed (SkipItems==true) that last item (always ->MoveId submitted by Begin)
|
||||||
|
// will never be overwritten so we need to detect the case.
|
||||||
if (id == window->MoveId && window->WriteAccessed)
|
if (id == window->MoveId && window->WriteAccessed)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -4640,9 +4643,10 @@ void ImGui::UpdateMouseMovingWindowEndFrame()
|
|||||||
StartMouseMovingWindow(g.HoveredWindow); //-V595
|
StartMouseMovingWindow(g.HoveredWindow); //-V595
|
||||||
|
|
||||||
// Cancel moving if clicked outside of title bar
|
// Cancel moving if clicked outside of title bar
|
||||||
if (g.IO.ConfigWindowsMoveFromTitleBarOnly && !(root_window->Flags & ImGuiWindowFlags_NoTitleBar))
|
if (g.IO.ConfigWindowsMoveFromTitleBarOnly)
|
||||||
if (!root_window->TitleBarRect().Contains(g.IO.MouseClickedPos[0]))
|
if (!(root_window->Flags & ImGuiWindowFlags_NoTitleBar))
|
||||||
g.MovingWindow = NULL;
|
if (!root_window->TitleBarRect().Contains(g.IO.MouseClickedPos[0]))
|
||||||
|
g.MovingWindow = NULL;
|
||||||
|
|
||||||
// Cancel moving if clicked over an item which was disabled or inhibited by popups (note that we know HoveredId == 0 already)
|
// Cancel moving if clicked over an item which was disabled or inhibited by popups (note that we know HoveredId == 0 already)
|
||||||
if (g.HoveredIdIsDisabled)
|
if (g.HoveredIdIsDisabled)
|
||||||
@ -5200,7 +5204,7 @@ static void ImGui::RenderDimmedBackgrounds()
|
|||||||
}
|
}
|
||||||
else if (dim_bg_for_window_list)
|
else if (dim_bg_for_window_list)
|
||||||
{
|
{
|
||||||
// Draw dimming behind CTRL+Tab target window
|
// Draw dimming behind CTRL+Tab target window and behind CTRL+Tab UI window
|
||||||
RenderDimmedBackgroundBehindWindow(g.NavWindowingTargetAnim, GetColorU32(ImGuiCol_NavWindowingDimBg, g.DimBgRatio));
|
RenderDimmedBackgroundBehindWindow(g.NavWindowingTargetAnim, GetColorU32(ImGuiCol_NavWindowingDimBg, g.DimBgRatio));
|
||||||
|
|
||||||
// Draw border around CTRL+Tab target window
|
// Draw border around CTRL+Tab target window
|
||||||
@ -5325,9 +5329,6 @@ void ImGui::Render()
|
|||||||
g.IO.MetricsRenderWindows = 0;
|
g.IO.MetricsRenderWindows = 0;
|
||||||
CallContextHooks(&g, ImGuiContextHookType_RenderPre);
|
CallContextHooks(&g, ImGuiContextHookType_RenderPre);
|
||||||
|
|
||||||
// Draw modal/window whitening backgrounds
|
|
||||||
RenderDimmedBackgrounds();
|
|
||||||
|
|
||||||
// Add background ImDrawList (for each active viewport)
|
// Add background ImDrawList (for each active viewport)
|
||||||
for (ImGuiViewportP* viewport : g.Viewports)
|
for (ImGuiViewportP* viewport : g.Viewports)
|
||||||
{
|
{
|
||||||
@ -5336,6 +5337,9 @@ void ImGui::Render()
|
|||||||
AddDrawListToDrawDataEx(&viewport->DrawDataP, viewport->DrawDataBuilder.Layers[0], GetBackgroundDrawList(viewport));
|
AddDrawListToDrawDataEx(&viewport->DrawDataP, viewport->DrawDataBuilder.Layers[0], GetBackgroundDrawList(viewport));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw modal/window whitening backgrounds
|
||||||
|
RenderDimmedBackgrounds();
|
||||||
|
|
||||||
// Add ImDrawList to render
|
// Add ImDrawList to render
|
||||||
ImGuiWindow* windows_to_render_top_most[2];
|
ImGuiWindow* windows_to_render_top_most[2];
|
||||||
windows_to_render_top_most[0] = (g.NavWindowingTarget && !(g.NavWindowingTarget->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus)) ? g.NavWindowingTarget->RootWindow : NULL;
|
windows_to_render_top_most[0] = (g.NavWindowingTarget && !(g.NavWindowingTarget->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus)) ? g.NavWindowingTarget->RootWindow : NULL;
|
||||||
@ -14335,10 +14339,11 @@ static void ImGui::UpdateViewportsNewFrame()
|
|||||||
|
|
||||||
for (ImGuiViewportP* viewport : g.Viewports)
|
for (ImGuiViewportP* viewport : g.Viewports)
|
||||||
{
|
{
|
||||||
// Lock down space taken by menu bars and status bars, reset the offset for fucntions like BeginMainMenuBar() to alter them again.
|
// Lock down space taken by menu bars and status bars
|
||||||
viewport->WorkOffsetMin = viewport->BuildWorkOffsetMin;
|
// Setup initial value for functions like BeginMainMenuBar(), DockSpaceOverViewport() etc.
|
||||||
viewport->WorkOffsetMax = viewport->BuildWorkOffsetMax;
|
viewport->WorkInsetMin = viewport->BuildWorkInsetMin;
|
||||||
viewport->BuildWorkOffsetMin = viewport->BuildWorkOffsetMax = ImVec2(0.0f, 0.0f);
|
viewport->WorkInsetMax = viewport->BuildWorkInsetMax;
|
||||||
|
viewport->BuildWorkInsetMin = viewport->BuildWorkInsetMax = ImVec2(0.0f, 0.0f);
|
||||||
viewport->UpdateWorkRect();
|
viewport->UpdateWorkRect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -15762,9 +15767,9 @@ void ImGui::DebugNodeViewport(ImGuiViewportP* viewport)
|
|||||||
if (open)
|
if (open)
|
||||||
{
|
{
|
||||||
ImGuiWindowFlags flags = viewport->Flags;
|
ImGuiWindowFlags flags = viewport->Flags;
|
||||||
BulletText("Main Pos: (%.0f,%.0f), Size: (%.0f,%.0f)\nWorkArea Offset Left: %.0f Top: %.0f, Right: %.0f, Bottom: %.0f",
|
BulletText("Main Pos: (%.0f,%.0f), Size: (%.0f,%.0f)\nWorkArea Inset Left: %.0f Top: %.0f, Right: %.0f, Bottom: %.0f",
|
||||||
viewport->Pos.x, viewport->Pos.y, viewport->Size.x, viewport->Size.y,
|
viewport->Pos.x, viewport->Pos.y, viewport->Size.x, viewport->Size.y,
|
||||||
viewport->WorkOffsetMin.x, viewport->WorkOffsetMin.y, viewport->WorkOffsetMax.x, viewport->WorkOffsetMax.y);
|
viewport->WorkInsetMin.x, viewport->WorkInsetMin.y, viewport->WorkInsetMax.x, viewport->WorkInsetMax.y);
|
||||||
BulletText("Flags: 0x%04X =%s%s%s", viewport->Flags,
|
BulletText("Flags: 0x%04X =%s%s%s", viewport->Flags,
|
||||||
(flags & ImGuiViewportFlags_IsPlatformWindow) ? " IsPlatformWindow" : "",
|
(flags & ImGuiViewportFlags_IsPlatformWindow) ? " IsPlatformWindow" : "",
|
||||||
(flags & ImGuiViewportFlags_IsPlatformMonitor) ? " IsPlatformMonitor" : "",
|
(flags & ImGuiViewportFlags_IsPlatformMonitor) ? " IsPlatformMonitor" : "",
|
||||||
|
4
imgui.h
4
imgui.h
@ -3447,7 +3447,7 @@ enum ImGuiViewportFlags_
|
|||||||
ImGuiViewportFlags_None = 0,
|
ImGuiViewportFlags_None = 0,
|
||||||
ImGuiViewportFlags_IsPlatformWindow = 1 << 0, // Represent a Platform Window
|
ImGuiViewportFlags_IsPlatformWindow = 1 << 0, // Represent a Platform Window
|
||||||
ImGuiViewportFlags_IsPlatformMonitor = 1 << 1, // Represent a Platform Monitor (unused yet)
|
ImGuiViewportFlags_IsPlatformMonitor = 1 << 1, // Represent a Platform Monitor (unused yet)
|
||||||
ImGuiViewportFlags_OwnedByApp = 1 << 2, // Platform Window: is created/managed by the application (rather than a dear imgui backend)
|
ImGuiViewportFlags_OwnedByApp = 1 << 2, // Platform Window: Is created/managed by the application (rather than a dear imgui backend)
|
||||||
};
|
};
|
||||||
|
|
||||||
// - Currently represents the Platform Window created by the application which is hosting our Dear ImGui windows.
|
// - Currently represents the Platform Window created by the application which is hosting our Dear ImGui windows.
|
||||||
@ -3487,7 +3487,7 @@ struct ImGuiPlatformIO
|
|||||||
IMGUI_API ImGuiPlatformIO();
|
IMGUI_API ImGuiPlatformIO();
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
// Inputs - Interface with OS/backends
|
// Input - Interface with OS/backends
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
// Optional: Access OS clipboard
|
// Optional: Access OS clipboard
|
||||||
|
@ -94,6 +94,7 @@ Index of this file:
|
|||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wpragmas" // warning: unknown option after '#pragma GCC diagnostic' kind
|
#pragma GCC diagnostic ignored "-Wpragmas" // warning: unknown option after '#pragma GCC diagnostic' kind
|
||||||
#pragma GCC diagnostic ignored "-Wclass-memaccess" // [__GNUC__ >= 8] warning: 'memset/memcpy' clearing/writing an object of type 'xxxx' with no trivial copy-assignment; use assignment or value-initialization instead
|
#pragma GCC diagnostic ignored "-Wclass-memaccess" // [__GNUC__ >= 8] warning: 'memset/memcpy' clearing/writing an object of type 'xxxx' with no trivial copy-assignment; use assignment or value-initialization instead
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated-enum-enum-conversion" // warning: bitwise operation between different enumeration types ('XXXFlags_' and 'XXXFlagsPrivate_') is deprecated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// In 1.89.4, we moved the implementation of "courtesy maths operators" from imgui_internal.h in imgui.h
|
// In 1.89.4, we moved the implementation of "courtesy maths operators" from imgui_internal.h in imgui.h
|
||||||
@ -1806,23 +1807,28 @@ struct ImGuiViewportP : public ImGuiViewport
|
|||||||
ImDrawList* BgFgDrawLists[2]; // Convenience background (0) and foreground (1) draw lists. We use them to draw software mouser cursor when io.MouseDrawCursor is set and to draw most debug overlays.
|
ImDrawList* BgFgDrawLists[2]; // Convenience background (0) and foreground (1) draw lists. We use them to draw software mouser cursor when io.MouseDrawCursor is set and to draw most debug overlays.
|
||||||
ImDrawData DrawDataP;
|
ImDrawData DrawDataP;
|
||||||
ImDrawDataBuilder DrawDataBuilder; // Temporary data while building final ImDrawData
|
ImDrawDataBuilder DrawDataBuilder; // Temporary data while building final ImDrawData
|
||||||
ImVec2 WorkOffsetMin; // Work Area: Offset from Pos to top-left corner of Work Area. Generally (0,0) or (0,+main_menu_bar_height). Work Area is Full Area but without menu-bars/status-bars (so WorkArea always fit inside Pos/Size!)
|
|
||||||
ImVec2 WorkOffsetMax; // Work Area: Offset from Pos+Size to bottom-right corner of Work Area. Generally (0,0) or (0,-status_bar_height).
|
// Per-viewport work area
|
||||||
ImVec2 BuildWorkOffsetMin; // Work Area: Offset being built during current frame. Generally >= 0.0f.
|
// - Insets are >= 0.0f values, distance from viewport corners to work area.
|
||||||
ImVec2 BuildWorkOffsetMax; // Work Area: Offset being built during current frame. Generally <= 0.0f.
|
// - BeginMainMenuBar() and DockspaceOverViewport() tend to use work area to avoid stepping over existing contents.
|
||||||
|
// - Generally 'safeAreaInsets' in iOS land, 'DisplayCutout' in Android land.
|
||||||
|
ImVec2 WorkInsetMin; // Work Area inset locked for the frame. GetWorkRect() always fits within GetMainRect().
|
||||||
|
ImVec2 WorkInsetMax; // "
|
||||||
|
ImVec2 BuildWorkInsetMin; // Work Area inset accumulator for current frame, to become next frame's WorkInset
|
||||||
|
ImVec2 BuildWorkInsetMax; // "
|
||||||
|
|
||||||
ImGuiViewportP() { BgFgDrawListsLastFrame[0] = BgFgDrawListsLastFrame[1] = -1; BgFgDrawLists[0] = BgFgDrawLists[1] = NULL; }
|
ImGuiViewportP() { BgFgDrawListsLastFrame[0] = BgFgDrawListsLastFrame[1] = -1; BgFgDrawLists[0] = BgFgDrawLists[1] = NULL; }
|
||||||
~ImGuiViewportP() { if (BgFgDrawLists[0]) IM_DELETE(BgFgDrawLists[0]); if (BgFgDrawLists[1]) IM_DELETE(BgFgDrawLists[1]); }
|
~ImGuiViewportP() { if (BgFgDrawLists[0]) IM_DELETE(BgFgDrawLists[0]); if (BgFgDrawLists[1]) IM_DELETE(BgFgDrawLists[1]); }
|
||||||
|
|
||||||
// Calculate work rect pos/size given a set of offset (we have 1 pair of offset for rect locked from last frame data, and 1 pair for currently building rect)
|
// Calculate work rect pos/size given a set of offset (we have 1 pair of offset for rect locked from last frame data, and 1 pair for currently building rect)
|
||||||
ImVec2 CalcWorkRectPos(const ImVec2& off_min) const { return ImVec2(Pos.x + off_min.x, Pos.y + off_min.y); }
|
ImVec2 CalcWorkRectPos(const ImVec2& inset_min) const { return ImVec2(Pos.x + inset_min.x, Pos.y + inset_min.y); }
|
||||||
ImVec2 CalcWorkRectSize(const ImVec2& off_min, const ImVec2& off_max) const { return ImVec2(ImMax(0.0f, Size.x - off_min.x + off_max.x), ImMax(0.0f, Size.y - off_min.y + off_max.y)); }
|
ImVec2 CalcWorkRectSize(const ImVec2& inset_min, const ImVec2& inset_max) const { return ImVec2(ImMax(0.0f, Size.x - inset_min.x - inset_max.x), ImMax(0.0f, Size.y - inset_min.y - inset_max.y)); }
|
||||||
void UpdateWorkRect() { WorkPos = CalcWorkRectPos(WorkOffsetMin); WorkSize = CalcWorkRectSize(WorkOffsetMin, WorkOffsetMax); } // Update public fields
|
void UpdateWorkRect() { WorkPos = CalcWorkRectPos(WorkInsetMin); WorkSize = CalcWorkRectSize(WorkInsetMin, WorkInsetMax); } // Update public fields
|
||||||
|
|
||||||
// Helpers to retrieve ImRect (we don't need to store BuildWorkRect as every access tend to change it, hence the code asymmetry)
|
// Helpers to retrieve ImRect (we don't need to store BuildWorkRect as every access tend to change it, hence the code asymmetry)
|
||||||
ImRect GetMainRect() const { return ImRect(Pos.x, Pos.y, Pos.x + Size.x, Pos.y + Size.y); }
|
ImRect GetMainRect() const { return ImRect(Pos.x, Pos.y, Pos.x + Size.x, Pos.y + Size.y); }
|
||||||
ImRect GetWorkRect() const { return ImRect(WorkPos.x, WorkPos.y, WorkPos.x + WorkSize.x, WorkPos.y + WorkSize.y); }
|
ImRect GetWorkRect() const { return ImRect(WorkPos.x, WorkPos.y, WorkPos.x + WorkSize.x, WorkPos.y + WorkSize.y); }
|
||||||
ImRect GetBuildWorkRect() const { ImVec2 pos = CalcWorkRectPos(BuildWorkOffsetMin); ImVec2 size = CalcWorkRectSize(BuildWorkOffsetMin, BuildWorkOffsetMax); return ImRect(pos.x, pos.y, pos.x + size.x, pos.y + size.y); }
|
ImRect GetBuildWorkRect() const { ImVec2 pos = CalcWorkRectPos(BuildWorkInsetMin); ImVec2 size = CalcWorkRectSize(BuildWorkInsetMin, BuildWorkInsetMax); return ImRect(pos.x, pos.y, pos.x + size.x, pos.y + size.y); }
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -2612,7 +2618,7 @@ struct IMGUI_API ImGuiWindow
|
|||||||
ImVec2 WindowPadding; // Window padding at the time of Begin().
|
ImVec2 WindowPadding; // Window padding at the time of Begin().
|
||||||
float WindowRounding; // Window rounding at the time of Begin(). May be clamped lower to avoid rendering artifacts with title bar, menu bar etc.
|
float WindowRounding; // Window rounding at the time of Begin(). May be clamped lower to avoid rendering artifacts with title bar, menu bar etc.
|
||||||
float WindowBorderSize; // Window border size at the time of Begin().
|
float WindowBorderSize; // Window border size at the time of Begin().
|
||||||
float TitleBarHeight, MenuBarHeight;
|
float TitleBarHeight, MenuBarHeight; // Note that those used to be function before 2024/05/28. If you have old code calling TitleBarHeight() you can change it to TitleBarHeight.
|
||||||
float DecoOuterSizeX1, DecoOuterSizeY1; // Left/Up offsets. Sum of non-scrolling outer decorations (X1 generally == 0.0f. Y1 generally = TitleBarHeight + MenuBarHeight). Locked during Begin().
|
float DecoOuterSizeX1, DecoOuterSizeY1; // Left/Up offsets. Sum of non-scrolling outer decorations (X1 generally == 0.0f. Y1 generally = TitleBarHeight + MenuBarHeight). Locked during Begin().
|
||||||
float DecoOuterSizeX2, DecoOuterSizeY2; // Right/Down offsets (X2 generally == ScrollbarSize.x, Y2 == ScrollbarSizes.y).
|
float DecoOuterSizeX2, DecoOuterSizeY2; // Right/Down offsets (X2 generally == ScrollbarSize.x, Y2 == ScrollbarSizes.y).
|
||||||
float DecoInnerSizeX1, DecoInnerSizeY1; // Applied AFTER/OVER InnerRect. Specialized for Tables as they use specialized form of clipping and frozen rows/columns are inside InnerRect (and not part of regular decoration sizes).
|
float DecoInnerSizeX1, DecoInnerSizeY1; // Applied AFTER/OVER InnerRect. Specialized for Tables as they use specialized form of clipping and frozen rows/columns are inside InnerRect (and not part of regular decoration sizes).
|
||||||
|
@ -8557,9 +8557,9 @@ bool ImGui::BeginViewportSideBar(const char* name, ImGuiViewport* viewport_p, Im
|
|||||||
|
|
||||||
// Report our size into work area (for next frame) using actual window size
|
// Report our size into work area (for next frame) using actual window size
|
||||||
if (dir == ImGuiDir_Up || dir == ImGuiDir_Left)
|
if (dir == ImGuiDir_Up || dir == ImGuiDir_Left)
|
||||||
viewport->BuildWorkOffsetMin[axis] += axis_size;
|
viewport->BuildWorkInsetMin[axis] += axis_size;
|
||||||
else if (dir == ImGuiDir_Down || dir == ImGuiDir_Right)
|
else if (dir == ImGuiDir_Down || dir == ImGuiDir_Right)
|
||||||
viewport->BuildWorkOffsetMax[axis] -= axis_size;
|
viewport->BuildWorkInsetMax[axis] += axis_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
window_flags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
|
window_flags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
|
||||||
|
Loading…
Reference in New Issue
Block a user