Thread: [Jahshaka-cvs] jah/jahwidgets/src/qt3/widgets timelineSlider.cpp, 1.37, 1.38
Status: Beta
Brought to you by:
jahshaka
From: nikhilsharma <nik...@us...> - 2007-08-16 17:13:09
|
Update of /cvsroot/jahshaka/jah/jahwidgets/src/qt3/widgets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv18183 Modified Files: timelineSlider.cpp Log Message: Updated to fix in/out points, marker selection, and other tracking bugs on the timeline, though one bug remains - marker thumb plays through the last active in/out point region in play mode. Index: timelineSlider.cpp =================================================================== RCS file: /cvsroot/jahshaka/jah/jahwidgets/src/qt3/widgets/timelineSlider.cpp,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- timelineSlider.cpp 15 Aug 2007 11:42:30 -0000 1.37 +++ timelineSlider.cpp 16 Aug 2007 17:13:05 -0000 1.38 @@ -151,27 +151,23 @@ return std::max( std::min( i, max ), min ); } - int markerClamp( int i ) const - { - return std::max( std::min( i, activeRange->out ), activeRange->in ); - } - int inClamp( int i ) const { + // Change input point to a valid point below the current out point i = std::max( std::min( i, activeRange->out-1 ), min ); // And clamp above neighbouring out point - for ( RangeSet::const_iterator I = rangeContainer.begin(); - I != rangeContainer.end(); + for ( RangeSet::const_reverse_iterator I = rangeContainer.rbegin(); + I != rangeContainer.rend(); ++I ) { if ( *I == activeRange ) continue; - if ( (*I)->out > activeRange->out ) break; - - if ( i <= (*I)->out ) { - i = (*I)->out + 1; - break; + if ( (*I)->out < activeRange->out ) { + if ( i <= (*I)->out ) { + i = (*I)->out - 1; + break; + } } } @@ -180,20 +176,21 @@ int outClamp( int i ) const { - i = std::max( std::min( i, max ), activeRange->in ); + // Change input point to a valid point above the current in point + i = std::min( std::max( i, activeRange->in+1 ), max ); // And clamp below neighbouring in point - for ( RangeSet::const_reverse_iterator I = rangeContainer.rbegin(); - I != rangeContainer.rend(); + for ( RangeSet::const_iterator I = rangeContainer.begin(); + I != rangeContainer.end(); ++I ) { if ( *I == activeRange ) continue; - if ( (*I)->out < activeRange->in ) break; - - if ( i >= (*I)->in ) { - i = (*I)->in - 1; - break; + if ( (*I)->in > activeRange->in ) { + if ( i >= (*I)->in ) { + i = (*I)->in + 1; + break; + } } } @@ -584,7 +581,7 @@ // Insert an in/out range and return range id int TimelineSlider::insertRange( int in, int out ) { - qDebug( "insertRange: %d %d", in, out ); + //qDebug( "insertRange: %d %d", in, out ); // Clamp to min/max, but otherwise leave as-is RangePtr range( Range::create( m_impl->clamp(in), m_impl->clamp(out) ) ); @@ -598,7 +595,7 @@ // Remove an in/out range void TimelineSlider::removeRangeWithId( int id ) { - qDebug( "removeRangeWithId: %d", id ); + //qDebug( "removeRangeWithId: %d", id ); RangeSet::iterator I = std::find_if( m_impl->rangeContainer.begin(), m_impl->rangeContainer.end(), @@ -1042,7 +1039,8 @@ void TimelineSlider::setValue( int val ) { // tracking check avoids anyone messing with the value during mouse tracking - if ( val != m_impl->v && m_impl->tracking != PrivateTimeline::VALUE ) + if ( val != m_impl->v && ( (m_impl->tracking != PrivateTimeline::VALUE) && + (m_impl->tracking != PrivateTimeline::THUMB) ) ) { _setValue( val ); } |