From caf106be1d49479cee1acead906d2088ef93f40c Mon Sep 17 00:00:00 2001 From: Guldoman Date: Fri, 1 Jul 2022 05:26:07 +0200 Subject: [PATCH] `LogView`: Don't draw invisible items --- data/core/logview.lua | 62 ++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/data/core/logview.lua b/data/core/logview.lua index d079a5de..5a7224ac 100644 --- a/data/core/logview.lua +++ b/data/core/logview.lua @@ -154,44 +154,46 @@ function LogView:draw() local tw = style.font:get_width(datestr) for _, item, x, y, w, h in self:each_item() do - core.push_clip_rect(x, y, w, h) - x = x + style.padding.x + if y + h >= self.position.y and y <= self.position.y + self.size.y then + core.push_clip_rect(x, y, w, h) + x = x + style.padding.x - x = common.draw_text( - style.icon_font, - style.log[item.level].color, - style.log[item.level].icon, - "center", - x, y, iw, lh - ) - x = x + style.padding.x + x = common.draw_text( + style.icon_font, + style.log[item.level].color, + style.log[item.level].icon, + "center", + x, y, iw, lh + ) + x = x + style.padding.x - -- timestamps are always 15% of the width - local time = os.date(nil, item.time) - common.draw_text(style.font, style.dim, time, "left", x, y, tw, lh) - x = x + tw + style.padding.x + -- timestamps are always 15% of the width + local time = os.date(nil, item.time) + common.draw_text(style.font, style.dim, time, "left", x, y, tw, lh) + x = x + tw + style.padding.x - w = w - (x - self:get_content_offset()) + w = w - (x - self:get_content_offset()) - if is_expanded(item) then - y = y + common.round(style.padding.y / 2) - _, y = draw_text_multiline(style.font, item.text, x, y, style.text) + if is_expanded(item) then + y = y + common.round(style.padding.y / 2) + _, y = draw_text_multiline(style.font, item.text, x, y, style.text) - local at = "at " .. common.home_encode(item.at) - _, y = common.draw_text(style.font, style.dim, at, "left", x, y, w, lh) + local at = "at " .. common.home_encode(item.at) + _, y = common.draw_text(style.font, style.dim, at, "left", x, y, w, lh) - if item.info then - _, y = draw_text_multiline(style.font, item.info, x, y, style.dim) + if item.info then + _, y = draw_text_multiline(style.font, item.info, x, y, style.dim) + end + else + local line, has_newline = string.match(item.text, "([^\n]+)(\n?)") + if has_newline ~= "" then + line = line .. " ..." + end + _, y = common.draw_text(style.font, style.text, line, "left", x, y, w, lh) end - else - local line, has_newline = string.match(item.text, "([^\n]+)(\n?)") - if has_newline ~= "" then - line = line .. " ..." - end - _, y = common.draw_text(style.font, style.text, line, "left", x, y, w, lh) + + core.pop_clip_rect() end - - core.pop_clip_rect() end end