tray_event_filter.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ASH_SYSTEM_TRAY_TRAY_EVENT_FILTER_H_
  5. #define ASH_SYSTEM_TRAY_TRAY_EVENT_FILTER_H_
  6. #include <set>
  7. #include "ash/ash_export.h"
  8. #include "ui/events/event_handler.h"
  9. namespace ui {
  10. class LocatedEvent;
  11. }
  12. namespace ash {
  13. class TrayBubbleBase;
  14. // Handles events for a tray bubble, e.g. to close the system tray bubble when
  15. // the user clicks outside it.
  16. class ASH_EXPORT TrayEventFilter : public ui::EventHandler {
  17. public:
  18. TrayEventFilter();
  19. TrayEventFilter(const TrayEventFilter&) = delete;
  20. TrayEventFilter& operator=(const TrayEventFilter&) = delete;
  21. ~TrayEventFilter() override;
  22. void AddBubble(TrayBubbleBase* bubble);
  23. void RemoveBubble(TrayBubbleBase* bubble);
  24. // ui::EventHandler:
  25. void OnMouseEvent(ui::MouseEvent* event) override;
  26. void OnTouchEvent(ui::TouchEvent* event) override;
  27. void OnGestureEvent(ui::GestureEvent* event) override;
  28. private:
  29. void ProcessPressedEvent(const ui::LocatedEvent& event);
  30. std::set<TrayBubbleBase*> bubbles_;
  31. };
  32. } // namespace ash
  33. #endif // ASH_SYSTEM_TRAY_TRAY_EVENT_FILTER_H_