Rev 1382 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1382 | Rev 1390 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.12.2009 IgorA |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 05.02.2010 IgorA |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | 6 | ||
Line 315... | Line 315... | ||
315 | 315 | ||
316 | align 4 |
316 | align 4 |
317 | tl_mouse: ;ðåàêöèÿ íà ìûøü |
317 | tl_mouse: ;ðåàêöèÿ íà ìûøü |
318 | push ebp |
318 | push ebp |
319 | mov ebp,esp |
319 | mov ebp,esp |
320 | push eax ebx ecx edx edi esi |
320 | pushad |
Line 321... | Line 321... | ||
321 | mov edi,dword[ebp+8] |
321 | mov edi,dword[ebp+8] |
322 | - | ||
323 | mov eax,37 |
- | |
324 | mov ebx,2 |
- | |
325 | int 0x40 |
- | |
326 | - | ||
327 | bt eax,0 ;left mouse button press |
- | |
328 | jae .no_draw |
- | |
329 | 322 | ||
330 | mov eax,37 |
323 | mov eax,37 |
Line 331... | Line 324... | ||
331 | mov ebx,1 |
324 | mov ebx,1 |
332 | int 0x40 |
325 | int 0x40 |
333 | 326 | ||
334 | mov ebx,tl_box_left |
327 | mov ebx,tl_box_left |
Line 335... | Line 328... | ||
335 | shl ebx,16 |
328 | shl ebx,16 |
336 | cmp eax,ebx ;ëåâàÿ ãðàíèöà îêíà |
329 | cmp eax,ebx ;ëåâàÿ ãðàíèöà îêíà |
337 | jl .no_in_wnd |
330 | jl .test_scroll |
338 | 331 | ||
339 | mov ebx,tl_box_left |
332 | mov ebx,tl_box_left |
Line 340... | Line 333... | ||
340 | add ebx,tl_box_width |
333 | add ebx,tl_box_width |
341 | shl ebx,16 |
334 | shl ebx,16 |
342 | cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
335 | cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
343 | jg .test_scroll ;.no_in_wnd |
336 | jg .test_scroll |
Line 344... | Line 337... | ||
344 | 337 | ||
345 | mov ebx,tl_box_top |
338 | mov ebx,tl_box_top |
346 | add ebx,tl_box_height |
339 | add ebx,tl_box_height |
- | 340 | cmp ax,bx ;íèæíÿÿ ãðàíèöà îêíà |
|
- | 341 | jg .test_scroll |
|
- | 342 | ||
- | 343 | sub ebx,tl_box_height |
|
- | 344 | add bx,tl_capt_cy |
|
- | 345 | cmp ax,bx ;âåðõíÿÿ ãðàíèöà îêíà + âûñîòà ïîäïèñè |
|
- | 346 | jl .test_scroll |
|
- | 347 | ||
- | 348 | push eax ebx |
|
347 | cmp ax,bx ;íèæíÿÿ ãðàíèöà îêíà |
349 | mov eax,37 |
- | 350 | mov ebx,2 |
|
Line 348... | Line 351... | ||
348 | jg .no_in_wnd |
351 | int 0x40 |
349 | 352 | ||
Line 350... | Line 353... | ||
350 | sub ebx,tl_box_height |
353 | bt eax,0 ;left mouse button press |
Line 445... | Line 448... | ||
445 | @@: |
448 | @@: |
446 | cmp dword[edx+46],0 ;+46 .delta2 |
449 | cmp dword[edx+46],0 ;+46 .delta2 |
447 | jne .no_draw ;ïîïàëè íà ñêðîëëèíã - íå ñíèìàåì ôîêóñ ñ TreeList |
450 | jne .no_draw ;ïîïàëè íà ñêðîëëèíã - íå ñíèìàåì ôîêóñ ñ TreeList |
448 | ;------------------------------------------------------------------------------- |
451 | ;------------------------------------------------------------------------------- |
449 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
452 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
- | 453 | mov eax,37 ;ïðîâåðÿåì íàæàòîñòü ëþáûõ êíîïîê |
|
- | 454 | mov ebx,2 |
|
- | 455 | int 0x40 |
|
- | 456 | cmp eax,0 ;íè÷å íå íàæàëè eax=0 |
|
- | 457 | je .no_draw |
|
- | 458 | ||
450 | mov ebx,tl_el_focus |
459 | mov ebx,tl_el_focus |
451 | cmp dword[ebx],edi |
460 | cmp dword[ebx],edi |
452 | jne .no_draw ;ýëåìåíò íå â ôîêóñå |
461 | jne .no_draw ;ýëåìåíò íå â ôîêóñå |
453 | mov dword[ebx],0 ;reset focus |
462 | mov dword[ebx],0 ;reset focus |
454 | mov esi,tl_box_top |
463 | mov esi,tl_box_top |
455 | add esi,tl_box_height ;esi = coord bottom border |
464 | add esi,tl_box_height ;esi = coord bottom border |
456 | call tl_draw_cursor ;ðèñóåì êóðñîð ñ ïîòåðÿíûì ôîêóñîì |
465 | call tl_draw_cursor ;ðèñóåì êóðñîð ñ ïîòåðÿíûì ôîêóñîì |
457 | .no_draw: |
466 | .no_draw: |
Line 458... | Line 467... | ||
458 | 467 | ||
459 | pop esi edi edx ecx ebx eax |
468 | popad |
460 | pop ebp |
469 | pop ebp |
Line 461... | Line 470... | ||
461 | ret 4 |
470 | ret 4 |
462 | 471 | ||
Line 651... | Line 660... | ||
651 | inc eax |
660 | inc eax |
652 | jmp @b |
661 | jmp @b |
653 | @@: |
662 | @@: |
Line 654... | Line 663... | ||
654 | 663 | ||
- | 664 | call tl_draw_cursor |
|
- | 665 | ||
- | 666 | mov edi,tl_p_scrol ;ðèñóåì äî÷åðíèé ñêðîëëèíã |
|
- | 667 | cmp edi,0 ;äëÿ òîãî ÷òî-áû åãî íå ïðèøëîñü ðèñîâàòü â ïîëüçîâàòåëüñêîé ïðîãðàììå |
|
- | 668 | je .end_draw ;åñëè íåò ñêðîëëèíãà âûõîäèì |
|
- | 669 | push dword edi |
|
- | 670 | call scroll_bar_vertical.draw |
|
655 | call tl_draw_cursor |
671 | |
656 | .end_draw: |
672 | .end_draw: |
657 | pop esi edi edx ecx ebx eax |
673 | pop esi edi edx ecx ebx eax |
658 | pop ebp |
674 | pop ebp |
Line 2328... | Line 2344... | ||
2328 | ; push dword esi |
2344 | ; push dword esi |
2329 | ; call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
2345 | ; call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
2330 | ; pop ebx |
2346 | ; pop ebx |
2331 | ; add esi,ebx |
2347 | ; add esi,ebx |
2332 | .beg_cycle: |
2348 | .beg_cycle: |
2333 | cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
2349 | cmp dword[esi],'tree' |
2334 | jne .no_tree |
2350 | jne .no_tree |
2335 | xor ebx,ebx |
2351 | xor ebx,ebx |
2336 | mov bx,word[esi+4] |
2352 | mov bx,word[esi+4] |
2337 | add bx,8 |
2353 | add bx,8 |
2338 | imul ebx,dword[esi+6] |
2354 | imul ebx,dword[esi+6] |
2339 | add ebx,tl_save_load_heder_size |
2355 | add ebx,tl_save_load_heder_size |
2340 | add esi,ebx |
2356 | add esi,ebx |
2341 | loop .beg_cycle |
2357 | loop .beg_cycle |
2342 | @@: |
2358 | @@: |
Line 2343... | Line 2359... | ||
2343 | 2359 | ||
2344 | cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
2360 | cmp dword[esi],'tree' |
2345 | jne .no_tree |
2361 | jne .no_tree |
2346 | bt word[ebp+18],1 ;load in add mode |
2362 | bt word[ebp+18],1 ;load in add mode |
2347 | jc @f |
2363 | jc @f |
2348 | push dword edi |
2364 | push dword edi |
Line 2408... | Line 2424... | ||
2408 | mov ebp,esp |
2424 | mov ebp,esp |
2409 | push ebx edi esi |
2425 | push ebx edi esi |
2410 | mov esi,dword[ebp+ 8] |
2426 | mov esi,dword[ebp+ 8] |
2411 | mov edi,dword[ebp+12] |
2427 | mov edi,dword[ebp+12] |
2412 | @@: |
2428 | @@: |
2413 | cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
2429 | cmp dword[esi],'tree' |
2414 | jne @f |
2430 | jne @f |
2415 | xor ebx,ebx |
2431 | xor ebx,ebx |
2416 | mov bx,word[esi+4] |
2432 | mov bx,word[esi+4] |
2417 | add bx,8 ;ðàçìåð äîïîëíèòåëüíîé èíôîðìàöèè îá óçëå (èíäåêñ çàïèñè; èíäåêñ èêîíêè, óðîâåíü, ...) |
2433 | add bx,8 ;ðàçìåð äîïîëíèòåëüíîé èíôîðìàöèè îá óçëå (èíäåêñ çàïèñè; èíäåêñ èêîíêè, óðîâåíü, ...) |
2418 | imul ebx,dword[esi+6] |
2434 | imul ebx,dword[esi+6] |