Skip to content

Commit 9852199

Browse files
committed
Merge: fix delete(cell) Listeners_ release pattern
2 parents 485f2e2 + 889562c commit 9852199

4 files changed

Lines changed: 44 additions & 11 deletions

File tree

libs/FastSenseCompanion/DashboardListPane.m

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,14 @@ function detach(obj)
131131
delete(obj.DebounceTimer_);
132132
end
133133
obj.DebounceTimer_ = [];
134-
delete(obj.Listeners_);
134+
% delete(cellArray) is interpreted as filename-delete by
135+
% MATLAB ("Name must be a text scalar"). Iterate explicitly.
136+
for ii = 1:numel(obj.Listeners_)
137+
lh = obj.Listeners_{ii};
138+
if isobject(lh) && isvalid(lh)
139+
delete(lh);
140+
end
141+
end
135142
obj.Listeners_ = {};
136143
end
137144

libs/FastSenseCompanion/FastSenseCompanion.m

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,18 @@ function close(obj)
223223
catch err
224224
fprintf(2, '[FastSenseCompanion] InspectorPane.detach failed: %s\n', err.message);
225225
end
226-
% Release orchestrator-level listeners.
227-
try
228-
delete(obj.Listeners_);
229-
catch err
230-
fprintf(2, '[FastSenseCompanion] Listeners delete failed: %s\n', err.message);
226+
% Release orchestrator-level listeners. delete(cellArray) is
227+
% interpreted as filename-delete by MATLAB ("Name must be a
228+
% text scalar"). Iterate explicitly.
229+
for ii = 1:numel(obj.Listeners_)
230+
try
231+
lh = obj.Listeners_{ii};
232+
if isobject(lh) && isvalid(lh)
233+
delete(lh);
234+
end
235+
catch err
236+
fprintf(2, '[FastSenseCompanion] Listener[%d] delete failed: %s\n', ii, err.message);
237+
end
231238
end
232239
obj.Listeners_ = {};
233240
% Always delete the uifigure last and unconditionally — this is
@@ -282,8 +289,14 @@ function setProject(obj, dashboards, registry)
282289
% before re-registering. Without this, every setProject() call
283290
% doubles the handler count for InspectorStateChanged,
284291
% OpenAdHocPlotRequested, and the three pane event listeners
285-
% (COMPSHELL-05).
286-
delete(obj.Listeners_);
292+
% (COMPSHELL-05). Iterate cell explicitly because
293+
% delete(cellArray) is interpreted as filename-delete by MATLAB.
294+
for ii = 1:numel(obj.Listeners_)
295+
lh = obj.Listeners_{ii};
296+
if isobject(lh) && isvalid(lh)
297+
delete(lh);
298+
end
299+
end
287300
obj.Listeners_ = {};
288301
% Re-wire pane event listeners (detach cleared them)
289302
obj.Listeners_{end+1} = addlistener(obj.ListPane_, 'DashboardSelected', ...

libs/FastSenseCompanion/InspectorPane.m

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,14 @@ function attach(obj, parentPanel, hFig, catalogPane, orchestrator, theme)
7070

7171
function detach(obj)
7272
%DETACH Release listeners and clear per-state handles.
73-
delete(obj.Listeners_);
73+
% delete(cellArray) is interpreted as filename-delete by MATLAB
74+
% ("Name must be a text scalar"). Iterate explicitly.
75+
for ii = 1:numel(obj.Listeners_)
76+
lh = obj.Listeners_{ii};
77+
if isobject(lh) && isvalid(lh)
78+
delete(lh);
79+
end
80+
end
7481
obj.Listeners_ = {};
7582
obj.hSparkAxes_ = []; obj.hSparkPanel_ = []; obj.hOpenDetail_ = [];
7683
obj.hPlayBtn_ = []; obj.hPauseBtn_ = []; obj.hChipsGrid_ = [];

libs/FastSenseCompanion/TagCatalogPane.m

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,14 @@ function detach(obj)
186186
delete(obj.DebounceTimer_);
187187
end
188188
obj.DebounceTimer_ = [];
189-
% Release listeners
190-
delete(obj.Listeners_);
189+
% delete(cellArray) is interpreted as filename-delete by MATLAB
190+
% ("Name must be a text scalar"). Iterate explicitly.
191+
for ii = 1:numel(obj.Listeners_)
192+
lh = obj.Listeners_{ii};
193+
if isobject(lh) && isvalid(lh)
194+
delete(lh);
195+
end
196+
end
191197
obj.Listeners_ = {};
192198
end
193199

0 commit comments

Comments
 (0)