Browse Source

Mixer: Allow drag and drop for moving mixer strips.

tags/non-daw-v1.2.0
Jonathan Moore Liles 12 years ago
parent
commit
0552a9a7cf
4 changed files with 39 additions and 27 deletions
  1. +11
    -0
      mixer/src/Mixer.C
  2. +1
    -0
      mixer/src/Mixer.H
  3. +27
    -25
      mixer/src/Mixer_Strip.C
  4. +0
    -2
      mixer/src/Mixer_Strip.H

+ 11
- 0
mixer/src/Mixer.C View File

@@ -616,6 +616,17 @@ void Mixer::remove ( Mixer_Strip *ms )
parent()->redraw();
}


Mixer_Strip *
Mixer::event_inside ( void )
{
for ( int i = mixer_strips->children(); i--; )
if ( Fl::event_inside( mixer_strips->child(i) ) )
return (Mixer_Strip*)mixer_strips->child(i);

return NULL;
}

bool
Mixer::contains ( Mixer_Strip *ms )
{


+ 1
- 0
mixer/src/Mixer.H View File

@@ -91,6 +91,7 @@ public:
void insert ( Mixer_Strip *ms, Mixer_Strip *before );
void insert ( Mixer_Strip *ms, int i );
bool contains ( Mixer_Strip *ms );
Mixer_Strip * event_inside ( void );

bool save ( void );
void quit ( void );


+ 27
- 25
mixer/src/Mixer_Strip.C View File

@@ -232,10 +232,6 @@ void Mixer_Strip::cb_handle(Fl_Widget* o) {

set_spatializer_visibility();
}
else if ( o == left_button )
command_move_left();
else if ( o == right_button )
command_move_right();
else if ( o == close_button )
{
if ( Fl::event_shift() || 1 == fl_choice( "Are you sure you want to remove this strip?\n\n(this action cannot be undone)", "Cancel", "Remove", NULL ) )
@@ -406,17 +402,9 @@ Mixer_Strip::init ( )
o->value( name() );
o->callback( cb_handle, (void*)this );
}
{ Fl_Scalepack *o = new Fl_Scalepack( 7, 143, 110, 25 );
{ Fl_Scalepack *o = new Fl_Scalepack( 7, 143, 110, 18 );
o->type( Fl_Pack::HORIZONTAL );
{ Fl_Button* o = left_button = new Fl_Button(7, 143, 35, 25, "@<-");
o->tooltip( "Move left" );
o->type(0);
o->labelsize(10);
o->when( FL_WHEN_RELEASE );
o->callback( ((Fl_Callback*)cb_handle), this );
} // Fl_Button* o


{ Fl_Flip_Button* o = width_button = new Fl_Flip_Button(61, 183, 45, 22, "[]/[-]");
o->type(1);
o->tooltip( "Switch between wide and narrow views" );
@@ -436,14 +424,6 @@ Mixer_Strip::init ( )
o->callback( ((Fl_Callback*)cb_handle), this );
} // Fl_Button* o

{ Fl_Button* o = right_button = new Fl_Button(7, 143, 35, 25, "@->");
o->tooltip( "Move right" );
o->type(0);
o->labelsize(10);
o->when( FL_WHEN_RELEASE );
o->callback( ((Fl_Callback*)cb_handle), this );
} // Fl_Button* o

o->end();
} // Fl_Group* o
{ Fl_Flip_Button* o = tab_button = new Fl_Flip_Button(61, 183, 45, 22, "fader/signal");
@@ -548,6 +528,7 @@ Mixer_Strip::draw ( void )
damage() & FL_DAMAGE_CHILD )
Fl_Group::draw();


fl_color( Fl::focus() == this ? Fl_Group::selection_color() : FL_BLACK );
fl_rect( x(), y(), w(), h() );
}
@@ -699,6 +680,8 @@ Mixer_Strip::handle ( int m )
static int _button = 0;

Logger log( this );
static Fl_Widget *dragging = NULL;

if ( Fl_Group::handle( m ) )
return 1;
@@ -725,15 +708,35 @@ Mixer_Strip::handle ( int m )
menu_popup( &menu(), x(), y() );
return 1;
}
else
else
return menu().test_shortcut() != 0;
break;
}
case FL_PUSH:
if ( Fl::event_button1() && Fl::event_inside( color_box ) )
{
}

_button = Fl::event_button();
return 1;
break;
case FL_DRAG:
if ( Fl::event_is_click() )
return 1;
dragging = this;
break;
case FL_RELEASE:
{
if ( dragging == this )
{
mixer->insert( this, mixer->event_inside() );
dragging = NULL;
return 1;
}
int b = _button;
_button = 0;
@@ -748,7 +751,6 @@ Mixer_Strip::handle ( int m )
return 1;
}
break;
}
}
return 0;


+ 0
- 2
mixer/src/Mixer_Strip.H View File

@@ -91,8 +91,6 @@ private:
Fl_Flip_Button *width_button;
Fl_Flip_Button *tab_button;
Fl_Button *close_button;
Fl_Button *left_button;
Fl_Button *right_button;
Fl_Input *name_field;

Fl_Flowpack *controls_pack;


Loading…
Cancel
Save