Added scroll bounds

Resolves #9
Resolves #6
Resolves #3
This commit is contained in:
rxi
2020-05-02 00:21:04 +01:00
parent 28cdd3cabe
commit 9fc185af2f
5 changed files with 10 additions and 8 deletions
+1 -1
View File
@@ -127,7 +127,7 @@ end
function DocView:get_scrollable_size()
return self:get_line_height() * #self.doc.lines + style.padding.y * 2
return self:get_line_height() * (#self.doc.lines - 1) + self.size.y
end
-1
View File
@@ -27,7 +27,6 @@ function LogView:update()
self.yoffset = -(style.font:get_height() + style.padding.y)
end
self.scroll.to.y = math.max(0, self.scroll.to.y)
self:move_towards("yoffset", 0)
LogView.super.update(self)
+9 -2
View File
@@ -45,13 +45,13 @@ end
function View:get_scrollable_size()
return 0
return math.huge
end
function View:get_scrollbar_rect()
local sz = self:get_scrollable_size()
if sz <= self.size.y then
if sz <= self.size.y or sz == math.huge then
return 0, 0, 0, 0
end
local h = math.max(20, self.size.y * self.size.y / sz)
@@ -117,7 +117,14 @@ function View:get_content_offset()
end
function View:clamp_scroll_position()
local max = self:get_scrollable_size() - self.size.y
self.scroll.to.y = common.clamp(self.scroll.to.y, 0, max)
end
function View:update()
self:clamp_scroll_position()
self:move_towards(self.scroll, "x", self.scroll.to.x, 0.3)
self:move_towards(self.scroll, "y", self.scroll.to.y, 0.3)
end