comparison gui/ui/gtk/fileselect.c @ 34364:b02b6ad1b7fb

Remember the lastly selected file in file selector. Don't move the focus / selection from that file.
author ib
date Tue, 20 Dec 2011 16:34:38 +0000
parents 52a18f850c28
children b8a4787f363b
comparison
equal deleted inserted replaced
34363:995cbc4b5884 34364:b02b6ad1b7fb
56 gchar * fsSelectedDirectoryUtf8 = NULL; 56 gchar * fsSelectedDirectoryUtf8 = NULL;
57 unsigned char * fsThatDir = "."; 57 unsigned char * fsThatDir = ".";
58 const gchar * fsFilter = "*"; 58 const gchar * fsFilter = "*";
59 59
60 int fsType = 0; 60 int fsType = 0;
61
62 static gint fsCurrFNameListSelected, fsLastFNameListSelected;
61 63
62 char * fsVideoFilterNames[][2] = 64 char * fsVideoFilterNames[][2] =
63 { 65 {
64 { "ASF files (*.asf)", "*.asf" }, 66 { "ASF files (*.asf)", "*.asf" },
65 { "AVI files (*.avi)", "*.avi" }, 67 { "AVI files (*.avi)", "*.avi" },
241 clist_append_fname(list, gg.gl_pathv[i], fpixmap, fmask); 243 clist_append_fname(list, gg.gl_pathv[i], fpixmap, fmask);
242 } 244 }
243 globfree( &gg ); 245 globfree( &gg );
244 246
245 gtk_clist_set_column_width( GTK_CLIST( list ),0,17 ); 247 gtk_clist_set_column_width( GTK_CLIST( list ),0,17 );
246 gtk_clist_select_row( GTK_CLIST( list ),0,1 );
247 gtk_widget_show( list ); 248 gtk_widget_show( list );
248 } 249 }
249 250
250 void ShowFileSelect( int type,int modal ) 251 void ShowFileSelect( int type,int modal )
251 { 252 {
357 fsTopList_items=g_list_append( fsTopList_items,"/mnt" ); 358 fsTopList_items=g_list_append( fsTopList_items,"/mnt" );
358 fsTopList_items=g_list_append( fsTopList_items,"/" ); 359 fsTopList_items=g_list_append( fsTopList_items,"/" );
359 gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items ); 360 gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items );
360 361
361 gtk_widget_grab_focus( fsFNameList ); 362 gtk_widget_grab_focus( fsFNameList );
363 ((GtkCList *)fsFNameList)->focus_row = fsLastFNameListSelected;
364 gtk_clist_select_row( GTK_CLIST( fsFNameList ),fsLastFNameListSelected,1 );
365 fsLastFNameListSelected = 0;
362 366
363 gtk_window_set_modal( GTK_WINDOW( fsFileSelect ),modal ); 367 gtk_window_set_modal( GTK_WINDOW( fsFileSelect ),modal );
364 368
365 gtk_widget_show( fsFileSelect ); 369 gtk_widget_show( fsFileSelect );
366 } 370 }
369 { 373 {
370 if ( !fsFileSelect ) return; 374 if ( !fsFileSelect ) return;
371 gtk_widget_hide( fsFileSelect ); 375 gtk_widget_hide( fsFileSelect );
372 gtk_widget_destroy( fsFileSelect ); 376 gtk_widget_destroy( fsFileSelect );
373 fsFileSelect=NULL; 377 fsFileSelect=NULL;
378 fsLastFNameListSelected = fsCurrFNameListSelected;
374 } 379 }
375 380
376 static void fs_PersistantHistory( char * subject ) 381 static void fs_PersistantHistory( char * subject )
377 { 382 {
378 unsigned int i; 383 unsigned int i;
482 { 487 {
483 chdir( fsSelectedFile ); 488 chdir( fsSelectedFile );
484 fsSelectedFile=fsThatDir; 489 fsSelectedFile=fsThatDir;
485 CheckDir( fsFNameList ); 490 CheckDir( fsFNameList );
486 gtk_entry_set_text( GTK_ENTRY( fsPathCombo ),(unsigned char *)get_current_dir_name_utf8() ); 491 gtk_entry_set_text( GTK_ENTRY( fsPathCombo ),(unsigned char *)get_current_dir_name_utf8() );
492 gtk_widget_grab_focus( fsFNameList );
487 return; 493 return;
488 } 494 }
489 495
490 fsSelectedDirectory=(unsigned char *)get_current_dir_name(); 496 fsSelectedDirectory=(unsigned char *)get_current_dir_name();
491 switch ( fsType ) 497 switch ( fsType )
532 } 538 }
533 539
534 static void fs_fsFNameList_select_row( GtkWidget * widget, gint row, gint column, 540 static void fs_fsFNameList_select_row( GtkWidget * widget, gint row, gint column,
535 GdkEventButton *bevent, gpointer user_data) 541 GdkEventButton *bevent, gpointer user_data)
536 { 542 {
543 fsCurrFNameListSelected = row;
537 gtk_clist_get_text( GTK_CLIST(widget ),row,1,&fsSelectedFile ); 544 gtk_clist_get_text( GTK_CLIST(widget ),row,1,&fsSelectedFile );
538 g_free( fsSelectedFileUtf8 ); 545 g_free( fsSelectedFileUtf8 );
539 fsSelectedFileUtf8 = g_filename_from_utf8( fsSelectedFile, -1, NULL, NULL, NULL ); 546 fsSelectedFileUtf8 = g_filename_from_utf8( fsSelectedFile, -1, NULL, NULL, NULL );
540 if ( fsSelectedFileUtf8 ) fsSelectedFile = fsSelectedFileUtf8; 547 if ( fsSelectedFileUtf8 ) fsSelectedFile = fsSelectedFileUtf8;
541 if( bevent && bevent->type == GDK_BUTTON_PRESS ) gtk_button_released( GTK_BUTTON( fsOk ) ); 548 if( bevent && bevent->type == GDK_BUTTON_PRESS ) gtk_button_released( GTK_BUTTON( fsOk ) );
556 case GDK_Escape: 563 case GDK_Escape:
557 gtk_button_released( GTK_BUTTON( fsCancel ) ); 564 gtk_button_released( GTK_BUTTON( fsCancel ) );
558 break; 565 break;
559 case GDK_Return: 566 case GDK_Return:
560 gtk_button_released( GTK_BUTTON( fsOk ) ); 567 gtk_button_released( GTK_BUTTON( fsOk ) );
561 gtk_widget_grab_focus( fsFNameList );
562 break; 568 break;
563 case GDK_BackSpace: 569 case GDK_BackSpace:
564 gtk_button_released( GTK_BUTTON( fsUp ) ); 570 gtk_button_released( GTK_BUTTON( fsUp ) );
565 gtk_widget_grab_focus( fsFNameList ); 571 gtk_widget_grab_focus( fsFNameList );
566 break; 572 break;