diff Gui/mplayer/gtk/sb.c @ 5690:436cf6ef67fd

fix skin loading bug
author pontscho
date Thu, 18 Apr 2002 21:24:42 +0000
parents 3473ca9ef158
children 153fc4ed86ad
line wrap: on
line diff
--- a/Gui/mplayer/gtk/sb.c	Thu Apr 18 18:24:08 2002 +0000
+++ b/Gui/mplayer/gtk/sb.c	Thu Apr 18 21:24:42 2002 +0000
@@ -20,6 +20,7 @@
 char      * sbMPlayerPrefixDir=NULL;
 
 char * gtkOldSkin;
+static char * prev;
 
 int gtkFillSkinList( gchar * mdir )
 {
@@ -30,6 +31,7 @@
  struct stat     fs;
 
  gtkOldSkin=strdup( skinName );
+ prev=gtkOldSkin;
  if ( ( str[0]=(char *)calloc( 1,7 ) ) == NULL )
   {
    gtkMessageBox( GTK_MB_FATAL,MSGTR_SKINBROWSER_NotEnoughMemory );
@@ -64,7 +66,7 @@
 
 void on_SkinBrowser_Cancel( GtkObject * object,gpointer user_data )
 {
- ChangeSkin( skinName );
+ if ( strcmp( sbSelectedSkin,gtkOldSkin ) ) ChangeSkin( gtkOldSkin );
  gtk_widget_hide( SkinBrowser );
 }
 
@@ -79,9 +81,18 @@
 void on_SkinList_select_row( GtkCList * clist,gint row,gint column,GdkEvent * bevent,gpointer user_data )
 {
  gtk_clist_get_text( clist,row,0,&sbSelectedSkin );
- ChangeSkin( sbSelectedSkin );
+ if ( strcmp( prev,sbSelectedSkin ) )
+  {
+   prev=sbSelectedSkin;
+   ChangeSkin( sbSelectedSkin );
+  }
  if( !bevent ) return;
- if( bevent->type == GDK_2BUTTON_PRESS ) gtk_widget_hide( SkinBrowser );
+ if( bevent->type == GDK_2BUTTON_PRESS )
+  {
+   if ( skinName ) free( skinName );
+   skinName=strdup( sbSelectedSkin );
+   gtk_widget_hide( SkinBrowser );
+  }
 }
 
 GtkWidget * create_SkinBrowser( void )