while( *cp ) ++cp;
if( cp > path && *--cp != '/' ) return 0;
char *file_path = FileSystem::basepath(path);
- char *dir_path = FileSystem::basepath(filebox->fs->get_current_dir());
+ char *dir_path = FileSystem::basepath(filebox->directory);
int ret = !strcmp(file_path, dir_path) ? 0 : 1;
if( ret ) {
strcpy(filebox->directory, file_path);
this->want_directory = want_directory;
if(show_all_files) fs->set_show_all();
fs->complete_path(this->current_path);
- fs->complete_path(this->submitted_path);
+ strcpy(this->submitted_path, this->current_path);
fs->extract_dir(directory, this->current_path);
fs->extract_name(filename, this->current_path);
// Test if current directory exists
if(!fs->is_dir(directory))
{
- sprintf(this->current_path, "~");
- fs->complete_path(this->current_path);
- fs->set_current_dir(this->current_path);
-// fs->update(this->current_path);
- strcpy(directory, fs->get_current_dir());
+ sprintf(directory, "~");
+ fs->complete_path(directory);
+ strcpy(current_path,directory);
filename[0] = 0;
}
- else
- fs->set_current_dir(this->directory);
-
+ fs->set_current_dir(directory);
if(h_padding == -1)
{
int directory_title_margin = MAX(20,
resources->filebox_text_images[0]->get_h());
-// Create recent dir list
- create_history();
- update_history();
-
// Directories aren't filtered in FileSystem so skip this
if(!want_directory)
{
fs->set_filter(get_resources()->filebox_filter);
}
- fs->set_sort_order(sort_order);
- fs->set_sort_field(column_type[sort_column]);
- fs->update(directory);
-
create_icons();
create_tables();
add_subwindow(recent_popup = new BC_FileBoxRecent(this, x, y));
add_subwindow(directory_title = new BC_FileBoxDirectoryText(x, y, this));
- directory_title->reposition_window(x, y,
- get_w() - recent_popup->get_w() - 20, 1);
- recent_popup->reposition_window(
- x + directory_title->get_w(), y,
- directory_title->get_w(), 200);
+ directory_title->reposition_window(x, y, get_w() - recent_popup->get_w() - 20, 1);
+ x += directory_title->get_w() + 8;
+ recent_popup->reposition_window(x, y, directory_title->get_w(), 200);
x = 10;
y += directory_title->get_h() + 5;
if( newest >= 0 ) {
strcpy(directory, resources->filebox_history[newest].path);
fs->change_dir(directory, 0);
+ strcpy(directory, fs->get_current_dir());
directory_title->update(fs->get_current_dir());
}
+ fs->set_sort_order(sort_order);
+ fs->set_sort_field(column_type[sort_column]);
+ fs->update(directory);
+
+// Create recent dir list
+ create_history();
+ update_history();
listbox = 0;
create_listbox(x, y, get_display_mode());
rename_thread = new BC_RenameThread(this);
-
+ refresh();
show_window();
}
get_w() - recent_popup->get_w() - 20,
1);
recent_popup->reposition_window(
- directory_title->get_x() + directory_title->get_w(),
+ directory_title->get_x() + directory_title->get_w() + 8,
directory_title->get_y(),
directory_title->get_w() + recent_popup->get_w(),
recent_popup->get_h());
int BC_FileBox::submit_file(const char *path, int use_this)
{
+ char path1[BCTEXTLEN];
+ strcpy(path1, path);
+ char *cp = strchr(path1,'\n');
+ if( cp ) *cp = 0;
+
// Deactivate textbox to hide suggestions
textbox->deactivate();
// If file wanted, take the current directory as the desired file.
// If directory wanted, ignore it.
- if(!path[0] && !want_directory)
+ if(!path1[0] && !want_directory)
{
// save complete path
strcpy(this->current_path, directory);
}
// is a directory, change directories
- if(fs->is_dir(path) && !use_this)
+ if(fs->is_dir(path1) && !use_this)
{
- fs->change_dir(path, 0);
+ fs->change_dir(path1, 0);
refresh(1);
directory_title->update(fs->get_current_dir());
strcpy(this->current_path, fs->get_current_dir());
// Is a file or desired directory. Quit the operation.
{
char path2[BCTEXTLEN];
- strcpy(path2, path);
+ strcpy(path2, path1);
// save directory for defaults
fs->extract_dir(directory, path2);
strcpy(path, directory);
// enfore one trailing slash
char *cp = path;
- while( *cp ) ++cp;
+ while( *cp && *cp != '\n' ) ++cp;
while( cp > path && *(cp-1) == '/' ) --cp;
*cp++ = '/'; *cp = 0;