X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmainmenu.C;fp=cinelerra-5.1%2Fcinelerra%2Fmainmenu.C;h=5735f8c904cc643e7656263eee13f4ef6064673d;hp=b7b9f3581ae0792ecd18330c104d6fbb53c9dd95;hb=b4017f68039ef7e31eedee4a27580a28bee36fc5;hpb=c4c898707e3fdbf2979b7bc43ac0e1b0fa779663 diff --git a/cinelerra-5.1/cinelerra/mainmenu.C b/cinelerra-5.1/cinelerra/mainmenu.C index b7b9f358..5735f8c9 100644 --- a/cinelerra-5.1/cinelerra/mainmenu.C +++ b/cinelerra-5.1/cinelerra/mainmenu.C @@ -1739,7 +1739,7 @@ void MixerItems::create_objects() BC_SubMenu *mixer_submenu = new BC_SubMenu(); add_submenu(mixer_submenu); mixer_submenu->add_submenuitem(new MixerViewer(this)); - mixer_submenu->add_submenuitem(new TileMixers(this)); + mixer_submenu->add_submenuitem(new DragTileMixers(this)); mixer_submenu->add_submenuitem(new AlignMixers(this)); mixer_submenu->add_submenuitem(new MixMasters(this)); } @@ -1810,16 +1810,51 @@ int MixerViewer::handle_event() return 1; } -TileMixers::TileMixers(MixerItems *mixer_items) - : MixerItem(mixer_items, _("Tile mixers"), "Alt-t", 't') +DragTileMixers::DragTileMixers(MixerItems *mixer_items) + : MixerItem(mixer_items, _("Drag Tile mixers"), "Alt-t", 't') { set_alt(); + drag_box = 0; } -int TileMixers::handle_event() +DragTileMixers::~DragTileMixers() { - MWindow *mwindow = mixer_items->mwindow; - mwindow->tile_mixers(); + delete drag_box; +} + +int DragTileMixers::handle_event() +{ + if( !drag_box ) { + MWindow *mwindow = mixer_items->mwindow; + drag_box = new TileMixersDragBox(mwindow->gui); + } + if( !drag_box->running() ) + drag_box->start(this); + return 1; +} + +TileMixersDragBox::TileMixersDragBox(MWindowGUI *gui) + : BC_DragBox(gui) +{ + tile_mixers = 0; +} + +void TileMixersDragBox::start(DragTileMixers *tile_mixers) +{ + this->tile_mixers = tile_mixers; + start_drag(); +} + +int TileMixersDragBox::handle_done_event(int x0, int y0, int x1, int y1) +{ + MWindow *mwindow = tile_mixers->mixer_items->mwindow; + if( x0 >= x1 || y0 >= y1 ) x0 = x1 = y0 = y1 = 0; + mwindow->session->tile_mixers_x = x0; + mwindow->session->tile_mixers_y = y0; + mwindow->session->tile_mixers_w = x1 - x0; + mwindow->session->tile_mixers_h = y1 - y0; + mwindow->tile_mixers(x0, y0, x1, y1); + tile_mixers = 0; return 1; }