1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-26 17:10:38 +00:00

Improves on scroll bar behavior (watch panel)

This commit is contained in:
Fellippe Heitor 2021-07-28 12:07:02 -03:00
parent e2e8ea16ea
commit 8de0ca17f6

View file

@ -6577,27 +6577,27 @@ SUB DebugMode
(mX >= vWatchPanel.x + vWatchPanel.w - 3) AND (mX <= vWatchPanel.x + vWatchPanel.w - 1) AND _
(mY = vWatchPanel.y) THEN
vWatchPanel.closingPanel = -1
ELSEIF LEN(variableWatchList$) > 0 AND _
ELSEIF LEN(variableWatchList$) > 0 AND vWatchPanel.vBarThumb > 0 AND _
(mX = vWatchPanel.x + vWatchPanel.w - 1) AND _
(mY = vWatchPanel.vBarThumb) THEN
vWatchPanel.draggingVBar = 1 'thumb
ELSEIF LEN(variableWatchList$) > 0 AND _
ELSEIF LEN(variableWatchList$) > 0 AND vWatchPanel.vBarThumb > 0 AND _
(mX = vWatchPanel.x + vWatchPanel.w - 1) AND _
(mY = vWatchPanel.y + 1) THEN
vWatchPanel.draggingVBar = 2 'up arrow
ELSEIF LEN(variableWatchList$) > 0 AND _
ELSEIF LEN(variableWatchList$) > 0 AND vWatchPanel.vBarThumb > 0 AND _
(mX = vWatchPanel.x + vWatchPanel.w - 1) AND _
(mY = vWatchPanel.y + vWatchPanel.h - 2) THEN
vWatchPanel.draggingVBar = 3 'down arrow
ELSEIF LEN(variableWatchList$) > 0 AND _
ELSEIF LEN(variableWatchList$) > 0 AND vWatchPanel.hBarThumb > 0 AND _
(mX = vWatchPanel.hBarThumb) AND _
(mY = vWatchPanel.y + vWatchPanel.h - 1) THEN
vWatchPanel.draggingHBar = 1 'thumb
ELSEIF LEN(variableWatchList$) > 0 AND _
ELSEIF LEN(variableWatchList$) > 0 AND vWatchPanel.hBarThumb > 0 AND _
(mX = vWatchPanel.x) AND _
(mY = vWatchPanel.y + vWatchPanel.h - 1) THEN
vWatchPanel.draggingHBar = 2 'left arrow
ELSEIF LEN(variableWatchList$) > 0 AND _
ELSEIF LEN(variableWatchList$) > 0 AND vWatchPanel.hBarThumb > 0 AND _
(mX = vWatchPanel.x + vWatchPanel.w - 2) AND _
(mY = vWatchPanel.y + vWatchPanel.h - 1) THEN
vWatchPanel.draggingHBar = 3 'right arrow
@ -6706,21 +6706,29 @@ SUB DebugMode
END IF
IF vWatchPanel.h < 5 THEN vWatchPanel.h = 5
IF vWatchPanel.h > idewy - 10 THEN vWatchPanel.h = idewy - 10
IF vWatchPanel.vBarThumb > 0 AND vWatchPanel.firstVisible > totalVisibleVariables - (vWatchPanel.h - 2) + 1 THEN
vWatchPanel.firstVisible = totalVisibleVariables - (vWatchPanel.h - 2) + 1
END IF
IF vWatchPanel.hBarThumb > 0 AND vWatchPanel.hPos > vWatchPanel.contentWidth - (vWatchPanel.w - 4) + 1 THEN
vWatchPanel.hPos = vWatchPanel.contentWidth - (vWatchPanel.w - 4) + 1
END IF
mouseDownOnX = mX
mouseDownOnY = mY
GOSUB UpdateDisplay
ELSEIF vWatchPanel.draggingVBar = 1 THEN
vWatchPanel.firstVisible = INT(map(mY, vWatchPanel.y + 2, vWatchPanel.y + vWatchPanel.h - 2, 1, totalVisibleVariables))
vWatchPanel.firstVisible = INT(map(mY, vWatchPanel.y + 2, vWatchPanel.y + vWatchPanel.h - 2, 1, totalVisibleVariables - (vWatchPanel.h - 2) + 1))
IF vWatchPanel.firstVisible < 1 THEN vWatchPanel.firstVisible = 1
IF vWatchPanel.firstVisible > totalVisibleVariables THEN
vWatchPanel.firstVisible = totalVisibleVariables
IF vWatchPanel.firstVisible > totalVisibleVariables - (vWatchPanel.h - 2) + 1 THEN
vWatchPanel.firstVisible = totalVisibleVariables - (vWatchPanel.h - 2) + 1
END IF
GOSUB UpdateDisplay
ELSEIF vWatchPanel.draggingHBar = 1 THEN
vWatchPanel.hPos = INT(map(mX, vWatchPanel.x, vWatchPanel.x + vWatchPanel.w - 2, 1, vWatchPanel.contentWidth))
vWatchPanel.hPos = INT(map(mX, vWatchPanel.x, vWatchPanel.x + vWatchPanel.w - 2, 1, vWatchPanel.contentWidth - (vWatchPanel.w - 4) + 1))
IF vWatchPanel.hPos < 1 THEN vWatchPanel.hPos = 1
IF vWatchPanel.hPos > vWatchPanel.contentWidth THEN
vWatchPanel.hPos = vWatchPanel.contentWidth
IF vWatchPanel.hPos > vWatchPanel.contentWidth - (vWatchPanel.w - 4) + 1 THEN
vWatchPanel.hPos = vWatchPanel.contentWidth - (vWatchPanel.w - 4) + 1
END IF
GOSUB UpdateDisplay
END IF
@ -6744,8 +6752,8 @@ SUB DebugMode
GOSUB UpdateDisplay
ELSEIF vWatchPanel.draggingVBar = 3 THEN
vWatchPanel.firstVisible = vWatchPanel.firstVisible + 1
IF vWatchPanel.firstVisible > totalVisibleVariables THEN
vWatchPanel.firstVisible = totalVisibleVariables
IF vWatchPanel.firstVisible > totalVisibleVariables - (vWatchPanel.h - 2) + 1 THEN
vWatchPanel.firstVisible = totalVisibleVariables - (vWatchPanel.h - 2) + 1
END IF
GOSUB UpdateDisplay
END IF
@ -6758,8 +6766,8 @@ SUB DebugMode
GOSUB UpdateDisplay
ELSEIF vWatchPanel.draggingHBar = 3 THEN
vWatchPanel.hPos = vWatchPanel.hPos + 1
IF vWatchPanel.hPos > vWatchPanel.contentWidth THEN
vWatchPanel.hPos = vWatchPanel.contentWidth
IF vWatchPanel.hPos > vWatchPanel.contentWidth - (vWatchPanel.w - 4) + 1 THEN
vWatchPanel.hPos = vWatchPanel.contentWidth - (vWatchPanel.w - 4) + 1
END IF
GOSUB UpdateDisplay
END IF
@ -7340,6 +7348,7 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$)
y = 0
this.contentWidth = 0
IF this.hPos = 0 THEN this.hPos = 1
IF LEN(variableWatchList$) THEN
longestVarName = CVL(LEFT$(variableWatchList$, 4))
temp$ = MID$(variableWatchList$, 5)
@ -7347,9 +7356,6 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$)
tempIndex& = CVL(LEFT$(temp$, 4))
temp$ = MID$(temp$, 5)
i = i + 1
IF this.firstVisible > i THEN _CONTINUE
y = y + 1
IF y > this.h - 2 THEN EXIT DO
item$ = usedVariableList(tempIndex&).name + SPACE$(longestVarName - LEN(usedVariableList(tempIndex&).name)) + " = "
IF usedVariableList(tempIndex&).watch THEN
IF usedVariableList(tempIndex&).subfunc = currentScope$ OR usedVariableList(tempIndex&).subfunc = "" THEN
@ -7361,19 +7367,31 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$)
END IF
END IF
IF LEN(item$) > this.contentWidth THEN this.contentWidth = LEN(item$)
IF this.firstVisible > i THEN _CONTINUE
y = y + 1
IF y > this.h - 2 THEN _CONTINUE
_PRINTSTRING (this.x + 2, this.y + y), MID$(item$, this.hPos, this.w - 4)
LOOP
END IF
y = idevbar(this.x + this.w - 1, this.y + 1, this.h - 2, this.firstVisible, totalVisibleVariables)
IF this.draggingVBar = 0 THEN
this.vBarThumb = y
IF totalVisibleVariables > this.h - 2 THEN
y = idevbar(this.x + this.w - 1, this.y + 1, this.h - 2, this.firstVisible, totalVisibleVariables - (this.h - 2) + 1)
IF this.draggingVBar = 0 THEN
this.vBarThumb = y
END IF
ELSE
this.vBarThumb = 0
this.firstVisible = 1
END IF
IF this.hPos = 0 THEN this.hPos = 1
x = idehbar(this.x, this.y + this.h - 1, this.w - 1, this.hPos, this.contentWidth)
IF this.draggingHBar = 0 THEN
this.hBarThumb = x
IF this.contentWidth > this.w - 4 THEN
x = idehbar(this.x, this.y + this.h - 1, this.w - 1, this.hPos, this.contentWidth - (this.w - 4) + 1)
IF this.draggingHBar = 0 THEN
this.hBarThumb = x
END IF
ELSE
this.hBarThumb = 0
this.hPos = 1
END IF
END SUB