diff --git a/src/sugar/activity/activity.py b/src/sugar/activity/activity.py
index d4892d0..710dde5 100644
a
|
b
|
class Activity(Window, gtk.Container): |
356 | 356 | # https://dev.laptop.org/ticket/3071 |
357 | 357 | datastore.write(self._jobject) |
358 | 358 | |
| 359 | self._jobject.add_update_listener() |
| 360 | |
359 | 361 | def get_active(self): |
360 | 362 | return self._active |
361 | 363 | |
diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py
index 9502ad5..80dfc00 100644
a
|
b
|
class DSMetadata(gobject.GObject): |
129 | 129 | else: |
130 | 130 | return default |
131 | 131 | |
| 132 | def update(self, properties): |
| 133 | """Update all of the metadata""" |
| 134 | for (key, value) in properties.items(): |
| 135 | self[key] = value |
| 136 | |
132 | 137 | |
133 | 138 | class DSObject(object): |
134 | 139 | """A representation of a DS entry.""" |
… |
… |
class DSObject(object): |
140 | 145 | self._destroyed = False |
141 | 146 | self._owns_file = False |
142 | 147 | |
| 148 | if self.object_id is not None: |
| 149 | self.add_update_listener() |
| 150 | |
| 151 | def add_update_listener(self): |
| 152 | _get_data_store().connect_to_signal('Updated', |
| 153 | self.__object_updated_cb, |
| 154 | arg0=self.object_id) |
| 155 | |
| 156 | def __object_updated_cb(self, object_id): |
| 157 | properties = _get_data_store().get_properties(self.object_id, |
| 158 | byte_arrays=True) |
| 159 | self._metadata.update(properties) |
| 160 | |
143 | 161 | def get_metadata(self): |
144 | 162 | if self._metadata is None and not self.object_id is None: |
145 | 163 | properties = _get_data_store().get_properties(self.object_id) |