fix: call enable() on pages after attaching to device

Opus Canvas only renders children with enabled=true. Without
calling page:enable(), all widgets were skipped during render,
resulting in a blank black monitor.
This commit is contained in:
MayaTheShy
2026-03-22 19:04:20 -04:00
parent 4c329bbfb3
commit 5518161adf

View File

@@ -450,6 +450,7 @@ local function buildMainPage()
mainDevice.currentPage = mainPage
mainPage.parent = mainDevice
mainPage:setParent()
mainPage:enable()
end
function D.updateAmountButtons()
@@ -886,6 +887,7 @@ local function buildSmelterPage()
smelterDevice.currentPage = smelterPage
smelterPage.parent = smelterDevice
smelterPage:setParent()
smelterPage:enable()
end
-------------------------------------------------
@@ -1015,12 +1017,7 @@ end
function D.drawDashboard()
if not mainPage then
if mainDevice then
log.info("DRAW", "Building main page (device=%s, side=%s)",
tostring(mainDevice), tostring(mainDevice and mainDevice.device and mainDevice.device.side or "nil"))
buildMainPage()
log.info("DRAW", "Main page built: %s", tostring(mainPage ~= nil))
else
log.warn("DRAW", "No mainDevice — skipping dashboard")
end
if not mainPage then return end
end
@@ -1042,21 +1039,6 @@ function D.drawDashboard()
-- Draw everything
mainPage:draw()
mainDevice:sync()
-- Debug: verify monitor is writable
if D._drawCount == nil then D._drawCount = 0 end
D._drawCount = D._drawCount + 1
if D._drawCount <= 3 then
log.info("DRAW", "sync complete (draw #%d, lines=%d, w=%d h=%d)",
D._drawCount,
mainDevice.lines and #mainDevice.lines or -1,
mainDevice.width or -1, mainDevice.height or -1)
-- Raw write test directly to the physical monitor
D.mon.setCursorPos(1, 1)
D.mon.setBackgroundColor(colors.red)
D.mon.setTextColor(colors.white)
D.mon.write("DRAW TEST #" .. D._drawCount)
end
end
function D.drawSmelterDashboard()