add bins/folders, fix listbox bad wdw ref, hide vicons fix, remove sort by time
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mainsession.C
index 4ff969fdcc67f1168a475b4a7e473d3a6d1e362c..251d82b706ffb81947f659f0cd82c666eb57df98 100644 (file)
@@ -49,6 +49,7 @@ MainSession::MainSession(MWindow *mwindow)
        drag_assets = new ArrayList<Indexable*>;
        drag_auto_gang = new ArrayList<Auto*>;
        drag_clips = new ArrayList<EDL*>;
+       drag_proxy = new ArrayList<EDL*>;
        drag_edits = new ArrayList<Edit*>;
        drag_edit = 0;
        clip_number = 1;
@@ -60,6 +61,8 @@ MainSession::MainSession(MWindow *mwindow)
        cwindow_fullscreen = 0;
        rwindow_fullscreen = 0;
        vwindow_fullscreen = 0;
+       zwindow_fullscreen = 0;
+       selected_zwindow = -1;
        actual_frame_rate = 0;
        window_config = 0;
        a_x11_host[0] = 0;
@@ -82,6 +85,7 @@ MainSession::MainSession(MWindow *mwindow)
        cwindow_x = cwindow_y = cwindow_w = cwindow_h = 0;
        ctool_x = ctool_y = 0;
        awindow_x = awindow_y = awindow_w = awindow_h = 0;
+       bwindow_w = bwindow_h = 0;
        rmonitor_x = rmonitor_y = rmonitor_w = rmonitor_h = 0;
        rwindow_x = rwindow_y = rwindow_w = rwindow_h = 0;
        gwindow_x = gwindow_y = 0;
@@ -111,10 +115,12 @@ MainSession::MainSession(MWindow *mwindow)
 
 MainSession::~MainSession()
 {
+       clear_drag_proxy();
        delete drag_pluginservers;
        delete drag_assets;
        delete drag_auto_gang;
        delete drag_clips;
+       delete drag_proxy;
        delete drag_edits;
 }
 
@@ -139,6 +145,13 @@ void MainSession::boundaries()
        CLAMP(cwindow_controls, 0, 1);
 }
 
+void MainSession::clear_drag_proxy()
+{
+       for( int i=drag_proxy->size(); --i>=0; )
+               drag_proxy->get(i)->remove_user();
+       drag_proxy->remove_all();
+}
+
 void MainSession::save_x11_host(int play_config, const char *x11_host)
 {
        strcpy(!play_config ? a_x11_host : b_x11_host, x11_host);
@@ -250,6 +263,9 @@ void MainSession::default_window_positions(int window_config)
        awindow_w = root_x + root_w - awindow_x - border_left - border_right;
        awindow_h = mwindow_h;
 
+       bwindow_w = 520;
+       bwindow_h = 340;
+
        ewindow_w = 640;
        ewindow_h = 240;
 
@@ -386,6 +402,10 @@ int MainSession::load_defaults(BC_Hash *defaults)
 
 // Other windows
        afolders_w = defaults->get("ABINS_W", 200);
+
+       bwindow_w = defaults->get("BWINDOW_W", bwindow_w);
+       bwindow_h = defaults->get("BWINDOW_H", bwindow_h);
+
        rwindow_x = defaults->get("RWINDOW_X", rwindow_x);
        rwindow_y = defaults->get("RWINDOW_Y", rwindow_y);
        rwindow_w = defaults->get("RWINDOW_W", rwindow_w);
@@ -477,6 +497,9 @@ int MainSession::save_defaults(BC_Hash *defaults)
        defaults->update("AWINDOW_W", awindow_w);
        defaults->update("AWINDOW_H", awindow_h);
 
+       defaults->update("BWINDOW_W", bwindow_w);
+       defaults->update("BWINDOW_H", bwindow_h);
+
        defaults->update("EWINDOW_W", ewindow_w);
        defaults->update("EWINDOW_H", ewindow_h);