1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-09-28 11:17:46 +00:00

Main window improvements.

- Place cursor inside the help window when it's first invoked (allows for quick peek and ESC to close the help window).
- Allow ESC to close the dialog (named "Which?"), used to clarify the help context.
- Allow CTRL+UP or DOWN to scroll the window by one line at a time, without moving the cursor.

- Fix quick link feature (F2) to recognize FUNCTION names ending with single or multiple sigils.
- Fix external procedures being considered local and placed in front of program name.
This commit is contained in:
FellippeHeitor 2016-01-04 21:42:02 -02:00
parent debc1e9792
commit ac1fc6c794

View file

@ -680,6 +680,8 @@ DO
ncthisline$ = UCASE$(thisline$) ncthisline$ = UCASE$(thisline$)
IF LEFT$(ncthisline$, 4) = "SUB " THEN isSF = 1 IF LEFT$(ncthisline$, 4) = "SUB " THEN isSF = 1
IF LEFT$(ncthisline$, 9) = "FUNCTION " THEN isSF = 2 IF LEFT$(ncthisline$, 9) = "FUNCTION " THEN isSF = 2
IF LEFT$(ncthisline$, 7) = "END SUB" and currSF_CHECK < idecy THEN EXIT FOR
IF LEFT$(ncthisline$, 12) = "END FUNCTION" and currSF_CHECK < idecy THEN EXIT FOR
IF isSF THEN IF isSF THEN
IF RIGHT$(ncthisline$, 7) = " STATIC" THEN IF RIGHT$(ncthisline$, 7) = " STATIC" THEN
thisline$ = RTRIM$(LEFT$(thisline$, LEN(thisline$) - 7)) thisline$ = RTRIM$(LEFT$(thisline$, LEN(thisline$) - 7))
@ -698,19 +700,40 @@ DO
sfname$ = thisline$ sfname$ = thisline$
END IF END IF
'But what if we're past the end of this module's SUBs and FUNCTIONs, 'It could be that SUB or FUNCTION is inside a DECLARE LIBRARY.
'and all that's left is a bunch of comments or $INCLUDES? 'In such case, it must be ignored:
'We'll also check for that: InsideDECLARE = 0
for endSF_CHECK = idecy to iden for declib_CHECK = currSF_CHECK to 1 step -1
thisline$ = idegetline(endSF_CHECK) thisline$ = idegetline(declib_CHECK)
thisline$ = LTRIM$(RTRIM$(thisline$)) thisline$ = LTRIM$(RTRIM$(thisline$))
endedSF = 0
ncthisline$ = UCASE$(thisline$) ncthisline$ = UCASE$(thisline$)
IF LEFT$(ncthisline$, 7) = "END SUB" THEN endedSF = 1: EXIT FOR IF LEFT$(ncthisline$, 8) = "DECLARE " and INSTR(ncthisline$, " LIBRARY") > 0 THEN InsideDECLARE = -1: EXIT FOR
IF LEFT$(ncthisline$, 12) = "END FUNCTION" THEN endedSF = 2: EXIT FOR IF LEFT$(ncthisline$, 11) = "END DECLARE" THEN EXIT FOR
next next
if endedSF = 0 then sfname$ = ""
EXIT FOR if InsideDECLARE = -1 then
sfname$ = ""
else
'Ok, we're not inside a DECLARE LIBRARY.
'But what if we're past the end of this module's SUBs and FUNCTIONs,
'and all that's left is a bunch of comments or $INCLUDES?
'We'll also check for that:
endedSF = 0
for endSF_CHECK = idecy to iden
thisline$ = idegetline(endSF_CHECK)
thisline$ = LTRIM$(RTRIM$(thisline$))
ncthisline$ = UCASE$(thisline$)
IF LEFT$(ncthisline$, 7) = "END SUB" THEN endedSF = 1: EXIT FOR
IF LEFT$(ncthisline$, 12) = "END FUNCTION" THEN endedSF = 2: EXIT FOR
IF LEFT$(ncthisline$, 4) = "SUB " AND endSF_CHECK = idecy THEN endedSF = 1: EXIT FOR
IF LEFT$(ncthisline$, 9) = "FUNCTION " AND endSF_CHECK = idecy THEN endedSF = 2: EXIT FOR
IF LEFT$(ncthisline$, 4) = "SUB " AND InsideDECLARE = 0 THEN EXIT FOR
IF LEFT$(ncthisline$, 9) = "FUNCTION " AND InsideDECLARE = 0 THEN EXIT FOR
IF LEFT$(ncthisline$, 8) = "DECLARE " and INSTR(ncthisline$, " LIBRARY") > 0 THEN InsideDECLARE = -1
IF LEFT$(ncthisline$, 11) = "END DECLARE" THEN InsideDECLARE = 0
next
if endedSF = 0 then sfname$ = "" else exit for
end if
END IF END IF
NEXT NEXT
@ -2004,6 +2027,7 @@ DO
IF lnks > 1 THEN IF lnks > 1 THEN
'clarify context 'clarify context
lnk$ = idef1box$(lnks$, lnks) lnk$ = idef1box$(lnks$, lnks)
if lnk$ = "C" then goto ideloop
END IF END IF
@ -2058,12 +2082,12 @@ DO
WikiParse a$ WikiParse a$
idehelp = 1 idehelp = 1
skipdisplay = 0 skipdisplay = 0
IdeSystem = 1 '*** IdeSystem = 3 'Standard qb45 behaviour. Allows for quick peek at help then ESC.
retval = 1: GOTO redraweverything2 retval = 1: GOTO redraweverything2
END IF END IF
WikiParse a$ WikiParse a$
IdeSystem = 1 '*** IdeSystem = 3 'Standard qb45 behaviour. Allows for quick peek at help then ESC.
GOTO specialchar GOTO specialchar
END IF 'lnks END IF 'lnks
@ -2598,17 +2622,29 @@ DO
END IF END IF
IF KB = KEY_UP THEN IF KB = KEY_UP THEN
GOSUB selectcheck IF KCONTROL THEN 'scroll the window, instead of moving the cursor
idecy = idecy - 1 idesy = idesy - 1
IF idecy < 1 THEN idecy = 1 if idesy < 1 then idesy = 1
GOTO specialchar if idecy > idesy + (idewy - 9) then idecy = idesy + (idewy - 9)
ELSE
GOSUB selectcheck
idecy = idecy - 1
IF idecy < 1 THEN idecy = 1
GOTO specialchar
END IF
END IF END IF
IF KB = KEY_DOWN THEN IF KB = KEY_DOWN THEN
GOSUB selectcheck IF KCONTROL THEN 'scroll the window, instead of moving the cursor
idecy = idecy + 1 idesy = idesy + 1
IF idecy > iden THEN idecy = iden if idesy > iden then idesy = iden
GOTO specialchar if idecy < idesy then idecy = idesy
ELSE
GOSUB selectcheck
idecy = idecy + 1
IF idecy < idesy THEN idecy = idesy
GOTO specialchar
END IF
END IF END IF
IF mWHEEL THEN IF mWHEEL THEN
@ -10331,6 +10367,9 @@ DO 'main loop
f$ = idetxt(o(1).stx) f$ = idetxt(o(1).stx)
idef1box$ = f$ idef1box$ = f$
EXIT FUNCTION EXIT FUNCTION
ELSEIF K$ = CHR$(27) THEN
idef1box$ = "C"
EXIT FUNCTION
END IF END IF
'end of custom controls 'end of custom controls