diff --git a/src/components/workers/WorkersBoard.jsx b/src/components/workers/WorkersBoard.jsx
index cf86356..f3f3f30 100644
--- a/src/components/workers/WorkersBoard.jsx
+++ b/src/components/workers/WorkersBoard.jsx
@@ -30,6 +30,8 @@ export default function WorkersBoard({ api, isAdmin, stageRef }) {
const ref = stageRef ?? ownRef
const aliveRef = useRef(true)
const sideRef = useRef(null)
+ const toolbarRef = useRef(null)
+ const refocusPauseRef = useRef(false) // nach dem Umschalten bekommt der Knopf „Alles anhalten“ / „Fortsetzen“ den Fokus zurück, falls er ihn verlor
const [workers, setWorkers] = useState({})
const [selectedId, setSelectedId] = useState(null)
const [settingsOpen, setSettingsOpen] = useState(false)
@@ -55,6 +57,19 @@ export default function WorkersBoard({ api, isAdmin, stageRef }) {
const { trace, loading: traceLoading, error: traceError } = useWorkerTrace(api, selectedId)
+ // Fokus nach dem Umschalten: Während pausing gilt, ist der Knopf der Leiste gesperrt. Schließt der Dialog im selben Takt, in dem pausing
+ // beginnt, kann useDialogFocus den Fokus nicht auf den gesperrten Knopf zurückgeben, und er bliebe für immer auf
. Deshalb
+ // wird er erst hier gesetzt, wenn pausing wieder endet (auch nach einem Fehler) und der Knopf wieder bedienbar ist. Hat der Mensch
+ // inzwischen woanders hin gewechselt (Fokus nicht auf ), bleibt es dabei.
+ useEffect(() => {
+ if (pausing || !refocusPauseRef.current) return
+ refocusPauseRef.current = false
+ const active = document.activeElement
+ if (active && active !== document.body) return
+ const button = toolbarRef.current?.querySelector('[data-wk-pause]')
+ if (button) button.focus()
+ }, [pausing])
+
// Hat inzwischen jemand anderes angehalten, entfällt die Frage; sie darf nach einem späteren Fortsetzen nicht wieder auftauchen
const haltedByState = Boolean(state?.paused)
useEffect(() => {
@@ -95,6 +110,7 @@ export default function WorkersBoard({ api, isAdmin, stageRef }) {
// jemand anderes angehalten hat.
const setPause = async (target) => {
if (pausing) return
+ refocusPauseRef.current = true
setPausing(true)
setPauseError('')
try {
@@ -118,10 +134,10 @@ export default function WorkersBoard({ api, isAdmin, stageRef }) {
return (
<>
-