Skip to content

Commit 2fdea10

Browse files
committed
fix: restore tables when merge view closes
1 parent 3c24bd6 commit 2fdea10

3 files changed

Lines changed: 26 additions & 1 deletion

File tree

docs/changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ behavior they verify rather than listed separately.
5858

5959
### Fixed
6060

61+
- Closing the Merge View now restores staged clusters to their original
62+
Cluster and Similarity View rows, selections, and table positions.
6163
- Show the active sort column and direction in Cluster and Similarity View
6264
headers.
6365
- Dragging Merge View rows now shows the cluster ID preview, insertion boundary,

phy/cluster/supervisor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1375,7 +1375,10 @@ def _cancel_merge_mode(self, close_view=True):
13751375
context = self.selection.state.merge.entry_snapshot.workflow_context
13761376
change = self.selection.cancel_merge_mode()
13771377
self._set_merge_mode_ui(False)
1378-
self._apply_selection_change(change, refresh_similarity=False, sync_presentation=False)
1378+
# Merge mode rebuilds Similarity while excluding every staged row. Rebuild it
1379+
# again from the restored Cluster role so the pre-merge Similarity rows are
1380+
# present before their selection and table context are restored.
1381+
self._apply_selection_change(change, refresh_similarity=True, sync_presentation=False)
13791382
self._restore_workflow_context(context)
13801383
if close_view:
13811384
self._close_merge_view()

phy/cluster/tests/test_supervisor.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,26 @@ def on_select(sender, cluster_ids):
396396
unconnect(on_select)
397397

398398

399+
def test_closing_merge_view_restores_original_table_rows(qtbot, supervisor):
400+
_select(supervisor, [10, 30], [20, 11])
401+
cluster_rows = supervisor.cluster_view.get_ids()
402+
similarity_rows = supervisor.similarity_view.get_ids()
403+
404+
supervisor.toggle_merge_mode()
405+
assert 20 not in supervisor.similarity_view.get_ids()
406+
assert 11 not in supervisor.similarity_view.get_ids()
407+
408+
supervisor.merge_view.dock.close()
409+
qtbot.wait(10)
410+
411+
assert not supervisor.selection.state.is_merge_mode
412+
assert supervisor.merge_view is None
413+
assert supervisor.cluster_view.get_ids() == cluster_rows
414+
assert supervisor.similarity_view.get_ids() == similarity_rows
415+
assert supervisor.cluster_view.get_selected_ids() == [10, 30]
416+
assert supervisor.similarity_view.get_selected_ids() == [20, 11]
417+
418+
399419
def test_supervisor_merge_view_opens_below_cluster_and_restores_position(qtbot, supervisor):
400420
_select(supervisor, [30], [20])
401421

0 commit comments

Comments
 (0)