From 89400ac1bd3dcf5befbe7b9e040b03ed1c346a5c Mon Sep 17 00:00:00 2001 From: "kepler155c@gmail.com" Date: Wed, 30 Jan 2019 16:27:09 -0500 Subject: [PATCH] canvas use in UI overhaul --- sys/apis/ui.lua | 23 ++++++++++++++++++----- sys/apis/ui/canvas.lua | 9 +++++++-- sys/apps/Overview.lua | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/sys/apis/ui.lua b/sys/apis/ui.lua index 2842373..2e4597f 100644 --- a/sys/apis/ui.lua +++ b/sys/apis/ui.lua @@ -860,7 +860,17 @@ end function UI.Window:addLayer(bg, fg) local canvas = self:getCanvas() - canvas = canvas:addLayer(self, bg, fg) + local x, y = self.x, self.y + local parent = self.parent + while parent and not parent.canvas do + x = x + parent.x - 1 + y = y + parent.y - 1 + parent = parent.parent + end + canvas = canvas:addLayer({ + x = x, y = y, height = self.height, width = self.width + }, bg, fg) + canvas:clear(bg or self.backgroundColor, fg or self.textColor) return canvas end @@ -2263,6 +2273,7 @@ end function UI.Tabs:enable() self.enabled = true + self.transitionHint = nil self.tabBar:enable() local menuItem = Util.find(self.tabBar.children, 'selected', true) @@ -2308,18 +2319,20 @@ UI.Tab.defaults = { } function UI.Tab:setParent() UI.Window.setParent(self) - --self.canvas = self:addLayer() + self.canvas = self:addLayer() end function UI.Tab:enable(...) - --self.canvas:setVisible(true) + self.canvas:setVisible(true) UI.Window.enable(self, ...) - --self:addTransition(self.parent.transitionHint or 'slideLeft') + if self.parent.transitionHint then + self:addTransition(self.parent.transitionHint) + end self:focusFirst() end function UI.Tab:disable() - --self.canvas:setVisible(false) + self.canvas:setVisible(false) UI.Window.disable(self) end diff --git a/sys/apis/ui/canvas.lua b/sys/apis/ui/canvas.lua index ea45ecf..5e0ed5b 100644 --- a/sys/apis/ui/canvas.lua +++ b/sys/apis/ui/canvas.lua @@ -111,9 +111,9 @@ end function Canvas:setVisible(visible) self.visible = visible - if not visible then + if not visible and self.parent then self.parent:dirty() - -- set parent's lines to dirty for each line in self + -- TODO: set parent's lines to dirty for each line in self end end @@ -244,6 +244,11 @@ function Canvas:dirty() for _, line in pairs(self.lines) do line.dirty = true end + if self.layers then + for _, canvas in pairs(self.layers) do + canvas:dirty() + end + end end function Canvas:clean() diff --git a/sys/apps/Overview.lua b/sys/apps/Overview.lua index 8aa1cd8..2fb9871 100644 --- a/sys/apps/Overview.lua +++ b/sys/apps/Overview.lua @@ -545,7 +545,7 @@ function page.editor:eventHandler(event) elseif event.type == 'form_complete' then local values = self.form.values - UI:setPreviousPage() + self:hide() self:updateApplications(values) --page:refresh() --page:draw()