Subversion Repositories Kolibri OS

Rev

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]