Mixer: Fix automatic row layout logic.
This commit is contained in:
parent
2f74b4dd02
commit
6015dc164a
|
@ -370,26 +370,37 @@ Mixer::contains ( Mixer_Strip *ms )
|
||||||
return ms->parent() == mixer_strips;
|
return ms->parent() == mixer_strips;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* set the ideal number of rows... All may not actually fit. */
|
||||||
void
|
void
|
||||||
Mixer::rows ( int n )
|
Mixer::rows ( int ideal_rows )
|
||||||
{
|
{
|
||||||
int sh;
|
int sh;
|
||||||
|
|
||||||
if ( n > 1 )
|
int actual_rows = 1;
|
||||||
|
|
||||||
|
if ( ideal_rows > 1 )
|
||||||
{
|
{
|
||||||
sh = (scroll->h() / n) - (mixer_strips->vspacing() * (n - 1));
|
sh = (scroll->h() / ideal_rows ) - (mixer_strips->vspacing() * (ideal_rows - 1));
|
||||||
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;
|
||||||
sh = (scroll->h() - 18) / n;
|
|
||||||
mixer_strips->flow( false );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( sh < Mixer_Strip::min_h() )
|
if ( 1 == actual_rows )
|
||||||
{
|
{
|
||||||
rows( ( scroll->h() - 18 ) / Mixer_Strip::min_h() );
|
sh = (scroll->h() - 18);
|
||||||
return;
|
mixer_strips->flow( false );
|
||||||
|
|
||||||
|
actual_rows = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tw = 0;
|
int tw = 0;
|
||||||
|
@ -403,12 +414,12 @@ Mixer::rows ( int n )
|
||||||
tw += t->w() + mixer_strips->hspacing();
|
tw += t->w() + mixer_strips->hspacing();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( n > 1 )
|
if ( actual_rows > 1 )
|
||||||
mixer_strips->size( scroll->w() - 18, mixer_strips->h() );
|
mixer_strips->size( scroll->w() - 18, mixer_strips->h() );
|
||||||
else
|
else
|
||||||
mixer_strips->size( tw, mixer_strips->h() );
|
mixer_strips->size( tw, mixer_strips->h() );
|
||||||
|
|
||||||
_rows = n;
|
_rows = ideal_rows;
|
||||||
|
|
||||||
scroll->redraw();
|
scroll->redraw();
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,8 @@ protected:
|
||||||
int handle ( int m );
|
int handle ( int m );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
int min_h ( void ) const { return Mixer_Strip::min_h() + (18 * 2); }
|
||||||
|
|
||||||
void rows ( int n );
|
void rows ( int n );
|
||||||
virtual void resize ( int X, int Y, int W, int H );
|
virtual void resize ( int X, int Y, int W, int H );
|
||||||
|
|
|
@ -54,7 +54,7 @@ class Mixer_Strip : public Fl_Group, public Loggable {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static int min_h ( void ) { return 250; }
|
static int min_h ( void ) { return 336; }
|
||||||
|
|
||||||
Mixer_Strip( const char *strip_name );
|
Mixer_Strip( const char *strip_name );
|
||||||
Mixer_Strip(); /* for log create */
|
Mixer_Strip(); /* for log create */
|
||||||
|
|
Loading…
Reference in New Issue