Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/model
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2008-08-27 12:15:37 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2008-08-27 12:22:47 (GMT)
commit480f4b3fdd52341ddfbe017b52fa999b24c2f595 (patch)
treef55b18bf0b5cbda1f4c5f9e70922a983597d888b /src/model
parent1f86199384d9b77a4d68381e888d6ce60f7b6f54 (diff)
Make the launcher window a normal window with a special
type property. Fix #7293 Patch by Eben, small cleanups by me
Diffstat (limited to 'src/model')
-rw-r--r--src/model/homeactivity.py8
-rw-r--r--src/model/homemodel.py15
2 files changed, 17 insertions, 6 deletions
diff --git a/src/model/homeactivity.py b/src/model/homeactivity.py
index fa50932..34ebda3 100644
--- a/src/model/homeactivity.py
+++ b/src/model/homeactivity.py
@@ -73,9 +73,11 @@ class HomeActivity(gobject.GObject):
dbus_interface="org.freedesktop.DBus")
def set_window(self, window):
- """An activity is 'launched' once we get its window."""
- if self._window or self._xid:
- raise RuntimeError("Activity is already launched!")
+ """Set the window for the activity
+
+ We allow resetting the window for an activity so that we
+ can replace the launcher once we get its real window.
+ """
if not window:
raise ValueError("window must be valid")
diff --git a/src/model/homemodel.py b/src/model/homemodel.py
index 8267584..d153f06 100644
--- a/src/model/homemodel.py
+++ b/src/model/homemodel.py
@@ -18,12 +18,21 @@ import logging
import gobject
import wnck
+import gtk
from sugar import wm
from sugar import activity
from model.homeactivity import HomeActivity
+def _get_sugar_window_type(self, window):
+ window = gtk.gdk.window_foreign_new(window.get_xid())
+ prop_info = window.property_get('_SUGAR_WINDOW_TYPE', 'STRING')
+ if prop_info is None:
+ return None
+ else:
+ return prop_info[2]
+
class HomeModel(gobject.GObject):
"""Model of the "Home" view (activity management)
@@ -152,7 +161,7 @@ class HomeModel(gobject.GObject):
def index(self, obj):
return self._activities.index(obj)
-
+
def _window_opened_cb(self, screen, window):
if window.get_window_type() == wnck.WINDOW_NORMAL:
home_activity = None
@@ -175,8 +184,8 @@ class HomeModel(gobject.GObject):
home_activity.set_window(window)
- home_activity.props.launching = False
- self.emit('launch-completed', home_activity)
+ if self._get_sugar_window_type(window) != 'launcher':
+ self.emit('launch-completed', home_activity)
if self._active_activity is None:
self._set_active_activity(home_activity)