From d0098ae7cc3ca08679ffb4341356fcfdf0a57cae Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Sun, 8 Dec 2019 05:06:25 -0500 Subject: [PATCH] Allow left button to scroll ScrollWidget, so that the rack and other scroll containers can be scrolled with a touch screen. --- src/app/ModuleWidget.cpp | 7 ++++++- src/app/RackScrollWidget.cpp | 1 - src/engine/Engine.cpp | 3 +++ src/ui/ScrollWidget.cpp | 4 ++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/app/ModuleWidget.cpp b/src/app/ModuleWidget.cpp index c105e192..64667042 100644 --- a/src/app/ModuleWidget.cpp +++ b/src/app/ModuleWidget.cpp @@ -355,7 +355,12 @@ void ModuleWidget::drawShadow(const DrawArgs& args) { } void ModuleWidget::onButton(const event::Button& e) { - OpaqueWidget::onButton(e); + // Don't consume left button if `lockModules` is enabled. + if (settings::lockModules) + Widget::onButton(e); + else + OpaqueWidget::onButton(e); + if (e.isConsumed()) return; diff --git a/src/app/RackScrollWidget.cpp b/src/app/RackScrollWidget.cpp index 519062b9..78f198e4 100644 --- a/src/app/RackScrollWidget.cpp +++ b/src/app/RackScrollWidget.cpp @@ -75,7 +75,6 @@ void RackScrollWidget::step() { oldOffset = offset; } - void RackScrollWidget::draw(const DrawArgs& args) { // Hide scrollbars if full screen bool fullscreen = APP->window->isFullScreen(); diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index d2a6208d..896a7204 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -528,16 +528,19 @@ long Engine::getFrame() { long Engine::getStepFrame() { + // No lock, for performance return internal->stepFrame; } long Engine::getStepTime() { + // No lock, for performance return internal->stepTime; } int Engine::getStepFrames() { + // No lock, for performance return internal->stepFrames; } diff --git a/src/ui/ScrollWidget.cpp b/src/ui/ScrollWidget.cpp index 85e38c86..df0e135e 100644 --- a/src/ui/ScrollWidget.cpp +++ b/src/ui/ScrollWidget.cpp @@ -64,7 +64,7 @@ void ScrollWidget::step() { } void ScrollWidget::onButton(const event::Button& e) { - Widget::onButton(e); + OpaqueWidget::onButton(e); if (e.isConsumed()) return; @@ -78,7 +78,7 @@ void ScrollWidget::onButton(const event::Button& e) { } void ScrollWidget::onDragStart(const event::DragStart& e) { - if (e.button == GLFW_MOUSE_BUTTON_MIDDLE) { + if (e.button == GLFW_MOUSE_BUTTON_LEFT || e.button == GLFW_MOUSE_BUTTON_MIDDLE) { e.consume(this); } }