[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src/traverso/songcanvas TimeLineView.cpp
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src/traverso/songcanvas TimeLineView.cpp |
Date: |
Mon, 04 Jun 2007 15:45:30 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/06/04 15:45:30
Modified files:
src/traverso/songcanvas: TimeLineView.cpp
Log message:
disable bypassjog again if mouse moves certain distance
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.cpp?cvsroot=traverso&r1=1.40&r2=1.41
Patches:
Index: TimeLineView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- TimeLineView.cpp 4 Jun 2007 15:27:15 -0000 1.40
+++ TimeLineView.cpp 4 Jun 2007 15:45:30 -0000 1.41
@@ -72,11 +72,15 @@
private :
Marker* m_marker;
- MarkerView* m_view;
nframes_t m_origWhen;
nframes_t m_newWhen;
- double m_scalefactor;
- bool m_bypassjog;
+ struct Data {
+ MarkerView* view;
+ double scalefactor;
+ bool bypassjog;
+ int jogBypassPos;
+ };
+ Data* d;
public slots:
void move_left(bool autorepeat);
@@ -90,10 +94,11 @@
DragMarker::DragMarker(MarkerView* mview, double scalefactor, const QString&
des)
: Command(mview->get_marker(), des)
{
- m_view = mview;
- m_marker= m_view->get_marker();
- m_scalefactor = scalefactor;
- m_bypassjog = false;
+ d = new Data;
+ d->view = mview;
+ m_marker= d->view->get_marker();
+ d->scalefactor = scalefactor;
+ d->bypassjog = false;
}
int DragMarker::prepare_actions()
@@ -105,16 +110,17 @@
{
m_origWhen = m_newWhen = m_marker->get_when();
m_marker->set_snappable(false);
- m_view->get_songview()->start_shuttle(true, true);
- m_view->set_dragging(true);
+ d->view->get_songview()->start_shuttle(true, true);
+ d->view->set_dragging(true);
return 1;
}
int DragMarker::finish_hold()
{
m_marker->set_snappable(true);
- m_view->get_songview()->start_shuttle(false);
- m_view->set_dragging(false);
+ d->view->get_songview()->start_shuttle(false);
+ d->view->set_dragging(false);
+ delete d;
return do_action();
}
@@ -138,9 +144,9 @@
void DragMarker::move_left(bool )
{
- m_bypassjog = true;
+ d->bypassjog = true;
// Move 1 pixel to the left
- long newpos = m_newWhen - (uint) ( 1 * m_scalefactor);
+ long newpos = m_newWhen - (uint) ( 1 * d->scalefactor);
if (newpos < 0) {
newpos = 0;
}
@@ -150,19 +156,25 @@
void DragMarker::move_right(bool )
{
- m_bypassjog = true;
+ d->bypassjog = true;
// Move 1 pixel to the right
- m_newWhen = m_newWhen + (uint) ( 1 * m_scalefactor);
+ m_newWhen = m_newWhen + (uint) ( 1 * d->scalefactor);
do_action();
}
int DragMarker::jog()
{
- if (m_bypassjog) {
+ if (d->bypassjog) {
+ int diff = d->jogBypassPos - cpointer().x();
+ if (std::abs(diff) > 15) {
+ d->bypassjog = false;
+ } else {
return 0;
}
+ }
- long newpos = (uint) (cpointer().scene_x() * m_scalefactor);
+ d->jogBypassPos = cpointer().x();
+ long newpos = (uint) (cpointer().scene_x() * d->scalefactor);
if (m_marker->get_timeline()->get_song()->is_snap_on()) {
SnapList* slist =
m_marker->get_timeline()->get_song()->get_snap_list();
@@ -174,9 +186,9 @@
}
m_newWhen = newpos;
- m_view->set_position(int(m_newWhen / m_scalefactor));
+ d->view->set_position(int(m_newWhen / d->scalefactor));
- m_view->get_songview()->update_shuttle_factor();
+ d->view->get_songview()->update_shuttle_factor();
return 1;
}