Do not index icons by activity id. Raw X windows does not have one.

This commit is contained in:
Marco Pesenti Gritti 2007-06-01 14:19:14 +02:00
parent cd3efeba49
commit d4bd7a5d05
2 changed files with 22 additions and 10 deletions

View File

@ -72,6 +72,8 @@ class HomeActivity(gobject.GObject):
def set_service(self, service):
self._service = service
if not self._activity_id:
self._activity_id = service.get_id()
def get_service(self):
"""Retrieve the application's sugar introspection service
@ -154,6 +156,13 @@ class HomeActivity(gobject.GObject):
"""
return self._launch_time
def equals(self, activity):
if self._activity_id and activity.get_activity_id():
return self._activity_id == activity.get_activity_id()
if self._xid and activity.get_xid():
return self._xid == activity.get_xid()
return False
def do_set_property(self, pspec, value):
if pspec.name == 'launching':
self._launching = value

View File

@ -139,7 +139,7 @@ class ActivitiesDonut(hippo.CanvasBox, hippo.CanvasItem):
def __init__(self, shell, **kwargs):
hippo.CanvasBox.__init__(self, **kwargs)
self._activities = {}
self._activities = []
self._shell = shell
self._model = shell.get_model().get_home()
@ -147,6 +147,11 @@ class ActivitiesDonut(hippo.CanvasBox, hippo.CanvasItem):
self._model.connect('activity-removed', self._activity_removed_cb)
self._model.connect('active-activity-changed', self._activity_changed_cb)
def _get_icon_from_activity(self, activity):
for icon in self._activities:
if icon.get_activity().equals(activity):
return icon
def _activity_added_cb(self, model, activity):
self._add_activity(activity)
@ -157,20 +162,18 @@ class ActivitiesDonut(hippo.CanvasBox, hippo.CanvasItem):
self.emit_paint_needed(0, 0, -1, -1)
def _remove_activity(self, activity):
act_id = activity.get_activity_id()
if not self._activities.has_key(act_id):
return
icon = self._activities[act_id]
self.remove(icon)
icon._cleanup()
del self._activities[act_id]
icon = self._get_icon_from_activity(activity)
if icon:
self.remove(icon)
icon._cleanup()
self._activities.remove(icon)
def _add_activity(self, activity):
icon = ActivityIcon(activity)
icon.connect('activated', self._activity_icon_clicked_cb)
self.append(icon, hippo.PACK_FIXED)
self._activities[activity.get_activity_id()] = icon
self._activities.append(icon)
self.emit_paint_needed(0, 0, -1, -1)
@ -250,7 +253,7 @@ class ActivitiesDonut(hippo.CanvasBox, hippo.CanvasItem):
i = 0
for h_activity in self._model:
icon = self._activities[h_activity.get_activity_id()]
icon = self._get_icon_from_activity(h_activity)
[angle_start, angle_end] = self._get_angles(i)
angle = angle_start + (angle_end - angle_start) / 2