Mercurial > mplayer.hg
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; |