From 640b4bb219c85fe57c8a463aa7d0016f6df1c253 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Mon, 30 May 2016 19:14:14 -0400 Subject: [PATCH] Mouse Wheel support for gain; @vsonnier's wheel movement tweak --- src/visual/GainCanvas.cpp | 25 ++++++++++++++++++++++--- src/visual/MeterCanvas.cpp | 4 ++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/visual/GainCanvas.cpp b/src/visual/GainCanvas.cpp index e72aa66..409e7de 100644 --- a/src/visual/GainCanvas.cpp +++ b/src/visual/GainCanvas.cpp @@ -22,6 +22,7 @@ EVT_LEFT_DOWN(GainCanvas::OnMouseDown) EVT_LEFT_UP(GainCanvas::OnMouseReleased) EVT_LEAVE_WINDOW(GainCanvas::OnMouseLeftWindow) EVT_ENTER_WINDOW(GainCanvas::OnMouseEnterWindow) +EVT_MOUSEWHEEL(GainCanvas::OnMouseWheelMoved) wxEND_EVENT_TABLE() GainCanvas::GainCanvas(wxWindow *parent, int *dispAttrs) : @@ -151,12 +152,31 @@ void GainCanvas::OnMouseDown(wxMouseEvent& event) { void GainCanvas::OnMouseWheelMoved(wxMouseEvent& event) { InteractiveCanvas::OnMouseWheelMoved(event); -// Refresh(); + + CubicVR::vec2 hitResult; + int panelHit = GetPanelHit(hitResult); + + if (panelHit >= 0) { + float movement = 3.0 * (float)event.GetWheelRotation(); + + GainInfo *gInfo; + + gInfo = gainInfo[panelHit]; + + gInfo->current = gInfo->current + ((movement / 100.0) * ((gInfo->high - gInfo->low) / 100.0)); + gInfo->changed = true; + + float levelVal = float(gInfo->current-gInfo->low)/float(gInfo->high-gInfo->low); + gInfo->levelPanel.setSize(1.0, levelVal); + gInfo->levelPanel.setPosition(0.0, levelVal-1.0); + + gInfo->valuePanel.setText(std::to_string(int(gInfo->current))); + } + } void GainCanvas::OnMouseReleased(wxMouseEvent& event) { InteractiveCanvas::OnMouseReleased(event); -// Refresh(); } void GainCanvas::OnMouseLeftWindow(wxMouseEvent& event) { @@ -174,7 +194,6 @@ void GainCanvas::OnMouseLeftWindow(wxMouseEvent& event) { void GainCanvas::OnMouseEnterWindow(wxMouseEvent& event) { InteractiveCanvas::mouseTracker.OnMouseEnterWindow(event); SetCursor(wxCURSOR_CROSS); -// Refresh(); } diff --git a/src/visual/MeterCanvas.cpp b/src/visual/MeterCanvas.cpp index e0bf014..d92c571 100644 --- a/src/visual/MeterCanvas.cpp +++ b/src/visual/MeterCanvas.cpp @@ -146,8 +146,8 @@ void MeterCanvas::OnMouseRightReleased(wxMouseEvent& event) { void MeterCanvas::OnMouseWheelMoved(wxMouseEvent& event) { InteractiveCanvas::OnMouseWheelMoved(event); - float movement = (float)event.GetWheelRotation() / (float)event.GetLinesPerAction(); - + float movement = 3.0 * (float)event.GetWheelRotation(); + float currentValue = 0; if (showUserInput) { currentValue = userInputValue;