mirror of
https://github.com/linux-man/LoveFrames.git
synced 2024-11-18 16:04:22 +00:00
added indicator tracking
This commit is contained in:
parent
b435889831
commit
fcf09d6618
@ -937,6 +937,54 @@ function newobject:UpdateIndicator()
|
|||||||
self.indicatory = texty
|
self.indicatory = texty
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- indicator should be visible, so correcting scrolls
|
||||||
|
local indicatorRelativeX = width + self.textoffsetx - self.offsetx
|
||||||
|
local leftlimit, rightlimit = 0, self:GetWidth()
|
||||||
|
if self.linenumberspanel then
|
||||||
|
leftlimit = leftlimit + self:GetLineNumbersPanel().width
|
||||||
|
end
|
||||||
|
if self.vbar then
|
||||||
|
rightlimit = rightlimit - self:GetVerticalScrollBody().width
|
||||||
|
end
|
||||||
|
if not (indicatorRelativeX > leftlimit and indicatorRelativeX < rightlimit) then
|
||||||
|
local hbody = self:GetHorizontalScrollBody()
|
||||||
|
if hbody then
|
||||||
|
local twidth = 0
|
||||||
|
for k, v in ipairs(lines) do
|
||||||
|
local linewidth = 0
|
||||||
|
if self.masked then
|
||||||
|
linewidth = font:getWidth(v:gsub(".", self.maskchar))
|
||||||
|
else
|
||||||
|
linewidth = font:getWidth(v)
|
||||||
|
end
|
||||||
|
if linewidth > twidth then
|
||||||
|
twidth = linewidth
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local correction = self:GetWidth() / 2
|
||||||
|
if indicatorRelativeX < leftlimit then
|
||||||
|
correction = correction * -1
|
||||||
|
end
|
||||||
|
print(correction)
|
||||||
|
hbody:GetScrollBar():ScrollTo((width + correction) / twidth)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local indicatorRelativeY = (line - 1) * theight + self.textoffsety - self.offsety
|
||||||
|
local uplimit, downlimit = 0, self:GetHeight()
|
||||||
|
if self.hbar then
|
||||||
|
downlimit = downlimit - self:GetHorizontalScrollBody().height
|
||||||
|
end
|
||||||
|
if not (indicatorRelativeY > uplimit and indicatorRelativeY < downlimit) then
|
||||||
|
local vbody = self:GetVerticalScrollBody()
|
||||||
|
if vbody then
|
||||||
|
local correction = self:GetHeight() / 2 / theight
|
||||||
|
if indicatorRelativeY < uplimit then
|
||||||
|
correction = correction * -1
|
||||||
|
end
|
||||||
|
vbody:GetScrollBar():ScrollTo((line - 1 + correction)/#lines)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user