Centralize canvas mode capture release

This commit is contained in:
2026-06-12 16:29:11 +02:00
parent 24cd14c172
commit bfaea5398e
3 changed files with 27 additions and 19 deletions

View File

@@ -8,6 +8,7 @@
#include "canvas.h"
#include "shader.h"
#include "node_canvas.h"
#include "legacy_ui_overlay_services.h"
#include "legacy_ui_gl_dispatch.h"
#include "app.h"
#include "util.h"
@@ -83,7 +84,7 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
if (m_draggingL)
{
m_draggingL = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
}
break;
case kEventType::MouseDownR:
@@ -98,7 +99,7 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
case kEventType::MouseUpR:
m_draggingR = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
break;
case kEventType::MouseMove:
if (m_draggingR)
@@ -131,7 +132,7 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
case kEventType::MouseCancel:
m_draggingR = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
break;
default:
break;
@@ -207,7 +208,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
case kEventType::MouseUpL:
if (m_dragging && !m_picking)
{
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
App::I->render_task_async([]
{
Canvas::I->stroke_end();
@@ -215,7 +216,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
}
if (m_dragging && m_picking)
{
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
glm::vec4 pix = Canvas::I->pick_get(loc);
Canvas::I->m_current_brush->m_tip_color = pix;
App::I->brush_update(true, false);
@@ -239,7 +240,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
case kEventType::MouseUpR:
if (m_dragging && m_resizing)
{
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
m_dragging = false;
m_resizing = false;
}
@@ -275,7 +276,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
Canvas::I->stroke_cancel();
});
m_dragging = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
}
if (m_picking)
m_picking = false;
@@ -377,7 +378,7 @@ void CanvasModeLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
m_drag_pos = loc;
break;
case kEventType::MouseUpL:
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
if (m_dragging)
{
App::I->render_task_async([=]
@@ -396,7 +397,7 @@ void CanvasModeLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
m_cur_pos = loc;
break;
case kEventType::MouseCancel:
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
m_dragging = false;
break;
default:
@@ -487,7 +488,7 @@ void CanvasModeCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
case kEventType::MouseUpL:
m_dragging = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
Canvas::I->m_cam_pos = { 0, 0, 0 };
break;
case kEventType::MouseMove:
@@ -496,7 +497,7 @@ void CanvasModeCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
case kEventType::MouseCancel:
m_dragging = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
break;
default:
break;
@@ -552,7 +553,7 @@ void CanvasModeGrid::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
}
case kEventType::MouseUpL:
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
m_dragging = false;
ActionManager::add(m_action.release());
//commit();
@@ -574,7 +575,7 @@ void CanvasModeGrid::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
if (m_dragging && m_selected_index == m_lines.size() - 1)
m_lines.pop_back();
m_dragging = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
break;
default:
break;
@@ -728,7 +729,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
}
case kEventType::MouseUpL:
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
m_dragging = false;
if (m_points2d.size() > 3)
{
@@ -802,7 +803,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
m_shape.update_vertices(m_points.data(), (int)m_points.size());
}
m_dragging = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
if (m_points.size() < 4)
{
m_points.clear();
@@ -933,7 +934,7 @@ void CanvasModeMaskLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
}
case kEventType::MouseUpL:
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
m_dragging = false;
if (m_points.size() > 1)
{
@@ -961,7 +962,7 @@ void CanvasModeMaskLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
m_shape.update_vertices(m_points.data(), (int)m_points.size());
}
m_dragging = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
if (m_points.size() < 4)
{
m_points.clear();
@@ -1058,7 +1059,7 @@ void CanvasModeFill::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
break;
}
case kEventType::MouseUpL:
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
m_dragging = false;
break;
case kEventType::MouseMove:
@@ -1083,7 +1084,7 @@ void CanvasModeFill::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
m_shape.update_vertices(m_points.data(), (int)m_points.size());
}
m_dragging = false;
node->mouse_release();
pp::panopainter::release_legacy_mouse_capture(*node);
if (m_points.size() < 4)
{
m_points.clear();