summaryrefslogtreecommitdiffstats
path: root/Gui
diff options
context:
space:
mode:
authorpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-19 20:51:48 +0000
committerpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-19 20:51:48 +0000
commitd05326c4bc7d26fbcf1c52a94f900a704026fc2a (patch)
tree90b1b5ee08f6805f7c6487c2ccc66db7ad92dbb9 /Gui
parentbcba526d135c6fcab681212569f440877f4c50ec (diff)
downloadmpv-d05326c4bc7d26fbcf1c52a94f900a704026fc2a.tar.bz2
mpv-d05326c4bc7d26fbcf1c52a94f900a704026fc2a.tar.xz
- fix audio equalizer
- rewrite video equalizer handling (i teszted with mga g400 [x]mga,xv,xvidix and radeon xv,xvidix ) - fix some small gtk bug - i dunno, i don't remember ... :) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6756 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui')
-rw-r--r--Gui/interface.c25
-rw-r--r--Gui/interface.h5
-rw-r--r--Gui/mplayer/gtk/about.c2
-rw-r--r--Gui/mplayer/gtk/eq.c61
-rw-r--r--Gui/mplayer/gtk/fs.c5
-rw-r--r--Gui/mplayer/gtk/mb.c3
-rw-r--r--Gui/mplayer/gtk/pl.c5
-rw-r--r--Gui/mplayer/gtk/sb.c4
-rw-r--r--Gui/mplayer/gtk/url.c5
-rw-r--r--Gui/mplayer/mw.h8
-rw-r--r--Gui/mplayer/widgets.c12
-rw-r--r--Gui/mplayer/widgets.h2
-rw-r--r--Gui/skin/font.h2
13 files changed, 72 insertions, 67 deletions
diff --git a/Gui/interface.c b/Gui/interface.c
index a442120b7b..ad579f10a9 100644
--- a/Gui/interface.c
+++ b/Gui/interface.c
@@ -90,6 +90,7 @@ typedef struct
} tmp_sh_video_t;
extern ao_functions_t * audio_out;
+extern vo_functions_t * video_out;
void guiGetEvent( int type,char * arg )
{
@@ -214,16 +215,6 @@ void guiGetEvent( int type,char * arg )
btnModify( evSetBalance,guiIntfStruct.Balance );
}
-#if 0
-#warning video equalizer support disabled
- if ( gtkEnableVideoEqualizer )
- {
- gtkSet( gtkSetContrast,gtkContrast,NULL );
- gtkSet( gtkSetBrightness,gtkBrightness,NULL );
- gtkSet( gtkSetHue,gtkHue,NULL );
- gtkSet( gtkSetSaturation,gtkSaturation,NULL );
- }
-#endif
if ( gtkEnableAudioEqualizer )
{
equalizer_t eq;
@@ -266,7 +257,7 @@ void guiGetEvent( int type,char * arg )
if ( gtkEnableAudioEqualizer )
{
- if ( ao_plugin_cfg.plugin_list ) { if ( !strstr( ao_plugin_cfg.plugin_list,"eq" ) ) gstrcat( &ao_plugin_cfg.plugin_list,"," ); }
+ if ( ao_plugin_cfg.plugin_list ) { if ( !strstr( ao_plugin_cfg.plugin_list,"eq" ) ) gstrcat( &ao_plugin_cfg.plugin_list,",eq" ); }
else gstrcat( &ao_plugin_cfg.plugin_list,"eq" );
}
@@ -282,16 +273,10 @@ void guiEventHandling( void )
if ( !guiIntfStruct.Playing || guiIntfStruct.AudioOnly ) wsHandleEvents();
gtkEventHandling();
mplTimer=GetTimerMS() / 20;
-// if ( !( GetTimerMS()%2 ) )
}
// ---
-float gtkContrast = 0.0f;
-float gtkBrightness = 0.0f;
-float gtkHue = 0.0f;
-float gtkSaturation = 0.0f;
-
float gtkEquChannels[6][10];
plItem * plCurrent = NULL;
@@ -323,7 +308,7 @@ void * gtkSet( int cmd,float fparam, void * vparam )
switch ( cmd )
{
// --- handle playlist
- case gtkAddPlItem: // add item to platlist
+ case gtkAddPlItem: // add item to playlist
if ( plList )
{
plItem * next = plList;
@@ -384,19 +369,15 @@ void * gtkSet( int cmd,float fparam, void * vparam )
// --- set equalizers
case gtkSetContrast:
mp_cmd->id=MP_CMD_CONTRAST; mp_cmd->name=strdup( "contrast" );
- gtkContrast=fparam;
break;
case gtkSetBrightness:
mp_cmd->id=MP_CMD_BRIGHTNESS; mp_cmd->name=strdup( "brightness" );
- gtkBrightness=fparam;
break;
case gtkSetHue:
mp_cmd->id=MP_CMD_HUE; mp_cmd->name=strdup( "hue" );
- gtkHue=fparam;
break;
case gtkSetSaturation:
mp_cmd->id=MP_CMD_SATURATION; mp_cmd->name=strdup( "saturation" );
- gtkSaturation=fparam;
break;
case gtkSetEqualizer:
if ( eq )
diff --git a/Gui/interface.h b/Gui/interface.h
index ff0ec82408..a12b47d47b 100644
--- a/Gui/interface.h
+++ b/Gui/interface.h
@@ -153,11 +153,6 @@ extern plItem * plLastPlayed;
#define gtkGetCurrPlItem 8
#define gtkDelPl 9
-extern float gtkContrast;
-extern float gtkBrightness;
-extern float gtkHue;
-extern float gtkSaturation;
-
extern float gtkEquChannels[6][10];
extern void * gtkSet( int cmd,float param, void * vparam );
diff --git a/Gui/mplayer/gtk/about.c b/Gui/mplayer/gtk/about.c
index bdc9936000..0f2935d7ff 100644
--- a/Gui/mplayer/gtk/about.c
+++ b/Gui/mplayer/gtk/about.c
@@ -15,6 +15,7 @@ void ShowAboutBox( void )
if ( gtkVAboutBox ) gtkActive( AboutBox );
else AboutBox=create_About();
gtk_widget_show( AboutBox );
+ gtkVisible++;
}
void ab_AboutBox_show( GtkButton * button,gpointer user_data )
@@ -24,6 +25,7 @@ void ab_Ok_released( GtkButton * button,gpointer user_data )
{
gtkVAboutBox=(int)user_data;
gtk_widget_destroy( AboutBox );
+ gtkVisible--;
}
GtkWidget * create_About( void )
diff --git a/Gui/mplayer/gtk/eq.c b/Gui/mplayer/gtk/eq.c
index 1076bcf281..9294cf9a91 100644
--- a/Gui/mplayer/gtk/eq.c
+++ b/Gui/mplayer/gtk/eq.c
@@ -15,6 +15,7 @@
#include "../../../help_mp.h"
#include "../../../mplayer.h"
#include "../../../libao2/eq.h"
+#include "../../../libvo/video_out.h"
#include "../widgets.h"
#include "../mplayer.h"
@@ -64,10 +65,11 @@ static void eqSetBands( int channel )
gtk_adjustment_set_value( A4000adj,0.0f - gtkEquChannels[channel][7] );
gtk_adjustment_set_value( A8000adj,0.0f - gtkEquChannels[channel][8] );
gtk_adjustment_set_value( A16000adj,0.0f - gtkEquChannels[channel][9] );
- gtk_adjustment_set_value( VContrastadj,gtkContrast );
- gtk_adjustment_set_value( VBrightnessadj,gtkBrightness );
- gtk_adjustment_set_value( VHueadj,gtkHue );
- gtk_adjustment_set_value( VSaturationadj,gtkSaturation );
+
+ gtk_adjustment_set_value( VContrastadj,(float)vo_gamma_contrast );
+ gtk_adjustment_set_value( VBrightnessadj,(float)vo_gamma_brightness );
+ gtk_adjustment_set_value( VHueadj,(float)vo_gamma_hue );
+ gtk_adjustment_set_value( VSaturationadj,(float)vo_gamma_saturation );
}
static void eqSetChannelNames( void )
@@ -92,7 +94,7 @@ static void eqSetChannelNames( void )
str[0]=gtkEquChannel5; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
str[0]=gtkEquChannel6; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
}
- gtk_clist_select_row( GTK_CLIST( ChannelsList ),1,0 );
+ gtk_clist_select_row( GTK_CLIST( ChannelsList ),0,0 );
}
void ShowEqualizer( void )
@@ -109,10 +111,10 @@ void ShowEqualizer( void )
eqSetChannelNames();
- VContrastadj->value=gtkContrast;
- VBrightnessadj->value=gtkBrightness;
- VHueadj->value=gtkHue;
- VSaturationadj->value=gtkSaturation;
+ VContrastadj->value=(float)vo_gamma_contrast;
+ VBrightnessadj->value=(float)vo_gamma_brightness;
+ VHueadj->value=(float)vo_gamma_hue;
+ VSaturationadj->value=(float)vo_gamma_saturation;
if ( !guiIntfStruct.Playing && gtkEnableVideoEqualizer )
{
@@ -138,13 +140,15 @@ void ShowEqualizer( void )
gtk_widget_set_sensitive( A16000,FALSE );
}
- gtk_widget_show( Config );
+ if ( gtk_notebook_get_current_page( GTK_NOTEBOOK( Notebook ) ) == 0 ) gtk_widget_show( Config );
gtk_widget_show( Equalizer );
+ gtkVisible++;
}
void HideEqualizer( void )
{
- gtkVEqualizer=0;
+ if ( !gtkVEqualizer ) return;
+ gtkVEqualizer=0; gtkVisible--;
gtk_widget_hide( Equalizer );
gtk_widget_destroy( Equalizer );
if ( gtkVEquConfig ) HideEquConfig();
@@ -186,7 +190,7 @@ static gboolean eqVScaleMotion( GtkWidget * widget,GdkEventMotion * event,gpoin
{
case 1: gtkSet( gtkSetContrast,VContrastadj->value,NULL ); break;
case 2: gtkSet( gtkSetBrightness,VBrightnessadj->value,NULL ); break;
- case 3: gtkSet( gtkSetHue,VHueadj->value,NULL ); break;
+ case 3: gtkSet( gtkSetHue,VHueadj->value,NULL ); break;
case 4: gtkSet( gtkSetSaturation,VSaturationadj->value,NULL ); break;
}
@@ -207,11 +211,13 @@ static void eqButtonReleased( GtkButton * button,gpointer user_data )
}
else
{
- if ( !guiIntfStruct.Playing && !gtkEnableVideoEqualizer ) break;
+ if ( !guiIntfStruct.Playing || !gtkEnableVideoEqualizer ) break;
gtkSet( gtkSetContrast,0.0f,NULL );
gtkSet( gtkSetBrightness,0.0f,NULL );
gtkSet( gtkSetHue,0.0f,NULL );
gtkSet( gtkSetSaturation,0.0f,NULL );
+ vo_gamma_brightness=vo_gamma_contrast=vo_gamma_hue=vo_gamma_saturation=0;
+ eqSetBands( Channel );
}
break;
case 2:
@@ -375,7 +381,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_set_row_spacings( GTK_TABLE( table1 ),4 );
gtk_table_set_col_spacings( GTK_TABLE( table1 ),9 );
- A3125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A3125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A3125=gtk_vscale_new( A3125adj );
gtk_widget_set_name( A3125,"A3125" );
gtk_widget_ref( A3125 );
@@ -384,7 +390,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A3125,0,1,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A3125 ),FALSE );
- A6250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A6250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A6250=gtk_vscale_new( A6250adj );
gtk_widget_set_name( A6250,"A6250" );
gtk_widget_ref( A6250 );
@@ -393,7 +399,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A6250,1,2,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A6250 ),FALSE );
- A125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A125=gtk_vscale_new( A125adj );
gtk_widget_set_name( A125,"A125" );
gtk_widget_ref( A125 );
@@ -402,7 +408,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A125,2,3,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A125 ),FALSE );
- A250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A250=gtk_vscale_new( A250adj );
gtk_widget_set_name( A250,"A250" );
gtk_widget_ref( A250 );
@@ -411,7 +417,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A250,3,4,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A250 ),FALSE );
- A500adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A500adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A500=gtk_vscale_new( A500adj );
gtk_widget_set_name( A500,"A500" );
gtk_widget_ref( A500 );
@@ -420,7 +426,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A500,4,5,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A500 ),FALSE );
- A1000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A1000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A1000=gtk_vscale_new( A1000adj );
gtk_widget_set_name( A1000,"A1000" );
gtk_widget_ref( A1000 );
@@ -429,7 +435,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A1000,5,6,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A1000 ),FALSE );
- A2000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A2000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A2000=gtk_vscale_new( A2000adj );
gtk_widget_set_name( A2000,"A2000" );
gtk_widget_ref( A2000 );
@@ -438,7 +444,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A2000,6,7,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A2000 ),FALSE );
- A4000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A4000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A4000=gtk_vscale_new( A4000adj );
gtk_widget_set_name( A4000,"A4000" );
gtk_widget_ref( A4000 );
@@ -447,7 +453,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A4000,7,8,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A4000 ),FALSE );
- A8000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A8000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A8000=gtk_vscale_new( A8000adj );
gtk_widget_set_name( A8000,"A8000" );
gtk_widget_ref( A8000 );
@@ -456,7 +462,7 @@ GtkWidget * create_Equalizer( void )
gtk_table_attach( GTK_TABLE( table1 ),A8000,8,9,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 );
gtk_scale_set_draw_value( GTK_SCALE( A8000 ),FALSE );
- A16000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-15,15,0.5,0,0 ) );
+ A16000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) );
A16000=gtk_vscale_new( A16000adj );
gtk_widget_set_name( A16000,"A16000" );
gtk_widget_ref( A16000 );
@@ -618,7 +624,7 @@ GtkWidget * create_Equalizer( void )
gtk_widget_show( vbox3 );
gtk_box_pack_start( GTK_BOX( hbox2 ),vbox3,TRUE,TRUE,0 );
- VContrastadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,0,100,1,0,0 ) );
+ VContrastadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-100,100,1,0,0 ) );
VContrast=gtk_hscale_new( VContrastadj );
gtk_widget_set_name( VContrast,"VContrast" );
gtk_widget_ref( VContrast );
@@ -627,7 +633,7 @@ GtkWidget * create_Equalizer( void )
gtk_box_pack_start( GTK_BOX( vbox3 ),VContrast,TRUE,TRUE,0 );
gtk_scale_set_value_pos( GTK_SCALE( VContrast ),GTK_POS_RIGHT );
- VBrightnessadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,0,100,1,0,0 ) );
+ VBrightnessadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-100,100,1,0,0 ) );
VBrightness=gtk_hscale_new( VBrightnessadj );
gtk_widget_set_name( VBrightness,"VBrightness" );
gtk_widget_ref( VBrightness );
@@ -636,7 +642,7 @@ GtkWidget * create_Equalizer( void )
gtk_box_pack_start( GTK_BOX( vbox3 ),VBrightness,TRUE,TRUE,0 );
gtk_scale_set_value_pos( GTK_SCALE( VBrightness ),GTK_POS_RIGHT );
- VHueadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,0,100,1,0,0 ) );
+ VHueadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-100,100,1,0,0 ) );
VHue=gtk_hscale_new( VHueadj );
gtk_widget_set_name( VHue,"VHue" );
gtk_widget_ref( VHue );
@@ -645,7 +651,7 @@ GtkWidget * create_Equalizer( void )
gtk_box_pack_start( GTK_BOX( vbox3 ),VHue,TRUE,TRUE,0 );
gtk_scale_set_value_pos( GTK_SCALE( VHue ),GTK_POS_RIGHT );
- VSaturationadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,0,100,1,0,0 ) );
+ VSaturationadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-100,100,1,0,0 ) );
VSaturation=gtk_hscale_new( VSaturationadj );
gtk_widget_set_name( VSaturation,"VSaturation" );
gtk_widget_ref( VSaturation );
@@ -784,6 +790,7 @@ void ShowEquConfig( void )
gtk_entry_set_text( GTK_ENTRY( CEChannel6 ),gtkEquChannel6 ); gtk_entry_set_editable( GTK_ENTRY( CEChannel6 ),FALSE );
gtk_widget_show( EquConfig );
+ gtkSetLayer( EquConfig );
}
void HideEquConfig( void )
diff --git a/Gui/mplayer/gtk/fs.c b/Gui/mplayer/gtk/fs.c
index c61c88fca8..e01ab5c201 100644
--- a/Gui/mplayer/gtk/fs.c
+++ b/Gui/mplayer/gtk/fs.c
@@ -252,14 +252,15 @@ void ShowFileSelect( int type,int modal )
gtk_window_set_modal( GTK_WINDOW( fsFileSelect ),modal );
- gtk_widget_show( fsFileSelect );
+ gtk_widget_show( fsFileSelect ); gtkVisible++;
}
void HideFileSelect( void )
{
+ if ( !gtkVFileSelect ) return;
gtk_widget_hide( fsFileSelect );
gtk_widget_destroy( fsFileSelect );
- gtkVFileSelect=0;
+ gtkVFileSelect=0; gtkVisible--;
}
void fs_fsFileSelect_destroy( GtkObject * object,gpointer user_data )
diff --git a/Gui/mplayer/gtk/mb.c b/Gui/mplayer/gtk/mb.c
index a3f9c81570..a416f7562b 100644
--- a/Gui/mplayer/gtk/mb.c
+++ b/Gui/mplayer/gtk/mb.c
@@ -19,10 +19,11 @@ void ShowMessageBox( char * msg )
if ( gtkVMessageBox ) gtkActive( MessageBox );
else MessageBox=create_MessageBox( 0 );
if ( strlen( msg ) < 20 ) gtk_widget_set_usize( MessageBox,196,-1 );
+ gtkVisible++;
}
static void on_Ok_released( GtkButton * button,gpointer user_data )
-{ gtkVMessageBox=0; gtk_widget_destroy( MessageBox ); }
+{ gtkVMessageBox=0; gtk_widget_hide( MessageBox ); gtk_widget_destroy( MessageBox ); gtkVisible--; }
static void on_MessageBox_show( GtkButton * button,gpointer user_data )
{ gtkVMessageBox=(int)user_data; }
diff --git a/Gui/mplayer/gtk/pl.c b/Gui/mplayer/gtk/pl.c
index 40345eb172..30fecbd9f0 100644
--- a/Gui/mplayer/gtk/pl.c
+++ b/Gui/mplayer/gtk/pl.c
@@ -169,17 +169,18 @@ void ShowPlayList( void )
}
gtk_clist_thaw( GTK_CLIST( CLSelected ) );
- gtk_widget_show( PlayList );
+ gtk_widget_show( PlayList ); gtkVisible++;
}
void HidePlayList( void )
{
+ if ( !gtkVPlaylist ) return;
gtkVPlaylist=NrOfSelected=NrOfEntrys=0;
if ( CLListSelected ) free( CLListSelected ); CLListSelected=NULL;
if ( CLFileSelected ) free( CLFileSelected ); CLFileSelected=NULL;
if ( old_path ) free( old_path ); old_path=strdup( current_path );
gtk_widget_hide( PlayList );
- gtk_widget_destroy( PlayList );
+ gtk_widget_destroy( PlayList ); gtkVisible--;
}
static void plDestroy( GtkObject * object,gpointer user_data )
diff --git a/Gui/mplayer/gtk/sb.c b/Gui/mplayer/gtk/sb.c
index ff5d936ce1..cf76150ebc 100644
--- a/Gui/mplayer/gtk/sb.c
+++ b/Gui/mplayer/gtk/sb.c
@@ -29,11 +29,13 @@ void ShowSkinBrowser( void )
{
if ( gtkVSkinBrowser ) gtkActive( SkinBrowser );
else SkinBrowser=create_SkinBrowser();
+ gtkVisible++;
}
void HideSkinBrowser( void )
{
- gtkVSkinBrowser=0;
+ if ( !gtkVSkinBrowser ) return;
+ gtkVSkinBrowser=0; gtkVisible--;
gtk_widget_destroy( SkinBrowser );
}
diff --git a/Gui/mplayer/gtk/url.c b/Gui/mplayer/gtk/url.c
index 37fb69a3eb..7e0ac22974 100644
--- a/Gui/mplayer/gtk/url.c
+++ b/Gui/mplayer/gtk/url.c
@@ -34,14 +34,15 @@ void ShowURLDialogBox( void )
}
gtk_widget_show( URL );
- gtkVURLDialogBox=1;
+ gtkVURLDialogBox=1; gtkVisible++;
}
void HideURLDialogBox( void )
{
+ if ( !gtkVURLDialogBox ) return;
gtk_widget_hide( URL );
gtk_widget_destroy( URL );
- gtkVURLDialogBox=0;
+ gtkVURLDialogBox=0; gtkVisible--;
}
static gboolean on_URL_destroy_event( GtkWidget * widget,GdkEvent * event,gpointer user_data )
diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h
index cfc31dd8d8..37b1dff261 100644
--- a/Gui/mplayer/mw.h
+++ b/Gui/mplayer/mw.h
@@ -192,7 +192,11 @@ void mplMainDraw( wsParamDisplay )
image=fntRender( item->fontid,0,item->width,"%s",item->label );
goto drawrenderedtext;
case itDLabel:
- image=fntRender( item->fontid,mplTimer%item->width,item->width,"%s",Translate( item->label ) );
+ {
+ char * t = Translate( item->label );
+ int l = fntTextWidth( item->fontid,t );
+ image=fntRender( item->fontid,mplTimer%(l?l:item->width),item->width,"%s",t );
+ }
drawrenderedtext:
if ( image )
{
@@ -499,6 +503,7 @@ void mplMainMouseHandle( int Button,int X,int Y,int RX,int RY )
switch ( Button )
{
case wsPMMouseButton:
+ gtkShow( evHidePopUpMenu,NULL );
mplShowMenu( RX,RY );
itemtype=itPRMButton;
break;
@@ -507,6 +512,7 @@ void mplMainMouseHandle( int Button,int X,int Y,int RX,int RY )
break;
case wsPLMouseButton:
+ gtkShow( evHidePopUpMenu,NULL );
sx=X; sy=Y; boxMoved=1; itemtype=itPLMButton; // if move the main window
SelectedItem=currentselected;
if ( SelectedItem == -1 ) break; // yeees, i'm move the fucking window
diff --git a/Gui/mplayer/widgets.c b/Gui/mplayer/widgets.c
index 4cce8e8ea0..178fef1979 100644
--- a/Gui/mplayer/widgets.c
+++ b/Gui/mplayer/widgets.c
@@ -39,6 +39,7 @@ GtkWidget * ErrorPixmap;
int gtkPopupMenu = 0;
int gtkPopupMenuParam = 0;
int gtkInited = 0;
+int gtkVisible = 0;
#include "gtk/sb.h"
#include "gtk/pl.h"
@@ -117,7 +118,8 @@ void gtkSetDefaultToCList( GtkWidget * list,char * item )
void gtkEventHandling( void )
{
int i;
- for( i=0;i < 25;i++ ) gtk_main_iteration_do( 0 );
+ if ( gtkVisible > 0 )
+ for( i=0;i < 25;i++ ) gtk_main_iteration_do( 0 );
}
// --- funcs
@@ -180,7 +182,7 @@ void gtkShow( int type,char * param )
}
else
{
- gtk_widget_destroy( SkinBrowser );
+ gtk_widget_destroy( SkinBrowser ); gtkVisible--;
gtkMessageBox( GTK_MB_ERROR,"Skin dirs not found ... Please install skins." );
}
break;
@@ -218,15 +220,17 @@ void gtkShow( int type,char * param )
case evShowPopUpMenu:
gtkPopupMenu=evNone;
gtkPopupMenuParam=0;
- if ( PopUpMenu ) gtk_widget_hide_on_delete( PopUpMenu );
+ if ( PopUpMenu ) { gtk_widget_hide_on_delete( PopUpMenu ); gtkVisible--; }
PopUpMenu=create_PopUpMenu();
gtk_menu_popup( GTK_MENU( PopUpMenu ),NULL,NULL,NULL,NULL,0,0 );
+ gtkVisible++;
break;
case evHidePopUpMenu:
- if ( PopUpMenu ) gtk_widget_hide_on_delete( PopUpMenu );
+ if ( PopUpMenu ) { gtk_widget_hide_on_delete( PopUpMenu ); gtkVisible--; PopUpMenu=NULL; }
break;
case evPlayNetwork:
ShowURLDialogBox();
+ gtkSetLayer( URL );
break;
}
}
diff --git a/Gui/mplayer/widgets.h b/Gui/mplayer/widgets.h
index fa11836e94..7909a4ef3b 100644
--- a/Gui/mplayer/widgets.h
+++ b/Gui/mplayer/widgets.h
@@ -41,6 +41,8 @@ extern GdkBitmap * gtkIconMask;
extern Pixmap guiIcon;
extern Pixmap guiIconMask;
+extern int gtkVisible;
+
extern void widgetsCreate( void );
extern void gtkInit( void );
diff --git a/Gui/skin/font.h b/Gui/skin/font.h
index 8effa4acf1..0639b78d5b 100644
--- a/Gui/skin/font.h
+++ b/Gui/skin/font.h
@@ -23,6 +23,8 @@ extern bmpFont * Fonts[26];
extern int fntAddNewFont( char * name );
extern void fntFreeFont( void );
extern int fntFindID( char * name );
+extern int fntTextHeight( int id,char * str );
+extern int fntTextWidth( int id,char * str );
extern int fntRead( char * path,char * fname );
extern txSample * fntRender( int id,int px,int sx,char * fmt,... );