diff --git a/fluxer_app/src/features/ui/focus_ring/FocusRingManager.ts b/fluxer_app/src/features/ui/focus_ring/FocusRingManager.ts index d0b73fe1c..fec0a250d 100644 --- a/fluxer_app/src/features/ui/focus_ring/FocusRingManager.ts +++ b/fluxer_app/src/features/ui/focus_ring/FocusRingManager.ts @@ -1,15 +1,17 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import {ACTIVE_RING_CONTEXT_MANAGER} from '@app/features/ui/focus_ring/FocusRingContext'; +import {makeAutoObservable} from 'mobx'; class FocusRingManagerClass { ringsEnabled = true; + constructor() { + makeAutoObservable(this, {}, {autoBind: true}); + } + setRingsEnabled(enabled: boolean) { + if (this.ringsEnabled === enabled) return; this.ringsEnabled = enabled; - if (!enabled) { - ACTIVE_RING_CONTEXT_MANAGER?.hide(); - } } } diff --git a/fluxer_app/src/features/ui/focus_ring/FocusRingScope.tsx b/fluxer_app/src/features/ui/focus_ring/FocusRingScope.tsx index 54ba10937..9806137b3 100644 --- a/fluxer_app/src/features/ui/focus_ring/FocusRingScope.tsx +++ b/fluxer_app/src/features/ui/focus_ring/FocusRingScope.tsx @@ -4,6 +4,7 @@ import styles from '@app/features/ui/focus_ring/FocusRing.module.css'; import FocusRingContext, {FocusRingContextManager} from '@app/features/ui/focus_ring/FocusRingContext'; import FocusRingManager from '@app/features/ui/focus_ring/FocusRingManager'; import {clsx} from 'clsx'; +import {Observer} from 'mobx-react-lite'; import type * as React from 'react'; import {useContext, useEffect, useReducer, useRef} from 'react'; @@ -55,12 +56,18 @@ function Ring() { resizeObserver.disconnect(); }; }, [ringContext, targetElement]); - if (!FocusRingManager.ringsEnabled || !ringContext.visible) return null; return ( -
+ + {() => { + if (!FocusRingManager.ringsEnabled || !ringContext.visible) return null; + return ( +
+ ); + }} + ); }