summaryrefslogtreecommitdiff
path: root/muse2/muse/arranger/arranger.cpp
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-12-14 15:08:02 +0000
committerFlorian Jung <flo@windfisch.org>2011-12-14 15:08:02 +0000
commitc36a5508aa42e596b005425208054af9a60734b4 (patch)
treefde0504e0c25b8f39ed6f5f7f7332943e4a95c7f /muse2/muse/arranger/arranger.cpp
parent42126f3b398802eb24c8d9acd2591ef4dbe7257d (diff)
pulled fixes from release into trunk
Diffstat (limited to 'muse2/muse/arranger/arranger.cpp')
-rw-r--r--muse2/muse/arranger/arranger.cpp59
1 files changed, 40 insertions, 19 deletions
diff --git a/muse2/muse/arranger/arranger.cpp b/muse2/muse/arranger/arranger.cpp
index ae753378..cb024070 100644
--- a/muse2/muse/arranger/arranger.cpp
+++ b/muse2/muse/arranger/arranger.cpp
@@ -569,27 +569,40 @@ void Arranger::songChanged(int type)
// Is it simply a midi controller value adjustment? Forget it.
if(type != SC_MIDI_CONTROLLER)
{
- unsigned endTick = MusEGlobal::song->len();
- int offset = AL::sigmap.ticksMeasure(endTick);
- hscroll->setRange(-offset, endTick + offset); //DEBUG
- canvas->setOrigin(-offset, 0);
- time->setOrigin(-offset, 0);
-
- int bar, beat;
- unsigned tick;
- AL::sigmap.tickValues(endTick, &bar, &beat, &tick);
- if (tick || beat)
- ++bar;
- lenEntry->blockSignals(true);
- lenEntry->setValue(bar);
- lenEntry->blockSignals(false);
-
- if(type & SC_SONG_TYPE) // p4.0.7 Tim.
+ // TEST p4.0.36 Try these, may need more/less.
+ if(type & ( SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_TRACK_MODIFIED |
+ SC_PART_INSERTED | SC_PART_REMOVED | SC_PART_MODIFIED))
+ {
+ unsigned endTick = MusEGlobal::song->len();
+ int offset = AL::sigmap.ticksMeasure(endTick);
+ hscroll->setRange(-offset, endTick + offset); //DEBUG
+ canvas->setOrigin(-offset, 0);
+ time->setOrigin(-offset, 0);
+
+ int bar, beat;
+ unsigned tick;
+ AL::sigmap.tickValues(endTick, &bar, &beat, &tick);
+ if (tick || beat)
+ ++bar;
+ lenEntry->blockSignals(true);
+ lenEntry->setValue(bar);
+ lenEntry->blockSignals(false);
+ }
+
+ if(type & SC_SONG_TYPE)
setMode(MusEGlobal::song->mtype());
- trackSelectionChanged();
- canvas->partsChanged();
- typeBox->setCurrentIndex(int(MusEGlobal::song->mtype()));
+ if(type & SC_SELECTION) // TEST p4.0.36 Try this alone, may need more.
+ trackSelectionChanged();
+
+ // Keep this light, partsChanged is a heavy move! TEST p4.0.36 Try these, may need more.
+ if(type & (SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_TRACK_MODIFIED |
+ SC_PART_INSERTED | SC_PART_REMOVED | SC_PART_MODIFIED |
+ SC_SIG | SC_TEMPO)) // Maybe sig. Requires tempo.
+ canvas->partsChanged();
+
+ //typeBox->setCurrentIndex(int(MusEGlobal::song->mtype())); // REMOVE Tim. Redundant.
+
if (type & SC_SIG)
time->redraw();
if (type & SC_TEMPO)
@@ -616,6 +629,14 @@ void Arranger::songChanged(int type)
}
}
}
+
+ // TEST p4.0.36 Try this
+ if(type & ( //SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_TRACK_MODIFIED |
+ SC_PART_INSERTED | SC_PART_REMOVED | SC_PART_MODIFIED |
+ SC_EVENT_INSERTED | SC_EVENT_REMOVED | SC_EVENT_MODIFIED)) //|
+ //SC_SIG | SC_TEMPO)) // Maybe sig. and tempo. No, moved above.
+ canvas->redraw();
+
}
updateTrackInfo(type);