Centralize retained control capture release

This commit is contained in:
2026-06-12 16:34:48 +02:00
parent bfaea5398e
commit 84373f26e7
8 changed files with 24 additions and 12 deletions

View File

@@ -1,5 +1,6 @@
#include "pch.h"
#include "log.h"
#include "legacy_ui_overlay_services.h"
#include "node_button_custom.h"
Node* NodeButtonCustom::clone_instantiate() const
@@ -69,13 +70,13 @@ kEventResult NodeButtonCustom::handle_event(Event* e)
m_color = m_active ? color_active : (m_mouse_inside ? color_hover : color_normal);
else
m_color = m_active ? color_active : color_normal;
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
if (m_mouse_inside && on_click != nullptr)
on_click(this);
break;
case kEventType::MouseCancel:
m_color = m_active ? color_active : color_normal;
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
break;
default:
return kEventResult::Available;

View File

@@ -13,6 +13,7 @@
#include "app.h"
#include "node_panel_grid.h"
#include "legacy_ui_gl_dispatch.h"
#include "legacy_ui_overlay_services.h"
#include "legacy_canvas_tool_services.h"
#include "legacy_history_services.h"
#include "log.h"
@@ -836,7 +837,7 @@ kEventResult NodeCanvas::handle_event(Event* e)
mode->on_GestureEvent(ge);
break;
case kEventType::GestureEnd:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
for (auto& mode : *m_canvas->m_mode)
mode->on_GestureEvent(ge);
break;

View File

@@ -1,5 +1,6 @@
#include "pch.h"
#include "log.h"
#include "legacy_ui_overlay_services.h"
#include "node_color_quad.h"
#include "shader.h"
@@ -54,7 +55,7 @@ kEventResult NodeColorQuad::handle_event(Event* e)
}
break;
case kEventType::MouseUpL:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
dragging = false;
break;
case kEventType::MouseMove:
@@ -69,7 +70,7 @@ kEventResult NodeColorQuad::handle_event(Event* e)
}
break;
case kEventType::MouseCancel:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
dragging = false;
m_value = m_old_value;
set_value(m_value.x, m_value.y);

View File

@@ -1,6 +1,7 @@
#include "pch.h"
#include "legacy_gl_mesh_dispatch.h"
#include "legacy_ui_gl_dispatch.h"
#include "legacy_ui_overlay_services.h"
#include "node_colorwheel.h"
#include "renderer_gl/opengl_capabilities.h"
#include "shader.h"
@@ -180,7 +181,7 @@ kEventResult NodeColorWheel::handle_event(Event* e)
}
break;
case kEventType::MouseUpL:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
dragging = false;
break;
case kEventType::MouseMove:
@@ -203,7 +204,7 @@ kEventResult NodeColorWheel::handle_event(Event* e)
}
break;
case kEventType::MouseCancel:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
dragging = false;
m_hsv = m_old_value;
handle_color_change();

View File

@@ -1,6 +1,7 @@
#include "pch.h"
#include "log.h"
#include "legacy_ui_gl_dispatch.h"
#include "legacy_ui_overlay_services.h"
#include "node_scroll.h"
#include "event.h"
#include "shader.h"
@@ -184,7 +185,7 @@ kEventResult NodeScroll::handle_event(Event* e)
}
break;
case kEventType::MouseUpL:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
m_dragging = false;
break;
case kEventType::MouseScroll:
@@ -200,10 +201,10 @@ kEventResult NodeScroll::handle_event(Event* e)
fix_scroll();
break;
case kEventType::GestureEnd:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
break;
case kEventType::MouseCancel:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
m_dragging = false;
break;
default:

View File

@@ -1,5 +1,6 @@
#include "pch.h"
#include "log.h"
#include "legacy_ui_overlay_services.h"
#include "node_slider.h"
#include "shader.h"
@@ -91,7 +92,7 @@ kEventResult NodeSliderH::handle_event(Event* e)
}
break;
case kEventType::MouseUpL:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
if (dragging && on_value_final)
on_value_final(this, m_value);
dragging = false;
@@ -109,7 +110,7 @@ kEventResult NodeSliderH::handle_event(Event* e)
}
break;
case kEventType::MouseCancel:
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
if (dragging)
{
m_value = m_old_value;