mirror of
https://github.com/Drezil/imgui.git
synced 2024-12-19 06:26:35 +00:00
Docking: Hold Shift to force disable docking. (#2109)
This commit is contained in:
parent
c6f1b7b92a
commit
092426bed2
@ -6073,7 +6073,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|||||||
{
|
{
|
||||||
// Docking: Dragging a dockable window (or any of its child) turns it into a drag and drop source.
|
// Docking: Dragging a dockable window (or any of its child) turns it into a drag and drop source.
|
||||||
// We need to do this _before_ we overwrite window->DC.LastItemId below because BeginAsDockableDragDropSource() also overwrites it.
|
// We need to do this _before_ we overwrite window->DC.LastItemId below because BeginAsDockableDragDropSource() also overwrites it.
|
||||||
if ((g.ActiveId == window->MoveId) && ((g.IO.ConfigDockingWithShift && g.IO.KeyShift) || (!g.IO.ConfigDockingWithShift)))
|
if ((g.ActiveId == window->MoveId) && (g.IO.ConfigDockingWithShift == g.IO.KeyShift))
|
||||||
if ((window->Flags & ImGuiWindowFlags_NoMove) == 0)
|
if ((window->Flags & ImGuiWindowFlags_NoMove) == 0)
|
||||||
if ((window->RootWindow->Flags & (ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoDocking)) == 0)
|
if ((window->RootWindow->Flags & (ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoDocking)) == 0)
|
||||||
BeginAsDockableDragDropSource(window);
|
BeginAsDockableDragDropSource(window);
|
||||||
@ -10862,7 +10862,6 @@ namespace ImGui
|
|||||||
static ImGuiDockNode* DockContextAddNode(ImGuiContext* ctx, ImGuiID id);
|
static ImGuiDockNode* DockContextAddNode(ImGuiContext* ctx, ImGuiID id);
|
||||||
static ImGuiID DockContextGenNodeID(ImGuiContext* ctx);
|
static ImGuiID DockContextGenNodeID(ImGuiContext* ctx);
|
||||||
static void DockContextRemoveNode(ImGuiContext* ctx, ImGuiDockNode* node, bool merge_sibling_into_parent_node);
|
static void DockContextRemoveNode(ImGuiContext* ctx, ImGuiDockNode* node, bool merge_sibling_into_parent_node);
|
||||||
static void DockContextQueueDock(ImGuiContext* ctx, ImGuiWindow* target, ImGuiDockNode* target_node, ImGuiWindow* payload, ImGuiDir split_dir, float split_ratio, bool split_outer);
|
|
||||||
static void DockContextQueueNotifyRemovedNode(ImGuiContext* ctx, ImGuiDockNode* node);
|
static void DockContextQueueNotifyRemovedNode(ImGuiContext* ctx, ImGuiDockNode* node);
|
||||||
static void DockContextProcessDock(ImGuiContext* ctx, ImGuiDockRequest* req);
|
static void DockContextProcessDock(ImGuiContext* ctx, ImGuiDockRequest* req);
|
||||||
static void DockContextProcessUndockWindow(ImGuiContext* ctx, ImGuiWindow* window, bool clear_persistent_docking_ref = true);
|
static void DockContextProcessUndockWindow(ImGuiContext* ctx, ImGuiWindow* window, bool clear_persistent_docking_ref = true);
|
||||||
@ -13635,6 +13634,7 @@ void ImGui::BeginAsDockableDragDropTarget(ImGuiWindow* window)
|
|||||||
ImGuiContext* ctx = GImGui;
|
ImGuiContext* ctx = GImGui;
|
||||||
ImGuiContext& g = *ctx;
|
ImGuiContext& g = *ctx;
|
||||||
|
|
||||||
|
//IM_ASSERT(window->RootWindow == window); // May also be a DockSpace
|
||||||
IM_ASSERT((window->Flags & ImGuiWindowFlags_NoDocking) == 0);
|
IM_ASSERT((window->Flags & ImGuiWindowFlags_NoDocking) == 0);
|
||||||
if (!g.DragDropActive)
|
if (!g.DragDropActive)
|
||||||
return;
|
return;
|
||||||
|
@ -1674,6 +1674,7 @@ namespace ImGui
|
|||||||
IMGUI_API void DockContextRebuild(ImGuiContext* ctx);
|
IMGUI_API void DockContextRebuild(ImGuiContext* ctx);
|
||||||
IMGUI_API void DockContextNewFrameUpdateUndocking(ImGuiContext* ctx);
|
IMGUI_API void DockContextNewFrameUpdateUndocking(ImGuiContext* ctx);
|
||||||
IMGUI_API void DockContextNewFrameUpdateDocking(ImGuiContext* ctx);
|
IMGUI_API void DockContextNewFrameUpdateDocking(ImGuiContext* ctx);
|
||||||
|
IMGUI_API void DockContextQueueDock(ImGuiContext* ctx, ImGuiWindow* target, ImGuiDockNode* target_node, ImGuiWindow* payload, ImGuiDir split_dir, float split_ratio, bool split_outer);
|
||||||
IMGUI_API void DockContextQueueUndockWindow(ImGuiContext* ctx, ImGuiWindow* window);
|
IMGUI_API void DockContextQueueUndockWindow(ImGuiContext* ctx, ImGuiWindow* window);
|
||||||
IMGUI_API void DockContextQueueUndockNode(ImGuiContext* ctx, ImGuiDockNode* node);
|
IMGUI_API void DockContextQueueUndockNode(ImGuiContext* ctx, ImGuiDockNode* node);
|
||||||
inline ImGuiDockNode* DockNodeGetRootNode(ImGuiDockNode* node) { while (node->ParentNode) node = node->ParentNode; return node; }
|
inline ImGuiDockNode* DockNodeGetRootNode(ImGuiDockNode* node) { while (node->ParentNode) node = node->ParentNode; return node; }
|
||||||
|
Loading…
Reference in New Issue
Block a user