diff options
author | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-09-01 09:28:07 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-09-01 09:28:07 (GMT) |
commit | e3415afbc533fa4224dee6733a1180130125b061 (patch) | |
tree | 556d4d0b91bd759783286a4b04b11893a61e0c4a /src | |
parent | 929ce5a3cbf972e0fd52d06bb811d5c16bbba3f0 (diff) | |
parent | 0991081eff41248aa860f141bdaec3caab1870e1 (diff) |
Merge branch 'master' of gitorious@git.sugarlabs.org:sugar-toolkit/mainline
Diffstat (limited to 'src')
-rw-r--r-- | src/sugar/bundle/activitybundle.py | 3 | ||||
-rw-r--r-- | src/sugar/wm.py | 39 |
2 files changed, 36 insertions, 6 deletions
diff --git a/src/sugar/bundle/activitybundle.py b/src/sugar/bundle/activitybundle.py index 36e3764..8aa8fb0 100644 --- a/src/sugar/bundle/activitybundle.py +++ b/src/sugar/bundle/activitybundle.py @@ -400,3 +400,6 @@ class ActivityBundle(Bundle): os.remove(path) self._uninstall(install_path) + + def is_user_activity(self): + return self.get_path().startswith(env.get_user_activities_path()) diff --git a/src/sugar/wm.py b/src/sugar/wm.py index d813d94..4af6667 100644 --- a/src/sugar/wm.py +++ b/src/sugar/wm.py @@ -20,11 +20,37 @@ UNSTABLE. Used only internally by Activity and jarabe. """ import gtk +import logging +def _property_get_trapped(window, prop, prop_type): + gtk.gdk.error_trap_push() + + prop_info = window.property_get(prop, prop_type) + + # We just log a message + error = gtk.gdk.error_trap_pop() + if error: + logging.debug('Received X Error (%i) while getting ' + 'a property on a window' % error) + + return prop_info + +def _property_change_trapped(window, prop, prop_type, format, mode, data): + gtk.gdk.error_trap_push() + + window.property_change(prop, prop_type, format, mode, data) + + error = gtk.gdk.error_trap_pop() + if error: + logging.debug('Received X Error (%i) while setting ' + 'a property on a window' % error) + raise RuntimeError('Received X Error (%i) while setting ' + 'a property on a window' % error) + def get_activity_id(wnck_window): window = gtk.gdk.window_foreign_new(wnck_window.get_xid()) - prop_info = window.property_get('_SUGAR_ACTIVITY_ID', 'STRING') + prop_info = _property_get_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING') if prop_info is None: return None else: @@ -33,7 +59,7 @@ def get_activity_id(wnck_window): def get_bundle_id(wnck_window): window = gtk.gdk.window_foreign_new(wnck_window.get_xid()) - prop_info = window.property_get('_SUGAR_BUNDLE_ID', 'STRING') + prop_info = _property_get_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING') if prop_info is None: return None else: @@ -41,10 +67,11 @@ def get_bundle_id(wnck_window): def set_activity_id(window, activity_id): - window.property_change('_SUGAR_ACTIVITY_ID', 'STRING', 8, - gtk.gdk.PROP_MODE_REPLACE, activity_id) + _property_change_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING', 8, + gtk.gdk.PROP_MODE_REPLACE, activity_id) def set_bundle_id(window, bundle_id): - window.property_change('_SUGAR_BUNDLE_ID', 'STRING', 8, - gtk.gdk.PROP_MODE_REPLACE, bundle_id) + _property_change_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING', 8, + gtk.gdk.PROP_MODE_REPLACE, bundle_id) + |