From cc1314e8a2ca83fb1e0fb24694f37edb99bfb9f4 Mon Sep 17 00:00:00 2001 From: Ollie Date: Sun, 24 Aug 2025 00:44:10 +0800 Subject: [PATCH] fix: the issue where :hover/:active are not triggered by on_mouse_leave and on_button_cancel --- src/document.cpp | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/src/document.cpp b/src/document.cpp index f325b83e..9d52b80c 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -685,9 +685,11 @@ bool document::on_mouse_leave( position::vector& redraw_boxes ) } if(m_over_element) { - if(m_over_element->on_mouse_leave()) + auto el = m_over_element; + m_over_element = nullptr; + if(el->on_mouse_leave()) { - m_container->on_mouse_event(m_over_element, mouse_event_leave); + m_container->on_mouse_event(el, mouse_event_leave); return m_root->find_styles_changes(redraw_boxes); } } @@ -765,23 +767,8 @@ bool document::on_lbutton_up( pixel_t /*x*/, pixel_t /*y*/, pixel_t /*client_x*/ } bool document::on_button_cancel(position::vector& redraw_boxes) { - if(!m_root || !m_root_render) - { - return false; - } m_active_element = nullptr; - if(m_over_element) - { - if(m_over_element->on_mouse_leave()) - { - m_container->on_mouse_event(m_over_element, mouse_event_leave); - } - if(m_over_element->on_lbutton_up(false)) - { - return m_root->find_styles_changes(redraw_boxes); - } - } - return false; + return on_mouse_leave(redraw_boxes); } void document::get_fixed_boxes( position::vector& fixed_boxes )