aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <adamdharrison@gmail.com>2021-09-02 20:01:06 -0400
committerGitHub <noreply@github.com>2021-09-02 20:01:06 -0400
commita0508103b1cbcdfe1936de41b1a167243406c481 (patch)
treedf7b7aa977360bfb511666bcf7efedf0a770d632
parentf18629ab640423807ec44fb9163a0222ad850aae (diff)
parente559afaefc269231429ec51c9261dacca37f874e (diff)
downloadlite-xl-a0508103b1cbcdfe1936de41b1a167243406c481.tar.gz
lite-xl-a0508103b1cbcdfe1936de41b1a167243406c481.zip
Merge pull request #481 from Guldoman/h_scroll_size_cache
Add a simple cache to `DocView:get_h_scrollable_size`
-rw-r--r--data/core/docview.lua15
1 files changed, 11 insertions, 4 deletions
diff --git a/data/core/docview.lua b/data/core/docview.lua
index 8f8c77ff..cddd82d2 100644
--- a/data/core/docview.lua
+++ b/data/core/docview.lua
@@ -102,10 +102,17 @@ function DocView:get_scrollable_size()
end
function DocView:get_h_scrollable_size()
- local xmargin = 3 * self:get_font():get_width(' ') -- from DocView:scroll_to_make_visible
- local long_line = next(self.doc.long_lines.line_numbers) or 1
- return self:get_col_x_offset(long_line, self.doc.long_lines.length)
- + self:get_gutter_width() + xmargin
+ local doc_change_id = self.doc:get_change_id()
+ if self.last_doc_change_id ~= doc_change_id then
+ self.last_doc_change_id = doc_change_id
+ local xmargin = 3 * self:get_font():get_width(' ') -- from DocView:scroll_to_make_visible
+ -- TODO: make Doc calculate the real longest line in pixels, not in characters,
+ -- as the current implementation only works for monospace fonts
+ local long_line = next(self.doc.long_lines.line_numbers) or 1
+ self.h_scrollable_size = self:get_col_x_offset(long_line, self.doc.long_lines.length)
+ + self:get_gutter_width() + xmargin
+ end
+ return self.h_scrollable_size
end
function DocView:get_font()