From e5f8340e0b40b146f738e04b35408097e4c67655 Mon Sep 17 00:00:00 2001 From: Marcell Kiss Date: Fri, 18 Apr 2025 23:18:39 +0100 Subject: [PATCH 1/3] Fix logic for dynamic inputs --- src/ImNodeFlow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImNodeFlow.cpp b/src/ImNodeFlow.cpp index fbe2976..bade7df 100644 --- a/src/ImNodeFlow.cpp +++ b/src/ImNodeFlow.cpp @@ -67,7 +67,7 @@ namespace ImFlow { float titleW = ImGui::GetItemRectSize().x; // Inputs - if (!m_ins.empty()) { + if (!m_ins.empty() && !m_dynamicIns.empty()) { ImGui::BeginGroup(); for (auto &p: m_ins) { p->setPos(ImGui::GetCursorPos()); From 14c4dfc095d92d47746d9db19e792e4d824c3273 Mon Sep 17 00:00:00 2001 From: Marcell Kiss Date: Fri, 18 Apr 2025 23:22:25 +0100 Subject: [PATCH 2/3] Update ImNodeFlow.cpp --- src/ImNodeFlow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImNodeFlow.cpp b/src/ImNodeFlow.cpp index bade7df..9ec88e8 100644 --- a/src/ImNodeFlow.cpp +++ b/src/ImNodeFlow.cpp @@ -67,7 +67,7 @@ namespace ImFlow { float titleW = ImGui::GetItemRectSize().x; // Inputs - if (!m_ins.empty() && !m_dynamicIns.empty()) { + if (!m_ins.empty() || !m_dynamicIns.empty()) { ImGui::BeginGroup(); for (auto &p: m_ins) { p->setPos(ImGui::GetCursorPos()); From c7b57e663f74bf857af9f0e384d6cc7df25fbc56 Mon Sep 17 00:00:00 2001 From: Marcell Kiss Date: Sat, 19 Apr 2025 15:04:59 +0100 Subject: [PATCH 3/3] add full node size calculation --- include/ImNodeFlow.h | 7 +++++++ src/ImNodeFlow.cpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/ImNodeFlow.h b/include/ImNodeFlow.h index 222e1df..5ab0f5d 100644 --- a/include/ImNodeFlow.h +++ b/include/ImNodeFlow.h @@ -809,6 +809,12 @@ namespace ImFlow */ const ImVec2& getSize() { return m_size; } + /** + * @brief
Get node size + * @return Const reference to the node's size + */ + const ImVec2& getFullSize() { return m_fullSize; } + /** * @brief
Get node position * @return Const reference to the node's position @@ -886,6 +892,7 @@ namespace ImFlow std::string m_title; ImVec2 m_pos, m_posTarget; ImVec2 m_size; + ImVec2 m_fullSize; ImNodeFlow* m_inf = nullptr; std::shared_ptr m_style; bool m_selected = false, m_selectedNext = false; diff --git a/src/ImNodeFlow.cpp b/src/ImNodeFlow.cpp index 9ec88e8..d77d496 100644 --- a/src/ImNodeFlow.cpp +++ b/src/ImNodeFlow.cpp @@ -140,7 +140,7 @@ namespace ImFlow { m_style->radius); draw_list->AddRectFilled(offset + m_pos - paddingTL, offset + m_pos + headerSize, m_style->header_bg, m_style->radius, ImDrawFlags_RoundCornersTop); - + m_fullSize = m_size + paddingTL + paddingBR; ImU32 col = m_style->border_color; float thickness = m_style->border_thickness; ImVec2 ptl = paddingTL;