From d54e0bc816a97b08552e6caa21c76f1febff69e3 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sat, 23 Feb 2019 14:57:52 -0500 Subject: [PATCH] Backport PR #10776: fix FancyArrowPatch picker fails depending on arrowstyle --- lib/matplotlib/patches.py | 15 +++++-- .../test_path/arrow_contains_point.png | Bin 0 -> 17468 bytes lib/matplotlib/tests/test_path.py | 42 ++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_path/arrow_contains_point.png diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 91cfa2cc2f63..9395e136f5ea 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -131,9 +131,18 @@ def contains(self, mouseevent, radius=None): if self._contains is not None: return self._contains(self, mouseevent) radius = self._process_radius(radius) - inside = self.get_path().contains_point( - (mouseevent.x, mouseevent.y), self.get_transform(), radius) - return inside, {} + codes = self.get_path().codes + vertices = self.get_path().vertices + # if the current path is concatenated by multiple sub paths. + # get the indexes of the starting code(MOVETO) of all sub paths + idxs, = np.where(codes == Path.MOVETO) + # Don't split before the first MOVETO. + idxs = idxs[1:] + return any( + subpath.contains_point( + (mouseevent.x, mouseevent.y), self.get_transform(), radius) + for subpath in map( + Path, np.split(vertices, idxs), np.split(codes, idxs))), {} def contains_point(self, point, radius=None): """ diff --git a/lib/matplotlib/tests/baseline_images/test_path/arrow_contains_point.png b/lib/matplotlib/tests/baseline_images/test_path/arrow_contains_point.png new file mode 100644 index 0000000000000000000000000000000000000000..4e871e6cd02c8d09fca9155320bc4b5a12fd4c0b GIT binary patch literal 17468 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 ZRCJ3;DNYj-E~4;9O