From 29e7d8dd9ff592c45785ad0791573150a0845278 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 31 Mar 2025 22:09:22 +0100 Subject: [PATCH 1/3] Don't drag draggables on scroll events --- lib/matplotlib/offsetbox.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/offsetbox.py b/lib/matplotlib/offsetbox.py index 56b10c785ff9..f3506daea932 100644 --- a/lib/matplotlib/offsetbox.py +++ b/lib/matplotlib/offsetbox.py @@ -1486,7 +1486,15 @@ def finalize_offset(self): def __init__(self, ref_artist, use_blit=False): self.ref_artist = ref_artist if not ref_artist.pickable(): - ref_artist.set_picker(True) + ref_artist.set_picker( + lambda artist, mouseevent: ( + ( + artist.contains(mouseevent) and + mouseevent.name != "scroll_event" + ), + {} + ) + ) self.got_artist = False self._use_blit = use_blit and self.canvas.supports_blit callbacks = self.canvas.callbacks From c77e9d555de041df77650d798ef81e0f619cf15e Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 31 Mar 2025 22:27:55 +0100 Subject: [PATCH 2/3] Move picker to method --- lib/matplotlib/offsetbox.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lib/matplotlib/offsetbox.py b/lib/matplotlib/offsetbox.py index f3506daea932..28f91553819e 100644 --- a/lib/matplotlib/offsetbox.py +++ b/lib/matplotlib/offsetbox.py @@ -1486,15 +1486,7 @@ def finalize_offset(self): def __init__(self, ref_artist, use_blit=False): self.ref_artist = ref_artist if not ref_artist.pickable(): - ref_artist.set_picker( - lambda artist, mouseevent: ( - ( - artist.contains(mouseevent) and - mouseevent.name != "scroll_event" - ), - {} - ) - ) + ref_artist.set_picker(self._picker) self.got_artist = False self._use_blit = use_blit and self.canvas.supports_blit callbacks = self.canvas.callbacks @@ -1508,6 +1500,10 @@ def __init__(self, ref_artist, use_blit=False): ] ] + @staticmethod + def _picker(artist, mouseevent): + return (artist.contains(mouseevent) and mouseevent.name != "scroll_event"), {} + # A property, not an attribute, to maintain picklability. canvas = property(lambda self: self.ref_artist.get_figure(root=True).canvas) cids = property(lambda self: [ From 0622c25348b42decb1de3400efe90b20e755d8b9 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 2 Apr 2025 15:44:58 +0100 Subject: [PATCH 3/3] Add comment to new method --- lib/matplotlib/offsetbox.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/matplotlib/offsetbox.py b/lib/matplotlib/offsetbox.py index 28f91553819e..7ac89450c813 100644 --- a/lib/matplotlib/offsetbox.py +++ b/lib/matplotlib/offsetbox.py @@ -1502,6 +1502,7 @@ def __init__(self, ref_artist, use_blit=False): @staticmethod def _picker(artist, mouseevent): + # A custom picker to prevent dragging on mouse scroll events return (artist.contains(mouseevent) and mouseevent.name != "scroll_event"), {} # A property, not an attribute, to maintain picklability. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy