diff --git a/include/PianoRoll.h b/include/PianoRoll.h index 8437c9ad9..639a042a7 100644 --- a/include/PianoRoll.h +++ b/include/PianoRoll.h @@ -120,6 +120,7 @@ protected: virtual void paintEvent( QPaintEvent * _pe ); virtual void resizeEvent( QResizeEvent * _re ); virtual void wheelEvent( QWheelEvent * _we ); + virtual void focusOutEvent( QFocusEvent * ); int getKey( int _y ) const; static inline void drawNoteRect( QPainter & _p, int _x, int _y, diff --git a/src/gui/PianoRoll.cpp b/src/gui/PianoRoll.cpp index 266a1415a..01a5de07d 100644 --- a/src/gui/PianoRoll.cpp +++ b/src/gui/PianoRoll.cpp @@ -3630,6 +3630,19 @@ void PianoRoll::wheelEvent( QWheelEvent * _we ) +void PianoRoll::focusOutEvent( QFocusEvent * ) +{ + for( int i = 0; i < NumKeys; ++i ) + { + m_pattern->instrumentTrack()->pianoModel()->midiEventProcessor()->processInEvent( MidiEvent( MidiNoteOff, -1, i, 0 ) ); + m_pattern->instrumentTrack()->pianoModel()->setKeyState( i, false ); + } + update(); +} + + + + int PianoRoll::getKey( int _y ) const { int key_line_y = keyAreaBottom() - 1;