Fix issue 170: Fileselector displays only letters until the first dot
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@821 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									3925e87363
								
							
						
					
					
						commit
						a32d28e157
					
				
							
								
								
									
										38
									
								
								filesel.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								filesel.c
									
									
									
									
									
								
							@ -91,7 +91,10 @@ void Free_fileselector_list(void)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// -- Formatage graphique des noms de fichier / répertoire ------------------
 | 
			
		||||
///
 | 
			
		||||
/// Formats a display name for a file, directory, or similar name (drive, volume).
 | 
			
		||||
/// The returned value is a pointer to a single static buffer of 19 characters
 | 
			
		||||
/// including the '\0'.
 | 
			
		||||
char * Format_filename(char * fname, int type)
 | 
			
		||||
{
 | 
			
		||||
  static char result[19];
 | 
			
		||||
@ -103,35 +106,38 @@ char * Format_filename(char * fname, int type)
 | 
			
		||||
  {
 | 
			
		||||
    strcpy(result,"<-PARENT DIRECTORY");
 | 
			
		||||
  }
 | 
			
		||||
  else if (fname[0]=='.' || type==2)
 | 
			
		||||
  else if (fname[0]=='.' || type==1 || type==2)
 | 
			
		||||
  {
 | 
			
		||||
    // Fichiers ".quelquechose" ou lecteurs: Calé à gauche sur 18 caractères maximum.
 | 
			
		||||
    // Files ".something" or drives or directories: Aligned left on 18 chars max
 | 
			
		||||
    strcpy(result,"                  ");
 | 
			
		||||
    for (c=0;fname[c]!='\0' && c < 18;c++)
 | 
			
		||||
      result[c]=fname[c];
 | 
			
		||||
    // Un caractère spécial pour indiquer que l'affichage est tronqué
 | 
			
		||||
    // A special character indicates the filename is truncated
 | 
			
		||||
    if (c >= 18)
 | 
			
		||||
      result[17]=ELLIPSIS_CHARACTER;
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    strcpy(result,"              .   ");
 | 
			
		||||
    // On commence par recopier la partie précédent le point:
 | 
			
		||||
    for (c=0;( (fname[c]!='.') && (fname[c]!='\0') );c++)
 | 
			
		||||
    {
 | 
			
		||||
      if (c < 14)
 | 
			
		||||
        result[c]=fname[c];
 | 
			
		||||
    }
 | 
			
		||||
    // Un caractère spécial pour indiquer que l'affichage est tronqué
 | 
			
		||||
    if (c > 14)
 | 
			
		||||
      result[13]=ELLIPSIS_CHARACTER;
 | 
			
		||||
    // On recherche le dernier point dans le reste du nom
 | 
			
		||||
    for (pos_last_dot = c; fname[c]!='\0'; c++)
 | 
			
		||||
    // Look for the last dot in filename
 | 
			
		||||
    pos_last_dot = -1;
 | 
			
		||||
    for (c = 0; fname[c]!='\0'; c++)
 | 
			
		||||
      if (fname[c]=='.')
 | 
			
		||||
        pos_last_dot = c;
 | 
			
		||||
 | 
			
		||||
    // Copy the part before the dot
 | 
			
		||||
    for (c=0; c!=pos_last_dot && fname[c]!='\0'; c++)
 | 
			
		||||
    {
 | 
			
		||||
      if (c > 13)
 | 
			
		||||
      {
 | 
			
		||||
        result[13]=ELLIPSIS_CHARACTER;
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      result[c]=fname[c];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Ensuite on recopie la partie qui suit le point (si nécessaire):
 | 
			
		||||
    if (fname[pos_last_dot])
 | 
			
		||||
    if (pos_last_dot != -1)
 | 
			
		||||
    {
 | 
			
		||||
      for (c = pos_last_dot+1,other_cursor=15;fname[c]!='\0' && other_cursor < 18;c++,other_cursor++)
 | 
			
		||||
        result[other_cursor]=fname[c];
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user