diff options
| author | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 13:38:32 +0200 |
|---|---|---|
| committer | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 13:38:32 +0200 |
| commit | ec0bc598ba3b623af5426bec280585ada78489e0 (patch) | |
| tree | 30fc06e7d152531d6e5de42b65e295b6f25b1ee3 /lua/clever_f/feedback_service.lua | |
| parent | b3cf7ada375183a24f238a3a377b7de2c5671e92 (diff) | |
Extract feedback cleanup release
Diffstat (limited to 'lua/clever_f/feedback_service.lua')
| -rw-r--r-- | lua/clever_f/feedback_service.lua | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua index d5b7e74..492d4a6 100644 --- a/lua/clever_f/feedback_service.lua +++ b/lua/clever_f/feedback_service.lua @@ -533,13 +533,25 @@ local function release_highlight_timer(record, identity) return record.host:stop_timer(identity) end +function FeedbackService:release_transition_cleanup(cleanup) + if type(cleanup) ~= "table" then + fail("feedback transition cleanup must be a table", 2) + end + local record = service_records[self] + release_finalizers(record, cleanup.finalizers or {}) + release_highlight_timer(record, cleanup.highlight_timer) + release_target_overlays(record, cleanup.target_overlays or {}) + if #(cleanup.finalizers or {}) > 0 then + record.owned_finalizer = nil + end + return cleanup +end + function FeedbackService:full_finalize(window) local record = service_records[self] window = window or record.host:read_window() local cleanup = record.transitions:FullFinalization(window) - release_finalizers(record, cleanup.finalizers) - release_highlight_timer(record, cleanup.highlight_timer) - release_target_overlays(record, cleanup.target_overlays) + self:release_transition_cleanup(cleanup) record.owned_finalizer = nil return cleanup end |
