@@ -264,14 +264,22 @@ def contains(self, mouseevent):
264
264
else :
265
265
pixels = self .figure .dpi / 72. * self .pickradius
266
266
267
- # Check for collision
268
- if self ._linestyle in ['None' ,None ]:
269
- # If no line, return the nearby point(s)
270
- d = (xt - mouseevent .x )** 2 + (yt - mouseevent .y )** 2
271
- ind , = np .nonzero (np .less_equal (d , pixels ** 2 ))
272
- else :
273
- # If line, return the nearby segment(s)
274
- ind = segment_hits (mouseevent .x ,mouseevent .y ,xt ,yt ,pixels )
267
+ # the math involved in checking for containment (here and inside of segment_hits) assumes
268
+ # that it is OK to overflow. In case the application has set the error flags such that
269
+ # an exception is raised on overflow, we temporarily set the appropriate error flags here
270
+ # and set them back when we are finished.
271
+ olderrflags = np .seterr (all = 'ignore' )
272
+ try :
273
+ # Check for collision
274
+ if self ._linestyle in ['None' ,None ]:
275
+ # If no line, return the nearby point(s)
276
+ d = (xt - mouseevent .x )** 2 + (yt - mouseevent .y )** 2
277
+ ind , = np .nonzero (np .less_equal (d , pixels ** 2 ))
278
+ else :
279
+ # If line, return the nearby segment(s)
280
+ ind = segment_hits (mouseevent .x ,mouseevent .y ,xt ,yt ,pixels )
281
+ finally :
282
+ np .seterr (** olderrflags )
275
283
276
284
ind += self .ind_offset
277
285
0 commit comments