int x1 = 0;
int y1 = PatchGUI::update(x, y);
+ int y2 = y1 + mwindow->theme->fade_h;
if( fade ) {
- if( h - y1 < mwindow->theme->fade_h ) {
+ if( h < y2 ) {
delete fade;
fade = 0;
}
mwindow->edl->local_session->automation_maxs[AUTOGROUPTYPE_AUDIO_FADE]);
}
}
- else
- if( h - y1 >= mwindow->theme->fade_h ) {
+ else if( h >= y2 ) {
patchbay->add_subwindow(fade = new AFadePatch(mwindow, this, x1+x, y1+y,
patchbay->get_w() - 10));
}
- y1 += mwindow->theme->fade_h;
+ if( fade )
+ y1 = y2;
+ y2 = y1 + mwindow->theme->meter_h;
if( meter ) {
- if( h - y1 < mwindow->theme->meter_h ) {
+ if( h < y2 ) {
delete meter; meter = 0;
}
}
- else
- if( h - y1 >= mwindow->theme->meter_h ) {
+ else if( h >= y2 ) {
patchbay->add_subwindow(meter = new AMeterPatch(mwindow, this, x1+x, y1+y));
}
- y1 += mwindow->theme->meter_h;
+ if( meter )
+ y1 = y2;
+ y2 = y1 + mwindow->theme->pan_h;
if( pan ) {
- if( h - y1 < mwindow->theme->pan_h ) {
+ if( h < y2 ) {
delete mix; mix = 0;
delete pan; pan = 0;
delete nudge; nudge = 0;
nudge->update();
}
}
- else
- if( h - y1 >= mwindow->theme->pan_h ) {
+ else if( h >= y2 ) {
patchbay->add_subwindow(mix = new AMixPatch(mwindow, this, x1+x, y1+y+5));
x1 += mix->get_w() + 10;
patchbay->add_subwindow(pan = new APanPatch(mwindow, this, x1+x, y1+y));
patchbay->add_subwindow(nudge = new NudgePatch(mwindow, this, x1+x, y1+y,
patchbay->get_w() - x1-x - 10));
}
- y1 += mwindow->theme->pan_h;
+ if( pan )
+ y1 = y2;
return y1;
}