diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-09-14 12:24:14 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-09-14 12:24:14 (GMT) |
commit | d053a7f2191033922445ed5d2e566a0ac7a428be (patch) | |
tree | 228bcfd40d21fc46bdc60fcb6730ef74c80e336c /shell | |
parent | fe69dec4ad5b6d117006f9038afad9e4c973814c (diff) |
Make the popup logic more solid
Diffstat (limited to 'shell')
-rw-r--r-- | shell/home/FriendsGroup.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/shell/home/FriendsGroup.py b/shell/home/FriendsGroup.py index 2ff9a03..7ba1a3b 100644 --- a/shell/home/FriendsGroup.py +++ b/shell/home/FriendsGroup.py @@ -21,6 +21,7 @@ class FriendsGroup(goocanvas.Group): def __init__(self, shell, friends): goocanvas.Group.__init__(self) + self._popup = None self._shell = shell self._icon_layout = IconLayout(1200, 900) self._friends = friends @@ -50,7 +51,8 @@ class FriendsGroup(goocanvas.Group): def _friend_popup_cb(self, icon, x1, y1, x2, y2): grid = Grid() - self._popup = BuddyPopup(self._shell, grid, icon.get_friend()) + if not self._popup: + self._popup = BuddyPopup(self._shell, grid, icon.get_friend()) [grid_x1, grid_y1] = grid.convert_from_screen(x1, y1) [grid_x2, grid_y2] = grid.convert_from_screen(x2, y2) @@ -72,6 +74,10 @@ class FriendsGroup(goocanvas.Group): self._popup.show() - def _friend_popdown_cb(self, friend): - self._popup.popdown() + def _popup_destroy_cb(self, popup): self._popup = None + + def _friend_popdown_cb(self, friend): + if self._popup: + self._popup.connect('destroy', self._popup_destroy_cb) + self._popup.popdown() |