From 5bcb8faf44dbfe5cd6e5f304ad8f7e63c61d2349 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Mon, 02 Mar 2009 15:33:38 +0000 Subject: Don't open a launcher window when that activity is already running #426 --- (limited to 'src') diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index 9669d75..0f842c8 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -526,6 +526,13 @@ class ActivityIcon(CanvasIcon): self.palette.popdown(immediate=True) if self._journal_entries: entry = self._journal_entries[0] + + shell_model = shell.get_model() + activity = shell_model.get_activity_by_id(entry['activity_id']) + if activity: + activity.get_window().activate(gtk.get_current_event_time()) + return + launcher.add_launcher(entry['activity_id'], self._activity_info.get_icon(), XoColor(entry.get('icon-color', ''))) diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py index 9c5aae7..fcdb613 100644 --- a/src/jarabe/frame/activitiestray.py +++ b/src/jarabe/frame/activitiestray.py @@ -165,6 +165,13 @@ class ActivityInviteButton(BaseInviteButton): def _launch(self): """Join the activity in the invite.""" + + shell_model = shell.get_model() + activity = shell_model.get_activity_by_id(self._activity_model.get_id()) + if activity: + activity.get_window().activate(gtk.get_current_event_time()) + return + registry = bundleregistry.get_registry() bundle = registry.get_bundle(self._bundle_id) diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py index 561cbf6..cfc49ab 100644 --- a/src/jarabe/model/shell.py +++ b/src/jarabe/model/shell.py @@ -467,16 +467,17 @@ class ShellModel(gobject.GObject): home_activity.props.launching = False self.emit('launch-completed', home_activity) - startup_time = time.time() - home_activity.get_launch_time() - logging.debug('%s launched in %f seconds.' % - (home_activity.get_type(), startup_time)) + startup_time = time.time() - home_activity.get_launch_time() + logging.debug('%s launched in %f seconds.' % + (home_activity.get_type(), startup_time)) if self._active_activity is None: self._set_active_activity(home_activity) def _window_closed_cb(self, screen, window): if window.get_window_type() == wnck.WINDOW_NORMAL: - self._remove_activity_by_xid(window.get_xid()) + if self._get_activity_by_xid(window.get_xid()) is not None: + self._remove_activity_by_xid(window.get_xid()) def _get_activity_by_xid(self, xid): for home_activity in self._activities: -- cgit v0.9.1