diff Gui/mplayer/gtk/fs.c @ 6146:b9651eb9749e

fix some gtk bug...
author pontscho
date Mon, 20 May 2002 13:56:16 +0000
parents 39c2bfe5c267
children da08877b9512
line wrap: on
line diff
--- a/Gui/mplayer/gtk/fs.c	Mon May 20 13:39:23 2002 +0000
+++ b/Gui/mplayer/gtk/fs.c	Mon May 20 13:56:16 2002 +0000
@@ -38,6 +38,8 @@
 int             fsMessage = -1;
 int             fsType    = 0;
 
+int gtkVFileSelect = 0;
+
 #define fsNumberOfVideoFilterNames 9
 char * fsVideoFilterNames[fsNumberOfVideoFilterNames+1][2] =
          { { "MPEG files (*.mpg,*.mpeg)",                               "*.mpg,*.mpeg" },
@@ -186,7 +188,9 @@
 void ShowFileSelect( int type )
 {
  int i;
- FileSelect=create_FileSelect();
+
+ if ( gtkVFileSelect ) gtkActive( fsFileSelect );
+  else fsFileSelect=create_FileSelect();
  
  if ( FirstInit )
   {
@@ -231,11 +235,15 @@
         gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[fsNumberOfOtherFilterNames][0] );
         break;
   }
- gtk_widget_show( FileSelect );
+ gtk_widget_show( fsFileSelect );
 }
 
 void HideFileSelect( void )
-{ gtk_widget_destroy( fsFileSelect ); }
+{
+ gtk_widget_hide( fsFileSelect );
+ gtk_widget_destroy( fsFileSelect );
+ gtkVFileSelect=0;
+}
 
 void fs_fsFileSelect_destroy( GtkObject * object,gpointer user_data )
 { HideFileSelect(); }
@@ -336,8 +344,6 @@
    return;
   }
 
- HideFileSelect();
-
  switch( fsPressed )
   {
    case 1:
@@ -346,7 +352,7 @@
    case 2:
         str=gtk_entry_get_text( GTK_ENTRY( fsPathCombo ) );
         fsSelectedFile=str;
-        if ( !fsFileExist( fsSelectedFile ) ) return;
+        if ( !fsFileExist( fsSelectedFile ) ) { HideFileSelect(); return; }
         fsSelectedDirectory=fsSelectedFile;
         size=strlen( fsSelectedDirectory );
         for ( j=0;j<size;j++ )
@@ -375,6 +381,9 @@
           guiSetDF( guiIntfStruct.Othername,fsSelectedDirectory,fsSelectedFile );
           break;
   }
+
+ HideFileSelect();
+
  item=fsTopList_items;
  while( item )
   {
@@ -413,6 +422,9 @@
  return FALSE;
 }
 
+void fs_FileSelect_show( GtkWidget * widget,gpointer user_data )
+{ gtkVFileSelect=(int)user_data; }
+
 GtkWidget * create_FileSelect( void )
 {
  GtkWidget     * FSFrame;
@@ -639,6 +651,10 @@
 
  gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"destroy",GTK_SIGNAL_FUNC( fs_fsFileSelect_destroy ),NULL );
  gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL );
+
+ gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"show",GTK_SIGNAL_FUNC( fs_FileSelect_show ),1 );
+ gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"hide",GTK_SIGNAL_FUNC( fs_FileSelect_show ),0 );
+
  gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsFilterCombo_changed ),fsFilterCombo );
  gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"activate",GTK_SIGNAL_FUNC( fs_fsFilterCombo_activate ),fsFilterCombo );
  gtk_signal_connect( GTK_OBJECT( fsPathCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsPathCombo_changed ),fsPathCombo );