From ccd0477841a62f8e20765ebad8d448bd3f507103 Mon Sep 17 00:00:00 2001 From: th Date: Sat, 11 Apr 2026 18:50:07 +0200 Subject: [PATCH] theme: persist active design preset across settings reopen The survives settings + // close/reopen, so its lingering value would otherwise mask the + // persisted selection on the next refresh. + const cur = localStorage.getItem('hyprcrd-design-active-preset') || sel.value || ''; sel.innerHTML = ''; const builtinGroup = document.createElement('optgroup'); builtinGroup.label = 'built-in'; @@ -254,7 +257,7 @@ function refreshPresetSelect() { } sel.appendChild(userGroup); } - if (cur) sel.value = cur; + if (cur && sel.querySelector(`option[value="${CSS.escape(cur)}"]`)) sel.value = cur; } function getSelectedPreset() { @@ -274,6 +277,8 @@ function loadSelectedPreset() { syncControlsFromPending(); commitDesign(); renderThemes(); + const sel = $('design-preset-select'); + if (sel?.value) localStorage.setItem('hyprcrd-design-active-preset', sel.value); } $('design-preset-select')?.addEventListener('change', loadSelectedPreset); @@ -288,6 +293,7 @@ $('design-preset-save')?.addEventListener('click', () => { refreshPresetSelect(); const sel = $('design-preset-select'); if (sel) sel.value = 'user:' + name; + localStorage.setItem('hyprcrd-design-active-preset', 'user:' + name); const status = $('design-status'); if (status) { status.textContent = `preset "${name}" saved`; status.style.color = 'var(--t-accent)'; } }); @@ -299,6 +305,9 @@ $('design-preset-delete')?.addEventListener('click', () => { const presets = loadUserPresets(); delete presets[name]; saveUserPresets(presets); + if (localStorage.getItem('hyprcrd-design-active-preset') === 'user:' + name) { + localStorage.removeItem('hyprcrd-design-active-preset'); + } refreshPresetSelect(); });