From 81d26727400f12279eb1e9351d3dccf9d3f1c199 Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Fri, 31 Oct 2025 19:10:13 +0900 Subject: [PATCH] fix internal events blocking custom events on the same widget --- wgui/src/event.rs | 5 +++-- wgui/src/widget/mod.rs | 3 --- wlx-overlay-s/src/gui/panel/button.rs | 3 ++- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/wgui/src/event.rs b/wgui/src/event.rs index 2dab9e3..640ac11 100644 --- a/wgui/src/event.rs +++ b/wgui/src/event.rs @@ -2,10 +2,11 @@ use std::{ any::{Any, TypeId}, cell::RefMut, collections::HashSet, + ops::Deref, }; use glam::Vec2; -use slotmap::{DenseSlotMap, new_key_type}; +use slotmap::{new_key_type, DenseSlotMap}; use crate::{ animation::{self, Animation}, @@ -184,7 +185,7 @@ impl CallbackMetadata { } } -#[derive(Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum EventListenerKind { MousePress, MouseRelease, diff --git a/wgui/src/widget/mod.rs b/wgui/src/widget/mod.rs index 5371fba..a69eefa 100644 --- a/wgui/src/widget/mod.rs +++ b/wgui/src/widget/mod.rs @@ -264,9 +264,6 @@ impl WidgetState { // Consider all listeners on this widget, even if we had a Consume. // Store the highest value for return. *call_data.event_result = call_data.event_result.merge(new_result); - if !call_data.event_result.can_propagate() { - break; - } } Ok(()) } diff --git a/wlx-overlay-s/src/gui/panel/button.rs b/wlx-overlay-s/src/gui/panel/button.rs index 33a1419..5d534a3 100644 --- a/wlx-overlay-s/src/gui/panel/button.rs +++ b/wlx-overlay-s/src/gui/panel/button.rs @@ -69,7 +69,8 @@ pub(super) fn setup_custom_button( _ => return, }; - layout.add_event_listener(attribs.widget_id, *kind, callback); + let id = layout.add_event_listener(attribs.widget_id, *kind, callback); + log::debug!("Registered {action} on {:?} as {id:?}", attribs.widget_id); } } struct ShellButtonMutableState {