bugfixes and some small improvements
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@95 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
2
AUTHORS
2
AUTHORS
@@ -8,7 +8,7 @@ Danny McRae
|
||||
|
||||
Zolo
|
||||
<the-zolo/at/gmx/dot/de>
|
||||
dark-expert-theme
|
||||
theme "Blue Scene"
|
||||
|
||||
Sebastian Tilsch
|
||||
<djcompilation/at/gmx.de>
|
||||
|
||||
25
ChangeLog
25
ChangeLog
@@ -1,3 +1,28 @@
|
||||
2006-02-28 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
|
||||
* data/locale/de.ts:
|
||||
updated German translation
|
||||
|
||||
* src/core/timeline.cpp:
|
||||
use note::toNearestTact() in timeLine::mouseMoveEvent() instead of own
|
||||
calculations
|
||||
|
||||
* src/core/track.cpp:
|
||||
per default make TCO-ops (create, move, resize) aligned on tact-
|
||||
boundaries, free positioning/resizing can be achieved by pressing
|
||||
<Ctrl> after pressing mouse-button
|
||||
|
||||
* include/midi_time.h:
|
||||
added note::toNearestTact()-method
|
||||
|
||||
* include/pattern.h:
|
||||
* src/core/piano_roll.cpp:
|
||||
* src/track/pattern.cpp:
|
||||
do not quantize note-position while moving selection of notes
|
||||
|
||||
* src/core/song_editor.cpp:
|
||||
some layout-fixes for looking good with "Blue Scene" as well
|
||||
|
||||
2006-02-27 Zolo <the-zolo/at/gmx/dot/de>
|
||||
|
||||
* data/themes/blue_scene/:
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.50)
|
||||
AC_INIT(lmms, 0.1.4-cvs20060227, tobydox/at/users/dot/sourceforge/dot/net)
|
||||
AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060227)
|
||||
AC_INIT(lmms, 0.1.4-cvs20060228, tobydox/at/users/dot/sourceforge/dot/net)
|
||||
AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060228)
|
||||
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
|
||||
Binary file not shown.
@@ -671,7 +671,11 @@ http://lmms.sourceforge.net</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Beat+Bassline Editor</source>
|
||||
<translation>Beat+Bassline Editor</translation>
|
||||
<translation type="obsolete">Beat+Bassline Editor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Beat+Baseline Editor</source>
|
||||
<translation>Beat+Baseline Editor</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -690,14 +694,22 @@ http://lmms.sourceforge.net</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open in Beat+Bassline-Editor</source>
|
||||
<translation>Im Beat+Bassline-Editor öffnen</translation>
|
||||
<translation type="obsolete">Im Beat+Bassline-Editor öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open in Beat+Baseline-Editor</source>
|
||||
<translation>Im Beat+Baseline-Editor öffnen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>bbTrack</name>
|
||||
<message>
|
||||
<source>Beat/Bassline %1</source>
|
||||
<translation>Beat/Bassline %1</translation>
|
||||
<translation type="obsolete">Beat/Bassline %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Beat/Baseline %1</source>
|
||||
<translation>Beat/Baseline %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -740,7 +752,7 @@ http://lmms.sourceforge.net</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Draw your own waveform hereby dragging your mouse onto this graph</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zeichnen Sie eigene Wellenformen, indem Sie die Maus über den Graph ziehen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1649,11 +1661,11 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.</t
|
||||
</message>
|
||||
<message>
|
||||
<source>Show/hide Beat+Bassline Editor</source>
|
||||
<translation>Zeige/verstecke Beat+Bassline Editor</translation>
|
||||
<translation type="obsolete">Zeige/verstecke Beat+Bassline Editor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>By pressing this button, you can show or hide the Beat+Bassline Editor. The Beat+Bassline Editor is needed for setting beats, opening, adding and removing channels, cutting, copying and pasting beat- and bassline-patterns and other things like that.</source>
|
||||
<translation>Durch das Drücken dieses Knopfes wird der Beat+Bassline Editor ein- oder ausgeblendet. Der Beat+Bassline Editor ist nötig, um Beats zu setzen, um Kanale zu öffnen, hinzuzufügen und zu entfernen, um Bassline-Patterns auszuschneiden, zu kopieren und einzufügen usw.</translation>
|
||||
<translation type="obsolete">Durch das Drücken dieses Knopfes wird der Beat+Bassline Editor ein- oder ausgeblendet. Der Beat+Bassline Editor ist nötig, um Beats zu setzen, um Kanale zu öffnen, hinzuzufügen und zu entfernen, um Bassline-Patterns auszuschneiden, zu kopieren und einzufügen usw.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show/hide Piano-Roll</source>
|
||||
@@ -1773,6 +1785,18 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.</t
|
||||
<source>Setting up main-window and workspace...</source>
|
||||
<translation>Initialisiere Hauptfenster und Arbeitsbereich...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show/hide Beat+Baseline Editor</source>
|
||||
<translation>Zeige/verstecke Beat+Baseline Editor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>By pressing this button, you can show or hide the Beat+Baseline Editor. The Beat+Baesline Editor is needed for setting beats, opening, adding and removing channels, cutting, copying and pasting beat- and baseline-patterns and other things like that.</source>
|
||||
<translation type="obsolete">Durch das Drücken dieses Knopfes wird der Beat+Baseline Editor ein- oder ausgeblendet. Der Beat+Bassline Editor ist nötig, um Beats zu setzen, um Kanale zu öffnen, hinzuzufügen und zu entfernen, um Bassline-Patterns auszuschneiden, zu kopieren und einzufügen usw.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>By pressing this button, you can show or hide the Beat+Baseline Editor. The Beat+Baseline Editor is needed for creating beats, opening, adding and removing channels, cutting, copying and pasting beat- and baseline-patterns and other things like that.</source>
|
||||
<translation>Durch das Drücken dieses Knopfes wird der Beat+Baseline Editor ein- oder ausgeblendet. Der Beat+Baseline Editor ist nötig, um Beats zu erstellen, Kanale zu öffnen, hinzuzufügen und zu entfernen sowie um Baseline-Patterns auszuschneiden, zu kopieren und einzufügen usw.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>midiClient</name>
|
||||
@@ -1853,6 +1877,49 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.</t
|
||||
<translation>Alle Bilder (*.png *.jpg *.jpeg *.gif *.bmp)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>organicInstrument</name>
|
||||
<message>
|
||||
<source>Osc %1 waveform</source>
|
||||
<translation>Oszillator %1 Wellenform</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Osc %1 waveform:</source>
|
||||
<translation>Oszillator %1 Wellenform:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Osc %1 volume</source>
|
||||
<translation>Oszillator %1 Lautstärke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Osc %1 volume:</source>
|
||||
<translation>Oszillator %1 Lautstärke:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Osc %1 panning</source>
|
||||
<translation>Oszillator %1 Balance</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Osc %1 panning:</source>
|
||||
<translation>Oszillator %1 Balance:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Osc %1 fine detuning left</source>
|
||||
<translation>Oszillator %1 Fein-Verstimmung links</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Osc %1 fine detuning left:</source>
|
||||
<translation>Oszillator %1 Fein-Verstimmung links:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>cents</source>
|
||||
<translation>Cent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>FX1</source>
|
||||
<translation>FX1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>pattern</name>
|
||||
<message>
|
||||
@@ -2039,6 +2106,10 @@ Lautstärke eines Steps kann mit Mausrad geändert werden</translation>
|
||||
<source>All selected notes were copied to the clipboard.</source>
|
||||
<translation>Alle gewählten Noten wurden in die Zwischenablage kopiert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last note</source>
|
||||
<translation>Letzte Note</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>pluckedStringSynth</name>
|
||||
@@ -2071,7 +2142,7 @@ Lautstärke eines Steps kann mit Mausrad geändert werden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You can drag an instrument-plugin into either the Song-Editor, the Beat+Bassline Editor or just into a channel-window or on the corresponding channel-button.</source>
|
||||
<translation>Sie können ein Instrument-Plugin entweder in den Song-Editor, den Beat+Bassline-Editor oder einfach in ein Kanal-Fenster oder auf den zugehörigen Kanal-Button ziehen.</translation>
|
||||
<translation type="obsolete">Sie können ein Instrument-Plugin entweder in den Song-Editor, den Beat+Bassline-Editor oder einfach in ein Kanal-Fenster oder auf den zugehörigen Kanal-Button ziehen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>cheap synthesis of guitar/harp-like sounds</source>
|
||||
@@ -2101,6 +2172,14 @@ Lautstärke eines Steps kann mit Mausrad geändert werden</translation>
|
||||
<source>Rough & Dirty Wavetable Synthesizer.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You can drag an instrument-plugin into either the Song-Editor, the Beat+Baseline Editor or just into a channel-window or on the corresponding channel-button.</source>
|
||||
<translation>Sie können ein Instrument-Plugin entweder in den Song-Editor, den Beat+Baseline-Editor oder einfach in ein Kanal-Fenster oder auf den zugehörigen Kanal-Button ziehen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additive Synthesizer for organ-like sounds</source>
|
||||
<translation>Additiver Synthesizer für orgelähnliche Klänge</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>projectNotes</name>
|
||||
@@ -2419,6 +2498,14 @@ Latency: %2 ms</source>
|
||||
<translation>Frames: %1
|
||||
Latenz: %2 ms</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artwork directory</source>
|
||||
<translation>Artwork-Verzeichnis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose artwork-theme directory</source>
|
||||
<translation>Artwork-Verzeichnis wählen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>setupWidget</name>
|
||||
@@ -2845,6 +2932,18 @@ Bitte stellen Sie sicher, dass Sie Schreibrechte auf diese Datei und das Verzeic
|
||||
<source>%1:%2 (%3:%4 to %5:%6)</source>
|
||||
<translation>%1:%2 (%3:%4 bis %5:%6)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint</source>
|
||||
<translation>Tipp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press <Ctrl> for free positioning.</source>
|
||||
<translation>Drücken Sie <Strg> für freie Positionierung.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press <Ctrl> for free resizing.</source>
|
||||
<translation>Drücken Sie <Strg> für freie Größenänderung.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>trackOperationsWidget</name>
|
||||
|
||||
@@ -50,6 +50,15 @@ public:
|
||||
*this = _t;
|
||||
}
|
||||
|
||||
inline midiTime toNearestTact( void ) const
|
||||
{
|
||||
if( m_tact64th >= 32 )
|
||||
{
|
||||
return( m_tact * 64 + 64 );
|
||||
}
|
||||
return( m_tact * 64 );
|
||||
}
|
||||
|
||||
inline midiTime & operator=( const midiTime & _t )
|
||||
{
|
||||
m_tact = _t.m_tact;
|
||||
|
||||
@@ -87,11 +87,13 @@ public:
|
||||
|
||||
virtual midiTime length( void ) const;
|
||||
|
||||
note * FASTCALL addNote( const note & _new_note );
|
||||
note * FASTCALL addNote( const note & _new_note,
|
||||
const bool _quant_pos = TRUE );
|
||||
|
||||
void FASTCALL removeNote( const note * _note_to_del );
|
||||
|
||||
note * FASTCALL rearrangeNote( const note * _note_to_proc );
|
||||
note * FASTCALL rearrangeNote( const note * _note_to_proc,
|
||||
const bool _quant_pos = TRUE );
|
||||
|
||||
void clearNotes( void );
|
||||
|
||||
|
||||
@@ -151,6 +151,8 @@ private:
|
||||
bool m_autoResize;
|
||||
Sint16 m_initialMouseX;
|
||||
|
||||
textFloat * m_hint;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
@@ -328,8 +328,8 @@ void mainWindow::finalize( void )
|
||||
QWhatsThis::add( bb_editor_window,
|
||||
#endif
|
||||
tr( "By pressing this button, you can show or hide the "
|
||||
"Beat+Baseline Editor. The Beat+Baesline Editor is "
|
||||
"needed for setting beats, opening, adding and "
|
||||
"Beat+Baseline Editor. The Beat+Baseline Editor is "
|
||||
"needed for creating beats, opening, adding and "
|
||||
"removing channels, cutting, copying and pasting "
|
||||
"beat- and baseline-patterns and other things like "
|
||||
"that." ) );
|
||||
|
||||
@@ -1779,7 +1779,7 @@ void pianoRoll::mouseMoveEvent( QMouseEvent * _me )
|
||||
note_tact_64th );
|
||||
( *it )->setPos( new_note_pos );
|
||||
( *it )->setKey( ( *it )->key() + key_diff );
|
||||
*it = m_pattern->rearrangeNote( *it );
|
||||
*it = m_pattern->rearrangeNote( *it, FALSE );
|
||||
}
|
||||
|
||||
m_moveStartTact64th = pos_tact_64th;
|
||||
|
||||
@@ -224,6 +224,7 @@ songEditor::songEditor( engine * _engine ) :
|
||||
|
||||
QLabel * master_pitch_lbl = new QLabel( tb );
|
||||
master_pitch_lbl->setPixmap( embed::getIconPixmap( "master_pitch" ) );
|
||||
master_pitch_lbl->setFixedHeight( 64 );
|
||||
|
||||
#ifdef QT4
|
||||
m_masterPitchSlider = new QSlider( Qt::Vertical, tb );
|
||||
@@ -262,7 +263,7 @@ songEditor::songEditor( engine * _engine ) :
|
||||
vcw_layout->setMargin( 0 );
|
||||
vcw_layout->setSpacing( 0 );
|
||||
|
||||
vcw_layout->addStretch();
|
||||
//vcw_layout->addStretch();
|
||||
vcw_layout->addWidget( new visualizationWidget(
|
||||
embed::getIconPixmap( "output_graph" ), vc_w, eng() ) );
|
||||
|
||||
|
||||
@@ -373,11 +373,7 @@ void timeLine::mouseMoveEvent( QMouseEvent * _me )
|
||||
}
|
||||
else
|
||||
{
|
||||
m_loopPos[i] = t.getTact() * 64;
|
||||
if( t.getTact64th() >= 32 )
|
||||
{
|
||||
m_loopPos[i] += 64;
|
||||
}
|
||||
m_loopPos[i] = t.toNearestTact();
|
||||
}
|
||||
update();
|
||||
break;
|
||||
|
||||
@@ -93,7 +93,8 @@ trackContentObject::trackContentObject( track * _track ) :
|
||||
m_length(),
|
||||
m_action( NONE ),
|
||||
m_autoResize( FALSE ),
|
||||
m_initialMouseX( 0 )
|
||||
m_initialMouseX( 0 ),
|
||||
m_hint( NULL )
|
||||
{
|
||||
if( s_textFloat == NULL )
|
||||
{
|
||||
@@ -122,6 +123,7 @@ trackContentObject::trackContentObject( track * _track ) :
|
||||
|
||||
trackContentObject::~trackContentObject()
|
||||
{
|
||||
delete m_hint;
|
||||
}
|
||||
|
||||
|
||||
@@ -278,7 +280,7 @@ void trackContentObject::mousePressEvent( QMouseEvent * _me )
|
||||
m_track->eng() );
|
||||
}
|
||||
else if( _me->button() == Qt::LeftButton &&
|
||||
/* eng()->getMainWindow()->isShiftPressed() == FALSE &&*/
|
||||
/* eng()->getMainWindow()->isShiftPressed() == FALSE &&*/
|
||||
fixedTCOs() == FALSE )
|
||||
{
|
||||
m_initialMouseX = _me->x();
|
||||
@@ -289,6 +291,11 @@ void trackContentObject::mousePressEvent( QMouseEvent * _me )
|
||||
QCursor c( Qt::SizeAllCursor );
|
||||
QApplication::setOverrideCursor( c );
|
||||
s_textFloat->setTitle( tr( "Current position" ) );
|
||||
delete m_hint;
|
||||
m_hint = textFloat::displayMessage( tr( "Hint" ),
|
||||
tr( "Press <Ctrl> for free "
|
||||
"positioning." ),
|
||||
embed::getIconPixmap( "hint" ), 0 );
|
||||
}
|
||||
else if( m_autoResize == FALSE )
|
||||
{
|
||||
@@ -296,15 +303,21 @@ void trackContentObject::mousePressEvent( QMouseEvent * _me )
|
||||
QCursor c( Qt::SizeHorCursor );
|
||||
QApplication::setOverrideCursor( c );
|
||||
s_textFloat->setTitle( tr( "Current length" ) );
|
||||
delete m_hint;
|
||||
m_hint = textFloat::displayMessage( tr( "Hint" ),
|
||||
tr( "Press <Ctrl> for free "
|
||||
"resizing." ),
|
||||
embed::getIconPixmap( "hint" ), 0 );
|
||||
}
|
||||
s_textFloat->reparent( this );
|
||||
// setup text-float as if TCO was already moved/resized
|
||||
mouseMoveEvent( _me );
|
||||
s_textFloat->show();
|
||||
|
||||
}
|
||||
else if( ( _me->button() == Qt::MidButton/* ||
|
||||
( _me->button() == Qt::LeftButton &&
|
||||
eng()->getMainWindow()->isShiftPressed() == TRUE )*/ ) &&
|
||||
eng()->getMainWindow()->isShiftPressed() == TRUE )*/ ) &&
|
||||
fixedTCOs() == FALSE )
|
||||
{
|
||||
close();
|
||||
@@ -316,13 +329,25 @@ void trackContentObject::mousePressEvent( QMouseEvent * _me )
|
||||
|
||||
void trackContentObject::mouseMoveEvent( QMouseEvent * _me )
|
||||
{
|
||||
if( getTrack()->eng()->getMainWindow()->isCtrlPressed() == TRUE )
|
||||
{
|
||||
delete m_hint;
|
||||
m_hint = NULL;
|
||||
}
|
||||
|
||||
const float ppt = m_track->getTrackContainer()->pixelsPerTact();
|
||||
if( m_action == MOVE )
|
||||
{
|
||||
const int x = mapToParent( _me->pos() ).x() - m_initialMouseX;
|
||||
movePosition( tMax( 0, (Sint32) m_track->getTrackContainer()->
|
||||
midiTime t = tMax( 0, (Sint32) m_track->getTrackContainer()->
|
||||
currentPosition() +
|
||||
static_cast<int>( x * 64 / ppt ) ) );
|
||||
static_cast<int>( x * 64 / ppt ) );
|
||||
if( getTrack()->eng()->getMainWindow()->isCtrlPressed() ==
|
||||
FALSE && _me->button() == Qt::NoButton )
|
||||
{
|
||||
t = t.toNearestTact();
|
||||
}
|
||||
movePosition( t );
|
||||
m_track->getTrackWidget()->changePosition();
|
||||
s_textFloat->setText( QString( "%1:%2" ).
|
||||
arg( m_startPosition.getTact() + 1 ).
|
||||
@@ -363,8 +388,14 @@ void trackContentObject::mouseMoveEvent( QMouseEvent * _me )
|
||||
}
|
||||
else if( m_action == RESIZE )
|
||||
{
|
||||
changeLength( tMax( 64,
|
||||
static_cast<int>( _me->x() * 64 / ppt ) ) );
|
||||
midiTime t = tMax( 64,
|
||||
static_cast<int>( _me->x() * 64 / ppt ) );
|
||||
if( getTrack()->eng()->getMainWindow()->isCtrlPressed() ==
|
||||
FALSE && _me->button() == Qt::NoButton )
|
||||
{
|
||||
t = t.toNearestTact();
|
||||
}
|
||||
changeLength( t );
|
||||
s_textFloat->setText( tr( "%1:%2 (%3:%4 to %5:%6)" ).
|
||||
arg( length().getTact() ).
|
||||
arg( length().getTact64th() ).
|
||||
@@ -404,6 +435,8 @@ void trackContentObject::mouseMoveEvent( QMouseEvent * _me )
|
||||
void trackContentObject::mouseReleaseEvent( QMouseEvent * _me )
|
||||
{
|
||||
m_action = NONE;
|
||||
delete m_hint;
|
||||
m_hint = NULL;
|
||||
s_textFloat->hide();
|
||||
leaveEvent( NULL );
|
||||
selectableObject::mouseReleaseEvent( _me );
|
||||
@@ -691,16 +724,17 @@ void trackContentWidget::dropEvent( QDropEvent * _de )
|
||||
if( type == ( "tco_" + QString::number( getTrack()->type() ) ) &&
|
||||
getTrack()->getTrackContainer()->fixedTCOs() == FALSE )
|
||||
{
|
||||
const midiTime position = getPosition( _de->pos().x() );
|
||||
const midiTime pos = getPosition( _de->pos().x()
|
||||
).toNearestTact();
|
||||
trackContentObject * tco = addTCO( getTrack()->createTCO(
|
||||
position ) );
|
||||
pos ) );
|
||||
// value contains our XML-data so simply create a
|
||||
// multimediaProject which does the rest for us...
|
||||
multimediaProject mmp( value, FALSE );
|
||||
// at least save position before getting moved to somewhere
|
||||
// the user doesn't expect...
|
||||
tco->loadSettings( mmp.content().firstChild().toElement() );
|
||||
tco->movePosition( position );
|
||||
tco->movePosition( pos );
|
||||
_de->accept();
|
||||
}
|
||||
}
|
||||
@@ -723,10 +757,10 @@ void trackContentWidget::mousePressEvent( QMouseEvent * _me )
|
||||
else if( _me->button() == Qt::LeftButton &&
|
||||
getTrack()->getTrackContainer()->fixedTCOs() == FALSE )
|
||||
{
|
||||
const midiTime position = getPosition( _me->x() );
|
||||
const midiTime pos = getPosition( _me->x() ).toNearestTact();
|
||||
trackContentObject * tco = addTCO( getTrack()->createTCO(
|
||||
position ) );
|
||||
tco->movePosition( position );
|
||||
pos ) );
|
||||
tco->movePosition( pos );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -237,10 +237,13 @@ midiTime pattern::length( void ) const
|
||||
|
||||
|
||||
|
||||
note * pattern::addNote( const note & _new_note )
|
||||
note * pattern::addNote( const note & _new_note, const bool _quant_pos )
|
||||
{
|
||||
note * new_note = new note( _new_note );
|
||||
new_note->quantizePos( eng()->getPianoRoll()->quantization() );
|
||||
if( _quant_pos )
|
||||
{
|
||||
new_note->quantizePos( eng()->getPianoRoll()->quantization() );
|
||||
}
|
||||
|
||||
if( m_notes.size() == 0 || m_notes.back()->pos() <= new_note->pos() )
|
||||
{
|
||||
@@ -301,14 +304,15 @@ void pattern::removeNote( const note * _note_to_del )
|
||||
|
||||
|
||||
|
||||
note * pattern::rearrangeNote( const note * _note_to_proc )
|
||||
note * pattern::rearrangeNote( const note * _note_to_proc,
|
||||
const bool _quant_pos )
|
||||
{
|
||||
// just rearrange the position of the note by removing it and adding
|
||||
// a copy of it -> addNote inserts it at the correct position
|
||||
note copy_of_note( *_note_to_proc );
|
||||
removeNote( _note_to_proc );
|
||||
|
||||
return( addNote( copy_of_note ) );
|
||||
return( addNote( copy_of_note, _quant_pos ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user