📄 menu.txt
字号:
;;;727 }
;;;728 _DeselectItem(hObj, pObj);
;;;729 _ForwardMouseOverMsg(hObj, pObj, x, y);
;;;730 }
;;;731 return 1; /* Coordinates are not in widget, we need to forward PID message to owner */
;;;732 }
00011e b006 ADD sp,sp,#0x18
000120 e8bd81f0 POP {r4-r8,pc}
|L21.292|
000124 2d01 CMP r5,#1 ;720
000126 d10a BNE |L21.318|
000128 f89d0014 LDRB r0,[sp,#0x14] ;720
00012c b938 CBNZ r0,|L21.318|
00012e 4621 MOV r1,r4 ;725
000130 4640 MOV r0,r8 ;725
000132 f7fffffe BL _DeactivateMenu
000136 4621 MOV r1,r4 ;726
000138 4640 MOV r0,r8 ;726
00013a f7fffffe BL _ClosePopup
|L21.318|
00013e 4621 MOV r1,r4 ;728
000140 4640 MOV r0,r8 ;728
000142 f7fffffe BL _DeselectItem
000146 2001 MOVS r0,#1 ;731
000148 e7e9 B |L21.286|
;;;733
ENDP
AREA ||i._HasEffect||, CODE, READONLY, ALIGN=1
_HasEffect PROC
;;;197 */
;;;198 static int _HasEffect(MENU_Handle hObj, MENU_Obj* pObj) {
000000 b510 PUSH {r4,lr}
;;;199 if (!(pObj->Flags & MENU_SF_POPUP)) {
000002 f8b1205e LDRH r2,[r1,#0x5e]
000006 0612 LSLS r2,r2,#24
000008 d404 BMI |L22.20|
;;;200 if (_IsTopLevelMenu(hObj, pObj)) {
00000a f7fffffe BL _IsTopLevelMenu
00000e b108 CBZ r0,|L22.20|
;;;201 return 0;
000010 2000 MOVS r0,#0
;;;202 }
;;;203 }
;;;204 return 1;
;;;205 }
000012 bd10 POP {r4,pc}
|L22.20|
000014 2001 MOVS r0,#1 ;204
000016 bd10 POP {r4,pc}
;;;206
ENDP
AREA ||i._IsTopLevelMenu||, CODE, READONLY, ALIGN=1
_IsTopLevelMenu PROC
;;;186 */
;;;187 static char _IsTopLevelMenu(MENU_Handle hObj, const MENU_Obj* pObj) {
000000 b510 PUSH {r4,lr}
;;;188 if (MENU__SendMenuMessage(hObj, pObj->hOwner, MENU_IS_MENU, 0) == 0) {
000002 f9b1105c LDRSH r1,[r1,#0x5c]
000006 2300 MOVS r3,#0
000008 2205 MOVS r2,#5
00000a f7fffffe BL MENU__SendMenuMessage
00000e b908 CBNZ r0,|L23.20|
;;;189 return 1;
000010 2001 MOVS r0,#1
;;;190 }
;;;191 return 0;
;;;192 }
000012 bd10 POP {r4,pc}
|L23.20|
000014 2000 MOVS r0,#0 ;191
000016 bd10 POP {r4,pc}
;;;193
ENDP
AREA ||i._MENU_Callback||, CODE, READONLY, ALIGN=1
_MENU_Callback PROC
;;;934 */
;;;935 static void _MENU_Callback(WM_MESSAGE* pMsg) {
000000 e92d43f8 PUSH {r3-r9,lr}
000004 4604 MOV r4,r0
;;;936 MENU_Handle hObj;
;;;937 MENU_Obj* pObj;
;;;938 hObj = pMsg->hWin;
;;;939 if (pMsg->MsgId != WM_PID_STATE_CHANGED) {
000006 6821 LDR r1,[r4,#0]
000008 f9b08004 LDRSH r8,[r0,#4] ;938
00000c 2911 CMP r1,#0x11
00000e d005 BEQ |L24.28|
;;;940 /* Let widget handle the standard messages */
;;;941 if (WIDGET_HandleActive(hObj, pMsg) == 0) {
000010 4621 MOV r1,r4
000012 4640 MOV r0,r8
000014 f7fffffe BL WIDGET_HandleActive
000018 2800 CMP r0,#0
00001a d05a BEQ |L24.210|
|L24.28|
;;;942 return;
;;;943 }
;;;944 }
;;;945 pObj = (MENU_Obj*) GUI_ALLOC_h2p(hObj);
00001c 4640 MOV r0,r8
00001e f7fffffe BL GUI_ALLOC_h2p
;;;946 switch (pMsg->MsgId) {
000022 6821 LDR r1,[r4,#0]
000024 4605 MOV r5,r0 ;945
000026 290b CMP r1,#0xb
000028 d04a BEQ |L24.192|
00002a 290c CMP r1,#0xc
00002c d00a BEQ |L24.68|
00002e 290f CMP r1,#0xf
000030 d041 BEQ |L24.182|
000032 292c CMP r1,#0x2c
000034 d148 BNE |L24.200|
;;;947 case WM_MENU:
;;;948 _OnMenu(hObj, pObj, pMsg);
000036 4622 MOV r2,r4
000038 4629 MOV r1,r5
00003a 4640 MOV r0,r8
00003c e8bd43f8 POP {r3-r9,lr}
000040 f7ffbffe B.W _OnMenu
|L24.68|
000044 68a1 LDR r1,[r4,#8]
000046 b119 CBZ r1,|L24.80|
000048 7a0b LDRB r3,[r1,#8]
00004a 9300 STR r3,[sp,#0]
00004c c90c LDM r1!,{r2,r3}
00004e e003 B |L24.88|
|L24.80|
000050 f04f32ff MOV r2,#0xffffffff
000054 4613 MOV r3,r2
000056 9200 STR r2,[sp,#0]
|L24.88|
000058 4629 MOV r1,r5
00005a 4640 MOV r0,r8
00005c f7fffffe BL _HandlePID
;;;949 return; /* Message handled, do not call WM_DefaultProc() here. */
;;;950 case WM_TOUCH:
;;;951 if (_OnTouch(hObj, pObj, pMsg)) {
000060 b340 CBZ r0,|L24.180|
000062 4629 MOV r1,r5
000064 4640 MOV r0,r8
000066 f7fffffe BL _IsTopLevelMenu
00006a bb18 CBNZ r0,|L24.180|
00006c f9b5005c LDRSH r0,[r5,#0x5c]
000070 b910 CBNZ r0,|L24.120|
000072 4640 MOV r0,r8
000074 f7fffffe BL WM_GetParent
|L24.120|
000078 0006 MOVS r6,r0
00007a d025 BEQ |L24.200|
00007c 68a5 LDR r5,[r4,#8]
00007e b1ad CBZ r5,|L24.172|
000080 4640 MOV r0,r8
000082 f7fffffe BL WM_GetWindowOrgX
000086 4607 MOV r7,r0
000088 4630 MOV r0,r6
00008a f7fffffe BL WM_GetWindowOrgX
00008e 6829 LDR r1,[r5,#0]
000090 1a38 SUBS r0,r7,r0
000092 4408 ADD r0,r0,r1
000094 6028 STR r0,[r5,#0]
000096 4640 MOV r0,r8
000098 f7fffffe BL WM_GetWindowOrgY
00009c 4607 MOV r7,r0
00009e 4630 MOV r0,r6
0000a0 f7fffffe BL WM_GetWindowOrgY
0000a4 6869 LDR r1,[r5,#4]
0000a6 1a38 SUBS r0,r7,r0
0000a8 4408 ADD r0,r0,r1
0000aa 6068 STR r0,[r5,#4]
|L24.172|
0000ac 4621 MOV r1,r4
0000ae 4630 MOV r0,r6
0000b0 f7fffffe BL WM__SendMessage
|L24.180|
0000b4 e008 B |L24.200|
|L24.182|
;;;952 _ForwardPIDMsgToOwner(hObj, pObj, pMsg);
;;;953 }
;;;954 break;
;;;955 #if (GUI_SUPPORT_MOUSE)
;;;956 case WM_MOUSEOVER:
;;;957 if (_OnMouseOver(hObj, pObj, pMsg)) {
;;;958 _ForwardPIDMsgToOwner(hObj, pObj, pMsg);
;;;959 }
;;;960 break;
;;;961 #endif
;;;962 case WM_PAINT:
;;;963 _OnPaint(hObj, pObj);
0000b6 4629 MOV r1,r5
0000b8 4640 MOV r0,r8
0000ba f7fffffe BL _OnPaint
;;;964 break;
0000be e003 B |L24.200|
|L24.192|
;;;965 case WM_DELETE:
;;;966 GUI_ARRAY_Delete(&pObj->ItemArray);
0000c0 f1050058 ADD r0,r5,#0x58
0000c4 f7fffffe BL GUI_ARRAY_Delete
|L24.200|
;;;967 break; /* No return here ... WM_DefaultProc needs to be called */
;;;968 }
;;;969 WM_DefaultProc(pMsg);
0000c8 4620 MOV r0,r4
0000ca e8bd43f8 POP {r3-r9,lr}
0000ce f7ffbffe B.W WM_DefaultProc
|L24.210|
;;;970 }
0000d2 e8bd83f8 POP {r3-r9,pc}
;;;971
ENDP
AREA ||i._OnMenu||, CODE, READONLY, ALIGN=1
_OnMenu PROC
;;;763 */
;;;764 static void _OnMenu(MENU_Handle hObj, MENU_Obj* pObj, WM_MESSAGE* pMsg) {
000000 b570 PUSH {r4-r6,lr}
000002 4606 MOV r6,r0
;;;765 const MENU_MSG_DATA* pData = (const MENU_MSG_DATA*)pMsg->Data.p;
;;;766 if (pData) {
000004 6890 LDR r0,[r2,#8]
000006 460c MOV r4,r1 ;764
000008 4615 MOV r5,r2 ;764
00000a 2800 CMP r0,#0
00000c d03e BEQ |L25.140|
;;;767 switch (pData->MsgType) {
00000e 8800 LDRH r0,[r0,#0]
000010 2806 CMP r0,#6
000012 d23b BCS |L25.140|
000014 e8dff000 TBB [pc,r0]
000018 030f0f1d DCB 0x03,0x0f,0x0f,0x1d
00001c 3238 DCB 0x32,0x38
;;;768 case MENU_ON_ITEMSELECT:
;;;769 _DeactivateMenu(hObj, pObj);
00001e 4621 MOV r1,r4
000020 4630 MOV r0,r6
000022 f7fffffe BL _DeactivateMenu
;;;770 _DeselectItem(hObj, pObj);
000026 4621 MOV r1,r4
000028 4630 MOV r0,r6
00002a f7fffffe BL _DeselectItem
;;;771 _ClosePopup(hObj, pObj);
00002e 4621 MOV r1,r4
000030 4630 MOV r0,r6
000032 f7fffffe BL _ClosePopup
;;;772 /* No break here. We need to forward message to owner. */
;;;773 case MENU_ON_INITMENU:
;;;774 case MENU_ON_INITSUBMENU:
;;;775 /* Forward message to owner. */
;;;776 {
;;;777 WM_HWIN hOwner;
;;;778 hOwner = pObj->hOwner ? pObj->hOwner : WM_GetParent(hObj);
000036 f9b4005c LDRSH r0,[r4,#0x5c]
00003a b910 CBNZ r0,|L25.66|
00003c 4630 MOV r0,r6
00003e f7fffffe BL WM_GetParent
|L25.66|
;;;779 if (hOwner) {
000042 2800 CMP r0,#0
000044 d022 BEQ |L25.140|
;;;780 pMsg->hWinSrc = hObj;
000046 80ee STRH r6,[r5,#6]
;;;781 WM__SendMessage(hOwner, pMsg);
000048 4629 MOV r1,r5
00004a e8bd4070 POP {r4-r6,lr}
00004e f7ffbffe B.W WM__SendMessage
;;;782 }
;;;783 }
;;;784 break;
;;;785 case MENU_ON_OPEN:
;;;786 pObj->Sel = -1;
000052 f04f30ff MOV r0,#0xffffffff
000056 345c ADDS r4,r4,#0x5c
;;;787 pObj->IsSubmenuActive = 0;
000058 6120 STR r0,[r4,#0x10]
00005a 2000 MOVS r0,#0
00005c 7120 STRB r0,[r4,#4]
;;;788 pObj->Flags |= MENU_SF_ACTIVE | MENU_SF_OPEN_ON_POINTEROVER;
00005e 8860 LDRH r0,[r4,#2]
000060 f0400042 ORR r0,r0,#0x42
000064 8060 STRH r0,[r4,#2]
000066 3c5c SUBS r4,r4,#0x5c
;;;789 _SetCapture(hObj, pObj);
000068 4621 MOV r1,r4
00006a 4630 MOV r0,r6
00006c f7fffffe BL _SetCapture
;;;790 MENU__ResizeMenu(hObj, pObj);
000070 4621 MOV r1,r4
000072 4630 MOV r0,r6
000074 e8bd4070 POP {r4-r6,lr}
000078 f7ffbffe B.W MENU__ResizeMenu
;;;791 break;
;;;792 case MENU_ON_CLOSE:
;;;793 _CloseSubmenu(hObj, pObj);
00007c 4621 MOV r1,r4
00007e 4630 MOV r0,r6
000080 e8bd4070 POP {r4-r6,lr}
000084 f7ffbffe B.W _CloseSubmenu
;;;794 break;
;;;795 case MENU_IS_MENU:
;;;796 pMsg->Data.v = 1;
000088 2001 MOVS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -