X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=inline;f=source%2Fdesigner%2Fdesigner.cpp;h=83164b5da169ba05aaf98876754208deec54b5b6;hb=283542ae424b94786652fbf0c67b883b63a8e7a0;hp=a31d244f9389ca9056039fc7a29c6231db384600;hpb=61da962442ae528bba9c66fa0c09427b53a4cbe0;p=r2c2.git diff --git a/source/designer/designer.cpp b/source/designer/designer.cpp index a31d244..83164b5 100644 --- a/source/designer/designer.cpp +++ b/source/designer/designer.cpp @@ -6,6 +6,7 @@ Distributed under the GPL */ #include +#include #include #include #include @@ -68,6 +69,7 @@ Designer::Designer(int argc, char **argv): layout_3d = new Layout3D(*layout); layout->signal_track_added.connect(sigc::mem_fun(this, &Designer::track_added)); + layout->signal_track_removed.connect(sigc::mem_fun(this, &Designer::track_removed)); if(argc>1) { @@ -282,7 +284,12 @@ void Designer::key_press(unsigned key, unsigned mod, wchar_t) key = Input::key_from_sys(key); mod = Input::mod_from_sys(mod); - if(key==Msp::Input::KEY_N) + if(key==Msp::Input::KEY_N && (mod&Input::MOD_SHIFT)) + { + manipulator.start_extend(); + mode = MANIPULATE; + } + else if(key==Msp::Input::KEY_N) new_track(); else if(key==Msp::Input::KEY_G) { @@ -482,6 +489,13 @@ void Designer::track_added(Track &trk) new_tracks.push_back(&trk); } +void Designer::track_removed(Track &trk) +{ + list::iterator i = find(new_tracks.begin(), new_tracks.end(), &trk); + if(i!=new_tracks.end()) + new_tracks.erase(i); +} + Track3D *Designer::pick_track(int x, int y) { Layout3D *l = layout_3d;