Description
SelectRenderable.refreshFrameBuffer() does an early return when options.length === 0 without clearing the frame buffer:
refreshFrameBuffer() {
if (!this.frameBuffer || this._options.length === 0)
return;
// ...
}
This means previously rendered items remain visible on screen after setting options = [].
Steps to reproduce
- Create a
SelectRenderable and set options to a list with items
- Items render correctly
- Set
options = []
- Previous items remain visible
Expected behavior
Setting options = [] should clear the rendered list.
Suggested fix
Clear the frame buffer before the early return:
refreshFrameBuffer() {
if (!this.frameBuffer || this._options.length === 0) {
this.frameBuffer?.clear();
return;
}
// ...
}
Workaround
Use a dummy entry instead of an empty array:
this.select.options = [{ name: "", description: "", value: "__none__" }];
Description
SelectRenderable.refreshFrameBuffer()does an early return whenoptions.length === 0without clearing the frame buffer:This means previously rendered items remain visible on screen after setting
options = [].Steps to reproduce
SelectRenderableand setoptionsto a list with itemsoptions = []Expected behavior
Setting
options = []should clear the rendered list.Suggested fix
Clear the frame buffer before the early return:
Workaround
Use a dummy entry instead of an empty array: