From e497eb15baea8b7f7429fb5c5cf34e45a83aeeed Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Mon, 29 Mar 2010 21:48:23 +0000 Subject: Fix keep functionality in activities Introduced by #1765 --- diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py index 26655a6..1618cef 100644 --- a/src/sugar/datastore/datastore.py +++ b/src/sugar/datastore/datastore.py @@ -139,6 +139,7 @@ class DSObject(object): """A representation of a DS entry.""" def __init__(self, object_id, metadata=None, file_path=None): + self._update_signal_match = None self.set_object_id(object_id) self._metadata = metadata self._file_path = file_path @@ -149,16 +150,18 @@ class DSObject(object): return self._object_id def set_object_id(self, object_id): + if self._update_signal_match is not None: + self._update_signal_match.remove() if object_id is not None: - _get_data_store().connect_to_signal('Updated', - self.__object_updated_cb, - arg0=object_id) + self._update_signal_match = _get_data_store().connect_to_signal( + 'Updated', self.__object_updated_cb, arg0=object_id) + self._object_id = object_id object_id = property(get_object_id, set_object_id) def __object_updated_cb(self, object_id): - properties = _get_data_store().get_properties(self.object_id, + properties = _get_data_store().get_properties(self._object_id, byte_arrays=True) self._metadata.update(properties) -- cgit v0.9.1