Selaa lähdekoodia

Docking: Fixed using GetItemXXX() or IsItemXXX() functions after a DockSpace(). (#6217)

ocornut 2 vuotta sitten
vanhempi
commit
bf87fbcbcc
2 muutettua tiedostoa jossa 7 lisäystä ja 0 poistoa
  1. 1 0
      docs/CHANGELOG.txt
  2. 6 0
      imgui.cpp

+ 1 - 0
docs/CHANGELOG.txt

@@ -122,6 +122,7 @@ Other changes:
 
 Docking+Viewports Branch:
 
+- 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: SDL3: Fixed for compilation with multi-viewports. (#6255) [@P3RK4N]

+ 6 - 0
imgui.cpp

@@ -17494,7 +17494,13 @@ ImGuiID ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags
     DockNodeUpdate(node);
 
     End();
+
+    ImRect bb(node->Pos, node->Pos + size);
     ItemSize(size);
+    ItemAdd(bb, id, NULL, ImGuiItemFlags_NoNav); // Not a nav point (could be, would need to draw the nav rect and replicate/refactor activation from BeginChild(), but seems like CTRL+Tab works better here?)
+    if ((g.LastItemData.StatusFlags & ImGuiItemStatusFlags_HoveredRect) && IsWindowChildOf(g.HoveredWindow, host_window, false, true)) // To fullfill IsItemHovered(), similar to EndChild()
+        g.LastItemData.StatusFlags |= ImGuiItemStatusFlags_HoveredWindow;
+
     return id;
 }