Browse Source

Mixer: Improve keyboard focus.

tags/non-daw-v1.1.0
Jonathan Moore Liles 15 years ago
parent
commit
8b95806b2f
7 changed files with 29 additions and 9 deletions
  1. +1
    -0
      FL/Fl_Packscroller.H
  2. +2
    -0
      Mixer/Controller_Module.C
  3. +2
    -0
      Mixer/Meter_Indicator_Module.C
  4. +7
    -7
      Mixer/Mixer_Strip.C
  5. +0
    -2
      Mixer/Mixer_Strip.H
  6. +14
    -0
      Mixer/Module.C
  7. +3
    -0
      Mixer/Module_Parameter_Editor.C

+ 1
- 0
FL/Fl_Packscroller.H View File

@@ -170,6 +170,7 @@ public:
case FL_LEAVE: case FL_LEAVE:
return 1; return 1;
case FL_FOCUS: case FL_FOCUS:
case FL_UNFOCUS:
return 1; return 1;
case FL_KEYBOARD: case FL_KEYBOARD:
{ {


+ 2
- 0
Mixer/Controller_Module.C View File

@@ -262,6 +262,7 @@ Controller_Module::connect_to ( Port *p )


control_value = p->control_value(); control_value = p->control_value();


w->set_visible_focus();
w->align(FL_ALIGN_TOP); w->align(FL_ALIGN_TOP);
w->labelsize( 10 ); w->labelsize( 10 );
w->callback( cb_handle, this ); w->callback( cb_handle, this );
@@ -269,6 +270,7 @@ Controller_Module::connect_to ( Port *p )
if ( _pad ) if ( _pad )
{ {
Fl_Labelpad_Group *flg = new Fl_Labelpad_Group( w ); Fl_Labelpad_Group *flg = new Fl_Labelpad_Group( w );
flg->set_visible_focus();
size( flg->w(), flg->h() ); size( flg->w(), flg->h() );
add( flg ); add( flg );
} }


+ 2
- 0
Mixer/Meter_Indicator_Module.C View File

@@ -64,6 +64,8 @@ Meter_Indicator_Module::Meter_Indicator_Module ( bool is_default )


end(); end();


clear_visible_focus();

Fl::add_timeout( CONTROL_UPDATE_FREQ, update_cb, this ); Fl::add_timeout( CONTROL_UPDATE_FREQ, update_cb, this );
} }




+ 7
- 7
Mixer/Mixer_Strip.C View File

@@ -304,7 +304,7 @@ Mixer_Strip::update ( void )
void void
Mixer_Strip::init ( ) Mixer_Strip::init ( )
{ {
selection_color( FL_FOREGROUND_COLOR );
selection_color( FL_RED );


_chain = 0; _chain = 0;


@@ -313,6 +313,7 @@ Mixer_Strip::init ( )


Fl_Group::color( FL_BACKGROUND_COLOR ); Fl_Group::color( FL_BACKGROUND_COLOR );


set_visible_focus();
clip_children( 1 ); clip_children( 1 );


Fl_Pack *gain_pack; Fl_Pack *gain_pack;
@@ -469,7 +470,7 @@ Mixer_Strip::draw ( void )
if ( damage() != FL_DAMAGE_USER1 ) if ( damage() != FL_DAMAGE_USER1 )
Fl_Group::draw(); Fl_Group::draw();


Fl_Group::draw_box( FL_ROUNDED_FRAME, x(), y(), w(), h(), _focused ? Fl_Group::selection_color() : FL_BLACK );
Fl_Group::draw_box( FL_UP_FRAME, x(), y(), w(), h(), Fl::focus() == this ? Fl_Group::selection_color() : FL_BLACK );
} }


@@ -588,7 +589,8 @@ Mixer_Strip::handle ( int m )


if ( Fl_Group::handle( m ) ) if ( Fl_Group::handle( m ) )
return 1; return 1;
else if ( test_press( FL_BUTTON3 ) )

if ( test_press( FL_BUTTON3 ) )
{ {
menu_popup( &menu() ); menu_popup( &menu() );
return 1; return 1;
@@ -597,13 +599,11 @@ Mixer_Strip::handle ( int m )
return 0; return 0;
} }
case FL_FOCUS: case FL_FOCUS:
_focused = true;
damage( FL_DAMAGE_USER1 ); damage( FL_DAMAGE_USER1 );
return 1;
return Fl_Group::handle( m ) || 1;
case FL_UNFOCUS: case FL_UNFOCUS:
_focused = false;
damage( FL_DAMAGE_USER1 ); damage( FL_DAMAGE_USER1 );
return 1;
return Fl_Group::handle( m ) || 1;
} }


return Fl_Group::handle( m ); return Fl_Group::handle( m );


+ 0
- 2
Mixer/Mixer_Strip.H View File

@@ -109,8 +109,6 @@ private:
void cb_handle(Fl_Widget*); void cb_handle(Fl_Widget*);
static void cb_handle(Fl_Widget*, void*); static void cb_handle(Fl_Widget*, void*);


bool _focused;

void set_tab ( void ); void set_tab ( void );


void update_port_names ( void ); void update_port_names ( void );


+ 14
- 0
Mixer/Module.C View File

@@ -95,9 +95,12 @@ Module::init ( void )
_chain = 0; _chain = 0;
_instances = 1; _instances = 1;
_bypass = 0; _bypass = 0;

box( FL_UP_BOX ); box( FL_UP_BOX );
labeltype( FL_NO_LABEL ); labeltype( FL_NO_LABEL );
clip_children( 1 ); clip_children( 1 );
set_visible_focus();
selection_color( FL_RED );
} }




@@ -325,6 +328,11 @@ Module::draw_box ( void )
fl_draw_box( box(), tx + (spacing * i), ty, tw / instances(), th, Fl::belowmouse() == this ? fl_lighter( c ) : c ); fl_draw_box( box(), tx + (spacing * i), ty, tw / instances(), th, Fl::belowmouse() == this ? fl_lighter( c ) : c );
} }


if ( this == Fl::focus() )
{
fl_draw_box( FL_UP_FRAME, x(), y(), w(), h(), selection_color() );
}

if ( audio_input.size() && audio_output.size() ) if ( audio_input.size() && audio_output.size() )
{ {
/* maybe draw control indicators */ /* maybe draw control indicators */
@@ -556,6 +564,8 @@ Module::handle ( int m )
} }
case FL_PUSH: case FL_PUSH:
{ {
take_focus();

if ( Fl_Group::handle( m ) ) if ( Fl_Group::handle( m ) )
return 1; return 1;
else if ( test_press( FL_BUTTON3 ) ) else if ( test_press( FL_BUTTON3 ) )
@@ -582,6 +592,10 @@ Module::handle ( int m )


return 0; return 0;
} }
case FL_FOCUS:
case FL_UNFOCUS:
redraw();
return 1;
} }


return Fl_Group::handle( m ); return Fl_Group::handle( m );


+ 3
- 0
Mixer/Module_Parameter_Editor.C View File

@@ -239,6 +239,9 @@ Module_Parameter_Editor::make_controls ( void )
o->resizable( 0 ); o->resizable( 0 );
o->end(); o->end();


o->set_visible_focus();
flg->set_visible_focus();

flg->position( o->x(), o->y() ); flg->position( o->x(), o->y() );
bound->position( o->x(), flg->y() + flg->h() ); bound->position( o->x(), flg->y() + flg->h() );
o->size( flg->w(), flg->h() + bound->h() ); o->size( flg->w(), flg->h() + bound->h() );


Loading…
Cancel
Save