diff --git a/programs/fs/Eolite/trunk/Eolite.c-- b/programs/fs/Eolite/trunk/Eolite.c-- index 608f7cd0c9..40e10f5dd0 100644 --- a/programs/fs/Eolite/trunk/Eolite.c-- +++ b/programs/fs/Eolite/trunk/Eolite.c-- @@ -20,7 +20,7 @@ int BUTTON_HEIGHT=18; #define ONLY_OPEN 2 //переменные -#define title "Eolite File Manager v1.5" +#define title "Eolite File Manager v1.55" dword col_work = 0xE4DFE1; dword col_border = 0x819FC5; dword col_padding = 0xC8C9C9; @@ -376,6 +376,7 @@ void main() break; case 051: //Нажата F2 REN_MARK: + if (!count) break; DeleteButton(curbtn+201); //это чтоб можно было выделять мышью edit2.flags=66; //делаем компонент активным edit2.width=onLeft(24,217); @@ -633,7 +634,8 @@ void Open_Dir(dword temp_, redraw){ inline Sorting() { dword k=0, l=1; - if (!strcmp(#path,"/")) || (count>3000) //не сортировать папки и не менять регистр в "/" + int i; + if (!strcmp(#path,"/")) //не сортировать папки и не менять регистр в "/" { FOR(k=1;k0) && (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k--; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]> - 1 -{ - int jst, ist=a; - int n; - unsigned char filename1[256], filename2[256]; - unsigned char ext1[256], ext2[256]; +void Sort_by_Type(int a, b) // для первого вызова: a = 0, b = <элементов в массиве> - 1 +{ + dword filename1, filename2, ext1, ext2; + int n, isn = a; IF (a >= b) return; - for (jst = a; jst <= b; jst++) + for (j = a; j <= b; j++) { - ext1[0]=ext2[0]=filename1[0]=filename2[0]=NULL; - copystr(file_mas[jst]*304 + buf+72, #filename1); - copystr(file_mas[b]*304 + buf+72, #filename2); - n=strlen(#filename1)-1; - WHILE (filename1[n]<>'.') && (n>0) n--; - IF (n) copystr(#filename1+n+1, #ext1); - n=strlen(#filename2)-1; - WHILE (filename2[n]<>'.') && (n>0) n--; - IF (n) copystr(#filename2+n+1, #ext2); + filename1 = file_mas[j]*304 + buf+72; + filename2 = file_mas[b]*304 + buf+72; - n=strcmp(#ext1, #ext2); - IF (n<0) { file_mas[ist] >< file_mas[jst]; ist++;} - IF (n==0) && (strcmp(#filename1, #filename2)<=0) { file_mas[ist] >< file_mas[jst]; ist++;} + n=strlen(filename1)-1; + WHILE (n>0) && (ESBYTE[filename1+n]<>'.') n--; + IF (n) ext1 = filename1+n+1; else ext1=0; + n=strlen(filename2)-1; + WHILE (n>0) && (ESBYTE[filename2+n]<>'.') n--; + IF (n) ext2 = filename2+n+1; else ext2=0; + + n=strcmp(ext1, ext2); + IF (n<0) { file_mas[isn] >< file_mas[j]; isn++;} + IF (n==0) && (strcmp(filename1, filename2)<=0) { file_mas[isn] >< file_mas[j]; isn++;} } - Sort_by_Type(a, ist-2); - Sort_by_Type(ist, b); + Sort_by_Type(a, isn-2); + Sort_by_Type(isn, b); } diff --git a/programs/fs/Eolite/trunk/txt/History.txt b/programs/fs/Eolite/trunk/txt/History.txt index b5261aa7d0..bd99fc6755 100644 --- a/programs/fs/Eolite/trunk/txt/History.txt +++ b/programs/fs/Eolite/trunk/txt/History.txt @@ -1,3 +1,11 @@ +10.01.13 -- v1.55 +- исправлен эпичный баг с сортировкой; +- испрвлены баги при попытке переименования или удаления файла в папке, + где их нет. + +17.12.12 -- v1.5 +Обновлён GUI: кнопки на тулбаре стали чище, остальные обзавелись градиентами. + 16.11.12 -- v1.43 - при минимальном размере окна учитывается количество дисков в системе; - добавлен фон на левую панель;