You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Version: The version in docking that's in commit 4fdafe
Branch: docking
Back-end/Renderer/Compiler/OS
Back-ends: Custom backend
Compiler: MSVC
Operating System: Windows
My Issue/Question:
I am not sure what I am doing wrong here. I have a scene hierarchy window that recursively renders tree nodes. I want to add DnD to it so that I can reparent nodes anywhere. However, the drop target do not seem to be working. Drop target logic does not get triggered (even breakpoints do not trigger it). For the sake of testing, I have removed all the other operations (click, right click, and rendering children) and kept it as simple as possible:
int treeNodeFlags = ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_FramePadding;
if (isLeaf) {
treeNodeFlags |= ImGuiTreeNodeFlags_Leaf;
}
if (state.selectedEntity == entity) {
treeNodeFlags |= ImGuiTreeNodeFlags_Selected;
}
auto nodeName = getNodeName(name, entity)
ImGui::TreeNodeEx(nodeName.c_str(), treeNodeFlags);
if (ImGui::BeginDragDropSource()) {
// `entity` is a uint32_tImGui::SetDragDropPayload("Entity", &entity, sizeof(Entity));
ImGui::Text("%s", nodeName.c_str());
ImGui::EndDragDropSource();
}
if (ImGui::BeginDragDropTarget()) {
if (auto *payload = ImGui::AcceptDragDropPayload("Entity", 0)) {
auto entity = *static_cast<Entity *>(payload->Data);
std::cout << "Entity : " << entity << "\n";
}
ImGui::EndDragDropTarget();
}
ImGui::TreePop();
The text was updated successfully, but these errors were encountered:
Code looks good to me, I can't spot any mistakes. Looks pretty similar to the drag&drop handling in an outliner window I made (also using the docking branch). Since you mentioned custom backends, can you reproduce the issue with default backends as well? Just to make sure that the culprit isn't hiding in there.
Another idea: are your node names guaranteed unique? If not, repeating names could mess up the id stack and that might interfere with proper handling as well. In that case, surrounding your TreeNodeEx() with PushID() and PopID() might help.
One general hint I can give is to not repeat the payload string, use something like constexpr char const* Entity_Payload = "Entity"; instead. That's not the problem here, but can save headaches when it gets more complex.
Version/Branch of Dear ImGui:
Version: The version in docking that's in commit 4fdafe
Branch: docking
Back-end/Renderer/Compiler/OS
Back-ends: Custom backend
Compiler: MSVC
Operating System: Windows
My Issue/Question:
I am not sure what I am doing wrong here. I have a scene hierarchy window that recursively renders tree nodes. I want to add DnD to it so that I can reparent nodes anywhere. However, the drop target do not seem to be working. Drop target logic does not get triggered (even breakpoints do not trigger it). For the sake of testing, I have removed all the other operations (click, right click, and rendering children) and kept it as simple as possible:
The text was updated successfully, but these errors were encountered: