summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--muse/muse/arranger/arranger.cpp8
-rw-r--r--muse/muse/arranger/arranger.h1
-rw-r--r--muse/muse/arranger/tlswidget.cpp38
3 files changed, 26 insertions, 21 deletions
diff --git a/muse/muse/arranger/arranger.cpp b/muse/muse/arranger/arranger.cpp
index 5f298319..c678d3de 100644
--- a/muse/muse/arranger/arranger.cpp
+++ b/muse/muse/arranger/arranger.cpp
@@ -675,18 +675,16 @@ void Arranger::mouseWheel(QWheelEvent* e)
//---------------------------------------------------------
// appendSubtrack
+// the user requests a new controller subtrack
//---------------------------------------------------------
void Arranger::appendSubtrack(TLWidget* trackWidget)
{
- appendSubtrack(trackWidget->track());
- }
+ Track* t = trackWidget->track();
-void Arranger::appendSubtrack(Track* t)
- {
ArrangerTrack* at = new ArrangerTrack;
at->h = minTrackHeight;
- at->ctrl = CTRL_OTHER;
+ at->ctrl = CTRL_NO_CTRL;
t->subtracks.push_back(at);
initSubtrack(t, at);
updateIndex();
diff --git a/muse/muse/arranger/arranger.h b/muse/muse/arranger/arranger.h
index 47a58b59..527022fb 100644
--- a/muse/muse/arranger/arranger.h
+++ b/muse/muse/arranger/arranger.h
@@ -100,7 +100,6 @@ class Arranger : public QWidget {
bool mixerStripVisible;
void updateIndex();
- void appendSubtrack(Track*);
TrackInfo* createTrackInfo();
int tlIndex(Track*) const;
int tlIndex(ArrangerTrack* t) const;
diff --git a/muse/muse/arranger/tlswidget.cpp b/muse/muse/arranger/tlswidget.cpp
index dd300292..1285904d 100644
--- a/muse/muse/arranger/tlswidget.cpp
+++ b/muse/muse/arranger/tlswidget.cpp
@@ -119,10 +119,10 @@ TLSWidget::TLSWidget(Track* t, ArrangerTrack* atrack, TimeCanvas* timeC)
setAttribute(Qt::WA_NoBackground);
setMouseTracking(true);
_tc = timeC;
- state = S_NORMAL;
+ state = S_NORMAL;
- at = atrack;
- _track = t;
+ at = atrack;
+ _track = t;
_ctrlTrack = t;
TLSLayout* l = new TLSLayout;
@@ -212,13 +212,21 @@ void TLSWidget::showControllerList()
id = c->id();
else
id = CTRL_NO_CTRL;
- CtrlDialog cd(_ctrlTrack, id);
- int rv = cd.exec();
- if (rv != 1)
- return;
- id = cd.curId();
- if (id == CTRL_NO_CTRL)
- return;
+ for (;;) {
+ CtrlDialog cd(_ctrlTrack, id);
+ int rv = cd.exec();
+ if (rv != 1)
+ return;
+ id = cd.curId();
+ if (id == CTRL_NO_CTRL)
+ return;
+ if (id != CTRL_OTHER)
+ break;
+ ConfigMidiCtrl* mce = new ConfigMidiCtrl((MidiTrack*)_track);
+ mce->exec();
+ updateController();
+ delete mce;
+ }
setCtrl(id);
}
@@ -228,13 +236,13 @@ void TLSWidget::showControllerList()
void TLSWidget::setCtrl(int ctrl)
{
- if (ctrl == CTRL_OTHER) { // "other"
-/*??*/ ConfigMidiCtrl* mce = new ConfigMidiCtrl((MidiTrack*)_track);
- mce->exec();
- updateController();
- delete mce;
+ if (ctrl == CTRL_NO_CTRL || ctrl == CTRL_OTHER) {
+ // this controller subtrack is new, ask user for
+ // controller:
+ showControllerList();
return;
}
+
if (_ctrlTrack && _ctrlTrack != _track) {
disconnect(_ctrlTrack, SIGNAL(clChanged()), this, SLOT(updateController()));
disconnect(_ctrlTrack, SIGNAL(controllerChanged(int)), this, SLOT(controllerListChanged(int)));