📄 listview.txt
字号:
;;;427 }
;;;428 WM_CheckScrollBounds(&pObj->ScrollStateH);
000026 f1040074 ADD r0,r4,#0x74
00002a 4607 MOV r7,r0
00002c f7fffffe BL WM_CheckScrollBounds
000030 463a MOV r2,r7
000032 4631 MOV r1,r6
;;;429 WIDGET__SetScrollState(hObj, &pObj->ScrollStateV, &pObj->ScrollStateH);
000034 4640 MOV r0,r8
000036 f7fffffe BL WIDGET__SetScrollState
;;;430 return pObj->ScrollStateV.v - PrevScrollStateV;
00003a 6ee0 LDR r0,[r4,#0x6c]
00003c 1b40 SUBS r0,r0,r5
;;;431 }
00003e e8bd81f0 POP {r4-r8,pc}
;;;432
ENDP
AREA ||i._GetNumVisibleRows||, CODE, READONLY, ALIGN=1
_GetNumVisibleRows PROC
;;;130 */
;;;131 static unsigned _GetNumVisibleRows(LISTVIEW_Handle hObj, const LISTVIEW_Obj* pObj) {
000000 b57c PUSH {r2-r6,lr}
000002 460d MOV r5,r1
;;;132 unsigned RowDistY, ySize, r = 1;
000004 2401 MOVS r4,#1
;;;133 GUI_RECT Rect;
;;;134 WM_GetInsideRectExScrollbar(hObj, &Rect);
000006 4669 MOV r1,sp
000008 f7fffffe BL WM_GetInsideRectExScrollbar
;;;135 ySize = Rect.y1 - Rect.y0 + 1 - HEADER_GetHeight(pObj->hHeader);
00000c f9b50028 LDRSH r0,[r5,#0x28]
000010 f7fffffe BL HEADER_GetHeight
000014 f9bd1006 LDRSH r1,[sp,#6]
000018 f9bd2002 LDRSH r2,[sp,#2]
00001c 1a89 SUBS r1,r1,r2
00001e 1a0e SUBS r6,r1,r0
000020 1c76 ADDS r6,r6,#1
;;;136 RowDistY = LISTVIEW__GetRowDistY(pObj);
000022 4628 MOV r0,r5
000024 f7fffffe BL LISTVIEW__GetRowDistY
;;;137 if (RowDistY) {
000028 b118 CBZ r0,|L11.50|
;;;138 r = ySize / RowDistY;
00002a fbb6f0f0 UDIV r0,r6,r0
;;;139 r = (r == 0) ? 1 : r;
00002e b100 CBZ r0,|L11.50|
000030 4604 MOV r4,r0
|L11.50|
;;;140 }
;;;141 return r;
000032 4620 MOV r0,r4
;;;142 }
000034 bd7c POP {r2-r6,pc}
;;;143
ENDP
AREA ||i._LISTVIEW_Callback||, CODE, READONLY, ALIGN=1
_LISTVIEW_Callback PROC
;;;505 */
;;;506 static void _LISTVIEW_Callback (WM_MESSAGE *pMsg) {
000000 e92d4ffe PUSH {r1-r11,lr}
;;;507 LISTVIEW_Handle hObj;
;;;508 LISTVIEW_Obj* pObj;
;;;509 WM_SCROLL_STATE ScrollState;
;;;510 hObj = pMsg->hWin;
000004 f9b06004 LDRSH r6,[r0,#4]
000008 4605 MOV r5,r0 ;506
;;;511 /* Let widget handle the standard messages */
;;;512 if (WIDGET_HandleActive(hObj, pMsg) == 0) {
00000a 4601 MOV r1,r0
00000c 4630 MOV r0,r6
00000e f7fffffe BL WIDGET_HandleActive
000012 2800 CMP r0,#0
000014 d031 BEQ |L12.122|
;;;513 return;
;;;514 }
;;;515 pObj = LISTVIEW_H2P(hObj);
000016 4630 MOV r0,r6
000018 f7fffffe BL GUI_ALLOC_h2p
00001c 4604 MOV r4,r0
;;;516 switch (pMsg->MsgId) {
00001e 6828 LDR r0,[r5,#0]
000020 280e CMP r0,#0xe
000022 d069 BEQ |L12.248|
000024 dc14 BGT |L12.80|
000026 2805 CMP r0,#5
000028 d056 BEQ |L12.216|
00002a 280b CMP r0,#0xb
00002c d077 BEQ |L12.286|
00002e 280c CMP r0,#0xc
|L12.48|
000030 d170 BNE |L12.276|
000032 68aa LDR r2,[r5,#8]
;;;517 case WM_NOTIFY_CLIENTCHANGE:
;;;518 case WM_SIZE:
;;;519 LISTVIEW__UpdateScrollParas(hObj, pObj);
;;;520 return;
;;;521 case WM_NOTIFY_PARENT:
;;;522 switch (pMsg->Data.v) {
;;;523 case WM_NOTIFICATION_CHILD_DELETED:
;;;524 /* make sure we do not send any messages to the header child once it has been deleted */
;;;525 if (pMsg->hWinSrc == pObj->hHeader) {
;;;526 pObj->hHeader = 0;
;;;527 }
;;;528 break;
;;;529 case WM_NOTIFICATION_VALUE_CHANGED:
;;;530 if (pMsg->hWinSrc == WM_GetScrollbarV(hObj)) {
;;;531 WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
;;;532 pObj->ScrollStateV.v = ScrollState.v;
;;;533 LISTVIEW__InvalidateInsideArea(hObj, pObj);
;;;534 _NotifyOwner(hObj, WM_NOTIFICATION_SCROLL_CHANGED);
;;;535 } else if (pMsg->hWinSrc == WM_GetScrollbarH(hObj)) {
;;;536 WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
;;;537 pObj->ScrollStateH.v = ScrollState.v;
;;;538 LISTVIEW__UpdateScrollParas(hObj, pObj);
;;;539 HEADER_SetScrollPos(pObj->hHeader, pObj->ScrollStateH.v);
;;;540 _NotifyOwner(hObj, WM_NOTIFICATION_SCROLL_CHANGED);
;;;541 }
;;;542 break;
;;;543 case WM_NOTIFICATION_SCROLLBAR_ADDED:
;;;544 LISTVIEW__UpdateScrollParas(hObj, pObj);
;;;545 break;
;;;546 }
;;;547 return;
;;;548 case WM_PAINT:
;;;549 _Paint(hObj, pObj, pMsg);
;;;550 return;
;;;551 case WM_TOUCH:
;;;552 _OnTouch(hObj, pObj, pMsg);
000034 4621 MOV r1,r4
000036 2a00 CMP r2,#0
000038 d05b BEQ |L12.242|
00003a 7a10 LDRB r0,[r2,#8]
00003c 2800 CMP r0,#0
00003e d056 BEQ |L12.238|
000040 4630 MOV r0,r6
000042 f7fffffe BL _SetSelFromPos
000046 2401 MOVS r4,#1
000048 4630 MOV r0,r6
00004a f7fffffe BL WM_SetFocus
00004e e051 B |L12.244|
|L12.80|
000050 280f CMP r0,#0xf ;516
000052 d046 BEQ |L12.226|
000054 2825 CMP r0,#0x25 ;516
000056 d03f BEQ |L12.216|
000058 2826 CMP r0,#0x26 ;516
00005a d1e9 BNE |L12.48|
00005c 68a8 LDR r0,[r5,#8] ;522
00005e 2805 CMP r0,#5 ;522
000060 d00d BEQ |L12.126|
000062 2806 CMP r0,#6 ;522
000064 d038 BEQ |L12.216|
000066 2807 CMP r0,#7 ;522
000068 d107 BNE |L12.122|
00006a f9b50006 LDRSH r0,[r5,#6] ;525
00006e f9b41028 LDRSH r1,[r4,#0x28] ;525
000072 4288 CMP r0,r1 ;525
000074 d101 BNE |L12.122|
000076 2000 MOVS r0,#0 ;526
000078 8520 STRH r0,[r4,#0x28] ;526
|L12.122|
;;;553 return; /* Important: message handled ! */
;;;554 case WM_KEY:
;;;555 if (((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt > 0) {
;;;556 int Key;
;;;557 Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
;;;558 if (_AddKey(hObj, Key)) {
;;;559 return;
;;;560 }
;;;561 }
;;;562 break; /* No return here ... WM_DefaultProc needs to be called */
;;;563 case WM_DELETE:
;;;564 _FreeAttached(pObj);
;;;565 break; /* No return here ... WM_DefaultProc needs to be called */
;;;566 }
;;;567 WM_DefaultProc(pMsg);
;;;568 }
00007a e8bd8ffe POP {r1-r11,pc}
|L12.126|
00007e 4630 MOV r0,r6 ;530
000080 f7fffffe BL WM_GetScrollbarV
000084 4601 MOV r1,r0 ;530
000086 f9b50006 LDRSH r0,[r5,#6] ;530
00008a 4281 CMP r1,r0 ;530
00008c d109 BNE |L12.162|
00008e 4669 MOV r1,sp ;531
000090 f7fffffe BL WM_GetScrollState
000094 9801 LDR r0,[sp,#4] ;532
000096 66e0 STR r0,[r4,#0x6c] ;533
000098 4621 MOV r1,r4 ;533
00009a 4630 MOV r0,r6 ;533
00009c f7fffffe BL LISTVIEW__InvalidateInsideArea
0000a0 e015 B |L12.206|
|L12.162|
0000a2 4630 MOV r0,r6 ;535
0000a4 f7fffffe BL WM_GetScrollbarH
0000a8 4601 MOV r1,r0 ;535
0000aa f9b50006 LDRSH r0,[r5,#6] ;535
0000ae 4281 CMP r1,r0 ;535
0000b0 d1e3 BNE |L12.122|
0000b2 4669 MOV r1,sp ;536
0000b4 f7fffffe BL WM_GetScrollState
0000b8 9801 LDR r0,[sp,#4] ;537
0000ba 67a0 STR r0,[r4,#0x78] ;538
0000bc 4621 MOV r1,r4 ;538
0000be 4630 MOV r0,r6 ;538
0000c0 f7fffffe BL LISTVIEW__UpdateScrollParas
0000c4 f9b40028 LDRSH r0,[r4,#0x28] ;539
0000c8 6fa1 LDR r1,[r4,#0x78] ;539
0000ca f7fffffe BL HEADER_SetScrollPos
|L12.206|
0000ce 210a MOVS r1,#0xa ;534
|L12.208|
0000d0 4630 MOV r0,r6 ;534
0000d2 f7fffffe BL _NotifyOwner
0000d6 e7d0 B |L12.122|
|L12.216|
0000d8 4621 MOV r1,r4 ;544
0000da 4630 MOV r0,r6 ;544
0000dc f7fffffe BL LISTVIEW__UpdateScrollParas
0000e0 e7cb B |L12.122|
|L12.226|
0000e2 462a MOV r2,r5 ;549
0000e4 4621 MOV r1,r4 ;549
0000e6 4630 MOV r0,r6 ;549
0000e8 f7fffffe BL _Paint
0000ec e7c5 B |L12.122|
|L12.238|
0000ee 2402 MOVS r4,#2
0000f0 e000 B |L12.244|
|L12.242|
0000f2 2403 MOVS r4,#3
|L12.244|
0000f4 4621 MOV r1,r4
0000f6 e7eb B |L12.208|
|L12.248|
0000f8 68a8 LDR r0,[r5,#8] ;555
0000fa 6841 LDR r1,[r0,#4] ;555
0000fc 2900 CMP r1,#0 ;555
0000fe dd3b BLE |L12.376|
000100 6800 LDR r0,[r0,#0] ;557
000102 2811 CMP r0,#0x11 ;557
000104 d007 BEQ |L12.278|
000106 2813 CMP r0,#0x13 ;557
000108 d136 BNE |L12.376|
00010a 4630 MOV r0,r6 ;557
00010c f7fffffe BL LISTVIEW_IncSel
000110 e7b3 B |L12.122|
000112 e004 B |L12.286|
|L12.276|
000114 e030 B |L12.376|
|L12.278|
000116 4630 MOV r0,r6
000118 f7fffffe BL LISTVIEW_DecSel
00011c e7ad B |L12.122|
|L12.286|
00011e f104002a ADD r0,r4,#0x2a
000122 4683 MOV r11,r0
000124 f7fffffe BL GUI_ARRAY_GetNumItems
000128 4680 MOV r8,r0
00012a f104002e ADD r0,r4,#0x2e
00012e 4682 MOV r10,r0
000130 f7fffffe BL GUI_ARRAY_GetNumItems
000134 4607 MOV r7,r0
000136 2600 MOVS r6,#0
000138 e016 B |L12.360|
|L12.314|
00013a 4631 MOV r1,r6
00013c 4658 MOV r0,r11
00013e f7fffffe BL GUI_ARRAY_GetpItem
000142 4681 MOV r9,r0
000144 2400 MOVS r4,#0
000146 e009 B |L12.348|
|L12.328|
000148 4621 MOV r1,r4
00014a 4648 MOV r0,r9
00014c f7fffffe BL GUI_ARRAY_GetpItem
000150 f9b00000 LDRSH r0,[r0,#0]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -