InstrumentTrackView: save and restore last position of window
When closing a InstrumentTrackWindow save its position so it can be restored later when showing it. Fixes windows always popping up somewhere else when toggling instrument track button repeatedly.
This commit is contained in:
@@ -288,7 +288,7 @@ private slots:
|
||||
|
||||
private:
|
||||
instrumentTrackWindow * m_window;
|
||||
|
||||
|
||||
static QQueue<instrumentTrackWindow *> s_windows;
|
||||
|
||||
// widgets in track-settings-widget
|
||||
@@ -302,6 +302,8 @@ private:
|
||||
QAction * m_midiInputAction;
|
||||
QAction * m_midiOutputAction;
|
||||
|
||||
QPoint m_lastPos;
|
||||
|
||||
|
||||
friend class instrumentTrackWindow;
|
||||
|
||||
|
||||
@@ -861,7 +861,8 @@ QQueue<instrumentTrackWindow *> 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 );
|
||||
@@ -971,6 +972,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 );
|
||||
@@ -1017,6 +1019,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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user