Eolite 3.91:

1. fixed a critical issue in setElementSelectedFlag() function which could cause app crash after paste several elements
2. also deny copying in several cases (empty disk, ".." element)
3. fix regression: icon for a file without extension, not executable

git-svn-id: svn://kolibrios.org@7278 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2018-05-13 16:06:20 +00:00
parent e98d3b0786
commit e1c7133e38
13 changed files with 30 additions and 36 deletions

View File

@ -550,7 +550,7 @@ void DrawFavButton(int x)
void draw_window() void draw_window()
{ {
if (show_status_bar.checked) status_bar_h = STATUS_BAR_H; else status_bar_h = 0; if (show_status_bar.checked) status_bar_h = STATUS_BAR_H; else status_bar_h = 0;
DefineAndDrawWindow(WinX+rand_n,WinY+rand_n,WinW,WinH,0x73,NULL,TITLE,0); DefineAndDrawWindow(Form.left+rand_n,Form.top+rand_n,Form.width,Form.height,0x73,NULL,TITLE,0);
GetProcessInfo(#Form, SelfInfo); GetProcessInfo(#Form, SelfInfo);
if (Form.status_window>2) return; if (Form.status_window>2) return;
if (Form.height < 350) { MoveSize(OLD,OLD,OLD,350); return; } if (Form.height < 350) { MoveSize(OLD,OLD,OLD,350); return; }

View File

@ -44,7 +44,7 @@ void about_dialog()
DrawRectangle3D(0,154,about_form.cwidth,1,system.color.work_dark,system.color.work_light); DrawRectangle3D(0,154,about_form.cwidth,1,system.color.work_dark,system.color.work_light);
WriteTextLines(7,163,0x90,system.color.work_text,"KolibriOS File Manager\nAuthors: Leency, Veliant\nPunk_Joker, Pavelyakov\n(c) 2008 - 2017",20); WriteTextLines(7,163,0x90,system.color.work_text,"KolibriOS File Manager\nAuthors: Leency, Veliant\nPunk_Joker, Pavelyakov\n(c) 2008 - 2017",20);
#ifdef LANG_RUS #ifdef LANG_RUS
DrawFlatButton(60,about_form.cheight-38,11,"ˆáâ®à¨ï ࠧࠡ®âª¨"); DrawStandartCaptButton(60,about_form.cheight-38,11,"ˆáâ®à¨ï ࠧࠡ®âª¨");
#endif #endif
} }
} }

View File

@ -8,7 +8,10 @@ enum {NOCUT, CUT};
void setElementSelectedFlag(dword n, int state) { void setElementSelectedFlag(dword n, int state) {
dword selected_offset = file_mas[n]*304 + buf+32 + 7; dword selected_offset = file_mas[n]*304 + buf+32 + 7;
ESBYTE[selected_offset] = state; ESBYTE[selected_offset] = state;
if (n==0) && (strncmp(file_mas[n]*304+buf+72,"..",2)==0) ESBYTE[selected_offset] = false; //do not selec ".." directory if (n==0) && (strncmp(file_mas[n]*304+buf+72,"..",2)==0) {
ESBYTE[selected_offset] = false; //do not selec ".." directory
return;
}
if (state==true) selected_count++; if (state==true) selected_count++;
if (state==false) selected_count--; if (state==false) selected_count--;
} }
@ -27,7 +30,13 @@ void Copy(dword pcth, char cut)
dword copy_buf_offset = 0; dword copy_buf_offset = 0;
if (files.count<=0) return; //no files if (files.count<=0) return; //no files
if (selected_count==0) setElementSelectedFlag(files.cur_y, true); //no element selected by "insert", so we copy current element
//if no element selected by "Insert" key, then we copy current element
if (!selected_count)
setElementSelectedFlag(files.cur_y, true);
if (!selected_count) return;
size_buf = 4; size_buf = 4;
for (i=0; i<files.count; i++) for (i=0; i<files.count; i++)
{ {

View File

@ -8,7 +8,9 @@ void DirFileCount(dword way)
if (dir_exists(way)) if (dir_exists(way))
{ {
cur_file = malloc(4096); cur_file = malloc(4096);
// In the process of recursive descent, memory must be allocated dynamically, because the static memory -> was a bug !!! But unfortunately pass away to sacrifice speed. // In the process of recursive descent, memory must be allocated
// dynamically, because the static variable cause a fault!!!
// But unfortunately pass away to sacrifice speed.
GetDir(#dirbuf, #fcount, way, DIRS_ONLYREAL); GetDir(#dirbuf, #fcount, way, DIRS_ONLYREAL);
filename = dirbuf+72; filename = dirbuf+72;
for (i=0; i<fcount; i++) for (i=0; i<fcount; i++)

View File

@ -52,17 +52,6 @@ void DrawFlatButtonSmall(dword x,y,width,height,id,text)
WriteText(-strlen(text)*6+width/2+x+1,height/2+y-3,0x80,0x333333,text); WriteText(-strlen(text)*6+width/2+x+1,height/2+y-3,0x80,0x333333,text);
} }
int DrawFlatButton(dword x, y, id, text)
{
int padding_w = 15;
int width = strlen(text) * 8 + padding_w + padding_w;
int height = 25;
if (id) DefineButton(x+1,y+1,width-2,height-2,id,system.color.work_button);
WriteText(x+padding_w,height/2+y-6,0x90,system.color.work_button_text,text);
return width + padding_w;
}
void DrawFilledBar(dword x, y, w, h) void DrawFilledBar(dword x, y, w, h)
{ {
int i, fill_h; int i, fill_h;
@ -77,6 +66,6 @@ void DrawEolitePopup(dword b1_text, b2_text)
int but_x; int but_x;
int popin_x = files.w - popin_w / 2 + files.x ; int popin_x = files.w - popin_w / 2 + files.x ;
DrawPopup(popin_x, 160, popin_w, 95, 1, system.color.work, col_graph); DrawPopup(popin_x, 160, popin_w, 95, 1, system.color.work, col_graph);
but_x = DrawFlatButton(popin_x+23, 215, POPUP_BTN1, b1_text); but_x = DrawStandartCaptButton(popin_x+23, 215, POPUP_BTN1, b1_text);
DrawFlatButton(popin_x+23 + but_x, 215, POPUP_BTN2, b2_text); DrawStandartCaptButton(popin_x+23 + but_x, 215, POPUP_BTN2, b2_text);
} }

View File

@ -5,7 +5,7 @@ void DrawIconByExtension(dword file_path, extension, xx, yy, fairing_color)
char BYTE_HEAD_FILE[4]; char BYTE_HEAD_FILE[4];
char ext[512]; char ext[512];
int i; int i;
dword icon_n; dword icon_n = 2;
dword selected_image; dword selected_image;
dword default_image; dword default_image;
dword default_icon; dword default_icon;

View File

@ -1,4 +1,3 @@
//Leency 2008-2013
#ifdef LANG_RUS #ifdef LANG_RUS
?define T_DEVICES "“áâனá⢠" ?define T_DEVICES "“áâனá⢠"

View File

@ -1,5 +1,3 @@
//Leency 2008-2013
//pay attension: >200 this is only file actions, not supported by folders //pay attension: >200 this is only file actions, not supported by folders
#ifdef LANG_RUS #ifdef LANG_RUS
char *file_captions[] = { char *file_captions[] = {

View File

@ -38,7 +38,7 @@ void DisplayOperationForm()
DefineAndDrawWindow(Form.left+Form.width-200,Form.top+90,WIN_DIALOG_W,skin_height+WIN_DIALOG_H,0x34,system.color.work,title,0); DefineAndDrawWindow(Form.left+Form.width-200,Form.top+90,WIN_DIALOG_W,skin_height+WIN_DIALOG_H,0x34,system.color.work,title,0);
GetProcessInfo(#Dialog_Form, SelfInfo); GetProcessInfo(#Dialog_Form, SelfInfo);
WriteText(45, 11, 0x90, system.color.work_text, message); WriteText(45, 11, 0x90, system.color.work_text, message);
DrawFlatButton(Dialog_Form.cwidth - 105, copy_bar.top-2 , T_CANCEL_PASTE, T_ABORT_WINDOW_BUTTON); DrawStandartCaptButton(Dialog_Form.cwidth - 105, copy_bar.top-2 , T_CANCEL_PASTE, T_ABORT_WINDOW_BUTTON);
} }
} }

View File

@ -143,8 +143,8 @@ void ShowConfirmQuestionPopin()
DrawPopup(15,80,250,90,1,system.color.work, system.color.work_graph); DrawPopup(15,80,250,90,1,system.color.work, system.color.work_graph);
WriteText(35, 102, 0x90, 0x000000, QUEST_1); WriteText(35, 102, 0x90, 0x000000, QUEST_1);
WriteText(65, 117, 0x90, 0x000000, QUEST_2); WriteText(65, 117, 0x90, 0x000000, QUEST_2);
DrawFlatButton(62,138,301,T_YES); DrawStandartCaptButton(62,138,301,T_YES);
DrawFlatButton(155,138,302,T_NO); DrawStandartCaptButton(155,138,302,T_NO);
} }
void GetSizeDir(dword way) void GetSizeDir(dword way)
@ -314,8 +314,8 @@ void DrawPropertiesWindow()
DefineAndDrawWindow(Form.left + 150,150,315,360+skin_height,0x34,system.color.work,WINDOW_TITLE_PROPERTIES,0); DefineAndDrawWindow(Form.left + 150,150,315,360+skin_height,0x34,system.color.work,WINDOW_TITLE_PROPERTIES,0);
GetProcessInfo(#settings_form, SelfInfo); GetProcessInfo(#settings_form, SelfInfo);
DrawFlatButton(settings_form.cwidth - 96, settings_form.cheight-34, 10, BTN_CLOSE); DrawStandartCaptButton(settings_form.cwidth - 96, settings_form.cheight-34, 10, BTN_CLOSE);
DrawFlatButton(settings_form.cwidth -208, settings_form.cheight-34, 11, BTN_APPLY); DrawStandartCaptButton(settings_form.cwidth -208, settings_form.cheight-34, 11, BTN_APPLY);
WriteText(10, 78, 0x90, system.color.work_text, PR_T_DEST); WriteText(10, 78, 0x90, system.color.work_text, PR_T_DEST);
edit_box_draw stdcall (#path_to_file_ed); edit_box_draw stdcall (#path_to_file_ed);

View File

@ -31,8 +31,6 @@
?define START_PATH " Start path: " ?define START_PATH " Start path: "
#endif #endif
int WinX, WinY, WinW, WinH;
char path_start[4096]; char path_start[4096];
edit_box path_start_ed = {290,50,57,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,4098, edit_box path_start_ed = {290,50,57,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,4098,
#path_start,0, 100000000000010b,0,0}; #path_start,0, 100000000000010b,0,0};
@ -164,10 +162,10 @@ void LoadIniSettings()
two_panels.checked = ini.GetInt("TwoPanels", false); two_panels.checked = ini.GetInt("TwoPanels", false);
kfont.size.pt = ini.GetInt("FontSize", 13); kfont.size.pt = ini.GetInt("FontSize", 13);
files.item_h = ini.GetInt("LineHeight", 19); files.item_h = ini.GetInt("LineHeight", 19);
WinX = ini.GetInt("WinX", 200); Form.left = ini.GetInt("WinX", 200);
WinY = ini.GetInt("WinY", 50); Form.top = ini.GetInt("WinY", 50);
WinW = ini.GetInt("WinW", 550); Form.width = ini.GetInt("WinW", 550);
WinH = ini.GetInt("WinH", 506); Form.height = ini.GetInt("WinH", 506);
ini.GetString("DefaultPath", #path, 4096, "/rd/1"); ini.GetString("DefaultPath", #path, 4096, "/rd/1");
ini.GetString("DefaultPath", #path_start, 4096, "/rd/1"); ini.GetString("DefaultPath", #path_start, 4096, "/rd/1");
path_start_ed.size = path_start_ed.pos = strlen(#path_start); path_start_ed.size = path_start_ed.pos = strlen(#path_start);

View File

@ -1,4 +1,3 @@
//Áûñòðàÿ ñîðòèðîâêà. Leency 2008.
void Sort_by_Size(int a, b) // для первого вызова: a = 0, b = <элементов в массиве> - 1 void Sort_by_Size(int a, b) // для первого вызова: a = 0, b = <элементов в массиве> - 1
{ {

View File

@ -1,5 +1,5 @@
#define TITLE "Eolite File Manager v3.9" #define TITLE "Eolite File Manager v3.91"
#define ABOUT_TITLE "EOLITE 3.9" #define ABOUT_TITLE "EOLITE 3.91"
#ifdef LANG_RUS #ifdef LANG_RUS
?define T_FILE "” ©«" ?define T_FILE "” ©«"