diff --git a/engine/node.cpp b/engine/node.cpp index 8f00c16..0b1fc52 100644 --- a/engine/node.cpp +++ b/engine/node.cpp @@ -286,12 +286,19 @@ glm::vec4 Node::get_children_rect() const void Node::mouse_capture() { + // already owner of capture + if (root()->current_mouse_capture == this) + return; + + // cancel previous owner if (auto n = root()->current_mouse_capture) { MouseEvent e; e.m_type = kEventType::MouseCancel; n->handle_event(&e); } + + // make current root()->current_mouse_capture = this; m_mouse_captured = true; } diff --git a/engine/node_canvas.cpp b/engine/node_canvas.cpp index 27beec6..a0a31ee 100644 --- a/engine/node_canvas.cpp +++ b/engine/node_canvas.cpp @@ -284,4 +284,5 @@ void NodeCanvas::reset_camera() m_canvas->m_cam_rot = {0, 0}; m_canvas->m_cam_pos = {0, 0, 0}; m_canvas->m_cam_fov = 85; + m_canvas->m_pan = {0, 0}; }