18 new shapewipe transitions from rafa, rework savefile/confirm for nested edl edits
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / zwindow.C
index a6f6d73f8119c29120291817e891178de5ac86cc..62a98cc048441662d79bfcf0bd56a75a28eae5d6 100644 (file)
@@ -32,6 +32,7 @@
 #include "renderengine.h"
 #include "timelinepane.h"
 #include "track.h"
+#include "tracks.h"
 #include "transportque.h"
 #include "zwindow.h"
 #include "zwindowgui.h"
@@ -185,9 +186,9 @@ ZWindow::ZWindow(MWindow *mwindow)
        idx = -1;
        edl = 0;
        highlighted = 0;
-       destroy = 1;
        title[0] = 0;
        zgui = 0;
+       zoom = 0;
 }
 
 ZWindow::~ZWindow()
@@ -207,7 +208,8 @@ BC_Window* ZWindow::new_gui()
 
 void ZWindow::handle_done_event(int result)
 {
-       if( destroy )
+       stop_playback(1);
+       if( result )
                mwindow->del_mixer(this);
        idx = -1;
 }
@@ -219,8 +221,7 @@ void ZWindow::handle_close_event(int result)
 void ZWindow::change_source(EDL *edl)
 {
        if( this->edl == edl ) return;
-       if( !edl || !this->edl || this->edl->equivalent_output(edl) >= 0 )
-               zgui->playback_engine->refresh_frame(CHANGE_ALL, edl);
+       zgui->playback_engine->refresh_frame(CHANGE_ALL, edl);
        if( this->edl )
                this->edl->remove_user();
        this->edl = edl;
@@ -259,10 +260,20 @@ void ZWindow::update_mixer_ids()
 
 void ZWindow::set_title(const char *tp)
 {
+       Track *track = 0;
        Mixer *mixer = mwindow->edl->mixers.get_mixer(idx);
-       if( mixer ) mixer->set_title(tp);
+       if( mixer ) {
+               mixer->set_title(tp);
+               for( track=mwindow->edl->tracks->first; track; track=track->next ) {
+                       if( track->data_type != TRACK_VIDEO ) continue;
+                       int mixer_id = track->get_mixer_id();
+                       int k = mixer->mixer_ids.size();
+                       while( --k >= 0 && mixer_id != mixer->mixer_ids[k] );
+                       if( k >= 0 ) break;
+               }
+       }
        char *cp = title, *ep = cp + sizeof(title)-1;
-       cp += snprintf(title, ep-cp, _("Mixer %d"), idx);
+       cp += snprintf(title, ep-cp, track ? track->title : _("Mixer %d"), idx);
        if( tp ) cp += snprintf(cp, ep-cp, ": %s", tp);
        *cp = 0;
 }