diff --git a/fsl/fsleyes/controls/clusterpanel.py b/fsl/fsleyes/controls/clusterpanel.py index 717407cf48f56154a95960d078c39014d73b2970..c24ae0cc2b2979a3c1c52a97f18dbc03ec29803f 100644 --- a/fsl/fsleyes/controls/clusterpanel.py +++ b/fsl/fsleyes/controls/clusterpanel.py @@ -439,16 +439,26 @@ class ClusterPanel(fslpanel.FSLEyesPanel): # WidgetGrid panels for overlays # that have been removed from the # list. - for overlay in self.__featImages.keys(): + for overlay in list(self.__featImages.keys()): if overlay not in self._overlayList: - featImage = self.__featImages .pop(overlay) - grids = self.__clusterGrids.pop(featImage) - - for grid in grids: - if grid is not None: - self.__mainSizer.Detach(grid) - grid.Destroy() + featImage = self.__featImages.pop(overlay) + + # Has the feat image associated with + # this overlay also been removed? + if featImage is overlay or \ + featImage not in self._overlayList: + + # The grid widgets for the feat image + # associated with this overlay may + # have already been destroyed. + try: grids = self.__clusterGrids.pop(featImage) + except KeyError: grids = [] + + for grid in grids: + if grid is not None: + self.__mainSizer.Detach(grid) + grid.Destroy() self.__selectedOverlayChanged() self.__enableOverlayButtons()