diff --git a/text.lua b/text.lua index 51c6d0d..f8aee6a 100644 --- a/text.lua +++ b/text.lua @@ -18,7 +18,7 @@ function Text.draw(State, line_index, y, startpos) local x = State.left local pos = 1 local screen_line_starting_pos = startpos - Text.populate_screen_line_starting_pos(State, line_index) + Text.compute_fragments(State, line_index) for _, f in ipairs(line_cache.fragments) do local frag, frag_text = f.data, f.text local frag_len = utf8.len(frag) @@ -87,9 +87,7 @@ function Text.populate_screen_line_starting_pos(State, line_index) return end -- duplicate some logic from Text.draw - if line_cache.fragments == nil then - Text.compute_fragments(State, line_index) - end + Text.compute_fragments(State, line_index) line_cache.screen_line_starting_pos = {1} local x = State.left local pos = 1 @@ -111,6 +109,9 @@ function Text.compute_fragments(State, line_index) --? print('compute_fragments', line_index, 'between', State.left, State.right) local line = State.lines[line_index] local line_cache = State.line_cache[line_index] + if line_cache.fragments then + return + end line_cache.fragments = {} local x = State.left -- try to wrap at word boundaries