diff --git a/src/node.cpp b/src/node.cpp index 8a77f46..92bdd99 100644 --- a/src/node.cpp +++ b/src/node.cpp @@ -607,6 +607,9 @@ bool Node::is_child(Node* o) const void Node::mouse_capture() { + if (!m_parent || !m_manager) + return; + auto root = m_manager->get_ref("main"); if (!root) return; @@ -649,7 +652,7 @@ void Node::mouse_capture() void Node::mouse_release() { - if (!m_parent) + if (!m_parent || !m_manager) return; auto root = m_manager->get_ref("main"); @@ -678,7 +681,7 @@ void Node::mouse_release() void Node::key_capture() { - if (!m_parent) + if (!m_parent || !m_manager) return; auto root = m_manager->get_ref("main"); @@ -690,6 +693,9 @@ void Node::key_capture() void Node::key_release() { + if (!m_parent || !m_manager) + return; + auto root = m_manager->get_ref("main"); if (!root) return; diff --git a/src/node_panel_floating.cpp b/src/node_panel_floating.cpp index c3116cd..fd489ed 100644 --- a/src/node_panel_floating.cpp +++ b/src/node_panel_floating.cpp @@ -167,8 +167,12 @@ kEventResult NodePanelFloating::handle_event(Event* e) m_dragging = false; if (m_action == kDragAction::Move) { + glm::vec2 outline_pos(0); if (m_outline) + { + outline_pos = m_outline->m_pos; m_outline->destroy(); + } int drop_pos = 0; if (m_drop_placeholder) { @@ -204,7 +208,7 @@ kEventResult NodePanelFloating::handle_event(Event* e) { auto cont = root()->find("floatings"); SetPositioning(YGPositionTypeAbsolute); - auto newpos = glm::clamp(m_outline->m_pos - cont->m_pos, { 0, 0 }, cont->m_size - m_size); + auto newpos = glm::clamp(outline_pos - cont->m_pos, { 0, 0 }, cont->m_size - m_size); SetPosition(newpos); cont->add_child(ref); m_dock.reset();