diff --git a/fsl/fsleyes/frame.py b/fsl/fsleyes/frame.py index 2cbf65ca3a0f31a2e6948fc3a1a9a42c113a4921..68cc9e71648f858df366885184788ec0cf41032f 100644 --- a/fsl/fsleyes/frame.py +++ b/fsl/fsleyes/frame.py @@ -276,6 +276,11 @@ class FSLEyesFrame(wx.Frame): self.__auiManager.Update() + # PlotPanels don't draw themselves + # automatically when created. + if isinstance(panel, views.PlotPanel): + panel.draw() + self.Thaw() diff --git a/fsl/fsleyes/views/histogrampanel.py b/fsl/fsleyes/views/histogrampanel.py index b33a1db5da6060a48366233a18d509da45f76005..4e3f799b0c09eb6d866644ef1b24817ff296c011 100644 --- a/fsl/fsleyes/views/histogrampanel.py +++ b/fsl/fsleyes/views/histogrampanel.py @@ -149,7 +149,9 @@ class HistogramPanel(plotpanel.OverlayPlotPanel): hss = [hs for hs in hss if hs is not None] for hs in hss: + hs.disableNotification('label') hs.label = self._displayCtx.getDisplay(hs.overlay).name + hs.enableNotification('label') if self.smooth: self.drawDataSeries(hss, diff --git a/fsl/fsleyes/views/plotpanel.py b/fsl/fsleyes/views/plotpanel.py index 4bf22abdd6a467cc2cb064aed674817a4a4489fc..8350d1797a7bafb136657bd93e20ff645b977e51 100644 --- a/fsl/fsleyes/views/plotpanel.py +++ b/fsl/fsleyes/views/plotpanel.py @@ -967,7 +967,7 @@ class OverlayPlotPanel(PlotPanel): allOverlays = self.__refreshProps.keys() allOverlays = set(allOverlays) - set(targetOverlays) allOverlays = list(allOverlays) + targetOverlays - + # Make sure that property listeners are not # registered on overlays that we're not # interested in, and are registered on those @@ -975,7 +975,7 @@ class OverlayPlotPanel(PlotPanel): # above ensures that we inadvertently don't # de-register a listener that we have just # registered, from the same target. - for overlay in allOverlays + targetOverlays: + for overlay in allOverlays: targets, propNames = self.__refreshProps.get(overlay, (None, None)) diff --git a/fsl/fsleyes/views/powerspectrumpanel.py b/fsl/fsleyes/views/powerspectrumpanel.py index 7b0fc151199897ece4863ecfe86d14730399ab7a..893eaebcec425812c6949f2565d7ac460ae9e9aa 100644 --- a/fsl/fsleyes/views/powerspectrumpanel.py +++ b/fsl/fsleyes/views/powerspectrumpanel.py @@ -159,7 +159,9 @@ class PowerSpectrumPanel(plotpanel.OverlayPlotPanel): pss = [ps for ps in pss if ps is not None] for ps in pss: - ps.label = ps.makeLabel() + ps.disableNotification('label') + ps.label = ps.makeLabel() + ps.enableNotification('label') self.drawDataSeries(extraSeries=pss, preproc=self.__prepareSpectrumData) diff --git a/fsl/fsleyes/views/timeseriespanel.py b/fsl/fsleyes/views/timeseriespanel.py index 616cbc4b1168f4460b0f2f48114e6a33989c262f..4bcf9475886fb3c41f079bb5911cf6eb1dcc74a3 100644 --- a/fsl/fsleyes/views/timeseriespanel.py +++ b/fsl/fsleyes/views/timeseriespanel.py @@ -210,7 +210,14 @@ class TimeSeriesPanel(plotpanel.OverlayPlotPanel): tss = tss[:i] + ts.getModelTimeSeries() + tss[i:] for ts in tss: + + # Changing the label might trigger + # another call to this method, as + # the PlotPanel might have a listener + # registered on it. + ts.disableNotification('label') ts.label = ts.makeLabel() + ts.enableNotification('label') self.drawDataSeries(extraSeries=tss, preproc=self.__prepareTimeSeriesData)