Mixer: Avoid unecessary redraws (hidden widgets, when mixer strips are added). Also, draw fonts of inactive widgets in dimmed color.
Conflicts: mixer/src/Mixer.C
This commit is contained in:
parent
3b8991c54c
commit
bc78302220
|
@ -52,7 +52,11 @@ public:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fl_draw_box( up_box(), x(), y(), w(), h(), color() );
|
fl_draw_box( up_box(), x(), y(), w(), h(), color() );
|
||||||
fl_color( fl_contrast( textcolor(), color() ) );
|
|
||||||
|
Fl_Color c = fl_contrast( textcolor(), color() );
|
||||||
|
|
||||||
|
fl_color( active_r() ? c : fl_inactive( c ) );
|
||||||
|
|
||||||
fl_font( textfont(), textsize() );
|
fl_font( textfont(), textsize() );
|
||||||
fl_draw( value(), x(), y(), w(), h(), (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_CLIP) );
|
fl_draw( value(), x(), y(), w(), h(), (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_CLIP) );
|
||||||
}
|
}
|
||||||
|
|
|
@ -566,7 +566,8 @@ Controller_Module::handle_control_changed ( Port *p )
|
||||||
pan->point( 0 )->azimuth( control_output[0].control_value() );
|
pan->point( 0 )->azimuth( control_output[0].control_value() );
|
||||||
pan->point( 0 )->elevation( control_output[1].control_value() );
|
pan->point( 0 )->elevation( control_output[1].control_value() );
|
||||||
|
|
||||||
pan->redraw();
|
if ( visible_r() )
|
||||||
|
pan->redraw();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
void pixels_per_segment ( int v ) { _pixels_per_segment = v; }
|
void pixels_per_segment ( int v ) { _pixels_per_segment = v; }
|
||||||
|
|
||||||
float dim ( void ) const { return _dim; }
|
float dim ( void ) const { return _dim; }
|
||||||
void dim ( float v ) { _dim = v; redraw(); }
|
void dim ( float v ) { _dim = v; if ( visible_r() ) redraw(); }
|
||||||
|
|
||||||
static
|
static
|
||||||
void
|
void
|
||||||
|
|
|
@ -83,7 +83,8 @@ public:
|
||||||
|
|
||||||
virtual void value ( float v )
|
virtual void value ( float v )
|
||||||
{
|
{
|
||||||
damage( FL_DAMAGE_USER1 );
|
if ( visible_r() )
|
||||||
|
damage( FL_DAMAGE_USER1 );
|
||||||
|
|
||||||
_value = v;
|
_value = v;
|
||||||
|
|
||||||
|
|
|
@ -422,7 +422,7 @@ Mixer::load_project_settings ( void )
|
||||||
{
|
{
|
||||||
reset_project_settings();
|
reset_project_settings();
|
||||||
|
|
||||||
if ( Project::open() )
|
// if ( Project::open() )
|
||||||
((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Project/Se&ttings" ), "options" );
|
((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Project/Se&ttings" ), "options" );
|
||||||
|
|
||||||
update_menu();
|
update_menu();
|
||||||
|
@ -491,9 +491,10 @@ Mixer::Mixer ( int X, int Y, int W, int H, const char *L ) :
|
||||||
Fl_Flowpack *o = mixer_strips = new Fl_Flowpack( X, Y + 24, W, H - 18 - 24 );
|
Fl_Flowpack *o = mixer_strips = new Fl_Flowpack( X, Y + 24, W, H - 18 - 24 );
|
||||||
// label( "Non-Mixer" );
|
// label( "Non-Mixer" );
|
||||||
align( (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_INSIDE) );
|
align( (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_INSIDE) );
|
||||||
|
o->flow( false );
|
||||||
o->box( FL_FLAT_BOX );
|
o->box( FL_FLAT_BOX );
|
||||||
o->type( Fl_Pack::HORIZONTAL );
|
o->type( Fl_Pack::HORIZONTAL );
|
||||||
o->hspacing( 2 );
|
o->hspacing( 2 );
|
||||||
o->vspacing( 2 );
|
o->vspacing( 2 );
|
||||||
o->end();
|
o->end();
|
||||||
Fl_Group::current()->resizable( o );
|
Fl_Group::current()->resizable( o );
|
||||||
|
@ -563,13 +564,12 @@ void Mixer::add ( Mixer_Strip *ms )
|
||||||
|
|
||||||
mixer_strips->add( ms );
|
mixer_strips->add( ms );
|
||||||
|
|
||||||
ms->take_focus();
|
ms->size( ms->w(), _strip_height );
|
||||||
|
ms->redraw();
|
||||||
rows( _rows );
|
ms->take_focus();
|
||||||
|
|
||||||
// scroll->redraw();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Mixer::quit ( void )
|
Mixer::quit ( void )
|
||||||
{
|
{
|
||||||
|
@ -582,10 +582,10 @@ Mixer::quit ( void )
|
||||||
void
|
void
|
||||||
Mixer::insert ( Mixer_Strip *ms, Mixer_Strip *before )
|
Mixer::insert ( Mixer_Strip *ms, Mixer_Strip *before )
|
||||||
{
|
{
|
||||||
mixer_strips->remove( ms );
|
// mixer_strips->remove( ms );
|
||||||
mixer_strips->insert( *ms, before );
|
mixer_strips->insert( *ms, before );
|
||||||
|
|
||||||
scroll->redraw();
|
// scroll->redraw();
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
Mixer::insert ( Mixer_Strip *ms, int i )
|
Mixer::insert ( Mixer_Strip *ms, int i )
|
||||||
|
@ -646,31 +646,26 @@ Mixer::rows ( int ideal_rows )
|
||||||
{
|
{
|
||||||
int sh;
|
int sh;
|
||||||
|
|
||||||
int actual_rows = 1;
|
int actual_rows;
|
||||||
|
|
||||||
if ( ideal_rows > 1 )
|
/* calculate how many rows will actually fit */
|
||||||
|
int can_fit = scroll->h() / ( Mixer_Strip::min_h() );
|
||||||
|
|
||||||
|
actual_rows = can_fit > 0 ? can_fit : 1;
|
||||||
|
|
||||||
|
if ( actual_rows > ideal_rows )
|
||||||
|
actual_rows = ideal_rows;
|
||||||
|
|
||||||
|
/* calculate strip height */
|
||||||
|
if ( actual_rows > 1 )
|
||||||
{
|
{
|
||||||
sh = (scroll->h() / ideal_rows ) - (mixer_strips->vspacing() * (ideal_rows - 1));
|
sh = ( scroll->h() / (float)actual_rows ) - ( mixer_strips->vspacing() * ( actual_rows - 2 ));
|
||||||
mixer_strips->flow( true );
|
mixer_strips->flow(true);
|
||||||
|
|
||||||
if ( sh < Mixer_Strip::min_h() )
|
|
||||||
{
|
|
||||||
int can_fit = ( scroll->h() - 18 ) / Mixer_Strip::min_h();
|
|
||||||
|
|
||||||
actual_rows = can_fit > 0 ? can_fit : 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
actual_rows = ideal_rows;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
actual_rows = 1;
|
|
||||||
|
|
||||||
if ( 1 == actual_rows )
|
|
||||||
{
|
{
|
||||||
sh = (scroll->h() - 18);
|
sh = (scroll->h() - 18);
|
||||||
mixer_strips->flow( false );
|
mixer_strips->flow(false);
|
||||||
|
|
||||||
actual_rows = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int tw = 0;
|
int tw = 0;
|
||||||
|
@ -691,7 +686,11 @@ Mixer::rows ( int ideal_rows )
|
||||||
|
|
||||||
_rows = ideal_rows;
|
_rows = ideal_rows;
|
||||||
|
|
||||||
scroll->redraw();
|
if ( _strip_height != sh );
|
||||||
|
{
|
||||||
|
scroll->redraw();
|
||||||
|
_strip_height = sh;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** retrun a pointer to the track named /name/, or NULL if no track is named /name/ */
|
/** retrun a pointer to the track named /name/, or NULL if no track is named /name/ */
|
||||||
|
@ -851,6 +850,10 @@ Mixer::command_load ( const char *path, const char *display_name )
|
||||||
{
|
{
|
||||||
mixer->deactivate();
|
mixer->deactivate();
|
||||||
|
|
||||||
|
chdir( path );
|
||||||
|
|
||||||
|
load_project_settings();
|
||||||
|
|
||||||
if ( Project::open( path ) )
|
if ( Project::open( path ) )
|
||||||
{
|
{
|
||||||
// fl_alert( "Error opening project specified on commandline: %s", Project::errstr( err ) );
|
// fl_alert( "Error opening project specified on commandline: %s", Project::errstr( err ) );
|
||||||
|
|
|
@ -47,6 +47,7 @@ private:
|
||||||
float _update_interval;
|
float _update_interval;
|
||||||
|
|
||||||
int _rows;
|
int _rows;
|
||||||
|
int _strip_height;
|
||||||
|
|
||||||
Fl_Color system_colors[3];
|
Fl_Color system_colors[3];
|
||||||
|
|
||||||
|
|
|
@ -518,7 +518,7 @@ Mixer_Strip::init ( )
|
||||||
|
|
||||||
size( 96, h() );
|
size( 96, h() );
|
||||||
|
|
||||||
redraw();
|
// redraw();
|
||||||
|
|
||||||
// _chain->configure_ports();
|
// _chain->configure_ports();
|
||||||
}
|
}
|
||||||
|
@ -526,15 +526,10 @@ Mixer_Strip::init ( )
|
||||||
void
|
void
|
||||||
Mixer_Strip::draw ( void )
|
Mixer_Strip::draw ( void )
|
||||||
{
|
{
|
||||||
if ( !fl_not_clipped( x(), y(), w(), h() ) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* don't bother drawing anything else, all we're doing is drawing the focus. */
|
/* don't bother drawing anything else, all we're doing is drawing the focus. */
|
||||||
if ( damage() & FL_DAMAGE_ALL ||
|
if ( damage() & ~FL_DAMAGE_USER1 )
|
||||||
damage() & FL_DAMAGE_CHILD )
|
|
||||||
Fl_Group::draw();
|
Fl_Group::draw();
|
||||||
|
|
||||||
|
|
||||||
fl_color( Fl::focus() == this ? Fl_Group::selection_color() : FL_BLACK );
|
fl_color( Fl::focus() == this ? Fl_Group::selection_color() : FL_BLACK );
|
||||||
fl_rect( x(), y(), w(), h() );
|
fl_rect( x(), y(), w(), h() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ class Mixer_Strip : public Fl_Group, public Loggable {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static int min_h ( void ) { return 336; }
|
static int min_h ( void ) { return 333; }
|
||||||
|
|
||||||
Mixer_Strip( const char *strip_name );
|
Mixer_Strip( const char *strip_name );
|
||||||
Mixer_Strip(); /* for log create */
|
Mixer_Strip(); /* for log create */
|
||||||
|
|
|
@ -577,7 +577,9 @@ Module::draw_label ( int tx, int ty, int tw, int th )
|
||||||
|
|
||||||
const char *lp = label();
|
const char *lp = label();
|
||||||
|
|
||||||
fl_color( fl_contrast( FL_FOREGROUND_COLOR, bypass() ? FL_BLACK : color() ) );
|
Fl_Color c = fl_contrast( FL_FOREGROUND_COLOR, bypass() ? FL_BLACK : color() );
|
||||||
|
|
||||||
|
fl_color( active_r() ? c : fl_inactive(c) );
|
||||||
|
|
||||||
fl_font( FL_HELVETICA, 12 );
|
fl_font( FL_HELVETICA, 12 );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue