diff --git a/ChangeLog b/ChangeLog index c6f44e850..597eb6e1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2008-08-22 Tobias Doerffel + * include/instrument_track.h: + * src/gui/file_browser.cpp: + * src/tracks/instrument_track.cpp: + fixed loading presets when dragging them onto existing + instrument-track-window (finally closes #2025902) + * src/gui/piano_roll.cpp: fixed moving selected notes (closes #2039248, #2039254, #2043463) diff --git a/include/instrument_track.h b/include/instrument_track.h index 6817310bb..73f58cc2b 100644 --- a/include/instrument_track.h +++ b/include/instrument_track.h @@ -50,6 +50,7 @@ class instrumentTrackWindow; class instrumentMidiIOView; class lcdSpinBox; class midiPortMenu; +class multimediaProject; class notePlayHandle; class pluginView; class presetPreviewPlayHandle; @@ -153,6 +154,9 @@ public: virtual QString displayName( void ) const; + // simple helper for removing midiport-XML-node when loading presets + static void removeMidiPortNode( multimediaProject & _mmp ); + signals: void instrumentChanged( void ); diff --git a/src/gui/file_browser.cpp b/src/gui/file_browser.cpp index 5d1720999..9c5ecc8b3 100644 --- a/src/gui/file_browser.cpp +++ b/src/gui/file_browser.cpp @@ -48,15 +48,6 @@ #include "text_float.h" -static inline void removeMidiPortNode( multimediaProject & _mmp ) -{ - QDomNodeList n = _mmp.elementsByTagName( "midiport" ); - n.item( 0 ).parentNode().removeChild( n.item( 0 ) ); -} - - - - fileBrowser::fileBrowser( const QString & _directories, const QString & _filter, const QString & _title, const QPixmap & _pm, QWidget * _parent ) : @@ -243,7 +234,7 @@ void listView::activateListItem( QTreeWidgetItem * _item, int _column ) { // presets are per default opened in bb-editor multimediaProject mmp( f->fullName() ); - removeMidiPortNode( mmp ); + instrumentTrack::removeMidiPortNode( mmp ); engine::getMixer()->lock(); instrumentTrack * it = dynamic_cast( @@ -309,7 +300,7 @@ void listView::sendToActiveInstrumentTrack( void ) { multimediaProject mmp( m_contextMenuItem->fullName() ); - removeMidiPortNode( mmp ); + instrumentTrack::removeMidiPortNode( mmp ); itw->model()->setSimpleSerializing(); itw->model()->loadSettings( mmp.content().toElement() ); @@ -347,7 +338,7 @@ void listView::openInNewInstrumentTrack( trackContainer * _tc ) else if( m_contextMenuItem->type() == fileItem::PresetFile ) { multimediaProject mmp( m_contextMenuItem->fullName() ); - removeMidiPortNode( mmp ); + instrumentTrack::removeMidiPortNode( mmp ); track * t = track::create( track::InstrumentTrack, _tc ); instrumentTrack * it = dynamic_cast( t ); if( it != NULL ) diff --git a/src/tracks/instrument_track.cpp b/src/tracks/instrument_track.cpp index 06c5ddf91..4aaef73c9 100644 --- a/src/tracks/instrument_track.cpp +++ b/src/tracks/instrument_track.cpp @@ -442,6 +442,15 @@ QString instrumentTrack::displayName( void ) const +void instrumentTrack::removeMidiPortNode( multimediaProject & _mmp ) +{ + QDomNodeList n = _mmp.elementsByTagName( "midiport" ); + n.item( 0 ).parentNode().removeChild( n.item( 0 ) ); +} + + + + bool instrumentTrack::play( const midiTime & _start, const fpp_t _frames, const f_cnt_t _offset, @@ -1349,8 +1358,9 @@ void instrumentTrackWindow::dropEvent( QDropEvent * _de ) else if( type == "presetfile" ) { multimediaProject mmp( value ); - m_track->loadTrackSpecificSettings( mmp.content().firstChild(). - toElement() ); + instrumentTrack::removeMidiPortNode( mmp ); + m_track->setSimpleSerializing(); + m_track->loadSettings( mmp.content().toElement() ); engine::getSong()->setModified(); _de->accept(); }