You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
849B

  1. #pragma once
  2. #include "widgets/EventWidget.hpp"
  3. namespace rack {
  4. /** Widget that consumes recursing events but gives a chance for children to consume first.
  5. You can of course override the events.
  6. You may also call OpaqueWidget::on() from the overridden method to continue recursing/consuming the event.
  7. */
  8. struct OpaqueWidget : virtual EventWidget {
  9. template <class TEvent>
  10. void consumeEvent(TEvent &e) {
  11. EventWidget::on(e);
  12. if (!e.target) {
  13. e.target = this;
  14. }
  15. }
  16. void on(event::Hover &e) override {consumeEvent(e);}
  17. void on(event::Button &e) override {consumeEvent(e);}
  18. void on(event::HoverKey &e) override {consumeEvent(e);}
  19. void on(event::HoverText &e) override {consumeEvent(e);}
  20. // void on(event::HoverScroll &e) override {consumeEvent(e);}
  21. void on(event::PathDrop &e) override {consumeEvent(e);}
  22. };
  23. } // namespace rack