diff --git a/spikeinterface_gui/backend_qt.py b/spikeinterface_gui/backend_qt.py index d106a38..9adda83 100644 --- a/spikeinterface_gui/backend_qt.py +++ b/spikeinterface_gui/backend_qt.py @@ -255,6 +255,23 @@ def create_main_layout(self): # make visible the first of each zone self.docks[view_name0].raise_() + def showEvent(self, event): + super().showEvent(event) + if not hasattr(self, '_splitters_equalized'): + self._splitters_equalized = True + # On macOS, the native Cocoa window system performs a layout pass after + # Qt's showEvent, overwriting any sizes set synchronously. A deferred + # call via QTimer.singleShot ensures resizeDocks runs after both Qt and + # the macOS window server have finished laying out the docks. + QT.QTimer.singleShot(0, self._equalize_dock_sizes) + + def _equalize_dock_sizes(self): + all_docks = [dock for dock in self.docks.values() if dock.isVisible()] + if all_docks: + size_weight = 1 + self.resizeDocks(all_docks, [size_weight] * len(all_docks), QT.Qt.Horizontal) + self.resizeDocks(all_docks, [size_weight] * len(all_docks), QT.Qt.Vertical) + def make_half_layout(self, widgets_zone, left_or_right): """ Function contains the logic for the greedy layout. Given the 2x2 box of zones diff --git a/spikeinterface_gui/controller.py b/spikeinterface_gui/controller.py index 3ddea2d..e150888 100644 --- a/spikeinterface_gui/controller.py +++ b/spikeinterface_gui/controller.py @@ -600,7 +600,7 @@ def set_visible_unit_ids(self, visible_unit_ids): def get_visible_unit_ids(self): """Get list of visible unit_ids""" - return self._visible_unit_ids + return list(self._visible_unit_ids) def get_visible_unit_indices(self): """Get list of indices of visible units"""