switch move/swap tracks, add mv trk shortcut, update msg
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mainsession.C
index a21297e0df7fa633bca7e129aafa68a0901d0050..7d582c46d59e65d7b32e2a0993067a69664834af 100644 (file)
@@ -36,6 +36,7 @@
 #include "mwindow.h"
 #include "mwindowgui.h"
 #include "plugin.h"
+#include "transition.h"
 
 MainSession::MainSession(MWindow *mwindow)
 {
@@ -51,6 +52,7 @@ MainSession::MainSession(MWindow *mwindow)
        current_operation = NO_OPERATION;
        drag_pluginservers = new ArrayList<PluginServer*>;
        drag_plugin = 0;
+       drag_transition = 0;
        drag_assets = new ArrayList<Indexable*>;
        drag_auto_gang = new ArrayList<Auto*>;
        drag_clips = new ArrayList<EDL*>;
@@ -106,6 +108,12 @@ MainSession::MainSession(MWindow *mwindow)
        use_vector = 0;
        use_hist_parade = 0;
        use_wave_parade = 0;
+       use_wave_gain = 5;
+       use_vect_gain = 5;
+       use_smooth = 0;
+       use_refresh = 0;
+       use_release = 0;
+       use_graticule = 0;
        afolders_w = 0;
        show_vwindow = show_awindow = show_cwindow = show_gwindow = show_lwindow = 0;
        plugindialog_w = plugindialog_h = 0;
@@ -215,17 +223,18 @@ void MainSession::default_window_positions(int window_config)
                        }
                }
                if( left_w > 0 ) {
+                       int min_x = INT_MAX;
                        for( int s=0; s<xin_screens; ++s ) {
                                if( display_info.xinerama_geometry(s, x, y, w, h) )
                                        continue;
-                               if( !y && x == left_w ) {
+                               if( !y && x >= left_w && x < min_x ) {
+                                       min_x = x;
                                        right_w = w;
                                        screens = 2;
-                                       break;
                                }
                        }
                        if( window_config == 1 ) {
-                               root_x = left_w;
+                               root_x = min_x;
                                root_w = right_w;
                        }
                        else {
@@ -321,6 +330,12 @@ void MainSession::default_window_positions(int window_config)
        use_vector = 1;
        use_hist_parade = 1;
        use_wave_parade = 1;
+       use_wave_gain = 5;
+       use_vect_gain = 5;
+       use_smooth = 1;
+       use_refresh = 0;
+       use_release = 0;
+       use_graticule = 0;
 
        if(mwindow->edl)
                lwindow_w = MeterPanel::get_meters_width(mwindow->theme,
@@ -435,6 +450,12 @@ int MainSession::load_defaults(BC_Hash *defaults)
        use_vector = defaults->get("USE_VECTOR", use_vector);
        use_hist_parade = defaults->get("USE_HIST_PARADE", use_hist_parade);
        use_wave_parade = defaults->get("USE_WAVE_PARADE", use_wave_parade);
+       use_wave_gain = defaults->get("USE_WAVE_GAIN", use_wave_gain);
+       use_vect_gain = defaults->get("USE_VECT_GAIN", use_vect_gain);
+       use_smooth = defaults->get("USE_SMOOTH", use_smooth);
+       use_refresh = defaults->get("USE_REFRESH", use_refresh);
+       use_release = defaults->get("USE_RELEASE", use_release);
+       use_graticule = defaults->get("USE_GRATICULE", use_graticule);
 
 //printf("MainSession::load_defaults 1\n");
 
@@ -560,6 +581,12 @@ int MainSession::save_defaults(BC_Hash *defaults)
        defaults->update("USE_VECTOR", use_vector);
        defaults->update("USE_HIST_PARADE", use_hist_parade);
        defaults->update("USE_WAVE_PARADE", use_wave_parade);
+       defaults->update("USE_WAVE_GAIN", use_wave_gain);
+       defaults->update("USE_VECT_GAIN", use_vect_gain);
+       defaults->update("USE_SMOOTH", use_smooth);
+       defaults->update("USE_REFRESH", use_refresh);
+       defaults->update("USE_RELEASE", use_release);
+       defaults->update("USE_GRATICULE", use_graticule);
 
        defaults->update("ABINS_W", afolders_w);
 
@@ -632,6 +659,10 @@ Track *MainSession::drag_handle_track()
        case DRAG_PLUGINHANDLE2:
                track = drag_plugin->edits->track;
                break;
+       case DRAG_TRANSNHANDLE1:
+       case DRAG_TRANSNHANDLE2:
+               track = drag_transition->edits->track;
+               break;
        }
        return track;
 }