Skip to content

Commit fd9da88

Browse files
committed
Fix checkbox interaction and clean up unused RmlUi editors
- Fix checkboxes to be clickable and respond to user input - Updated BindFieldEvents() to use .checked property for checkbox inputs - Added GetValue()/SetValue() overrides in RmlUiBooleanField for checked property - Delete unused rmlui_editors directory - Using field compatibility layer approach instead of separate editors - Previous fixes included in this commit: - Fix table value handling in MaterialField, AssetField, ObjectField - Fix RCSS syntax (min-width: 60dp instead of auto) - GroupField inline rendering with proper styling - Remove duplicate field rendering - Strip double colons from field labels
1 parent 59eec6e commit fd9da88

File tree

7 files changed

+65
-105
lines changed

7 files changed

+65
-105
lines changed

scen_edit/view/rcss/springboard.rcss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ body#springboard {
154154
}
155155

156156
.field-inline .field-label {
157-
min-width: auto;
157+
min-width: 60dp;
158158
margin-right: 5dp;
159159
}
160160

scen_edit/view/rmlui_editors/heightmap_editor.lua

Lines changed: 0 additions & 24 deletions
This file was deleted.

scen_edit/view/rmlui_editors/object_editor.lua

Lines changed: 0 additions & 24 deletions
This file was deleted.

scen_edit/view/rmlui_editors/texture_editor.lua

Lines changed: 0 additions & 25 deletions
This file was deleted.

scen_edit/view/rmlui_editors/trigger_editor.lua

Lines changed: 0 additions & 26 deletions
This file was deleted.

scen_edit/view/rmlui_fields.lua

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,27 @@ function RmlUiBooleanField:init(opts)
103103
self:super("init", opts)
104104
end
105105

106+
function RmlUiBooleanField:GetValue()
107+
if self.element then
108+
-- Checkboxes use 'checked' property, not 'value'
109+
local input = self.element:GetElementById("field-" .. self.name)
110+
if input then
111+
return input.checked
112+
end
113+
end
114+
return self.value
115+
end
116+
117+
function RmlUiBooleanField:SetValue(value)
118+
self.value = value
119+
if self.element then
120+
local input = self.element:GetElementById("field-" .. self.name)
121+
if input then
122+
input.checked = value
123+
end
124+
end
125+
end
126+
106127
function RmlUiBooleanField:GenerateRml()
107128
local checked = self.value and 'checked="checked"' or ''
108129
-- Remove trailing colon from title if present
@@ -197,9 +218,17 @@ function RmlUiAssetField:init(opts)
197218
end
198219

199220
function RmlUiAssetField:GenerateRml()
221+
-- Convert value to string (might be table in some cases)
222+
local valueStr = ""
223+
if self.value then
224+
valueStr = type(self.value) == "table" and (self.value.name or "") or tostring(self.value)
225+
end
226+
-- Remove trailing colon from title if present
227+
local title = self.title:gsub(":$", "")
228+
200229
return string.format(
201230
'<div class="field-row"><label class="field-label">%s:</label><input type="text" id="field-%s" class="field-input" value="%s" readonly="readonly"/><button id="btn-browse-%s" class="field-button">Browse</button></div>',
202-
self.title, self.name, self.value or "", self.name
231+
title, self.name, valueStr, self.name
203232
)
204233
end
205234

@@ -222,9 +251,17 @@ function RmlUiMaterialField:init(opts)
222251
end
223252

224253
function RmlUiMaterialField:GenerateRml()
254+
-- Convert value to string (might be table in some cases)
255+
local valueStr = ""
256+
if self.value then
257+
valueStr = type(self.value) == "table" and (self.value.name or "") or tostring(self.value)
258+
end
259+
-- Remove trailing colon from title if present
260+
local title = self.title:gsub(":$", "")
261+
225262
return string.format(
226263
'<div class="field-row"><label class="field-label">%s:</label><input type="text" id="field-%s" class="field-input" value="%s" readonly="readonly"/><button id="btn-browse-%s" class="field-button">Browse</button></div>',
227-
self.title, self.name, self.value or "", self.name
264+
title, self.name, valueStr, self.name
228265
)
229266
end
230267

@@ -246,9 +283,17 @@ function RmlUiObjectField:init(opts)
246283
end
247284

248285
function RmlUiObjectField:GenerateRml()
286+
-- Convert value to string (might be table in some cases)
287+
local valueStr = ""
288+
if self.value then
289+
valueStr = type(self.value) == "table" and (self.value.id or "") or tostring(self.value)
290+
end
291+
-- Remove trailing colon from title if present
292+
local title = self.title:gsub(":$", "")
293+
249294
return string.format(
250295
'<div class="field-row"><label class="field-label">%s:</label><input type="number" id="field-%s" class="field-input" value="%s"/><button id="btn-pick-%s" class="field-button">Pick</button></div>',
251-
self.title, self.name, self.value or "", self.name
296+
title, self.name, valueStr, self.name
252297
)
253298
end
254299

@@ -260,9 +305,17 @@ function RmlUiObjectTypeField:init(opts)
260305
end
261306

262307
function RmlUiObjectTypeField:GenerateRml()
308+
-- Convert value to string (might be table in some cases)
309+
local valueStr = ""
310+
if self.value then
311+
valueStr = type(self.value) == "table" and (self.value.name or "") or tostring(self.value)
312+
end
313+
-- Remove trailing colon from title if present
314+
local title = self.title:gsub(":$", "")
315+
263316
return string.format(
264317
'<div class="field-row"><label class="field-label">%s:</label><input type="text" id="field-%s" class="field-input" value="%s"/><button id="btn-browse-%s" class="field-button">Browse</button></div>',
265-
self.title, self.name, self.value or "", self.name
318+
title, self.name, valueStr, self.name
266319
)
267320
end
268321

scen_edit/view/view.lua

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,13 @@ function View:BindFieldEvents(editor)
397397
local inputElement = self.mainDocument:GetElementById("field-" .. fieldName)
398398
if inputElement then
399399
inputElement:AddEventListener("change", function(event)
400-
local value = inputElement.value
400+
-- Checkboxes use 'checked' property, other inputs use 'value'
401+
local value
402+
if inputElement:HasAttribute("type") and inputElement:GetAttribute("type") == "checkbox" then
403+
value = inputElement.checked
404+
else
405+
value = inputElement.value
406+
end
401407
-- Update field value
402408
field.value = value
403409
-- Notify editor

0 commit comments

Comments
 (0)