Using latest imgui docking branch.

This commit is contained in:
Martin Felis
2023-04-15 00:23:52 +02:00
parent 72bcf8a21b
commit 26d070c4d3
43 changed files with 10182 additions and 344 deletions
+387 -2
View File
@@ -31,6 +31,73 @@ HOW TO UPDATE?
- Please report any issue!
-----------------------------------------------------------------------
DOCKING+MULTI-VIEWPORT BRANCH (In Progress)
-----------------------------------------------------------------------
DOCKING FEATURES
(see https://github.com/ocornut/imgui/wiki/Docking for quick intro)
- Added Docking system: [BETA] (#2109, #351)
- Added ImGuiConfigFlags_DockingEnable flag to enable Docking.
Set with `io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;`.
- Added DockSpace(), DockSpaceOverViewport() API.
- Added ImGuiDockNodeFlags flags for DockSpace().
- Added SetNextWindowDockID(), SetNextWindowClass() API.
- Added GetWindowDockID(), IsWindowDocked() API.
- Added ImGuiWindowFlags_NoDocking window flag to disable the possibility for a window to be docked.
Popup, Menu and Child windows always have the ImGuiWindowFlags_NoDocking flag set.
- Added ImGuiWindowClass to specify advanced docking/viewport related flags via SetNextWindowClass().
- Added io.ConfigDockingNoSplit option.
- Added io.ConfigDockingWithShift option.
- Added io.ConfigDockingAlwaysTabBar option.
- Added io.ConfigDockingTransparentPayload option.
- Style: Added ImGuiCol_DockingPreview, ImGuiCol_DockingEmptyBg colors.
- Demo: Added "DockSpace" example app showcasing use of explicit dockspace nodes.
MULTI-VIEWPORT FEATURES
(see https://github.com/ocornut/imgui/wiki/Multi-Viewports for quick intro)
Breaking Changes:
- IMPORTANT: When multi-viewports are enabled (with io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable),
all coordinates/positions will be in your natural OS coordinates space. It means that:
- Reference to hard-coded positions such as in SetNextWindowPos(ImVec2(0,0)) are _probably_ not what you want anymore.
Use GetMainViewport()->Pos to offset hard-coded positions, e.g. SetNextWindowPos(GetMainViewport()->Pos).
- Likewise io.MousePos and GetMousePos() will use OS coordinates.
If you query mouse positions to interact with non-imgui coordinates you will need to offset them.
e.g. subtract GetWindowViewport()->Pos.
- IO: Removed io.DisplayVisibleMin, io.DisplayVisibleMax settings (they were marked obsoleted, used to clip within the (0,0)..(DisplaySize) range).
Other changes:
(FIXME: This need a fuller explanation!)
- Added ImGuiPlatformIO structure and GetPlatformIO().
- Similarly to ImGuiIO and GetIO(), this structure is the main point of communication for backends supporting multi-viewports.
- Backend sets functions in ImGuiPlatformIO to manipulate platform windows.
- ImGuiPlatformIO::Monitors is a list of platform monitors (input from backend)
- ImGuiPlatformIO::Viewports is a list of viewports (output from dear imgui)
- Added ImGuiPlatformMonitor to feed OS monitor information in the ImGuiPlatformIO::Monitors.
- Added GetWindowViewport(), SetNextWindowViewport().
- Added GetWindowDpiScale().
- Added GetOverlayDrawList(ImGuiViewport* viewport).
The no-parameter version of GetOverlayDrawList() return the overlay for the current window's viewport.
- Added UpdatePlatformWindows(), RenderPlatformWindowsDefault(), DestroyPlatformWindows() for usage in application setup.
- Added FindViewportByID(), FindViewportByPlatformHandle() for usage by backends.
- Added ImGuiConfigFlags_ViewportsEnable configuration flag and other viewport options.
- Added io.ConfigViewportsNoAutoMerge option.
- Added io.ConfigViewportsNoTaskBarIcon option.
- Added io.ConfigViewportsNoDecoration option.
- Added io.ConfigViewportsNoDefaultParent option.
- Added ImGuiBackendFlags_PlatformHasViewports, ImGuiBackendFlags_RendererHasViewports, ImGuiBackendFlags_HasMouseHoveredViewport backend flags.
- Added io.AddMouseViewportEvent() (optional _even_ for multi-viewport support, tied to ImGuiBackendFlags_HasMouseHoveredViewport flag).
- Expanded ImGuiViewport structure, ImGuiViewportFlags flags.
- Added ImGuiWindowClass and SetNextWindowClass() for passing viewport related hints to the OS/platform back-end.
- Examples: Renderer: OpenGL2, OpenGL3, DirectX9, DirectX10, DirectX11, DirectX12, Vulkan: Added support for multi-viewports.
- Examples: Platforms: Win32, GLFW, SDL2: Added support for multi-viewports.
Note that Linux/Mac still have inconsistent support for multi-viewports. If you want to help see https://github.com/ocornut/imgui/issues/2117.
-----------------------------------------------------------------------
VERSION 1.89.5 (Released 2023-04-13)
-----------------------------------------------------------------------
@@ -85,7 +152,6 @@ Other changes:
is to other IME function such as SDL_SetTextInputRect(). (#6306, #6071, #1953)
- Backends: GLFW: Added support on Win32 only for io.AddMouseSourceEvent() to discriminate
Mouse/TouchScreen/Pen. (#2334, #2702)
- Backends: GLFW: Fixed key modifiers handling on secondary viewports. (#6248, #6034) [@aiekick]
- Backends: Android: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen.
(#6315) [@PathogenDavid]
- Backends: OSX: Added support for io.AddMouseSourceEvent() to discriminate Mouse/Pen.
@@ -101,6 +167,16 @@ Other changes:
- TestSuite: Added variety of new regression tests and improved/amended existing ones
in imgui_test_engine/ repo. [@PathogenDavid, @ocornut]
Docking+Viewports Branch:
- Viewports: Setting focus from Platform/OS (e.g. via decoration, or Alt-Tab) sets corresponding
focus at Dear ImGui level (generally last focused window in the viewport). (#6299)
- Docking: Fixed using GetItemXXX() or IsItemXXX() functions after a DockSpace(). (#6217)
- Backends: GLFW: Fixed key modifiers handling on secondary viewports. (#6248, #6034) [@aiekick]
- Backends: GLFW: Fixed Emscripten erroneously enabling multi-viewport support, leading to assert. (#5683)
- Backends: SDL2/SDL3: Fixed IME text input rectangle position with viewports. (#6071, #1953)
- Backends: SDL3: Fixed for compilation with multi-viewports. (#6255) [@P3RK4N]
-----------------------------------------------------------------------
VERSION 1.89.4 (Released 2023-03-14)
@@ -173,7 +249,6 @@ Other changes:
and ImGuiConfigFlags_NavEnableGamepad by default. (#787)
- Internals: Misc tweaks to facilitate applying an explicit-context patch. (#5856) [@Dragnalith]
-----------------------------------------------------------------------
VERSION 1.89.3 (Released 2023-02-14)
-----------------------------------------------------------------------
@@ -274,6 +349,10 @@ Other changes:
- Examples: SDL2+SDL_Renderer: Added call to SDL_RenderSetScale() to fix display on a
Retina display (albeit lower-res as our other unmodified examples). (#6121, #6065, #5931).
Docking+Viewports Branch:
- Backends: GLFW: Handle unsupported glfwGetVideoMode() for Emscripten. (#6096)
-----------------------------------------------------------------------
VERSION 1.89.2 (Released 2023-01-05)
@@ -324,6 +403,17 @@ All changes:
- Backends: Vulkan: Fixed sampler passed to ImGui_ImplVulkan_AddTexture() not being honored as we were using
an immutable sampler. (#5502, #6001, #914) [@martin-ejdestig, @rytisss]
Docking+Viewports Branch:
- Docking: Internals: fixed DockBuilderCopyDockSpace() crashing when windows not in the
remapping list are docked on the left or top side of a split. (#6035)
- Docking: fixed DockSpace() with ImGuiDockNodeFlags_KeepAliveOnly marking current window
as written to, even if it doesn't technically submit an item. This allow using KeepAliveOnly
from any window location. (#6037)
- Backends: OSX: fixed typo in ImGui_ImplOSX_GetWindowSize that would cause issues when resiing
from OS decorations, if they are enabled on secondary viewports. (#6009) [@sivu]
- Backends: Metal: fixed secondary viewport rendering. (#6015) [@dmirty-kuzmenko]
-----------------------------------------------------------------------
VERSION 1.89.1 (Released 2022-11-24)
@@ -350,6 +440,13 @@ Other changes:
- 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:
- Viewports: Fixed collapsed windows setting ImGuiViewportFlags_NoRendererClear without
making title bar color opaque, leading to potential texture/fb garbage being visible.
Right now as we don't fully support transparent viewports (#2766), so we turn that
'TitleBgCollapsed' color opaque just lke we do for 'WindowBG' on uncollapsed windows.
-----------------------------------------------------------------------
VERSION 1.89 (Released 2022-11-15)
@@ -541,6 +638,23 @@ Other Changes:
- Backends: Vulkan: Added experimental ImGui_ImplVulkan_RemoveTexture() for api symetry. (#914, #5738).
- Backends: WebGPU: fixed rendering when a depth buffer is enabled. (#5869) [@brainlag]
Docking+Viewports Branch:
- Docking: Fixed incorrect focus highlight on docking node when focusing a menu. (#5702)
- Docking, Nav: Fixed using gamepad/keyboard navigation not being able enter menu layer when
it only contained the standard Collapse/Close buttons and no actual menu. (#5463, #4792)
- Docking: Fixed regression introduced in v1.87 when docked window content not rendered
while switching between with CTRL+Tab. [@rokups]
- Docking: Fixed amending into an existing tab bar from rendering invisible items. (#5515)
- Docking: Made spacing between dock nodes not a dropping gap. When hovering it only
outer-docking drop markers are visible.
- Docking+Viewports: Fixed undocking window node causing parent viewports to become unresponsive
in certain situation (e.g. hidden tab bar). (#5503) [@rokups]
- Backends: SDL: Fixed building backend under non-OSX Apple targets (e.g. iPhone). (#5665)
- Backends: SDL: Fixed drag'n drop crossing a viewport border losing mouse coordinates. (#5710, #5012)
- Backends: GLFW: Fixed leftover static variable preventing from changing or
reinitializing backend while application is running. (#4616, #5434) [@rtoumazet]
-----------------------------------------------------------------------
VERSION 1.88 (Released 2022-06-21)
@@ -675,6 +789,26 @@ Other Changes:
- Examples: Emscripten+WebGPU: Fix building for latest WebGPU specs. (#3632)
- Examples: OSX+Metal, OSX+OpenGL: Removed now-unnecessary calls to ImGui_ImplOSX_HandleEvent(). (#4821)
Docking+Viewports Branch:
- Docking: Fixed floating docked nodes not being clamped into viewport workrect to stay reachable
when io.ConfigWindowsMoveFromTitleBarOnly is true and multi-viewports are disabled. (#5044)
- Docking: Fixed a regression where moving window would be interrupted after undocking a tab
when io.ConfigDockingAlwaysTabBar is true. (#5324) [@rokups]
- Docking: Fixed incorrect focus highlight on docking node when focusing empty central node
or a child window which was manually injected into a dockspace window.
- Docking, Modal: Fixed a crash when opening popup from a parent which is being docked on the same frame. (#5401)
- Viewports: Fixed an issue where MouseViewport was lagging by a frame when using 1.87 Input Queue.
A common side-effect would be that when releasing a window drag the underlying window would highlight
for a frame. (#5837, #4921) [@cfillion]
- Viewports: Fixed translating a host viewport from briefly altering the size of AlwaysAutoResize windows. (#5057)
- Viewports: Fixed main viewport size not matching ImDrawData::DisplaySize for one frame during resize
when multi-viewports are disabled. (#4900)
- Backends: SDL: Fixed dragging out main viewport broken on some SDL setups. (#5012) [@rokups]
- Backends: OSX: Added support for multi-viewports. [@stuartcarnie, @metarutaiga] (#4821, #2778)
- Backends: Metal: Added support for multi-viewports. [@stuartcarnie, @metarutaiga] (#4821, #2778)
- Examples: OSX+Metal, SDL+Metal, GLFW+Metal: Added support for multi-viewports. [@rokups]
-----------------------------------------------------------------------
VERSION 1.87 (Released 2022-02-07)
@@ -817,6 +951,29 @@ Other Changes:
- Backends: WebGPU: Fixed incorrect size parameters in wgpuRenderPassEncoderSetIndexBuffer() and
wgpuRenderPassEncoderSetVertexBuffer() calls. (#4891) [@FeepsDev]
Docking+Viewports Branch:
- Docking: Fixed a CTRL+TAB crash when aiming at an empty docked window. (#4792)
- Docking: Tabs use their own identifier instead of the Window identifier.
(This will invalidate some stored .ini data such as last selected tab, sorry!)
- Docking: Fixed size constraints not working on single window holding on a dock id (still doesn't work on docked windows).
- Docking: Fixed CTRL+TAB back into a docked window not selecting menu layer when no item are on main layer.
- Viewports, IO: Added io.AddMouseViewportEvent() function to queue hovered viewport change (when known by backend).
- Viewports: Relaxed specs for backend supporting ImGuiBackendFlags_HasMouseHoveredViewport: it is now _optional_
for the backend to have to ignore viewports with the _NoInputs flag when call io.AddMouseViewportEvent(). It is
much better if they can (Win32 and GLFW 3.3+ backends can, SDL and GLFW 3.2 backends cannot, they are lacking data).
A concrete example is: when dragging a viewport for docking, the viewport is marked with _NoInputs to allow us
to pick the target viewports for docking. If the backend reports a viewport with _NoInputs when calling the
io.AddMouseViewportEvent() function, then Dear ImGui will revert to its flawed heuristic to find the viewport under.
By lowering those specs, we allow the SDL and more backend to support this, only relying on the heuristic in a few
drag and drop situations rather that relying on it everywhere.
- Viewports: Fixed a CTRL+TAB crash with viewports enabled when the window list needs to appears in
its own viewport (regression from 1.86). (#4023, #787)
- Viewports: Fixed active InputText() from preventing viewports to merge. (#4212)
- Backends: SDL: Added support for ImGuiBackendFlags_HasMouseHoveredViewport now that its specs have been lowered.
- (Breaking) Removed ImGuiPlatformIO::Platform_SetImeInputPos() in favor of newly standardized
io.SetPlatformImeDataFn() function. Should not affect more than default backends.
-----------------------------------------------------------------------
VERSION 1.86 (Released 2021-12-22)
@@ -915,6 +1072,24 @@ Other Changes:
wgpuRenderPassEncoderSetIndexBuffer() functions as validation layers appears to not do what the
in-flux specs says. (#4766) [@meshula]
Docking+Viewports Branch:
- Docking: Revert removal of io.ConfigDockingWithShift config option (removed in 1.83). (#4643)
- Docking: Fixed a bug undocking windows docked into a non-visible or _KeepAliveOnly dockspace
when unrelated windows submitted before the dockspace have dynamic visibility. (#4757)
- Docking, Style: Docked windows honor ImGuiCol_WindowBg. (#2700, #2539)
- Docking, Style: Docked windows honor display their border properly. (#2522)
- Docking: Fixed incorrectly rounded tab bars for dock node that are not at the top of their dock tree.
- Docking: Fixed single-frame node pos/size inconsistencies when window stop or start being submitted.
- Docking: Prevent docking any window created above a popup/modal. (#4317)
- Viewports: Made it possible to explicitly assign ImGuiWindowClass::ParentViewportId to 0 in order
to ensure a window is not parented. Previously this would use the global default (which might be 0,
but not always as it would depend on io.ConfigViewportsNoDefaultParent). (#3152, #2871)
- Viewports: Fixed tooltip in own viewport over modal from being incorrectly dimmed. (#4729)
- Viewports: Fixed CTRL+TAB highlight outline on docked windows not always fitting in host viewport.
- Backends: Made it possible to shutdown default Platform Backends before the Renderer backends. (#4656)
- Disabled: Fixed nested BeginDisabled()/EndDisabled() bug in Docking branch due to bad merge. (#4655, #4452, #4453, #4462)
-----------------------------------------------------------------------
VERSION 1.85 (Released 2021-10-12)
@@ -933,6 +1108,10 @@ Breaking Changes:
Can use 'GetWindowContentRegionMax().x - GetWindowContentRegionMin().x' instead but it's not
very useful in practice, and the only use of it in the demo was illfit.
Using 'GetContentRegionAvail().x' is generally a better choice.
- (Docking branch) IsWindowFocused() and IsWindowHovered() with only the _ChildWindows flag
and without the _RootWindow flag used to leak docking hierarchy, so a docked window would
return as the child of the window hosting the dockspace. This was inconsistent and incorrect
with other behaviors so we fixed it. Added a new _DockHierarchy flag to opt-in this behavior.
Other Changes:
@@ -1006,6 +1185,29 @@ Other Changes:
- Backends: All renderers: Normalize clipping rect handling across backends. (#4464)
- Examples: Added SDL + SDL_Renderer example in "examples/example_sdl_sdlrenderer/" folder. (#3926) [@1bsyl]
Docking+Viewports Branch:
- IsWindowFocused: Fixed using ImGuiFocusedFlags_ChildWindows (without _RootWindow) from leaking the
docking hierarchy. Added ImGuiFocusedFlags_DockHierarchy flag to consider docking hierarchy in the test.
- IsWindowHovered: Fixed using ImGuiHoveredFlags_ChildWindows (without _RootWindow) from leaking the
docking hierarchy. Added ImGuiHoveredFlags_DockHierarchy flag to consider docking hierarchy in the test.
- Nav: Fixed an issue with losing focus on docked windows when pressing Alt while keyboard navigation
is disabled. (#4547, #4439) [@PathogenDavid]
- Docking: Fixed IsItemHovered() and functions depending on it (e.g. BeginPopupContextItem()) when
called after Begin() on a docked window (broken 2021/03/04). (#3851)
- Docking: Improved resizing system so that non-central zone are better at keeping their fixed size.
The algorithm is still not handling the allocation of size ideally for nested sibling, but it got better.
- Docking: Fixed settings load issue when mouse wheeling. (#4310)
- Docking: Fixed manually created floating node with a central node from not hiding when windows are gone.
- Docking + Drag and Drop: Fixed using BeginDragDropSource() or BeginDragDropTarget() inside a Begin()
that returned false because the window is docked. (#4515)
- Viewports: Fixed a crash while a window owning its viewport disappear while being dragged.
It would manifest when e.g. reconfiguring dock nodes while dragging.
- Viewports: Fixed unnecessary creation of temporary viewports when multiple docked windows
got reassigned to a new node (created mid-frame) which already has a HostWindow.
- Viewports: Fixed window with viewport ini data immediately merged into a host viewport from
leaving a temporary viewport alive for a frame (would leak into backend).
-----------------------------------------------------------------------
VERSION 1.84.2 (Released 2021-08-23)
@@ -1142,6 +1344,25 @@ Other Changes:
- Examples: Updated all .vcxproj to VS2015 (toolset v140) to facilitate usage with vcpkg.
- Examples: SDL2: Accommodate for vcpkg install having headers in SDL2/SDL.h vs SDL.h.
Docking+Viewports Branch:
- Docking: Clicking on the right-most close button of a docking node closes all windows. (#4186)
- Docking: Fix IsWindowAppearing() and ImGuiCond_Appearing on docked windows. (#4177, #3982, #1497, #1061)
- Docking: Fix crash using DockBuilderRemoveNode() in some situations. (#3111, #3179, #3203, #4295) [@hsimyu]
- Docking: Fix crash when a dock node gets re-qualified as dockspace>floating>dockspace, which tends to happen
when incorrectly calling DockBuilderAddNode() without ImGuiDockNodeFlags_Dockspace and using it as a Dockspace
on the next frame after the floating window hosting the node has been automatically created. (#3203, #4295)
- Docking: Reworked node flags saving/inheritance so that flags enforced by docked windows via the
DockNodeFlagsOverrideSet mechanism are are not left in empty dockspace nodes once the windows gets undocked.
(#4292, #3834, #3633, #3521, #3492, #3335, #2999, #2648)
- Docking: (Internal/Experimental) Removed DockNodeFlagsOverrideClear flags from ImGuiWindowClass as
it is ambiguous how to apply them and we haven't got a use out of them yet.
- Docking: Fixed ImGuiWindowFlags_UnsavedDocument clipping label in docked windows when there are
no close button. (#5745)
- Viewports: Fix popup/tooltip created without a parent window from being given a ParentViewportId value
from the implicit/fallback window. (#4236, #2409)
- Backends: Vulkan: Fix the use of the incorrect fence for secondary viewports. (#4208) [@FunMiles]
-----------------------------------------------------------------------
VERSION 1.83 (Released 2021-05-24)
@@ -1226,6 +1447,22 @@ Other Changes:
- Docs: Improvements to description of using colored glyphs/emojis. (#4169, #3369)
- Docs: Improvements to minor mistakes in documentation comments (#3923) [@ANF-Studios]
Docking+Viewports Branch:
- [Breaking] Removed io.ConfigDockingWithShift config option. Behavior always equivalent to having the
option set to false (dock/undock by default, hold shift to avoid docking). (#2109)
- Docking: DockSpace() returns its node ID.
- Docking: Dockspace() never draws a background. (#3924)
- Docking: Undocking nodes/windows covering most of the monitor max their size down to 90% to ease manipulations.
- Docking: Docking node tab bar honors ItemInnerSpacing.x before first tab. (#4130)
- Docking: Tweak rendering and alignment of dock node menu marker. (#4130)
- Docking: Fixed restoring of tab order within a dockspace or a split node.
- Docking: Fixed reappearing docked windows with no close button showing a tab with extraneous space for one frame.
- Docking: Fixed multiple simultaneously reappearing window from appearing undocked for one frame.
- Viewports: Hotfix for crash in monitor array access, caused by 4b9bc4902. (#3967)
- Backends, Viewports: GLFW: Add a workaround for stuck keys after closing a GLFW window (#3837).
- Backends, Viewports: Vulkan: Rebuild swapchain on VK_SUBOPTIMAL_KHR. (#3881)
-----------------------------------------------------------------------
VERSION 1.82 (Released 2021-02-15)
@@ -1321,6 +1558,13 @@ Other Changes:
scheduled builds builds are not required. [@rokups]
- Log/Capture: Added LogTextV, a va_list variant of LogText. [@PathogenDavid]
Docking+Viewports Branch:
- Viewports: Fix setting of ImGuiViewportFlags_NoRendererClear. (#3213)
- Viewports: Added GetViewportPlatformMonitor() with a safety net to keep code portable.
- Viewports, Backends: SDL: Fix missing ImGuiBackendFlags_HasSetMousePos flag in docking branch.
- Viewports, Backends: GLFW: Fix application of WantSetMousePos. (#1542, #787)
-----------------------------------------------------------------------
VERSION 1.81 (Released 2021-02-10)
@@ -1402,6 +1646,17 @@ Other Changes:
- Examples: WebGPU: Added Emscripten+WebGPU example. (#3632) [@bfierz]
- Backends: GLFW: Added ImGui_ImplGlfw_InitForOther() initialization call to use with non OpenGL API. (#3632)
Docking+Viewports Branch:
- Docking: Fix losing docking information on closed windows for which the hosting node was split. (#3716) [@GamingMinds-DanielC]
- Docking: Fix gap in hit test hole when using ImGuiDockNodeFlags_PassthruCentralNode touching the edge of a viewport. (#3733)
- Viewports: (Breaking) removed ImGuiPlatformIO::MainViewport which is now pretty much unused and duplicate
(and misleading as we will evolve the concept).
- Viewports: (Breaking) turned ImGuiViewport::GetWorkPos(), ImGuiViewport::GetWorkSize() into regular fields
(WorkPos, WorkSize) before exposing in master branch.
- Viewports: Fix issue inferring viewport z-order when new popups gets created. (#3734) + Metrics updates.
- Viewports, Backends: Vulkan: handle VK_ERROR_OUT_OF_DATE_KHR when resizing secondary viewport (#3766, #3758)
-----------------------------------------------------------------------
VERSION 1.80 (Released 2021-01-21)
@@ -1521,6 +1776,14 @@ Other Changes:
- Docs: Split examples/README.txt into docs/BACKENDS.md and docs/EXAMPLES.md, and improved them.
- Docs: Consistently renamed all occurrences of "binding" and "back-end" to "backend" in comments and docs.
Docking+Viewports Branch:
- Docking: Docked windows honor change of tab and text colors. (#2771)
- Docking: Support for appending into existing tab-bar made to work with Docking + internal helper DockNodeBeginAmendTabBar().
- Docking: Added experimental TabItemFlagsOverrideSet to ImGuiWindowClass.
- Viewports: Fixed incorrect whitening of popups above a modal if both use their own viewport.
- Viewports: Backends: Vulkan: Fixed build, removed extraneous pipeline creation. (#3459, #3579)
-----------------------------------------------------------------------
VERSION 1.79 (Released 2020-10-08)
@@ -1615,6 +1878,21 @@ Other Changes:
- Examples: DX12: Added '#define ImTextureID ImU64' in project and build files to also allow building
on 32-bit systems. Added project to default Visual Studio solution file. (#301)
Docking+Viewports Branch:
- Docking: DockSpace() emits ItemSize() properly (useful when not filling all space).
- Docking: Fixed docking while hovering a child window. (#3420) broken by 85a661d. Improve metrics debugging.
- Docking: Fix honoring payload filter with overlapping nodes (we incorrectly over-relied on g.HoveredDockNode
when making change for #3398).
- Docking: Fix handling of WindowMenuButtonPosition == ImGuiDir_None in Docking Nodes. (#3499)
- Viewports: Fixed a rare edge-case if the window targeted by CTRL+Tab stops being rendered.
- Viewports, Backends: DX12: Make secondary viewport format match main viewport one (#3462) {@BeastLe9enD]
- Viewports: Backends: Vulkan: Removed unused shader code. Fix leaks. Avoid unnecessary pipeline creation for main
viewport. (#3459) + Add ImGui_ImplVulkanH_CreateWindowSwapChain in ImGui_ImplVulkanH_CreateOrResizeWindow().
- Viewports: Backends: DirectX9: Recover from D3DERR_DEVICELOST on secondary viewports. (#3424)
- Viewports, Backends: Win32: Fix toggling of ImGuiViewportFlags_TopMost (#3477) [@Kodokuna]
- Viewports: Backends: GLFW: Workaround for cases where glfwGetMonitorWorkarea fails (#3457) [@dougbinks]
-----------------------------------------------------------------------
VERSION 1.78 (Released 2020-08-18)
@@ -1716,6 +1994,23 @@ Other Changes:
- Examples: Vulkan: Fixed GLFW+Vulkan and SDL+Vulkan clear color not being set. (#3390) [@RoryO]
- CI: Emscripten has stopped their support for their fastcomp backend, switching to latest sdk [@Xipiryon]
Docking+Viewports Branch:
- Docking: Made DockBuilderAddNode() automatically call DockBuilderRemoveNode(). (#3399, #2109)
- Docking: Storing HoveredDockNode in context which can be useful for easily detecting e.g. hovering an
empty node. (#3398)
- Docking: Fixed docking overlay bits appearing at (0,0), because of 43bd80a. Most typically noticeable
when disabling multi-viewport.
- Docking: Workaround recovery for node created without the _DockSpace flags later becoming a DockSpace. (#3340)
- Docking: Rework size allocations to recover when there's no enough room for nodes + do not hold on
_WantLockSizeOnce forever. (#3328)
- Docking: Rework size allocation to allow user code to override node sizes. Not all edge cases will be
properly handled but this is a step toward toolbar emitting size constraints.
- Docking: Added experimental flags to perform more docking filtering and disable resize per axis.
Designed for toolbar patterns.
- Viewports, Backends, GLFW: Use GLFW_MOUSE_PASSTHROUGH when available.
- Viewports, Backends: DX12: Fixed issue on shutdown when viewports are disabled. (#3347)
-----------------------------------------------------------------------
VERSION 1.77 (Released 2020-06-29)
@@ -1807,6 +2102,17 @@ Other Changes:
- Examples: Apple: Fixed example_apple_metal and example_apple_opengl2 using imgui_impl_osx.mm
not forwarding right and center mouse clicks. (#3260) [@nburrus]
Docking+Viewports Branch:
- Viewports: Don't set ImGuiViewportFlags_NoRendererClear when ImGuiWindowFlags_NoBackground is set. (#3213)
- Viewports: Report minimized viewports as zero DisplaySize to be consistent with main branch. (#1542)
- Docking, Settings: Allow reload of settings data at runtime. (#2573)
- Backends, GLFW: Fix windows resizing incorrectly on Linux due to GLFW firing window positioning
callbacks on next frame after window is resized manually. (#2117)
- Backends: DX12: Fix OBJECT_DELETED_WHILE_STILL_IN_USE on viewport resizing. (#3210)
- Backends: DX12: Fix for crash caused by early resource release. (#3121)
- Backends, Win32: Request monitor update when DPI awareness is enabled to make sure they have the correct DPI settings.
-----------------------------------------------------------------------
VERSION 1.76 (Released 2020-04-12)
@@ -1879,6 +2185,20 @@ Other Changes:
- Examples: SDL+DX11: Fixed resizing main window. (#3057) [@joeslay]
- Examples: Added SDL+Metal example application. (#3017) [@coding-jackalope]
Docking+Viewports Branch:
- Docking: Fixed assert preventing dockspace from being created instead a hidden tab. (#3101)
- Viewports: Fixed secondary viewports accidentally merging into a minimized host viewport. (#3118)
- Viewports, Docking: Added per-viewport work area system for e.g. menu-bars. Fixed DockspaceOverViewport()
and demo code (overlay etc) accordingly. (#3035, #2889, #2474, #1542, #2109)
- Viewports: Improve menu positioning in multi-monitor setups. [@rokups]
- Viewports: Software mouse cursor is also scaled by current DpiScale. (amend #939)
- Viewports: Avoid manually clipping resize grips and borders, which messes up with automation ability
to locate those items. Also simpler and more standard.
- Viewports: Fix for UWP in the imgui_impl_win32.cpp IME handler. (#2895, #2892).
- Viewports: Bunch of extra of comments to facilitate setting up multi-viewports.
- Viewports, GLFW: Avoid using window positioning workaround for GLFW 3.3+ versions that have it fixed.
-----------------------------------------------------------------------
VERSION 1.75 (Released 2020-02-10)
@@ -1977,6 +2297,21 @@ Other Changes:
- Examples: Metal: Wrapped main loop in @autoreleasepool block to ensure allocations get freed
even if underlying system event loop gets paused due to app nap. (#2910, #2917) [@bear24rw]
Docking+Viewports Branch:
- Docking + Nav: Fixed messed up Ctrl+Tab order with docked windows.
- Docking + Nav: Fixed failing to restore NavId when refocusing a child within a docked window.
- Docking + Nav: Fixed failing to restore NavId when refocusing due to missing nav window (when
it stops being submitted).
- Docking: Fixed a bug where the tab bar of a hidden dockspace would keep requesting focus. (#2960)
- Docking: Added experimental DockNodeFlagsOverrideSet/DockNodeFlagsOverrideClear flags in ImGuiWindowClass
(currently experimenting with toolbar idioms).
- Viewports: Fix resizing viewport-owning windows when mouse pos is outside the InnerClipRect
(can happen with OS decoration enabled).
- Viewports: Preserve last known size for minimized main viewport to be consistent with secondary viewports.
- Backends: SDL: Honor NoTaskBarIcon flag under non Win32 OS. (#2117)
- Backends: GLFW, SDL: Platform monitors declared properly even if multi-viewport is not enabled.
-----------------------------------------------------------------------
VERSION 1.74 (Released 2019-11-25)
@@ -2056,6 +2391,14 @@ Other Changes:
- CI: Set up a bunch of continuous-integration tests using GitHub Actions. We now compile many of the example
applications on Windows, Linux, MacOS, iOS, Emscripten. Removed Travis integration. (#2865) [@rokups]
Docking+Viewports Branch:
- Docking: Can undock from the small triangle button. (#2109,. #2645)
- Docking: Fixed node->HasCloseButton not honoring ImGuiDockNodeFlags_NoCloseButton in a floating node,
leading to empty space at the right of tab-bars with those flags. (#2109)
- Docking: Made docked windows not use style.ChildRounding.
- Multi-viewports: Added multi-viewport support in the DX12 back-end. (#2851) [@obfuscate]
-----------------------------------------------------------------------
VERSION 1.73 (Released 2019-09-24)
@@ -2118,6 +2461,28 @@ Other Changes:
- Misc: Updated stb_rect_pack.h from 0.99 to 1.00 (fixes by @rygorous: off-by-1 bug in best-fit heuristic,
fix handling of rectangles too large to fit inside texture). (#2762) [@tido64]
Docking+Viewports Branch:
- Docking: Fix BeginDocked() path that creates node so that SetNextWindowDockID() doesn't immediately discard the node. (#2109)
- Docking: Fix for node created at the same time as windows that are still resizing (typically with
io.ConfigDockingAlwaysTabBar) to not be zero/min sized. (#2109). The fix delays their visibility by one frame,
which is not ideal but not very problematic as the .ini data gets populated after that.
- Docking: Fix a crash that could occur with a malformed ini file (DockNode Parent value pointing to a missing node).
- Viewport: Fix modal/popup window being stuck in unowned hidden viewport associated to fallback window without stealing
it back. Fix modal reference viewport when opened outside of another window. (#1542)
- Viewport: Modals don't need to set ImGuiViewportFlags_NoFocusOnClick, this also mitigate the issue described by #2445,
which becomes particularly bad with unfocused modal. (#1542)
- Viewport: better case case where host window gets moved and resized simultaneous (toggling maximized state).
There's no perfect solution there, than using io.ConfigViewportsNoAutoMerge = false. (#1542)
- Viewport, Docking: Fixed incorrect assignment of IsFallbackWindow which would tag dock node host windows created
in NewFrame() as such, messing with popup viewport inheritance.
- Viewport: Fixed issue where resize grip would display as hovered while mouse is still off the OS bounds so a click
would miss it and focus the OS window behind expected one. (#1542)
- Viewport: Fix to allow multiple shutdown / calls to DestroyPlatformWindows(). (#2769)
- Viewport: Backends: GLFW: Fix setting window size on macOS (#2767, #2117) [@rokups]
- Viewport: Backends: GLFW+Linux: Fix window having incorrect size after uncollapse. (#2756, #2117) [@rokups]
- Viewport: Backends: DirectX9: Workaround for windows not refreshing when main viewport has no draw call. (#2560)
-----------------------------------------------------------------------
VERSION 1.72b (Released 2019-07-31)
@@ -2220,6 +2585,25 @@ Other Changes:
(#2482, #2632) [@josiahmanson]
- Examples: Added SDL2+DirectX11 example application. (#2632, #2612, #2482) [@vincenthamm]
Docking+Viewports Branch:
- Docking: Making it possible to undock a node by clicking on the tab bar / title bar for the node. (#2645).
- Docking: Explicitly inhibit constraint when docked for now. Fix clipping issue related to constraints. (#2690).
- Docking: Fixed dragging/resizing from OS decoration not marking settings as dirty.
- Docking: Renamed io.ConfigDockingTabBarOnSingleWindows to io.ConfigDockingAlwaysTabBar.
Added ImGuiWindowClass::DockingAlwaysTabBar to set on individual windows.
- Docking: Perform simple check: assert if Docking or Viewport are enabled exactly on frame 1 (instead of frame 0
or later), which is a common user error leading to loss of .ini data on load.
- Docking: Fix so that an appearing window making a dock node reappear won't have a zero-size on its first frame.
- Docking: Fixed using ImGuiDockNodeFlags_AutoHideTabBar with io.ConfigDockingTabBarOnSingleWindows.
- Docking: Added ImGuiDockNode to .natvis file.
- Docking: Fixed support for large meshes in GetBackgroundDrawList(), GetForegroundDrawList(). (#2638)
- Viewport: Fix monitor dpi info not being copied to main viewport when multi-viewports are not enabled. (#2621, #1676)
- Viewport: Refactored ImGuiWindowClass's ViewportFlagsOverrideMask + ViewportFlagsOverrideValue into
ViewportFlagsOverrideSet + ViewportFlagsOverrideClear which appears easier to grasp. (#1542)
- Viewport: Added ImGuiViewportFlags_NoAutoMerge to prevent merging into host viewport in a per-window basis
via the ImGuiWindowClass override mechanism. (#1542)
-----------------------------------------------------------------------
VERSION 1.71 (Released 2019-06-12)
@@ -2559,6 +2943,7 @@ Breaking Changes:
- Renamed ImFontAtlas::GlyphRangesBuilder to ImFontGlyphRangesBuilder. Kept redirection typedef (will obsolete).
Other Changes:
- Added BETA api for Tab Bar/Tabs widgets: (#261, #351)
- Added BeginTabBar(), EndTabBar(), BeginTabItem(), EndTabItem(), SetTabItemClosed() API.
- Added ImGuiTabBarFlags flags for BeginTabBar().
+44 -1
View File
@@ -140,7 +140,36 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i
- separator: width, thickness, centering (#1643)
- splitter: formalize the splitter idiom into an official api (we want to handle n-way split) (#319)
- dock: merge docking branch (#2109)
- docking: merge docking branch (#2109)
- docking: B: ordering currently held in tab bar should be implicitly held by windows themselves (also see #2304)
- docking: B- tab bar: the order/focus restoring code could be part of TabBar and not DockNode? (#8)
- docking: B~ rework code to be able to lazily create tab bar instance in a single place. The _Unsorted tab flag could be replacing a trailing-counter in DockNode?
- docking: B~ fully track windows/settings reference in dock nodes. perhaps find a representation that allows facilitate use of dock builder functions.
- docking: B~ Unreal style document system (requires low-level controls of dockspace serialization fork/copy/delete). this is mostly working but the DockBuilderXXX api are not exposed/finished.
- docking: B: when docking outer, perform size locking on neighbors nodes the same way we do it with splitters, so other nodes are not resized.
- docking: B~ central node resizing behavior incorrect.
- docking: B: changing title font/style per-window is not supported as dock nodes are created in NewFrame.
- docking: B- dock node inside its own viewports creates 1 temporary viewport per window on startup before ditching them (doesn't affect the user nor request platform windows to be created, but unnecessary)
- docking: B- resize sibling locking behavior may be less desirable if we merged same-axis sibling in a same node level?
- docking: B- single visible node part of a hidden split hierarchy (OnlyNodeWithWindows != NULL) should show a normal title bar (not a tab bar)
- docking: B~ SetNextWindowDock() calls (with conditional) -> defer everything to DockContextUpdate (repro: Documents->[X]Windows->Dock 1 elsewhere->Click Redock All
- docking: B~ tidy up tab list popup buttons features (available with manual tab-bar, see ImGuiTabBarFlags_NoTabListPopupButton code, not used by docking nodes)
- docking: B- SetNextWindowDockId(0) with a second Begin() in the frame will asserts
- docking: B: resize grip drawn in host window typically appears under scrollbar.
- docking: B: resize grip auto-resize on multiple node hierarchy doesn't make much sense or should be improved?
- docking: B- SetNextWindowFocus() doesn't seem to apply if the window is hidden this frame, need repro (#4)
- docking: B- resizing a dock tree small currently has glitches (overlapping collapse and close button, etc.)
- docking: B- dpi: look at interaction with the hi-dpi and multi-dpi stuff.
- docking: B- tab bar: appearing on first frame with a dumb layout would do less harm that not appearing? (when behind dynamic branch) or store titles + render in EndTabBar()
- docking: B- tab bar: make selected tab always shows its full title?
- docking: B- hide close button on single tab bar?
- docking: B- nav: design interactions so nav controls can dock/undock
- docking: B- dockspace: flag to lock the dock tree and/or sizes (ImGuiDockNodeFlags_Locked?)
- docking: B- reintroduce collapsing a floating dock node. also collapsing a docked dock node!
- docking: B- allow dragging a non-floating dock node by clicking on the title-bar-looking section (not just the collapse/menu button)
- docking: B- option to remember undocked window size? (instead of keeping their docked size) (relate to #2104)
- docking: C- nav: CTRL+TAB highlighting tabs shows the mismatch between focus-stack and tab-order (not visible in VS because it doesn't highlight the tabs)
- docking: C- after a dock/undock, the Scrollbar Status update in Begin() should use an updated e.g. size_y_for_scrollbars to avoid a 1 frame scrollbar flicker.
- tabs: "there is currently a problem because TabItem() will try to submit their own tooltip after 0.50 second, and this will have the effect of making your tooltip flicker once." -> tooltip priority work (WIP branch)
- tabs: make EndTabBar fail if users doesn't respect BeginTabBar return value, for consistency/future-proofing.
@@ -325,6 +354,20 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i
- nav/windowing: Resizing window will currently fail with certain types of resizing constraints/callback applied
- focus: preserve ActiveId/focus stack state, e.g. when opening a menu and close it, previously selected InputText() focus gets restored (#622)
- viewport: make it possible to have no main/hosting viewport
- viewport: We set ImGuiViewportFlags_NoFocusOnAppearing in a way that is required for GLFW/SDL binding, but could be handled better without
on a custom e.g. Win32 bindings. It prevents newly dragged-out viewports from taking the focus, which makes ALT+F4 more ambiguous.
- viewport: not focusing newly undocked viewport means clicking back on previous one doesn't bring OS window to front.
- viewport: with platform decoration enabled, platform may force constraint (e.g. minimum size)
- viewport: use getfocus/setfocus api to synchronize imgui<>platform focus better (e.g imgui-side ctrl-tab can focus os window, OS initial setup and alt-tab can focus imgui window etc.)
- viewport: store per-viewport/monitor DPI in .ini file so an application reload or main window changing DPI on reload can be properly patched for.
- viewport: implicit/fallback Debug window can hog a zombie viewport (harmless, noisy?) > could at least clear out the reference on a per session basis?
- viewport: need to clarify how to use GetMousePos() from a user point of view.
- platform: glfw: no support for ImGuiBackendFlags_HasMouseHoveredViewport.
- platform: sdl: no support for ImGuiBackendFlags_HasMouseHoveredViewport. maybe we could use SDL_GetMouseFocus() / SDL_WINDOW_MOUSE_FOCUS if imgui could fallback on its heuristic when NoInputs is set
- platform: sdl: no refresh of monitor/display (SDL doesn't seem to have an event for it).
- platform: sdl: multi-viewport + minimized window seems to break mouse wheel events (at least under Win32).
- inputs: we need an explicit flag about whether the platform window is focused, to be able to distinguish focused key releases vs alt-tabbing all release behaviors.
- inputs: support track pad style scrolling & slider edit.
- inputs/io: backspace and arrows in the context of a text input could use system repeat rate.