1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-29 09:20:38 +00:00

Restores cursor position when navigating with QuickNav.

This commit is contained in:
Fellippe Heitor 2021-07-13 00:40:11 -03:00
parent a94b738407
commit 88ab0369c0
2 changed files with 33 additions and 19 deletions

View file

@ -31,6 +31,13 @@ END TYPE
REDIM SHARED IdeBmk(1) AS IdeBmkType REDIM SHARED IdeBmk(1) AS IdeBmkType
DIM SHARED IdeBmkN DIM SHARED IdeBmkN
TYPE QuickNavType
AS LONG idesx, idesy, idecx, idecy
END TYPE
DIM SHARED QuickNavTotal AS LONG
DIM SHARED QuickNavHistory(0) AS QuickNavType
REDIM SHARED IdeBreakpoints(1) AS _BYTE REDIM SHARED IdeBreakpoints(1) AS _BYTE
'GetInput global variables 'GetInput global variables
@ -152,8 +159,6 @@ DIM SHARED idechangemade AS INTEGER
DIM SHARED ideinsert AS INTEGER DIM SHARED ideinsert AS INTEGER
DIM SHARED idepathsep AS STRING * 1 DIM SHARED idepathsep AS STRING * 1
DIM SHARED SubFuncLIST(0) AS STRING DIM SHARED SubFuncLIST(0) AS STRING
DIM SHARED QuickNavTotal AS LONG
DIM SHARED QuickNavHistory(0) AS LONG
DIM SHARED ModifyCOMMAND$ DIM SHARED ModifyCOMMAND$
DIM SHARED EnteringRGB AS _BYTE DIM SHARED EnteringRGB AS _BYTE
DIM SHARED ActiveINCLUDELink AS LONG DIM SHARED ActiveINCLUDELink AS LONG

View file

@ -1284,7 +1284,7 @@ FUNCTION ide2 (ignore)
'Hover/click (QuickNav, "Find" field, version number, line number) 'Hover/click (QuickNav, "Find" field, version number, line number)
updateHover = 0 updateHover = 0
IF QuickNavTotal > 0 THEN IF QuickNavTotal > 0 THEN
DO UNTIL QuickNavHistory(QuickNavTotal) <= iden DO UNTIL QuickNavHistory(QuickNavTotal).idecy <= iden
'make sure that the line number in history still exists 'make sure that the line number in history still exists
QuickNavTotal = QuickNavTotal - 1 QuickNavTotal = QuickNavTotal - 1
IF QuickNavTotal = 0 THEN EXIT DO IF QuickNavTotal = 0 THEN EXIT DO
@ -1297,7 +1297,7 @@ FUNCTION ide2 (ignore)
IF QuickNavHover = 0 THEN IF QuickNavHover = 0 THEN
QuickNavHover = -1 QuickNavHover = -1
COLOR 15, 3 COLOR 15, 3
popup$ = " " + CHR$(17) + " back to line " + str2$(QuickNavHistory(QuickNavTotal)) + " " popup$ = " " + CHR$(17) + " back to line " + str2$(QuickNavHistory(QuickNavTotal).idecy) + " "
_PRINTSTRING (4, 2), popup$ _PRINTSTRING (4, 2), popup$
'shadow 'shadow
@ -1310,7 +1310,10 @@ FUNCTION ide2 (ignore)
IF mCLICK THEN IF mCLICK THEN
ideselect = 0 ideselect = 0
idecy = QuickNavHistory(QuickNavTotal) idecy = QuickNavHistory(QuickNavTotal).idecy
idecx = QuickNavHistory(QuickNavTotal).idecx
idesy = QuickNavHistory(QuickNavTotal).idesy
idesx = QuickNavHistory(QuickNavTotal).idesx
QuickNavTotal = QuickNavTotal - 1 QuickNavTotal = QuickNavTotal - 1
GOTO ideloop GOTO ideloop
END IF END IF
@ -1498,7 +1501,7 @@ FUNCTION ide2 (ignore)
CASE 2 CASE 2
'2- Link to the line that has a compiler error: '2- Link to the line that has a compiler error:
idecx = 1 idecx = 1
AddQuickNavHistory idecy AddQuickNavHistory
idecy = idefocusline idecy = idefocusline
ideselect = 0 ideselect = 0
GOTO specialchar GOTO specialchar
@ -2733,7 +2736,7 @@ FUNCTION ide2 (ignore)
IF IdeBmk(b).y = l THEN EXIT DO IF IdeBmk(b).y = l THEN EXIT DO
NEXT NEXT
LOOP LOOP
AddQuickNavHistory idecy AddQuickNavHistory
idecy = l idecy = l
idecx = IdeBmk(b).x idecx = IdeBmk(b).x
ideselect = 0 ideselect = 0
@ -3123,7 +3126,7 @@ FUNCTION ide2 (ignore)
IF KCONTROL AND UCASE$(K$) = "G" THEN 'goto line IF KCONTROL AND UCASE$(K$) = "G" THEN 'goto line
IF KSHIFT AND idefocusline > 0 THEN IF KSHIFT AND idefocusline > 0 THEN
idecx = 1 idecx = 1
AddQuickNavHistory idecy AddQuickNavHistory
idecy = idefocusline idecy = idefocusline
ideselect = 0 ideselect = 0
ELSE ELSE
@ -3173,7 +3176,10 @@ FUNCTION ide2 (ignore)
IF KCONTROL THEN IF KCONTROL THEN
IF QuickNavTotal > 0 THEN IF QuickNavTotal > 0 THEN
ideselect = 0 ideselect = 0
idecy = QuickNavHistory(QuickNavTotal) idecy = QuickNavHistory(QuickNavTotal).idecy
idecx = QuickNavHistory(QuickNavTotal).idecx
idesy = QuickNavHistory(QuickNavTotal).idesy
idesx = QuickNavHistory(QuickNavTotal).idesx
QuickNavTotal = QuickNavTotal - 1 QuickNavTotal = QuickNavTotal - 1
GOTO ideloop GOTO ideloop
END IF END IF
@ -4919,7 +4925,7 @@ FUNCTION ide2 (ignore)
IF IdeBmk(b).y = l THEN EXIT DO IF IdeBmk(b).y = l THEN EXIT DO
NEXT NEXT
LOOP LOOP
AddQuickNavHistory idecy AddQuickNavHistory
idecy = l idecy = l
idecx = IdeBmk(b).x idecx = IdeBmk(b).x
ideselect = 0 ideselect = 0
@ -5026,7 +5032,7 @@ FUNCTION ide2 (ignore)
IF LEFT$(menu$(m, s), 10) = "#Go To SUB" OR LEFT$(menu$(m, s), 15) = "#Go To FUNCTION" THEN 'Contextual menu Goto IF LEFT$(menu$(m, s), 10) = "#Go To SUB" OR LEFT$(menu$(m, s), 15) = "#Go To FUNCTION" THEN 'Contextual menu Goto
PCOPY 3, 0: SCREEN , , 3, 0 PCOPY 3, 0: SCREEN , , 3, 0
AddQuickNavHistory idecy AddQuickNavHistory
idecy = CVL(MID$(SubFuncLIST(1), 1, 4)) idecy = CVL(MID$(SubFuncLIST(1), 1, 4))
idesy = idecy idesy = idecy
idecx = 1 idecx = 1
@ -5037,7 +5043,7 @@ FUNCTION ide2 (ignore)
IF LEFT$(menu$(m, s), 12) = "Go To #Label" THEN 'Contextual menu Goto label IF LEFT$(menu$(m, s), 12) = "Go To #Label" THEN 'Contextual menu Goto label
PCOPY 3, 0: SCREEN , , 3, 0 PCOPY 3, 0: SCREEN , , 3, 0
AddQuickNavHistory idecy AddQuickNavHistory
idecy = CVL(MID$(SubFuncLIST(UBOUND(SubFuncLIST)), 1, 4)) idecy = CVL(MID$(SubFuncLIST(UBOUND(SubFuncLIST)), 1, 4))
idesy = idecy idesy = idecy
idecx = 1 idecx = 1
@ -9263,7 +9269,7 @@ FUNCTION idesubs$
IF K$ = CHR$(13) OR (focus = 4 AND info <> 0) OR (info = 1 AND focus = 1) THEN IF K$ = CHR$(13) OR (focus = 4 AND info <> 0) OR (info = 1 AND focus = 1) THEN
y = o(1).sel y = o(1).sel
IF y < 1 THEN y = -y IF y < 1 THEN y = -y
AddQuickNavHistory idecy AddQuickNavHistory
IF SortedSubsFlag = 0 THEN IF SortedSubsFlag = 0 THEN
idecy = CVL(MID$(ly$, y * 4 - 3, 4)) idecy = CVL(MID$(ly$, y * 4 - 3, 4))
ELSE ELSE
@ -9687,7 +9693,7 @@ FUNCTION idewarningbox
y = ABS(o(1).sel) y = ABS(o(1).sel)
IF y >= 1 AND y <= warningListItems AND warningLines(y) > 0 THEN IF y >= 1 AND y <= warningListItems AND warningLines(y) > 0 THEN
idegotobox_LastLineNum = warningLines(y) idegotobox_LastLineNum = warningLines(y)
AddQuickNavHistory idecy AddQuickNavHistory
idecy = idegotobox_LastLineNum idecy = idegotobox_LastLineNum
IF warningIncLines(y) > 0 THEN IF warningIncLines(y) > 0 THEN
warningInInclude = idecy warningInInclude = idecy
@ -10812,7 +10818,7 @@ SUB idegotobox
IF v& < 1 THEN v& = 1 IF v& < 1 THEN v& = 1
IF v& > iden THEN v& = iden IF v& > iden THEN v& = iden
idegotobox_LastLineNum = v& idegotobox_LastLineNum = v&
AddQuickNavHistory idecy AddQuickNavHistory
idecy = v& idecy = v&
ideselect = 0 ideselect = 0
END SUB END SUB
@ -14622,16 +14628,19 @@ FUNCTION FindCurrentSF$ (whichline)
FindCurrentSF$ = sfname$ FindCurrentSF$ = sfname$
END FUNCTION END FUNCTION
SUB AddQuickNavHistory (LineNumber&) SUB AddQuickNavHistory
IF QuickNavTotal > 0 THEN IF QuickNavTotal > 0 THEN
IF QuickNavHistory(QuickNavTotal) = LineNumber& THEN EXIT SUB IF QuickNavHistory(QuickNavTotal).idecy = idecy THEN EXIT SUB
END IF END IF
QuickNavTotal = QuickNavTotal + 1 QuickNavTotal = QuickNavTotal + 1
REDIM _PRESERVE QuickNavHistory(1 TO QuickNavTotal) AS LONG REDIM _PRESERVE QuickNavHistory(1 TO QuickNavTotal) AS QuickNavType
QuickNavHistory(QuickNavTotal) = LineNumber& QuickNavHistory(QuickNavTotal).idecy = idecy
QuickNavHistory(QuickNavTotal).idecx = idecx
QuickNavHistory(QuickNavTotal).idesy = idesy
QuickNavHistory(QuickNavTotal).idesx = idesx
END SUB END SUB
SUB UpdateIdeInfo SUB UpdateIdeInfo