Skip to content

Commit 7fdffe5

Browse files
committed
Fix editor errors - make Chili code safe for RmlUi mode
Fixed multiple errors when editors instantiate in RmlUi mode: RCSS Fix: - Removed 'word-wrap: break-word;' (unsupported in RmlUi) Editor.lua Fixes: - Made stackPanel creation conditional (only in Chili mode) - Added guards to all stackPanel method calls - Made field:Added() optional (only exists on Chili fields) - Made tabbedWindow:SetMainPanel() conditional Changes allow editors to instantiate without errors: - Editors can be created in RmlUi mode - Fields are collected in editor.fields - No Chili UI is created (stackPanel=nil) - Ready for RmlUi field rendering All 16 editors can now be opened without crashes
1 parent 3fe7832 commit 7fdffe5

File tree

2 files changed

+40
-25
lines changed

2 files changed

+40
-25
lines changed

scen_edit/view/editor.lua

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,26 @@ function Editor:init()
2121
self.fields = {}
2222
self.fieldOrder = {}
2323

24-
self.stackPanel = StackPanel:New {
25-
y = 0,
26-
x = 0,
27-
right = 0,
24+
-- Only create stackPanel in Chili mode (not RmlUi)
25+
if not SB.view or not SB.view.useRmlUi then
26+
self.stackPanel = StackPanel:New {
27+
y = 0,
28+
x = 0,
29+
right = 0,
2830

29-
centerItems = false,
31+
centerItems = false,
3032

31-
autosize = true,
32-
resizeItems = false,
33-
preserveChildrenOrder = true,
33+
autosize = true,
34+
resizeItems = false,
35+
preserveChildrenOrder = true,
3436

35-
itemPadding = {0,10,0,0},
36-
padding = {0,0,0,0},
37-
margin = {0,0,0,0},
38-
itemMargin = {5,0,0,0},
39-
}
40-
self.stackPanel:DisableRealign()
37+
itemPadding = {0,10,0,0},
38+
padding = {0,0,0,0},
39+
margin = {0,0,0,0},
40+
itemMargin = {5,0,0,0},
41+
}
42+
self.stackPanel:DisableRealign()
43+
end
4144
end
4245

4346
-------------------------------
@@ -138,7 +141,10 @@ function Editor:Finalize(children, opts)
138141
OnOrphan = OnHide,
139142
classname = opts.classname,
140143
}
141-
SB.view.tabbedWindow:SetMainPanel(self.window)
144+
-- Only set main panel in Chili mode
145+
if not SB.view.useRmlUi and SB.view.tabbedWindow then
146+
SB.view.tabbedWindow:SetMainPanel(self.window)
147+
end
142148
else
143149
if opts.disposeOnClose == nil then
144150
self.__disposeOnClose = true
@@ -181,8 +187,10 @@ function Editor:Finalize(children, opts)
181187
self:__AddKeyListener()
182188

183189
end
184-
self.stackPanel:EnableRealign()
185-
self.stackPanel:Invalidate()
190+
if self.stackPanel then
191+
self.stackPanel:EnableRealign()
192+
self.stackPanel:Invalidate()
193+
end
186194

187195
self.__initializing = false
188196
end
@@ -276,7 +284,7 @@ function Editor:_SetFieldVisible(name, visible)
276284
ctrl:Show()
277285
ctrl._visible = true
278286
else
279-
-- self.stackPanel:RemoveChild(ctrl)
287+
-- if self.stackPanel then self.stackPanel:RemoveChild(ctrl)
280288
ctrl:Hide()
281289
ctrl._visible = false
282290
end
@@ -286,7 +294,7 @@ end
286294
--- Sets fields which are to be made invisible.
287295
-- @tparam {string, ...} ... Field names to be set invisible
288296
function Editor:SetInvisibleFields(...)
289-
self.stackPanel:DisableRealign()
297+
if self.stackPanel then self.stackPanel:DisableRealign() end
290298

291299
local fields = {...}
292300
for i = #self.fieldOrder, 1, -1 do
@@ -309,8 +317,8 @@ function Editor:SetInvisibleFields(...)
309317
end
310318
end
311319

312-
self.stackPanel:EnableRealign()
313-
self.stackPanel:Invalidate()
320+
if self.stackPanel then self.stackPanel:EnableRealign() end
321+
if self.stackPanel then self.stackPanel:Invalidate() end
314322
end
315323

316324
--- Remove field by name.
@@ -324,7 +332,9 @@ function Editor:RemoveField(name)
324332
break
325333
end
326334
end
327-
self.stackPanel:RemoveChild(field.ctrl)
335+
if self.stackPanel then
336+
self.stackPanel:RemoveChild(field.ctrl)
337+
end
328338
self.fields[name] = nil
329339
end
330340
--- Add field.
@@ -343,7 +353,10 @@ function Editor:AddField(field)
343353
field.ctrl = self:_AddControl(field.name, field.components)
344354
end
345355
self:_AddField(field)
346-
field:Added()
356+
-- Only call Added() if the method exists (Chili fields)
357+
if field.Added then
358+
field:Added()
359+
end
347360
end
348361

349362
function Editor:_AddField(field)
@@ -365,7 +378,10 @@ function Editor:_AddControl(name, children)
365378
padding = {0, 0, 0, 0},
366379
children = children
367380
}
368-
self.stackPanel:AddChild(ctrl)
381+
-- Only add to stackPanel in Chili mode
382+
if self.stackPanel then
383+
self.stackPanel:AddChild(ctrl)
384+
end
369385
table.insert(self.fieldOrder, name)
370386
return ctrl
371387
end

scen_edit/view/rcss/springboard.rcss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ body#springboard {
102102
font-size: 9dp;
103103
color: #cccccc;
104104
text-align: center;
105-
word-wrap: break-word;
106105
}
107106

108107
.editor-button.pressed .editor-button-label {

0 commit comments

Comments
 (0)