[Dextrose] [PATCH sugar] Flickering and unknown icons in the window bar #870

Aleksey Lim alsroot at member.fsf.org
Thu Jan 20 14:42:37 EST 2011


---
 src/jarabe/desktop/activitieslist.py |    3 ++-
 src/jarabe/desktop/favoritesview.py  |    1 +
 src/jarabe/desktop/meshbox.py        |    1 +
 src/jarabe/frame/activitiestray.py   |    1 +
 src/jarabe/journal/misc.py           |    4 ++--
 src/jarabe/model/shell.py            |    9 ++++-----
 src/jarabe/view/launcher.py          |    9 ++++++---
 src/jarabe/view/palettes.py          |    1 +
 8 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py
index c3a0775..cf5c131 100644
--- a/src/jarabe/desktop/activitieslist.py
+++ b/src/jarabe/desktop/activitieslist.py
@@ -149,7 +149,8 @@ class ActivitiesTreeView(gtk.TreeView):
         client = gconf.client_get_default()
         xo_color = XoColor(client.get_string('/desktop/sugar/user/color'))
 
-        launcher.add_launcher(activity_id, bundle.get_icon(), xo_color)
+        launcher.add_launcher(activity_id,
+                bundle.get_bundle_id(), bundle.get_icon(), xo_color)
         activityfactory.create(bundle, ActivityHandle(activity_id))
 
     def set_filter(self, query):
diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py
index c59335a..2219be3 100644
--- a/src/jarabe/desktop/favoritesview.py
+++ b/src/jarabe/desktop/favoritesview.py
@@ -492,6 +492,7 @@ class ActivityIcon(CanvasIcon):
 
             activity_id = activityfactory.create_activity_id()
             launcher.add_launcher(activity_id,
+                                  self._activity_info.get_bundle_id(),
                                   self._activity_info.get_icon(),
                                   xo_color)
 
diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py
index fb4be4e..621d4b2 100644
--- a/src/jarabe/desktop/meshbox.py
+++ b/src/jarabe/desktop/meshbox.py
@@ -829,6 +829,7 @@ class ActivityView(hippo.CanvasBox):
         bundle = bundleregistry.get_registry().get_bundle(bundle_id)
 
         launcher.add_launcher(self._model.get_id(),
+                              bundle.get_bundle_id(),
                               bundle.get_icon(),
                               self._model.get_color())
 
diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py
index 370572c..b20ff8e 100644
--- a/src/jarabe/frame/activitiestray.py
+++ b/src/jarabe/frame/activitiestray.py
@@ -183,6 +183,7 @@ class ActivityInviteButton(BaseInviteButton):
         bundle = registry.get_bundle(self._bundle_id)
 
         launcher.add_launcher(self._activity_model.get_id(),
+                              bundle.get_bundle_id(),
                               bundle.get_icon(),
                               self._activity_model.get_color())
 
diff --git a/src/jarabe/journal/misc.py b/src/jarabe/journal/misc.py
index 4a2211f..0ad70e3 100644
--- a/src/jarabe/journal/misc.py
+++ b/src/jarabe/journal/misc.py
@@ -231,8 +231,8 @@ def resume(metadata, bundle_id=None):
             object_id = model.copy(metadata, '/')
 
         if activity_id:
-            launcher.add_launcher(activity_id, bundle.get_icon(),
-                    get_icon_color(metadata))
+            launcher.add_launcher(activity_id, bundle.get_bundle_id(),
+                    bundle.get_icon(), get_icon_color(metadata))
             handle = ActivityHandle(object_id=object_id,
                                     activity_id=activity_id)
             activityfactory.create(bundle, handle)
diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py
index b9cb0c2..f99af2d 100644
--- a/src/jarabe/model/shell.py
+++ b/src/jarabe/model/shell.py
@@ -601,11 +601,10 @@ class ShellModel(gobject.GObject):
                              " was not found in the bundle registry."
                              % service_name)
         home_activity = Activity(activity_info, activity_id)
-        self._add_activity(home_activity)
-
-        self._set_active_activity(home_activity)
-
-        self.emit('launch-started', home_activity)
+        if home_activity is None:
+            self._add_activity(home_activity)
+            self._set_active_activity(home_activity)
+            self.emit('launch-started', home_activity)
 
         # FIXME: better learn about finishing processes by receiving a signal.
         # Now just check whether an activity has a window after ~90sec
diff --git a/src/jarabe/view/launcher.py b/src/jarabe/view/launcher.py
index 89251e5..3fcf735 100644
--- a/src/jarabe/view/launcher.py
+++ b/src/jarabe/view/launcher.py
@@ -32,7 +32,7 @@ from jarabe.view.pulsingicon import CanvasPulsingIcon
 
 class LaunchWindow(gtk.Window):
 
-    def __init__(self, activity_id, icon_path, icon_color):
+    def __init__(self, activity_id, bundle_id, icon_path, icon_color):
         gobject.GObject.__init__(self)
 
         self.props.type_hint = gtk.gdk.WINDOW_TYPE_HINT_NORMAL
@@ -51,6 +51,7 @@ class LaunchWindow(gtk.Window):
         canvas.pack_start(header, expand=False)
 
         self._activity_id = activity_id
+        self._bundle_id = bundle_id
         self._box = LaunchBox(activity_id, icon_path, icon_color)
         box = hippo.Canvas()
         box.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color())
@@ -88,6 +89,7 @@ class LaunchWindow(gtk.Window):
         self.resize(gtk.gdk.screen_width(), gtk.gdk.screen_height())
 
     def __realize_cb(self, widget):
+        wm.set_bundle_id(widget.window, str(self._bundle_id)):
         wm.set_activity_id(widget.window, str(self._activity_id))
         widget.window.property_change('_SUGAR_WINDOW_TYPE', 'STRING', 8,
                                       gtk.gdk.PROP_MODE_REPLACE, 'launcher')
@@ -163,13 +165,13 @@ def setup():
     model.connect('launch-completed', __launch_completed_cb)
 
 
-def add_launcher(activity_id, icon_path, icon_color):
+def add_launcher(activity_id, bundle_id, icon_path, icon_color):
     model = shell.get_model()
 
     if model.get_launcher(activity_id) is not None:
         return
 
-    launch_window = LaunchWindow(activity_id, icon_path, icon_color)
+    launch_window = LaunchWindow(activity_id, bundle_id, icon_path, icon_color)
     launch_window.show()
 
     model.register_launcher(activity_id, launch_window)
@@ -177,6 +179,7 @@ def add_launcher(activity_id, icon_path, icon_color):
 
 def __launch_started_cb(home_model, home_activity):
     add_launcher(home_activity.get_activity_id(),
+            home_activity.get_bundle_id(),
             home_activity.get_icon_path(), home_activity.get_icon_color())
 
 
diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py
index 5994c3d..f93399e 100644
--- a/src/jarabe/view/palettes.py
+++ b/src/jarabe/view/palettes.py
@@ -154,6 +154,7 @@ class ActivityPalette(Palette):
 
         activity_id = activityfactory.create_activity_id()
         launcher.add_launcher(activity_id,
+                              self._activity_info.get_bundle_id(),
                               self._activity_info.get_icon(),
                               xo_color)
 
-- 
1.7.3.4



More information about the Dextrose mailing list