Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/activity/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sugar/activity/activity.py')
-rw-r--r--src/sugar/activity/activity.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/sugar/activity/activity.py b/src/sugar/activity/activity.py
index d2c97e8..9809928 100644
--- a/src/sugar/activity/activity.py
+++ b/src/sugar/activity/activity.py
@@ -483,6 +483,7 @@ class Activity(Window, gtk.Container):
self._max_participants = 0
self._invites_queue = []
self._jobject = None
+ self._read_file_called = False
self._session = _get_session()
self._session.register(self)
@@ -560,8 +561,6 @@ class Activity(Window, gtk.Container):
# https://dev.laptop.org/ticket/3071
datastore.write(self._jobject)
- self.connect('map', self.__map_cb)
-
def get_active(self):
return self._active
@@ -605,6 +604,8 @@ class Activity(Window, gtk.Container):
One commonly used canvas is gtk.ScrolledWindow
"""
Window.set_canvas(self, canvas)
+ if not self._read_file_called:
+ canvas.connect('map', self.__canvas_map_cb)
def __session_quit_requested_cb(self, session):
self._quit_requested = True
@@ -617,9 +618,13 @@ class Activity(Window, gtk.Container):
def __session_quit_cb(self, client):
self._complete_close()
- def __map_cb(self, canvas):
- if self._jobject and self._jobject.file_path:
+ def __canvas_map_cb(self, canvas):
+ logging.debug('Activity.__canvas_map_cb')
+ if self._jobject and self._jobject.file_path and \
+ not self._read_file_called:
self.read_file(self._jobject.file_path)
+ self._read_file_called = True
+ canvas.disconnect_by_func(self.__canvas_map_cb)
def __jobject_create_cb(self):
pass