diff --git a/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp b/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp index 490ce90b8b..56dbab2e4a 100644 --- a/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp +++ b/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp @@ -152,10 +152,9 @@ void MidiKeyboardComponent::setLowestVisibleKeyFloat (float noteNumber) firstKey = noteNumber; if (hasMoved) - { sendChangeMessage(); - resized(); - } + + resized(); } } @@ -458,14 +457,13 @@ void MidiKeyboardComponent::drawWhiteNote (int midiNoteNumber, g.setColour (textColour); g.setFont (Font (jmin (12.0f, keyWidth * 0.9f)).withHorizontalScale (0.8f)); - Justification justification (Justification::centredBottom); - - if (orientation == verticalKeyboardFacingLeft) - justification = Justification::centredLeft; - else if (orientation == verticalKeyboardFacingRight) - justification = Justification::centredRight; - - g.drawFittedText (text, x + 2, y + 2, w - 4, h - 4, justification, 1); + switch (orientation) + { + case horizontalKeyboard: g.drawFittedText (text, x + 1, y, w - 1, h - 2, Justification::centredBottom, 1); break; + case verticalKeyboardFacingLeft: g.drawFittedText (text, x + 2, y + 2, w - 4, h - 4, Justification::centredLeft, 1); break; + case verticalKeyboardFacingRight: g.drawFittedText (text, x + 2, y + 2, w - 4, h - 4, Justification::centredRight, 1); break; + default: break; + } } g.setColour (lineColour); @@ -531,7 +529,7 @@ void MidiKeyboardComponent::setOctaveForMiddleC (const int octaveNum) String MidiKeyboardComponent::getWhiteNoteText (const int midiNoteNumber) { - if (keyWidth > 14.0f && midiNoteNumber % 12 == 0) + if (keyWidth > 11.0f && midiNoteNumber % 12 == 0) return MidiMessage::getMidiNoteName (midiNoteNumber, true, true, octaveNumForMiddleC); return String::empty; @@ -594,31 +592,29 @@ void MidiKeyboardComponent::resized() } } - const bool showScrollButtons = canScroll && (((int) firstKey) > rangeStart || kx2 > w + xOffset * 2); - - scrollDown->setVisible (showScrollButtons); - scrollUp->setVisible (showScrollButtons); + scrollDown->setVisible (canScroll && firstKey > (float) rangeStart); xOffset = 0; - if (showScrollButtons) + if (canScroll) { const int scrollButtonW = jmin (12, w / 2); + Rectangle r (getLocalBounds()); if (orientation == horizontalKeyboard) { - scrollDown->setBounds (0, 0, scrollButtonW, getHeight()); - scrollUp->setBounds (getWidth() - scrollButtonW, 0, scrollButtonW, getHeight()); + scrollDown->setBounds (r.removeFromLeft (scrollButtonW)); + scrollUp ->setBounds (r.removeFromRight (scrollButtonW)); } else if (orientation == verticalKeyboardFacingLeft) { - scrollDown->setBounds (0, 0, getWidth(), scrollButtonW); - scrollUp->setBounds (0, getHeight() - scrollButtonW, getWidth(), scrollButtonW); + scrollDown->setBounds (r.removeFromTop (scrollButtonW)); + scrollUp ->setBounds (r.removeFromBottom (scrollButtonW)); } else { - scrollDown->setBounds (0, getHeight() - scrollButtonW, getWidth(), scrollButtonW); - scrollUp->setBounds (0, 0, getWidth(), scrollButtonW); + scrollDown->setBounds (r.removeFromBottom (scrollButtonW)); + scrollUp ->setBounds (r.removeFromTop (scrollButtonW)); } int endOfLastKey, kw; @@ -626,7 +622,7 @@ void MidiKeyboardComponent::resized() endOfLastKey += kw; float mousePositionVelocity; - const int spaceAvailable = w - scrollButtonW * 2; + const int spaceAvailable = w; const int lastStartKey = remappedXYToNote (Point (endOfLastKey - spaceAvailable, 0), mousePositionVelocity) + 1; if (lastStartKey >= 0 && ((int) firstKey) > lastStartKey) @@ -636,14 +632,16 @@ void MidiKeyboardComponent::resized() } int newOffset = 0; - getKeyPos (((int) firstKey), newOffset, kw); - xOffset = newOffset - scrollButtonW; + getKeyPos ((int) firstKey, newOffset, kw); + xOffset = newOffset; } else { firstKey = (float) rangeStart; } + getKeyPos (rangeEnd, kx2, kw2); + scrollUp->setVisible (canScroll && kx2 > w); repaint(); } } diff --git a/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h b/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h index 987d742081..fd0d37c7b1 100644 --- a/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h +++ b/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h @@ -52,7 +52,6 @@ class JUCE_API MidiKeyboardComponent : public Component, public: //============================================================================== /** The direction of the keyboard. - @see setOrientation */ enum Orientation