From a2b888efd653f383d88c5307faec0bfdba524636 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sat, 19 Aug 2017 16:59:05 +0100 Subject: [PATCH] fix mouse capture bug --- engine/node.cpp | 7 +++++++ engine/node_canvas.cpp | 1 + 2 files changed, 8 insertions(+) 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}; }