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.

47 lines
715B

  1. #pragma once
  2. #include "widgets.hpp"
  3. namespace rack {
  4. /** Deletes itself from parent when clicked */
  5. struct MenuOverlay : OpaqueWidget {
  6. void step() override {
  7. Widget::step();
  8. // Adopt parent's size
  9. box.size = parent->box.size;
  10. // Fit all children in the box
  11. for (Widget *child : children) {
  12. child->box = child->box.nudge(box.zeroPos());
  13. }
  14. }
  15. void on(event::Button &e) override {
  16. EventWidget::on(e);
  17. if (!e.target) {
  18. e.target = this;
  19. requestedDelete = true;
  20. }
  21. }
  22. void on(event::HoverKey &e) override {
  23. switch (e.key) {
  24. case GLFW_KEY_ESCAPE: {
  25. e.target = this;
  26. requestedDelete = true;
  27. return;
  28. } break;
  29. }
  30. EventWidget::on(e);
  31. }
  32. };
  33. } // namespace rack