62 lines
2.3 KiB
Diff
62 lines
2.3 KiB
Diff
# matplotlib__matplotlib-25311
|
|
# Loki Mode Multi-Agent Patch
|
|
# Attempts: 1
|
|
|
|
--- a/lib/matplotlib/offsetbox.py
|
|
+++ b/lib/matplotlib/offsetbox.py
|
|
@@ -1440,6 +1440,28 @@ class DraggableBase:
|
|
self._use_blit = use_blit and self.canvas.supports_blit
|
|
self.cids = [
|
|
self.canvas.mpl_connect('pick_event', self.on_pick),
|
|
+ self.canvas.mpl_connect('button_release_event', self.on_release),
|
|
+ ]
|
|
+
|
|
+ def __getstate__(self):
|
|
+ state = self.__dict__.copy()
|
|
+ # Remove unpicklable canvas reference and event connection IDs
|
|
+ state.pop('canvas', None)
|
|
+ state.pop('cids', None)
|
|
+ state['_restore_draggable'] = True
|
|
+ return state
|
|
+
|
|
+ def __setstate__(self, state):
|
|
+ restore_draggable = state.pop('_restore_draggable', False)
|
|
+ self.__dict__.update(state)
|
|
+ # Canvas and cids will be restored when set_draggable is called again
|
|
+ self.canvas = None
|
|
+ self.cids = []
|
|
+ if restore_draggable:
|
|
+ # Mark that draggable needs to be reconnected
|
|
+ # This will be handled by the ref artist's figure when shown
|
|
+ self._needs_reconnect = True
|
|
+ else:
|
|
self.canvas.mpl_connect('button_release_event', self.on_release),
|
|
]
|
|
|
|
--- a/lib/matplotlib/legend.py
|
|
+++ b/lib/matplotlib/legend.py
|
|
@@ -600,6 +600,25 @@ class Legend(Artist):
|
|
self._draggable = None
|
|
self.set_draggable(state=draggable)
|
|
|
|
+ def __getstate__(self):
|
|
+ state = self.__dict__.copy()
|
|
+ # Store whether legend was draggable so it can be restored
|
|
+ if self._draggable is not None:
|
|
+ state['_draggable_state'] = {
|
|
+ 'use_blit': self._draggable._use_blit,
|
|
+ 'update': self._draggable._update,
|
|
+ }
|
|
+ state['_draggable'] = None
|
|
+ return state
|
|
+
|
|
+ def __setstate__(self, state):
|
|
+ draggable_state = state.pop('_draggable_state', None)
|
|
+ self.__dict__.update(state)
|
|
+ if draggable_state is not None:
|
|
+ self.set_draggable(True, use_blit=draggable_state['use_blit'],
|
|
+ update=draggable_state['update'])
|
|
+
|
|
def _set_artist_props(self, a):
|
|
"""
|
|
Set the boilerplate props for artists added to Axes.
|