diff options
Diffstat (limited to 'plugingui')
-rw-r--r-- | plugingui/drumkittab.cc | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/plugingui/drumkittab.cc b/plugingui/drumkittab.cc index acc2c89..90f6d67 100644 --- a/plugingui/drumkittab.cc +++ b/plugingui/drumkittab.cc @@ -34,9 +34,6 @@ #include "painter.h" #include "settings.h" -// TODO: -// make consistent with clicks etc - namespace GUI { @@ -85,18 +82,19 @@ void DrumkitTab::buttonEvent(ButtonEvent* buttonEvent) if (buttonEvent->direction == GUI::Direction::down) { Painter painter(*this); painter.drawImage(drumkit_image_x, drumkit_image_y, *map_image); - redraw(); - shows_overlay = true; + redraw(); return; } if (buttonEvent->direction == GUI::Direction::up) { Painter painter(*this); painter.clear(); painter.drawImage(drumkit_image_x, drumkit_image_y, *drumkit_image); - redraw(); + + highlightInstrument(current_index); shows_overlay = false; + redraw(); return; } } @@ -107,6 +105,8 @@ void DrumkitTab::buttonEvent(ButtonEvent* buttonEvent) if (buttonEvent->direction == GUI::Direction::down) { triggerAudition(buttonEvent->x, buttonEvent->y); + highlightInstrument(current_index); + redraw(); } if (buttonEvent->direction == GUI::Direction::up) { @@ -117,6 +117,7 @@ void DrumkitTab::buttonEvent(ButtonEvent* buttonEvent) if (shows_overlay) { painter.drawImage(drumkit_image_x, drumkit_image_y, *map_image); } + highlightInstrument(current_index); redraw(); } shows_instrument_overlay = false; @@ -142,6 +143,16 @@ void DrumkitTab::mouseMoveEvent(MouseMoveEvent* mouseMoveEvent) auto index = pos_to_colour_index(x, y); + if (index == current_index) { return; } + current_index = index; + + Painter painter(*this); + painter.clear(); + painter.drawImage(drumkit_image_x, drumkit_image_y, *drumkit_image); + if (shows_overlay) { + painter.drawImage(drumkit_image_x, drumkit_image_y, *map_image); + } + highlightInstrument(index); updateInstrumentLabel(index); redraw(); @@ -177,21 +188,16 @@ void DrumkitTab::triggerAudition(int x, int y) void DrumkitTab::highlightInstrument(int index) { - if (index == current_index) { return; } - current_index = index; - - Painter painter(*this); - painter.clear(); - painter.drawImage(drumkit_image_x, drumkit_image_y, *drumkit_image); - shows_overlay = false; - if (index != -1) { + Painter painter(*this); auto const& colour = colours[index]; auto const& positions = colour_index_to_positions[index]; painter.draw(positions.begin(), positions.end(), drumkit_image_x, drumkit_image_y, colour); - shows_instrument_overlay = true; } + else { + shows_instrument_overlay = false; + } } void DrumkitTab::updateVelocityLabel() |