You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Streamline Selection Decoupled from Undo/Redo: Removed SELECTION_CHANGE from the ActionType enum and its dispatch branches in perform_undo() and perform_redo(), so sphere selection changes (S / Shift+S) no longer occupy undo/redo slots. Removed save_selection_change_for_undo(), _undo_selection_action(), and _redo_selection_action() from StateManager, and removed the two save_selection_change_for_undo() calls in SelectionManager.apply_selection(), making streamline highlighting purely transient with no stack side effects.
Lowered Auto-Skip Threshold: Reduced AUTO_SKIP_THRESHOLD from 250,000 to 150,000 streamlines in utils.py, activating skip protection earlier for large tractograms.
Unified Skip-Force Boundary: Unified the skip-force boundary to >= across both _should_force_auto_skip_for_undo_redo() (state_manager) and _apply_filters_with_skip_protection() (roi_manager), ensuring consistent behaviour on undo, ROI mode changes, ROI removal, and clear-all-ROIs. _auto_calculate_skip_level() is now called only for tractograms at or above the threshold on undo; for smaller tractograms the user's skip preference is preserved and skip is not recalculated.
Bug Fixes
Fixed ROI drawing in sphere and rectangle modes where the mouse release event was not properly detected by the interactor's OnLeftButtonUp handler, causing the ROI to drag indefinitely when the cursor was still held at finalization.
Fixed ROI drawing cleanup and mode-switching issues when transitioning between sphere and rectangle drawing modes.
Added isinstance(act, vtk.vtkProp) guards to all four actor-handling methods to skip metadata entries stored alongside actual actors.
Fixed stale inversion state bleeding between TRX file sessions: _close_bundle() and on_finished() now reset _inversion_active, _inversion_keeper_indices, and remove the cyan contour actor from the VTK scene before loading new data.
Removed dead if self.tractogram_data: block from _trigger_load_streamlines() that incorrectly cleared ROI states and reset _skip_user_disabled on cancelled load operations; all post-load state setup is now handled exclusively by on_finished().
Testing
Updated test_state_manager.py to reflect the new 150K threshold and >= semantics: the "small" boundary test uses range(149999) and the "large" boundary test uses range(150000).