Files
app-store-optimization/skills/loki-mode/benchmarks/results/2026-01-05-10-37-54/swebench-loki-patches/matplotlib__matplotlib-25311.patch

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.