diff --git a/include/instrument_track.h b/include/instrument_track.h index 074ca0c52..8d700c417 100644 --- a/include/instrument_track.h +++ b/include/instrument_track.h @@ -288,7 +288,7 @@ private slots: private: instrumentTrackWindow * m_window; - + static QQueue s_windows; // widgets in track-settings-widget @@ -302,6 +302,8 @@ private: QAction * m_midiInputAction; QAction * m_midiOutputAction; + QPoint m_lastPos; + friend class instrumentTrackWindow; diff --git a/src/tracks/instrument_track.cpp b/src/tracks/instrument_track.cpp index 363d0f7a5..f8a705788 100644 --- a/src/tracks/instrument_track.cpp +++ b/src/tracks/instrument_track.cpp @@ -860,7 +860,8 @@ QQueue instrumentTrackView::s_windows; instrumentTrackView::instrumentTrackView( instrumentTrack * _it, trackContainerView * _tcv ) : trackView( _it, _tcv ), - m_window( NULL ) + m_window( NULL ), + m_lastPos( -1, -1 ) { setAcceptDrops( true ); setFixedHeight( 32 ); @@ -970,6 +971,7 @@ void instrumentTrackView::freeInstrumentTrackWindow( void ) { if( m_window != NULL ) { + m_lastPos = m_window->parentWidget()->pos(); if( s_windows.count() < INSTRUMENT_WINDOW_CACHE_SIZE ) { model()->setHook( NULL ); @@ -1016,6 +1018,11 @@ instrumentTrackWindow * instrumentTrackView::getInstrumentTrackWindow( void ) m_window->setModel( model() ); m_window->updateInstrumentView(); model()->setHook( m_window ); + + if( m_lastPos.x() > 0 || m_lastPos.y() > 0 ) + { + m_window->parentWidget()->move( m_lastPos ); + } } else {