From 7e6f48ff07d9a33353b0e2438b6aec4f54a1232f Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Mon, 20 Jul 2026 17:51:41 +0800 Subject: [PATCH] fix(event): delegate error UI events to each handler Move error UI event check from top of handle_event into each individual event handler (mouse_move, mouse_button, mouse_wheel, key, text_input). Also flatten window resize dispatch: all sub-handlers are called regardless of previous handler return values, and the method always returns false. --- src/scene/world_scene.cpp | 40 ++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/scene/world_scene.cpp b/src/scene/world_scene.cpp index 69805c9..446c506 100644 --- a/src/scene/world_scene.cpp +++ b/src/scene/world_scene.cpp @@ -70,9 +70,7 @@ void WorldScene::render(Renderer& renderer) { } } bool WorldScene::handle_event(const Event& e) { - if (m_error_ui.has_error()) { - return m_error_ui.handle_event(e); - } + return std::visit( Overloaded{[this](const MouseMoveEvent& e) { if (handle_mouse_move_event(e)) { @@ -186,6 +184,9 @@ void WorldScene::load_config() { } bool WorldScene::handle_mouse_move_event(const MouseMoveEvent& e) { + if (m_error_ui.has_error()) { + return m_error_ui.handle_event(e); + } if (m_chatting) { return true; } @@ -209,6 +210,9 @@ bool WorldScene::handle_mouse_move_event(const MouseMoveEvent& e) { return false; } bool WorldScene::handle_mouse_button_event(const MouseButtonEvent& e) { + if (m_error_ui.has_error()) { + return m_error_ui.handle_event(e); + } if (m_chatting) { return true; } @@ -232,23 +236,23 @@ bool WorldScene::handle_mouse_button_event(const MouseButtonEvent& e) { } bool WorldScene::handle_window_resize_event(const WindowResizeEvent& e) { - if (m_pasue_menu.handle_event(e)) { - return true; - } - if (m_hud_ui.handle_event(e)) { - return true; - } - if (m_camera.handle_event(e)) { - return true; - } + m_error_ui.handle_event(e); + + m_pasue_menu.handle_event(e); + + m_hud_ui.handle_event(e); + + m_camera.handle_event(e); + // world event needs to be processed last - if (m_client_world.handle_event(e)) { - return true; - } + m_client_world.handle_event(e); return false; } bool WorldScene::handle_mouse_wheel_event(const MouseWheelEvent& e) { + if (m_error_ui.has_error()) { + return m_error_ui.handle_event(e); + } if (m_chatting) { return true; } @@ -271,6 +275,9 @@ bool WorldScene::handle_mouse_wheel_event(const MouseWheelEvent& e) { return false; } bool WorldScene::handle_key_event(const KeyEvent& e) { + if (m_error_ui.has_error()) { + return m_error_ui.handle_event(e); + } if (e.key == Key::ESCAPE && e.action == KeyAction::PRESS) { if (m_chatting && !m_paused) { @@ -342,6 +349,9 @@ bool WorldScene::handle_key_event(const KeyEvent& e) { } bool WorldScene::handle_text_input_event(const TextInputEvent& e) { + if (m_error_ui.has_error()) { + return m_error_ui.handle_event(e); + } if (m_paused) { return m_pasue_menu.handle_text_input_event(e); }