diff --git a/include/song.h b/include/song.h index a27a9f16f..b9c9bcad8 100644 --- a/include/song.h +++ b/include/song.h @@ -311,6 +311,7 @@ private: friend class controllerRackView; signals: + void lengthChanged( int _tacts ); void tempoChanged( bpm_t _new_bpm ); void timeSignatureChanged( int _old_ticks_per_tact, int _ticks_per_tact ); diff --git a/include/song_editor.h b/include/song_editor.h index b21247419..6dbfb5274 100644 --- a/include/song_editor.h +++ b/include/song_editor.h @@ -2,7 +2,7 @@ * song_editor.h - declaration of class songEditor, a window where you can * setup your songs * - * Copyright (c) 2004-2008 Tobias Doerffel + * Copyright (c) 2004-2009 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -81,6 +81,7 @@ private slots: void masterPitchMoved( int _new_val ); void masterPitchReleased( void ); + void updateScrollBar( int ); void updatePosition( const midiTime & _t ); void zoomingChanged( void ); @@ -88,7 +89,6 @@ private slots: private: virtual void keyPressEvent( QKeyEvent * _ke ); - virtual void paintEvent( QPaintEvent * _pe ); virtual void wheelEvent( QWheelEvent * _we ); virtual bool allowRubberband( void ) const; diff --git a/src/core/song.cpp b/src/core/song.cpp index 6bfa4523b..3e9c307be 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -575,6 +575,8 @@ void song::updateLength( void ) } } m_tracksMutex.unlock(); + + emit lengthChanged( m_length ); } diff --git a/src/core/track.cpp b/src/core/track.cpp index e5558d933..442eeaaf4 100644 --- a/src/core/track.cpp +++ b/src/core/track.cpp @@ -913,7 +913,6 @@ void trackContentWidget::addTCOView( trackContentObjectView * _tcov ) tco->saveJournallingState( false ); changePosition(); tco->restoreJournallingState(); - } @@ -1776,11 +1775,9 @@ trackContentObject * track::addTCO( trackContentObject * _tco ) { m_trackContentObjects.push_back( _tco ); -// emit dataChanged(); emit trackContentObjectAdded( _tco ); - //engine::getSongEditor()->setModified(); - return( _tco ); // just for convenience + return _tco; // just for convenience } @@ -1798,6 +1795,7 @@ void track::removeTCO( trackContentObject * _tco ) if( it != m_trackContentObjects.end() ) { m_trackContentObjects.erase( it ); + engine::getSong()->updateLength(); engine::getSong()->setModified(); } } diff --git a/src/gui/song_editor.cpp b/src/gui/song_editor.cpp index 5045120c6..318e5693f 100644 --- a/src/gui/song_editor.cpp +++ b/src/gui/song_editor.cpp @@ -374,6 +374,8 @@ songEditor::songEditor( song * _song, songEditor * & _engine_ptr ) : static_cast( layout() )->addWidget( m_leftRightScroll ); connect( m_leftRightScroll, SIGNAL( valueChanged( int ) ), this, SLOT( scrolled( int ) ) ); + connect( m_s, SIGNAL( lengthChanged( int ) ), + this, SLOT( updateScrollBar( int ) ) ); engine::getMainWindow()->workspace()->addSubWindow( this ); @@ -509,15 +511,6 @@ void songEditor::keyPressEvent( QKeyEvent * _ke ) -void songEditor::paintEvent( QPaintEvent * _pe ) -{ - m_leftRightScroll->setMaximum( m_s->length() ); - trackContainerView::paintEvent( _pe ); -} - - - - void songEditor::wheelEvent( QWheelEvent * _we ) { if( engine::getMainWindow()->isCtrlPressed() == TRUE ) @@ -646,6 +639,14 @@ void songEditor::masterPitchReleased( void ) +void songEditor::updateScrollBar( int _len ) +{ + m_leftRightScroll->setMaximum( _len ); +} + + + + void songEditor::updatePosition( const midiTime & _t ) { if( ( m_s->isPlaying() && m_s->m_playMode == song::Mode_PlaySong