📄 edit.txt
字号:
00001a 4621 MOV r1,r4
00001c 4638 MOV r0,r7
00001e f7fffffe BL WIDGET_HandleActive
000022 2800 CMP r0,#0
000024 d02e BEQ |L13.132|
;;;455 return;
;;;456 }
;;;457 switch (pMsg->MsgId) {
000026 6820 LDR r0,[r4,#0]
000028 280b CMP r0,#0xb
00002a d014 BEQ |L13.86|
00002c 280c CMP r0,#0xc
00002e d009 BEQ |L13.68|
000030 280e CMP r0,#0xe
000032 d015 BEQ |L13.96|
000034 280f CMP r0,#0xf
000036 d120 BNE |L13.122|
;;;458 case WM_TOUCH:
;;;459 _OnTouch(hObj, pObj, pMsg);
;;;460 break;
;;;461 case WM_PAINT:
;;;462 GUI_DEBUG_LOG("EDIT: _Callback(WM_PAINT)\n");
;;;463 _Paint(pObj, hObj);
000038 4639 MOV r1,r7
00003a 4628 MOV r0,r5
00003c e8bd41f0 POP {r4-r8,lr}
000040 f7ffbffe B.W _Paint
|L13.68|
000044 68a0 LDR r0,[r4,#8]
000046 b1c0 CBZ r0,|L13.122|
000048 7a01 LDRB r1,[r0,#8]
00004a b1b1 CBZ r1,|L13.122|
00004c 6801 LDR r1,[r0,#0]
00004e 4638 MOV r0,r7
000050 f7fffffe BL EDIT_SetCursorAtPixel
000054 e011 B |L13.122|
|L13.86|
000056 f1050028 ADD r0,r5,#0x28
00005a f7fffffe BL GUI_ALLOC_FreePtr
;;;464 return;
;;;465 case WM_DELETE:
;;;466 GUI_DEBUG_LOG("EDIT: _Callback(WM_DELETE)\n");
;;;467 _Delete(pObj);
;;;468 break; /* No return here ... WM_DefaultProc needs to be called */
00005e e00c B |L13.122|
|L13.96|
;;;469 case WM_KEY:
;;;470 if (IsEnabled) {
000060 b15e CBZ r6,|L13.122|
;;;471 if ( ((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
000062 68a0 LDR r0,[r4,#8]
000064 6841 LDR r1,[r0,#4]
000066 2900 CMP r1,#0
000068 dd07 BLE |L13.122|
;;;472 int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
;;;473 switch (Key) {
00006a 6801 LDR r1,[r0,#0]
00006c 2909 CMP r1,#9
00006e d004 BEQ |L13.122|
;;;474 case GUI_KEY_TAB:
;;;475 break; /* Send to parent by not doing anything */
;;;476 default:
;;;477 EDIT_AddKey(hObj, Key);
000070 4638 MOV r0,r7
000072 e8bd41f0 POP {r4-r8,lr}
000076 f7ffbffe B.W EDIT_AddKey
|L13.122|
;;;478 return;
;;;479 }
;;;480 }
;;;481 }
;;;482 break;
;;;483 }
;;;484 WM_DefaultProc(pMsg);
00007a 4620 MOV r0,r4
00007c e8bd41f0 POP {r4-r8,lr}
000080 f7ffbffe B.W WM_DefaultProc
|L13.132|
;;;485 }
000084 e8bd81f0 POP {r4-r8,pc}
;;;486
ENDP
AREA ||i.EDIT__GetCurrentChar||, CODE, READONLY, ALIGN=1
EDIT__GetCurrentChar PROC
;;;384 */
;;;385 U16 EDIT__GetCurrentChar(EDIT_Obj* pObj) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
;;;386 U16 Char = 0;
;;;387 if (pObj->hpText) {
000004 f9b41028 LDRSH r1,[r4,#0x28]
000008 2000 MOVS r0,#0 ;386
00000a 2900 CMP r1,#0
00000c d00b BEQ |L14.38|
00000e 4608 MOV r0,r1
;;;388 const char* pText;
;;;389 pText = (const char*) GUI_ALLOC_h2p(pObj->hpText);
000010 f7fffffe BL GUI_ALLOC_h2p
000014 4605 MOV r5,r0
;;;390 pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000016 6c21 LDR r1,[r4,#0x40]
000018 f7fffffe BL GUI_UC__NumChars2NumBytes
00001c 4428 ADD r0,r0,r5
;;;391 Char = GUI_UC_GetCharCode(pText);
00001e e8bd4070 POP {r4-r6,lr}
000022 f7ffbffe B.W GUI_UC_GetCharCode
|L14.38|
;;;392 }
;;;393 return Char;
;;;394 }
000026 bd70 POP {r4-r6,pc}
;;;395
ENDP
AREA ||i.EDIT__SetCursorPos||, CODE, READONLY, ALIGN=1
EDIT__SetCursorPos PROC
;;;401 */
;;;402 void EDIT__SetCursorPos(EDIT_Obj* pObj, int CursorPos) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
;;;403 if (pObj->hpText) {
000004 f9b00028 LDRSH r0,[r0,#0x28]
000008 460c MOV r4,r1 ;402
00000a 2800 CMP r0,#0
00000c d019 BEQ |L15.66|
;;;404 char* pText;
;;;405 int NumChars, Offset;
;;;406 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
00000e f7fffffe BL GUI_ALLOC_h2p
;;;407 NumChars = GUI__GetNumChars(pText);
000012 f7fffffe BL GUI__GetNumChars
;;;408 Offset = (pObj->EditMode == GUI_EDIT_MODE_INSERT) ? 0 : 1;
000016 f8951048 LDRB r1,[r5,#0x48]
00001a b101 CBZ r1,|L15.30|
00001c 2101 MOVS r1,#1
|L15.30|
;;;409 if (CursorPos < 0) {
00001e 2c00 CMP r4,#0
000020 da00 BGE |L15.36|
;;;410 CursorPos = 0;
000022 2400 MOVS r4,#0
|L15.36|
;;;411 }
;;;412 if (CursorPos > NumChars) {
000024 4284 CMP r4,r0
000026 dd00 BLE |L15.42|
;;;413 CursorPos = NumChars;
000028 4604 MOV r4,r0
|L15.42|
;;;414 }
;;;415 if (CursorPos > (pObj->MaxLen - Offset)) {
00002a f9b5002a LDRSH r0,[r5,#0x2a]
00002e 1a40 SUBS r0,r0,r1
000030 42a0 CMP r0,r4
000032 da00 BGE |L15.54|
;;;416 CursorPos = pObj->MaxLen - Offset;
000034 4604 MOV r4,r0
|L15.54|
;;;417 }
;;;418 if (pObj->CursorPos != CursorPos) {
000036 6c28 LDR r0,[r5,#0x40]
000038 42a0 CMP r0,r4
00003a d000 BEQ |L15.62|
;;;419 pObj->CursorPos = CursorPos;
00003c 642c STR r4,[r5,#0x40]
|L15.62|
;;;420 }
;;;421 pObj->SelSize = 0;
00003e 2000 MOVS r0,#0
;;;422 }
000040 6468 STR r0,[r5,#0x44]
|L15.66|
;;;423 }
000042 bd70 POP {r4-r6,pc}
;;;424
ENDP
AREA ||i._DeleteChar||, CODE, READONLY, ALIGN=1
_DeleteChar PROC
;;;339 */
;;;340 static void _DeleteChar(EDIT_Handle hObj, EDIT_Obj* pObj) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
;;;341 if (pObj->hpText) {
000004 f9b10028 LDRSH r0,[r1,#0x28]
000008 460c MOV r4,r1 ;340
00000a 2800 CMP r0,#0
00000c d019 BEQ |L16.66|
;;;342 unsigned CursorOffset;
;;;343 char* pText;
;;;344 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4606 MOV r6,r0
;;;345 CursorOffset = GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000014 6c21 LDR r1,[r4,#0x40]
000016 f7fffffe BL GUI_UC__NumChars2NumBytes
00001a 4604 MOV r4,r0
;;;346 if (CursorOffset < strlen(pText)) {
00001c 4630 MOV r0,r6
00001e f7fffffe BL strlen
000022 42a0 CMP r0,r4
000024 d90d BLS |L16.66|
;;;347 int NumBytes;
;;;348 pText += CursorOffset;
000026 4434 ADD r4,r4,r6
;;;349 NumBytes = GUI_UC_GetCharSize(pText);
000028 4620 MOV r0,r4
00002a f7fffffe BL GUI_UC_GetCharSize
;;;350 strcpy(pText, pText + NumBytes);
00002e 1821 ADDS r1,r4,r0
000030 4620 MOV r0,r4
000032 f7fffffe BL strcpy
;;;351 WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
000036 4628 MOV r0,r5
000038 e8bd4070 POP {r4-r6,lr}
00003c 2105 MOVS r1,#5
00003e f7ffbffe B.W WM_NotifyParent
|L16.66|
;;;352 }
;;;353 }
;;;354 }
000042 bd70 POP {r4-r6,pc}
;;;355
ENDP
AREA ||i._IncrementBuffer||, CODE, READONLY, ALIGN=1
_IncrementBuffer PROC
;;;266 */
;;;267 static int _IncrementBuffer(EDIT_Obj* pObj, unsigned AddBytes) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
;;;268 WM_HMEM hNew;
;;;269 int NewSize;
;;;270 NewSize = pObj->BufferSize + AddBytes;
000004 8d80 LDRH r0,[r0,#0x2c]
000006 1846 ADDS r6,r0,r1
;;;271 hNew = GUI_ALLOC_Realloc(pObj->hpText, NewSize);
000008 f9b40028 LDRSH r0,[r4,#0x28]
00000c 4631 MOV r1,r6
00000e f7fffffe BL GUI_ALLOC_Realloc
000012 0005 MOVS r5,r0
;;;272 if (hNew) {
000014 d009 BEQ |L17.42|
;;;273 if (!(pObj->hpText)) {
000016 8d20 LDRH r0,[r4,#0x28]
000018 b920 CBNZ r0,|L17.36|
;;;274 char* pText;
;;;275 pText = (char*) GUI_ALLOC_h2p(hNew);
00001a 4628 MOV r0,r5
00001c f7fffffe BL GUI_ALLOC_h2p
;;;276 *pText = 0;
000020 2100 MOVS r1,#0
000022 7001 STRB r1,[r0,#0]
|L17.36|
;;;277 }
;;;278 pObj->BufferSize = NewSize;
000024 85a6 STRH r6,[r4,#0x2c]
;;;279 pObj->hpText = hNew;
000026 8525 STRH r5,[r4,#0x28]
;;;280 return 1;
000028 2001 MOVS r0,#1
|L17.42|
;;;281 }
;;;282 return 0;
;;;283 }
00002a bd70 POP {r4-r6,pc}
;;;284
ENDP
AREA ||i._InsertChar||, CODE, READONLY, ALIGN=1
_InsertChar PROC
;;;361 */
;;;362 static int _InsertChar(EDIT_Handle hObj, EDIT_Obj* pObj, U16 Char) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4605 MOV r5,r0
000006 f9b1002a LDRSH r0,[r1,#0x2a]
00000a 460c MOV r4,r1
00000c 4690 MOV r8,r2
00000e 2800 CMP r0,#0
000010 dd0d BLE |L18.46|
000012 f9b41028 LDRSH r1,[r4,#0x28]
000016 2000 MOVS r0,#0
000018 b121 CBZ r1,|L18.36|
00001a 4608 MOV r0,r1
00001c f7fffffe BL GUI_ALLOC_h2p
000020 f7fffffe BL GUI__GetNumChars
|L18.36|
000024 f9b4102a LDRSH r1,[r4,#0x2a]
000028 1c40 ADDS r0,r0,#1
00002a 4288 CMP r0,r1
00002c dc24 BGT |L18.120|
|L18.46|
;;;363 if (_IsCharsAvailable(pObj, 1)) {
;;;364 int BytesNeeded;
;;;365 BytesNeeded = GUI_UC__CalcSizeOfChar(Char);
00002e 4640 MOV r0,r8
000030 f7fffffe BL GUI_UC__CalcSizeOfChar
000034 4606 MOV r6,r0
;;;366 if (_IsSpaceInBuffer(pObj, BytesNeeded)) {
000036 4601 MOV r1,r0
000038 4620 MOV r0,r4
00003a f7fffffe BL _IsSpaceInBuffer
00003e b1d8 CBZ r0,|L18.120|
;;;367 int CursorOffset;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -