From 33257e367b88831d8f710054250729dcbbd3fa6a Mon Sep 17 00:00:00 2001 From: flashwave Date: Tue, 23 Apr 2024 15:01:18 +0000 Subject: [PATCH] Fixed sound packs dropdown sometimes being empty. --- src/mami.js/ui/settings.jsx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/mami.js/ui/settings.jsx b/src/mami.js/ui/settings.jsx index 8009e11..c3d89fb 100644 --- a/src/mami.js/ui/settings.jsx +++ b/src/mami.js/ui/settings.jsx @@ -456,12 +456,17 @@ Umi.UI.Settings = (function() { if(display.disabled === true) input.disabled = true; - if(display.type === 'select') { + const updateSelectOptions = () => { const options = display.options(); + $rc(input); for(const name in options) input.appendChild(); + }; + + if(display.type === 'select') { + updateSelectOptions(); } else if(display.type === 'button') { input.value = display.title; input.addEventListener('click', () => { @@ -503,6 +508,18 @@ Umi.UI.Settings = (function() { } }); } else { + // hack: do this more gracefully when an actual API for the settings sidebar is exposed + // specifically for the sound pack + if(display.type === 'select') + input.addEventListener('click', () => { + if(input.childElementCount > 1) + return; + + const value = mami.settings.get(setting.name); + updateSelectOptions(); + input.value = value; + }); + mami.settings.watch(setting.name, ev => input.value = ev.detail.value); input.addEventListener('change', () => mami.settings.set(setting.name, input.value)); }