// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_USER_EDUCATION_VIEWS_HELP_BUBBLE_EVENT_RELAY_H_ #define COMPONENTS_USER_EDUCATION_VIEWS_HELP_BUBBLE_EVENT_RELAY_H_ #include "base/callback_list.h" #include "base/memory/raw_ptr.h" #include "ui/events/event.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/menu/menu_item_view.h" namespace user_education { class HelpBubbleView; // Class that intercepts events in screen coordinates and determines whether // they should be applied to a help bubble. Owned by the help bubble, though it // can be created elsewhere. class HelpBubbleEventRelay { … }; namespace internal { // Because menus use event capture, a help bubble anchored to a menu cannot // respond to events in the normal way. However, help bubbles are not // complicated and only have buttons. When a help bubble is anchored to a menu, // this object will monitor events that would be captured by the menu, and // ensures that the buttons on the help bubble still behavior predictably. class MenuHelpBubbleEventProcessor : public HelpBubbleEventRelay { … }; } // namespace internal } // namespace user_education #endif // COMPONENTS_USER_EDUCATION_VIEWS_HELP_BUBBLE_EVENT_RELAY_H_