From: werner s. <wsc...@us...> - 2004-05-31 14:26:12
|
Update of /cvsroot/lmuse/muse/muse/midiedit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12416/muse/midiedit Modified Files: dcanvas.cpp ecanvas.cpp prcanvas.cpp Log Message: fixed a crash when moving notes to tick positions < 0 Index: dcanvas.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/midiedit/dcanvas.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** dcanvas.cpp 30 May 2004 09:58:07 -0000 1.13 --- dcanvas.cpp 31 May 2004 14:25:57 -0000 1.14 *************** *** 75,84 **** MidiPart* part = (MidiPart*)nevent->part(); Event event = nevent->event(); ! int ntick = editor->rasterVal(pos.x()); int npitch = y2pitch(pos.y()); Event newEvent = event.clone(); newEvent.setPitch(npitch); ! newEvent.setTick(ntick - part->tick()); if (dtype == MOVE_COPY || dtype == MOVE_CLONE) { --- 75,89 ---- MidiPart* part = (MidiPart*)nevent->part(); Event event = nevent->event(); ! int x = pos.x(); ! if (x < 0) ! x = 0; ! int ntick = editor->rasterVal(0) - part->tick(); ! if (ntick < 0) ! ntick = 0; int npitch = y2pitch(pos.y()); Event newEvent = event.clone(); newEvent.setPitch(npitch); ! newEvent.setTick(ntick); if (dtype == MOVE_COPY || dtype == MOVE_CLONE) { Index: prcanvas.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/midiedit/prcanvas.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** prcanvas.cpp 31 May 2004 11:48:55 -0000 1.16 --- prcanvas.cpp 31 May 2004 14:25:59 -0000 1.17 *************** *** 204,207 **** --- 204,211 ---- int npitch = y2pitch(pos.y()); Event newEvent = event.clone(); + int x = pos.x(); + + if (x < 0) + x = 0; if (event.pitch() != npitch && _playEvents) { *************** *** 216,220 **** Part* part = nevent->part(); newEvent.setPitch(npitch); ! int ntick = editor->rasterVal(pos.x()) - part->tick(); newEvent.setTick(ntick); newEvent.setLenTick(event.lenTick()); --- 220,226 ---- Part* part = nevent->part(); newEvent.setPitch(npitch); ! int ntick = editor->rasterVal(x) - part->tick(); ! if (ntick < 0) ! ntick = 0; newEvent.setTick(ntick); newEvent.setLenTick(event.lenTick()); Index: ecanvas.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/midiedit/ecanvas.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ecanvas.cpp 24 Apr 2004 14:58:52 -0000 1.7 --- ecanvas.cpp 31 May 2004 14:25:59 -0000 1.8 *************** *** 77,81 **** QPoint EventCanvas::raster(const QPoint& p) const { ! int x = editor->rasterVal(p.x()); int pitch = y2pitch(p.y()); int y = pitch2y(pitch); --- 77,84 ---- QPoint EventCanvas::raster(const QPoint& p) const { ! int x = p.x(); ! if (x < 0) ! x = 0; ! x = editor->rasterVal(x); int pitch = y2pitch(p.y()); int y = pitch2y(pitch); |