From 08882de015e4384ff21f6e5d559862cebb377f2e Mon Sep 17 00:00:00 2001 From: Pootle daemon Date: Mon, 21 Mar 2011 11:06:00 +0000 Subject: Merge branch 'sucrose-0.84' of git.sugarlabs.org:sugar-toolkit/mainline into sucrose-0.84 --- diff --git a/configure.ac b/configure.ac index 6a394cc..3583c04 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([sugar-toolkit],[0.84.16],[],[sugar-toolkit]) +AC_INIT([sugar-toolkit],[0.84.17],[],[sugar-toolkit]) AC_PREREQ([2.59]) diff --git a/src/sugar/wm.py b/src/sugar/wm.py index 4ec9a12..1ca9851 100644 --- a/src/sugar/wm.py +++ b/src/sugar/wm.py @@ -20,10 +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): + # pylint: disable=W0622 + 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: @@ -31,16 +58,17 @@ 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: return prop_info[2] 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) + -- cgit v0.9.1