diff --git a/src/components/EbenenManager.jsx b/src/components/EbenenManager.jsx index 4cad100..43cbd44 100644 --- a/src/components/EbenenManager.jsx +++ b/src/components/EbenenManager.jsx @@ -367,18 +367,20 @@ export default function EbenenManager({ } const addNew = () => { - const name = (window.prompt('Name für neue Ebene:', 'NEU') || '').trim() - if (!name) return + // KEIN window.prompt — macOS WKWebView blockiert wiederholte + // JavaScript-Dialoge (erster zeigt, nachfolgende returnen null). + // Silent-Append mit autoEdit damit der User direkt den Namen + // eintippen kann. const code = nextFreeAfter(activeCode) const newEbene = { - code, name: name.toUpperCase(), + code, name: 'NEU', color: '#888888', lw: 0.18, visible: true, locked: false, } - console.log('[EBENEN-UI] addNew →', { activeCode, code, name: newEbene.name, ebenenCountBefore: ebenen.length }) + console.log('[EBENEN-UI] addNew →', { activeCode, code, ebenenCountBefore: ebenen.length }) onChange([...ebenen, newEbene]) - // Neue Ebene direkt als aktiv setzen → Pill-Highlight, sofort sichtbar - // und der User kann gleich anfangen Geometrie auf diese Ebene zu zeichnen. - if (onActiveChange) onActiveChange(code) + // Code-Feld der neuen Ebene fokussieren — User kann sofort tippen + // (Tab springt dann zum Name-Feld). + setAutoEdit({ code, field: 'code', token: Date.now() }) } const duplicateEbene = (code) => { diff --git a/src/components/GeschossManager.jsx b/src/components/GeschossManager.jsx index 66c992d..caefbe3 100644 --- a/src/components/GeschossManager.jsx +++ b/src/components/GeschossManager.jsx @@ -94,15 +94,13 @@ export default function GeschossManager({ .reduce((s, z) => s + (z.hoehe ?? 0), 0) const addQuick = () => { - const defaultName = `${zeichnungsebenen.filter(z => z.isGeschoss).length + 1}OG` - const name = (window.prompt( - 'Name für neue Zeichnungsebene (Geschoss):', - defaultName - ) || '').trim() - if (!name) return + // KEIN window.prompt — macOS WKWebView blockiert wiederholte + // JavaScript-Dialoge. Silent-Append mit Default-Name; User editiert + // ueber den Geschoss-Settings-Dialog falls noetig. + const geschossCount = zeichnungsebenen.filter(z => z.isGeschoss).length const newZ = { id: `z_${Date.now()}`, - name, + name: `${geschossCount + 1}OG`, isGeschoss: true, hoehe: 3.0, schnitthoehe: 1.0, @@ -110,8 +108,6 @@ export default function GeschossManager({ } console.log('[ZEICHNUNGSEBENEN-UI] addQuick →', { newZ, countBefore: zeichnungsebenen.length }) onChange([...zeichnungsebenen, newZ]) - // Direkt als aktiv setzen → Pill-Highlight, klar sichtbar - if (onActiveChange) onActiveChange(newZ.id) } const toggleVisible = (id) => {