Files

47 lines
1.2 KiB
Go

// 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
}