Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco 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)
commitd053a7f2191033922445ed5d2e566a0ac7a428be (patch)
tree228bcfd40d21fc46bdc60fcb6730ef74c80e336c /shell
parentfe69dec4ad5b6d117006f9038afad9e4c973814c (diff)
Make the popup logic more solid
Diffstat (limited to 'shell')
-rw-r--r--shell/home/FriendsGroup.py12
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()