diff --git a/src/gui/core/event/dispatcher_private.hpp b/src/gui/core/event/dispatcher_private.hpp index 6db1cc5d2399..ad1e3c4c94cd 100644 --- a/src/gui/core/event/dispatcher_private.hpp +++ b/src/gui/core/event/dispatcher_private.hpp @@ -306,12 +306,12 @@ build_event_chain(const ui_event event, widget* dispatcher, widget* w) std::vector> result; while(w != dispatcher) { - w = w->parent(); - assert(w); - if(w->has_event(event, dispatcher::event_queue_type(dispatcher::pre | dispatcher::post))) { result.emplace_back(w, event); } + + w = w->parent(); + assert(w); } return result; diff --git a/src/gui/widgets/scrollbar_container.cpp b/src/gui/widgets/scrollbar_container.cpp index d311f9e45a9f..4dfa78318706 100644 --- a/src/gui/widgets/scrollbar_container.cpp +++ b/src/gui/widgets/scrollbar_container.cpp @@ -516,15 +516,23 @@ unsigned scrollbar_container::get_state() const widget* scrollbar_container::find_at(const point& coordinate, const bool must_be_active) { - return scrollbar_container_implementation::find_at( + widget* w = scrollbar_container_implementation::find_at( *this, coordinate, must_be_active); + if(w == nullptr) { + w = widget::find_at(coordinate, must_be_active); + } + return w; } const widget* scrollbar_container::find_at(const point& coordinate, const bool must_be_active) const { - return scrollbar_container_implementation::find_at( + const widget* w = scrollbar_container_implementation::find_at( *this, coordinate, must_be_active); + if(w == nullptr) { + w = widget::find_at(coordinate, must_be_active); + } + return w; } widget* scrollbar_container::find(const std::string& id,