| @@ -258,6 +258,7 @@ struct Label : Widget { | |||||
| struct MenuOverlay : OpaqueWidget { | struct MenuOverlay : OpaqueWidget { | ||||
| void onDragDrop(Widget *origin); | void onDragDrop(Widget *origin); | ||||
| bool onScrollOpaque(Vec scrollRel) {return true;} | bool onScrollOpaque(Vec scrollRel) {return true;} | ||||
| Widget *onHoverKey(Vec pos, int key); | |||||
| }; | }; | ||||
| struct Menu : OpaqueWidget { | struct Menu : OpaqueWidget { | ||||
| @@ -68,6 +68,9 @@ void RackScene::draw(NVGcontext *vg) { | |||||
| } | } | ||||
| Widget *RackScene::onHoverKey(Vec pos, int key) { | Widget *RackScene::onHoverKey(Vec pos, int key) { | ||||
| Widget *w = Widget::onHoverKey(pos, key); | |||||
| if (w) return w; | |||||
| switch (key) { | switch (key) { | ||||
| case GLFW_KEY_N: | case GLFW_KEY_N: | ||||
| if (guiIsModPressed() && !guiIsShiftPressed()) { | if (guiIsModPressed() && !guiIsShiftPressed()) { | ||||
| @@ -99,7 +102,7 @@ Widget *RackScene::onHoverKey(Vec pos, int key) { | |||||
| break; | break; | ||||
| } | } | ||||
| return Widget::onHoverKey(pos, key); | |||||
| return NULL; | |||||
| } | } | ||||
| @@ -241,9 +241,6 @@ void guiInit() { | |||||
| err = glewInit(); | err = glewInit(); | ||||
| assert(err == GLEW_OK); | assert(err == GLEW_OK); | ||||
| // Check framebuffer support | |||||
| assert(GLEW_EXT_framebuffer_object); | |||||
| // GLEW generates GL error because it calls glGetString(GL_EXTENSIONS), we'll consume it here. | // GLEW generates GL error because it calls glGetString(GL_EXTENSIONS), we'll consume it here. | ||||
| glGetError(); | glGetError(); | ||||
| @@ -10,5 +10,12 @@ void MenuOverlay::onDragDrop(Widget *origin) { | |||||
| } | } | ||||
| } | } | ||||
| Widget *MenuOverlay::onHoverKey(Vec pos, int key) { | |||||
| Widget *w = Widget::onHoverKey(pos, key); | |||||
| if (w) return w; | |||||
| // Steal all keys | |||||
| return this; | |||||
| } | |||||
| } // namespace rack | } // namespace rack | ||||