X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcfilebox.C;h=80cf3320191f37ec35b4096c7f418485292cb71e;hp=5d755977c183bfbaa9c424d7234e1021213945f2;hb=7e5a0760f40ff787cc3d93cb7768a901ebe52809;hpb=b402ed7f93de4c98e6651483eb8561cf1c37ec9a diff --git a/cinelerra-5.1/guicast/bcfilebox.C b/cinelerra-5.1/guicast/bcfilebox.C index 5d755977..80cf3320 100644 --- a/cinelerra-5.1/guicast/bcfilebox.C +++ b/cinelerra-5.1/guicast/bcfilebox.C @@ -553,6 +553,7 @@ BC_FileBox::~BC_FileBox() void BC_FileBox::create_objects() { + lock_window("BC_FileBox::create_objects"); int x = 10, y = 10; BC_Resources *resources = BC_WindowBase::get_resources(); int directory_title_margin = MAX(20, @@ -572,7 +573,7 @@ void BC_FileBox::create_objects() } create_icons(); - create_tables(); + create_tables(0); add_subwindow(ok_button = new BC_FileBoxOK(this)); if(want_directory) @@ -662,6 +663,7 @@ void BC_FileBox::create_objects() refresh(); show_window(); + unlock_window(); } int BC_FileBox::get_listbox_w() @@ -754,12 +756,19 @@ int BC_FileBox::resize_event(int w, int h) int BC_FileBox::keypress_event() { - switch(get_keypress()) - { - case 'w': - if(ctrl_down()) set_done(1); - return 1; - break; + switch(get_keypress()) { + case 'a': + if( !ctrl_down() ) break; + refresh(0, 1); + return 1; + case 'z': + if( !ctrl_down() ) break; + refresh(0, 0); + return 1; + case 'w': + if( !ctrl_down() ) break; + set_done(1); + return 1; } return 0; } @@ -797,8 +806,9 @@ static inline int ilen(int64_t v) return len; } -int BC_FileBox::create_tables() +int BC_FileBox::create_tables(int select_all) { + int preload_textbox = select_all; delete_tables(); char string[BCTEXTLEN]; BC_ListBoxItem *new_item; @@ -824,6 +834,10 @@ int BC_FileBox::create_tables() // { if(!is_dir) { + if( preload_textbox ) { + preload_textbox = 0; + textbox->update(new_item->get_text()); + } int64_t size = file_item->size; if( (size_format == FILEBOX_SIZE_1000 && size >= 1000) || (size_format == FILEBOX_SIZE_1024 && size >= 1024) ) { @@ -894,6 +908,12 @@ int BC_FileBox::create_tables() } list_column[column_of_type(FILEBOX_EXTENSION)].append(new_item); // } + + if( !is_dir && select_all ) { + int k = list_column[0].size()-1; + for( int j=0; jset_selected(1); + } } return 0; @@ -942,7 +962,7 @@ int BC_FileBox::column_of_type(int type) -int BC_FileBox::refresh(int reset) +int BC_FileBox::refresh(int reset, int select_all) { fs->set_sort_order(sort_order); fs->set_sort_field(column_type[sort_column]); @@ -950,7 +970,7 @@ int BC_FileBox::refresh(int reset) fs->update(0); else fs->update_sort(); - create_tables(); + create_tables(select_all); listbox->set_master_column(column_of_type(FILEBOX_NAME), 0); listbox->update(list_column, column_titles, column_width, columns, reset>0 ? 0 : listbox->get_xposition(),