// Copyright (c) 2026 Storm Dragon // Authors: Storm Dragon, Angus Kola // SPDX-License-Identifier: GPL-3.0-or-later package atspi type deferredLiveRegion struct{ object, document ObjectID } // No text or native handles survive the event. Completion re-reads the owned // active region. Secure input, shutdown and document replacement retire it. type deferredLiveRegionStore []deferredLiveRegion func (store *deferredLiveRegionStore) remember(object, document ObjectID) { if !object.Valid() || !document.Valid() { return } for _, entry := range *store { if entry.object == object { return } } if len(*store) == 32 { *store = (*store)[1:] } *store = append(*store, deferredLiveRegion{object, document}) } func (store *deferredLiveRegionStore) take(object ObjectID) (ObjectID, bool) { for index, entry := range *store { if entry.object == object { *store = append((*store)[:index], (*store)[index+1:]...) return entry.document, true } } return ObjectID{}, false } func (store *deferredLiveRegionStore) forget_document(document ObjectID) { kept := (*store)[:0] for _, entry := range *store { if entry.document != document { kept = append(kept, entry) } } *store = kept }