diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 5cbcb9018bd4..e98bbe324f9d 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -126,6 +126,15 @@ Other Changes: - Examples: Vulkan: Rebuild swapchain on VK_SUBOPTIMAL_KHR. (#3881) - Docs: Improvements to minor mistakes in documentation comments (#3923) [@ANF-Studios] +Docking Branch: + +- 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 further manipulations. +- 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) diff --git a/imgui.cpp b/imgui.cpp index 456bf78a998e..1610d96e2923 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -14730,13 +14730,13 @@ void ImGui::SetWindowDock(ImGuiWindow* window, ImGuiID dock_id, ImGuiCond cond) // Create an explicit dockspace node within an existing window. Also expose dock node flags and creates a CentralNode by default. // The Central Node is always displayed even when empty and shrink/extend according to the requested size of its neighbors. // DockSpace() needs to be submitted _before_ any window they can host. If you use a dockspace, submit it early in your app. -void ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags flags, const ImGuiWindowClass* window_class) +ImGuiID ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags flags, const ImGuiWindowClass* window_class) { ImGuiContext* ctx = GImGui; ImGuiContext& g = *ctx; ImGuiWindow* window = GetCurrentWindow(); if (!(g.IO.ConfigFlags & ImGuiConfigFlags_DockingEnable)) - return; + return 0; // Early out if parent window is hidden/collapsed // This is faster but also DockNodeUpdateTabBar() relies on TabBarLayout() running (which won't if SkipItems=true) to set NextSelectedTabId = 0). See #2960. @@ -14764,7 +14764,7 @@ void ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags fla { IM_ASSERT(node->IsDockSpace() == false && "Cannot call DockSpace() twice a frame with the same ID"); node->LocalFlags |= ImGuiDockNodeFlags_DockSpace; - return; + return id; } node->LocalFlags |= ImGuiDockNodeFlags_DockSpace; @@ -14772,7 +14772,7 @@ void ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags fla if (flags & ImGuiDockNodeFlags_KeepAliveOnly) { node->LastFrameAlive = g.FrameCount; - return; + return id; } const ImVec2 content_avail = GetContentRegionAvail(); @@ -14825,6 +14825,7 @@ void ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags fla End(); ItemSize(size); + return id; } // Tips: Use with ImGuiDockNodeFlags_PassthruCentralNode! diff --git a/imgui.h b/imgui.h index 48808aabec0e..5f15350e9a23 100644 --- a/imgui.h +++ b/imgui.h @@ -764,7 +764,7 @@ namespace ImGui // About DockSpace: // - Use DockSpace() to create an explicit dock node _within_ an existing window. See Docking demo for details. // - DockSpace() needs to be submitted _before_ any window they can host. If you use a dockspace, submit it early in your app. - IMGUI_API void DockSpace(ImGuiID id, const ImVec2& size = ImVec2(0, 0), ImGuiDockNodeFlags flags = 0, const ImGuiWindowClass* window_class = NULL); + IMGUI_API ImGuiID DockSpace(ImGuiID id, const ImVec2& size = ImVec2(0, 0), ImGuiDockNodeFlags flags = 0, const ImGuiWindowClass* window_class = NULL); IMGUI_API ImGuiID DockSpaceOverViewport(const ImGuiViewport* viewport = NULL, ImGuiDockNodeFlags flags = 0, const ImGuiWindowClass* window_class = NULL); IMGUI_API void SetNextWindowDockID(ImGuiID dock_id, ImGuiCond cond = 0); // set next window dock id (FIXME-DOCK) IMGUI_API void SetNextWindowClass(const ImGuiWindowClass* window_class); // set next window class (rare/advanced uses: provide hints to the platform backend via altered viewport flags and parent/child info)