From 1afbd81dd744f5c98c24a0d24ca4e3158cfbe1b7 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauld.mccarthy@gmail.com>
Date: Tue, 8 Mar 2016 11:23:44 +0000
Subject: [PATCH] Little bugfix in SliceCanvas (listener being called after
 destroy). OverlayList.find made a bit smarter - ignores NIFTI file
 extensions.

---
 fsl/fsleyes/gl/slicecanvas.py | 17 +++++++++--------
 fsl/fsleyes/overlay.py        | 21 ++++++++++++++++++++-
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/fsl/fsleyes/gl/slicecanvas.py b/fsl/fsleyes/gl/slicecanvas.py
index f38983d67..ef31b1c1e 100644
--- a/fsl/fsleyes/gl/slicecanvas.py
+++ b/fsl/fsleyes/gl/slicecanvas.py
@@ -245,14 +245,15 @@ class SliceCanvas(props.HasProperties):
         :class:`.DisplayContext`, and :class:`.Display` instances, and
         destroys OpenGL representations of all overlays.
         """
-        self.removeListener('zax',           self.name)
-        self.removeListener('pos',           self.name)
-        self.removeListener('displayBounds', self.name)
-        self.removeListener('showCursor',    self.name)
-        self.removeListener('invertX',       self.name)
-        self.removeListener('invertY',       self.name)
-        self.removeListener('zoom',          self.name)
-        self.removeListener('renderMode',    self.name)
+        self.removeListener('zax',             self.name)
+        self.removeListener('pos',             self.name)
+        self.removeListener('displayBounds',   self.name)
+        self.removeListener('showCursor',      self.name)
+        self.removeListener('invertX',         self.name)
+        self.removeListener('invertY',         self.name)
+        self.removeListener('zoom',            self.name)
+        self.removeListener('renderMode',      self.name)
+        self.removeListener('resolutionLimit', self.name)
 
         self.overlayList.removeListener('overlays',     self.name)
         self.displayCtx .removeListener('bounds',       self.name)
diff --git a/fsl/fsleyes/overlay.py b/fsl/fsleyes/overlay.py
index a90abfc50..daad912f8 100644
--- a/fsl/fsleyes/overlay.py
+++ b/fsl/fsleyes/overlay.py
@@ -65,6 +65,7 @@ import os.path as op
 import props
 
 import fsl.data.strings   as strings
+import fsl.data.image     as fslimage
 import fsl.utils.settings as fslsettings
 import fsl.utils.status   as status
 import fsl.utils.async    as async
@@ -157,9 +158,27 @@ class OverlayList(props.HasProperties):
         """Returns the first overlay with the given ``name`` or ``dataSource``,
         or ``None`` if there is no overlay with said ``name``/``dataSource``.
         """
+
+        if name is None:
+            return None
+        
         for overlay in self.overlays:
-            if overlay.name == name or overlay.dataSource == name:
+
+            if overlay.name == name:
                 return overlay
+
+            if overlay.dataSource is None:
+                return None
+
+            # Ignore file extensions for NIFTI1 images.
+            if isinstance(overlay, fslimage.Image):
+                if fslimage.removeExt(overlay.dataSource) == \
+                   fslimage.removeExt(name):
+                    return overlay
+            else:
+                if overlay.dataSource == name:
+                    return overlay
+                
         return None
             
 
-- 
GitLab