clipview: bugfixes and optimizations

git-svn-id: svn://kolibrios.org@8936 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2021-06-24 21:13:37 +00:00
parent 4cab4d1434
commit 6da764010a

View File

@ -50,7 +50,7 @@ struct LIST {
void main() void main()
{ {
mem_init(); @mem_init();
@SetEventMask(EVM_REDRAW + EVM_BUTTON); @SetEventMask(EVM_REDRAW + EVM_BUTTON);
loop() switch(@WaitEventTimeout(10)) loop() switch(@WaitEventTimeout(10))
{ {
@ -103,7 +103,6 @@ void DrawWindowContent()
list.w = Form.cwidth-GAP-GAP; list.w = Form.cwidth-GAP-GAP;
list.h = Form.cheight-PANEL_BOTTOM_H-LIST_Y-GAP; list.h = Form.cheight-PANEL_BOTTOM_H-LIST_Y-GAP;
list.visible = list.h / LINE_H; list.visible = list.h / LINE_H;
if (list.first > list.count) list.first = list.count - list.visible;
DrawBar(0,0, Form.cwidth, PANEL_TOP_H, sc.work); DrawBar(0,0, Form.cwidth, PANEL_TOP_H, sc.work);
DrawBar(0,Form.cheight-PANEL_BOTTOM_H, Form.cwidth, PANEL_BOTTOM_H, sc.work); DrawBar(0,Form.cheight-PANEL_BOTTOM_H, Form.cwidth, PANEL_BOTTOM_H, sc.work);
@ -162,18 +161,20 @@ void SelectList_DrawLine(dword i)
WriteText(GAP+140, yyy+TEXT_Y, 0x90, 0x000000, data_type[slot_data_type_number]); WriteText(GAP+140, yyy+TEXT_Y, 0x90, 0x000000, data_type[slot_data_type_number]);
WriteText(GAP+list.w - 88, yyy+TEXT_Y, 0x90, 0x006597, "TEXT HEX"); WriteText(GAP+list.w - 88, yyy+TEXT_Y, 0x90, 0x006597, "TEXT HEX");
DefineButton(GAP+list.w - 98, yyy, 50, LINE_H, 100+i+BT_HIDE, NULL); DefineButton(GAP+list.w - 98, yyy, 50, LINE_H, 100+i+BT_HIDE, NULL);
DefineButton(GAP+list.w - 95 + 51, yyy, 40, LINE_H, 300+i+BT_HIDE, NULL); $add edx, 200
$add ebx, 52 << 16 - 10 //BT_HEX
$int 64
ESI = list.w - 345 / 8; ESI = list.w - 345 / 8;
if (cdata.size - cdata.content_offset < ESI) ESI = cdata.size - cdata.content_offset; if (cdata.size - cdata.content_offset < ESI) ESI = cdata.size - cdata.content_offset;
WriteText(GAP+236, yyy+TEXT_Y, 0x30, 0x000000, cdata.content); WriteText(GAP+236, yyy+TEXT_Y, 0x30, 0x000000, cdata.content);
} }
int SaveSlotContents(dword size, off) { int SaveSlotContents() {
if (! CreateFile(size, off, DEFAULT_SAVE_PATH)) { if (! CreateFile(cdata.size, cdata.content, DEFAULT_SAVE_PATH)) {
return true; return true;
} else { } else {
notify("'Can not create /tmp0/1/clipview.tmp\nPreview function is not available.' -E"); notify("'Can not create /tmp0/1/clipview.tmp' -E");
return false; return false;
} }
} }
@ -183,6 +184,8 @@ void ClipViewSelectListDraw()
int i, list_last; int i, list_last;
list.count = Clipboard__GetSlotCount(); list.count = Clipboard__GetSlotCount();
if (list.first >= list.count) list.first = list.count - list.visible;
if (list.first < 0) list.first = 0;
if (list.count > list.visible) list_last = list.visible; else list_last = list.count; if (list.count > list.visible) list_last = list.visible; else list_last = list.count;
@ -201,8 +204,9 @@ void ClipViewSelectListDraw()
WriteText(Form.cwidth-84-GAP+10, list.h + LIST_Y + 14, 0x90, sc.button_text, "< >"); WriteText(Form.cwidth-84-GAP+10, list.h + LIST_Y + 14, 0x90, sc.button_text, "< >");
$add ebx, 28 << 16 $add ebx, 28 << 16
$mov edx, #param; $mov edx, #param;
$mov edi, sc.work_text $mov edi, sc.work
$add ecx, 0x40 << 24 $add ecx, 0x40 << 24
$add ecx, sc.work_text
$int 64 $int 64
} }
} }
@ -249,14 +253,14 @@ void EventOpenAsText(int slot_id) {
slot_data = Clipboard__GetSlotData(slot_id); slot_data = Clipboard__GetSlotData(slot_id);
cdata.size = ESDWORD[slot_data]-12; cdata.size = ESDWORD[slot_data]-12;
cdata.content = slot_data+12; cdata.content = slot_data+12;
if (SaveSlotContents(cdata.size, cdata.content)) RunProgram("/sys/develop/cedit", DEFAULT_SAVE_PATH); if (SaveSlotContents()) RunProgram("/sys/develop/cedit", DEFAULT_SAVE_PATH);
} }
void EventOpenAsHex(int slot_id) { void EventOpenAsHex(int slot_id) {
slot_data = Clipboard__GetSlotData(slot_id); slot_data = Clipboard__GetSlotData(slot_id);
cdata.size = ESDWORD[slot_data]; cdata.size = ESDWORD[slot_data];
cdata.content = slot_data; cdata.content = slot_data;
if (SaveSlotContents(cdata.size, cdata.content)) RunProgram("/sys/develop/heed", DEFAULT_SAVE_PATH); if (SaveSlotContents()) RunProgram("/sys/develop/heed", DEFAULT_SAVE_PATH);
} }
stop: stop: