Browse Source

Fix various event bugs

tags/v1.0.0
Andrew Belt 6 years ago
parent
commit
09fdccf4ee
5 changed files with 84 additions and 90 deletions
  1. +0
    -2
      include/ui/MenuOverlay.hpp
  2. +0
    -4
      include/ui/ScrollWidget.hpp
  3. +35
    -35
      src/app/ModuleBrowser.cpp
  4. +43
    -46
      src/app/ModuleWidget.cpp
  5. +6
    -3
      src/app/Scene.cpp

+ 0
- 2
include/ui/MenuOverlay.hpp View File

@@ -32,9 +32,7 @@ struct MenuOverlay : OpaqueWidget {
OpaqueWidget::onHoverKey(e);

if (e.target == this && e.action == GLFW_PRESS && e.key == GLFW_KEY_ESCAPE) {
e.target = this;
requestedDelete = true;
return;
}
}
};


+ 0
- 4
include/ui/ScrollWidget.hpp View File

@@ -142,10 +142,6 @@ struct ScrollWidget : OpaqueWidget {
offset = offset.minus(e.scrollDelta);
e.target = this;
}

void onHoverKey(event::HoverKey &e) override {
OpaqueWidget::onHoverKey(e);
}
};




+ 35
- 35
src/app/ModuleBrowser.cpp View File

@@ -510,46 +510,46 @@ void SearchModuleField::onChange(event::Change &e) {
}

void SearchModuleField::onSelectKey(event::SelectKey &e) {
switch (e.key) {
case GLFW_KEY_ESCAPE: {
MenuOverlay *overlay = getAncestorOfType<MenuOverlay>();
overlay->requestedDelete = true;
e.target = this;
return;
} break;
case GLFW_KEY_UP: {
moduleBrowser->moduleList->incrementSelection(-1);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_DOWN: {
moduleBrowser->moduleList->incrementSelection(1);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_PAGE_UP: {
moduleBrowser->moduleList->incrementSelection(-5);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_PAGE_DOWN: {
moduleBrowser->moduleList->incrementSelection(5);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_ENTER: {
BrowserListItem *item = moduleBrowser->moduleList->getSelectedItem();
if (item) {
item->doAction();
if (e.action == GLFW_PRESS) {
switch (e.key) {
case GLFW_KEY_ESCAPE: {
MenuOverlay *overlay = getAncestorOfType<MenuOverlay>();
overlay->requestedDelete = true;
e.target = this;
return;
}
} break;
} break;
case GLFW_KEY_UP: {
moduleBrowser->moduleList->incrementSelection(-1);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_DOWN: {
moduleBrowser->moduleList->incrementSelection(1);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_PAGE_UP: {
moduleBrowser->moduleList->incrementSelection(-5);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_PAGE_DOWN: {
moduleBrowser->moduleList->incrementSelection(5);
moduleBrowser->moduleList->scrollSelected();
e.target = this;
} break;
case GLFW_KEY_ENTER: {
BrowserListItem *item = moduleBrowser->moduleList->getSelectedItem();
if (item) {
item->doAction();
e.target = this;
}
} break;
}
}

if (!e.target) {
if (!e.target)
TextField::onSelectKey(e);
}
}

// Global functions


+ 43
- 46
src/app/ModuleWidget.cpp View File

@@ -318,52 +318,49 @@ void ModuleWidget::onButton(event::Button &e) {
}

void ModuleWidget::onHoverKey(event::HoverKey &e) {
switch (e.key) {
case GLFW_KEY_I: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
reset();
e.target = this;
return;
}
} break;
case GLFW_KEY_R: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
randomize();
e.target = this;
return;
}
} break;
case GLFW_KEY_C: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
copyClipboard();
e.target = this;
return;
}
} break;
case GLFW_KEY_V: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
pasteClipboard();
e.target = this;
return;
}
} break;
case GLFW_KEY_D: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
context()->scene->rackWidget->cloneModule(this);
e.target = this;
return;
}
} break;
case GLFW_KEY_U: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
disconnect();
e.target = this;
return;
}
} break;
}

OpaqueWidget::onHoverKey(e);
if (e.action == GLFW_PRESS) {
switch (e.key) {
case GLFW_KEY_I: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
reset();
e.target = this;
}
} break;
case GLFW_KEY_R: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
randomize();
e.target = this;
}
} break;
case GLFW_KEY_C: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
copyClipboard();
e.target = this;
}
} break;
case GLFW_KEY_V: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
pasteClipboard();
e.target = this;
}
} break;
case GLFW_KEY_D: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
context()->scene->rackWidget->cloneModule(this);
e.target = this;
}
} break;
case GLFW_KEY_U: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
disconnect();
e.target = this;
}
} break;
}
}

if (!e.target)
OpaqueWidget::onHoverKey(e);
}

void ModuleWidget::onDragStart(event::DragStart &e) {


+ 6
- 3
src/app/Scene.cpp View File

@@ -5,6 +5,7 @@
#include "app/ModuleBrowser.hpp"
#include "app/RackScrollWidget.hpp"
#include "context.hpp"
#include "logger.hpp"
#include <thread>


@@ -67,9 +68,7 @@ void Scene::draw(NVGcontext *vg) {
}

void Scene::onHoverKey(event::HoverKey &e) {
OpaqueWidget::onHoverKey(e);

if (!e.target) {
if (e.action == GLFW_PRESS) {
switch (e.key) {
case GLFW_KEY_N: {
if (context()->window->isModPressed() && !context()->window->isShiftPressed()) {
@@ -116,9 +115,13 @@ void Scene::onHoverKey(event::HoverKey &e) {
} break;
case GLFW_KEY_F11: {
context()->window->setFullScreen(!context()->window->isFullScreen());
e.target = this;
}
}
}

if (!e.target)
OpaqueWidget::onHoverKey(e);
}

void Scene::onPathDrop(event::PathDrop &e) {


Loading…
Cancel
Save