From 49dd11de789ee68962af03d821adbc0adde4e274 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Mon, 23 Feb 2009 18:11:14 +0000 Subject: Switch to existing instance of an activity if it's already running #410 --- (limited to 'src/jarabe') diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py index eb6cc80..e56c4d5 100644 --- a/src/jarabe/desktop/meshbox.py +++ b/src/jarabe/desktop/meshbox.py @@ -44,6 +44,7 @@ from jarabe.desktop.spreadlayout import SpreadLayout from jarabe.desktop import keydialog from jarabe.model import bundleregistry from jarabe.model import network +from jarabe.model import shell from jarabe.model.network import Settings from jarabe.model.network import WirelessSecurity @@ -467,16 +468,20 @@ class ActivityView(hippo.CanvasBox): icon.destroy() def _clicked_cb(self, item): - bundle_id = self._model.get_bundle_id() - - handle = ActivityHandle(self._model.get_id()) + shell_model = shell.get_model() + activity = shell_model.get_activity_by_id(self._model.get_id()) + if activity: + activity.get_window().activate(gtk.get_current_event_time()) + return + bundle_id = self._model.get_bundle_id() bundle = bundleregistry.get_registry().get_bundle(bundle_id) launcher.add_launcher(self._model.get_id(), bundle.get_icon(), self._model.get_color()) + handle = ActivityHandle(self._model.get_id()) activityfactory.create(bundle, handle) def set_filter(self, query): diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py index bf81dfd..561cbf6 100644 --- a/src/jarabe/model/shell.py +++ b/src/jarabe/model/shell.py @@ -169,7 +169,10 @@ class Activity(gobject.GObject): def get_xid(self): """Retrieve the X-windows ID of our root window""" - return self._window.get_xid() + if self._window is not None: + return self._window.get_xid() + else: + return None def get_window(self): """Retrieve the X-windows root window of this application -- cgit v0.9.1