Try to make snapping more accurate.
This commit is contained in:
parent
a055856c56
commit
2d6a93b448
4
Region.C
4
Region.C
|
@ -221,6 +221,8 @@ Region::handle ( int m )
|
||||||
|
|
||||||
// nx = _track->snap( this, nx );
|
// nx = _track->snap( this, nx );
|
||||||
|
|
||||||
|
// _offset = timeline.x_to_ts( nx );
|
||||||
|
|
||||||
position( nx, y() );
|
position( nx, y() );
|
||||||
|
|
||||||
_track->snap( this );
|
_track->snap( this );
|
||||||
|
@ -260,7 +262,7 @@ Region::handle ( int m )
|
||||||
timeline.scroll->position( pos, timeline.scroll->yposition() );
|
timeline.scroll->position( pos, timeline.scroll->yposition() );
|
||||||
}
|
}
|
||||||
|
|
||||||
_offset = timeline.x_to_ts( x() );
|
// _offset = timeline.x_to_ts( x() );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
default:
|
default:
|
||||||
|
|
4
Region.H
4
Region.H
|
@ -48,9 +48,9 @@ public:
|
||||||
void resize ( void );
|
void resize ( void );
|
||||||
|
|
||||||
|
|
||||||
Track * track ( void ) { return _track; }
|
Track * track ( void ) const { return _track; }
|
||||||
void track ( Track *t ) { _track = t; }
|
void track ( Track *t ) { _track = t; }
|
||||||
|
|
||||||
nframes_t offset ( void ) { return _offset; }
|
nframes_t offset ( void ) const { return _offset; }
|
||||||
void offset ( nframes_t o ) { _offset = o; }
|
void offset ( nframes_t o ) { _offset = o; }
|
||||||
};
|
};
|
||||||
|
|
27
Track.H
27
Track.H
|
@ -25,6 +25,9 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
using std::list;
|
using std::list;
|
||||||
|
|
||||||
|
@ -88,7 +91,7 @@ public:
|
||||||
|
|
||||||
for ( int i = children(); i-- ; )
|
for ( int i = children(); i-- ; )
|
||||||
{
|
{
|
||||||
const Fl_Widget *w = child( i );
|
const Region *w = (Region*)child( i );
|
||||||
|
|
||||||
if ( w == r )
|
if ( w == r )
|
||||||
continue;
|
continue;
|
||||||
|
@ -98,17 +101,29 @@ public:
|
||||||
|
|
||||||
if ( abs( rx1 - wx2 ) < snap_pixels )
|
if ( abs( rx1 - wx2 ) < snap_pixels )
|
||||||
{
|
{
|
||||||
rx1 = wx2 - 1;
|
r->offset( w->offset() + ( w->end() - w->start() ) + 1 );
|
||||||
break;
|
|
||||||
|
printf( "snap: %lu | %lu\n", w->offset() + (w->end() - w->start()), r->offset() );
|
||||||
|
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( abs( rx2 - wx1 ) < snap_pixels )
|
if ( abs( rx2 - wx1 ) < snap_pixels )
|
||||||
{
|
{
|
||||||
rx1 = (wx1 - r->w()) + 1;
|
r->offset( (w->offset() - ( r->end() - r->start() )) - 1 );
|
||||||
break;
|
|
||||||
|
printf( "snap: %lu | %lu\n", r->offset() + (r->end() - r->start()), w->offset() );
|
||||||
|
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r->position( rx1, y() );
|
|
||||||
|
r->offset( timeline.x_to_ts( r->x() ));
|
||||||
|
|
||||||
|
done:
|
||||||
|
|
||||||
|
r->resize();
|
||||||
|
// r->position( rx1, y() );
|
||||||
}
|
}
|
||||||
|
|
||||||
int handle ( int m )
|
int handle ( int m )
|
||||||
|
|
|
@ -68,9 +68,11 @@ public:
|
||||||
void draw ( int X, int Y, int W, int H );
|
void draw ( int X, int Y, int W, int H );
|
||||||
|
|
||||||
void start ( nframes_t s ) { _start = s; }
|
void start ( nframes_t s ) { _start = s; }
|
||||||
|
nframes_t start ( void ) const { return _start; }
|
||||||
void end ( nframes_t e ) { _end = e; }
|
void end ( nframes_t e ) { _end = e; }
|
||||||
|
nframes_t end ( void ) const { return _end; }
|
||||||
void scale ( float s ) { _scale = s; }
|
void scale ( float s ) { _scale = s; }
|
||||||
float scale ( void ) { return _scale; }
|
float scale ( void ) const { return _scale; }
|
||||||
|
|
||||||
// void peaks ( float *p ) { _peaks = p; }
|
// void peaks ( float *p ) { _peaks = p; }
|
||||||
void normalize ( void );
|
void normalize ( void );
|
||||||
|
|
Loading…
Reference in New Issue