Ticket #1123: wm.patch

File wm.patch, 2.4 KB (added by benzea, 15 years ago)

ok, newer better

  • src/sugar/wm.py

    diff --git a/src/sugar/wm.py b/src/sugar/wm.py
    index d813d94..f781844 100644
    a b UNSTABLE. Used only internally by Activity and jarabe. 
    2020"""
    2121
    2222import gtk
     23import logging
    2324
     25def _property_get_trapped(window, prop, prop_type):
     26    gtk.gdk.error_trap_push()
     27
     28    prop_info = window.property_get('_SUGAR_ACTIVITY_ID', 'STRING')
     29
     30    # We just log a message
     31    error = gtk.gdk.error_trap_pop()
     32    if gtk.gdk.error_trap_pop():
     33        logging.debug('Recieved X Error (%i) while getting ' + \
     34                      'a property on a window' % error)
     35
     36    return prop_info
     37
     38def _property_change_trapped(window, prop, prop_type, format, mode, data):
     39    gtk.gdk.error_trap_push()
     40
     41    window.property_change(prop, prop_type, format, mode, data)
     42
     43    error = gtk.gdk.error_trap_pop()
     44    if error:
     45        logging.debug('Recieved X Error (%i) while setting ' + \
     46                      'a property on a window' % error)
     47        raise RuntimeError('Recieved X Error (%i) while setting ' + \
     48                           'a property on a window' % error)
     49   
    2450
    2551def get_activity_id(wnck_window):
    2652    window = gtk.gdk.window_foreign_new(wnck_window.get_xid())
    27     prop_info = window.property_get('_SUGAR_ACTIVITY_ID', 'STRING')
     53    prop_info = _property_get_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING')
    2854    if prop_info is None:
    2955        return None
    3056    else:
    def get_activity_id(wnck_window): 
    3359
    3460def get_bundle_id(wnck_window):
    3561    window = gtk.gdk.window_foreign_new(wnck_window.get_xid())
    36     prop_info = window.property_get('_SUGAR_BUNDLE_ID', 'STRING')
     62    prop_info = _property_get_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING')
    3763    if prop_info is None:
    3864        return None
    3965    else:
    def get_bundle_id(wnck_window): 
    4167
    4268
    4369def set_activity_id(window, activity_id):
    44     window.property_change('_SUGAR_ACTIVITY_ID', 'STRING', 8,
    45                            gtk.gdk.PROP_MODE_REPLACE, activity_id)
     70    _property_change_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING', 8,
     71                             gtk.gdk.PROP_MODE_REPLACE, activity_id)
    4672
    4773
    4874def set_bundle_id(window, bundle_id):
    49     window.property_change('_SUGAR_BUNDLE_ID', 'STRING', 8,
    50                            gtk.gdk.PROP_MODE_REPLACE, bundle_id)
     75    _property_change_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING', 8,
     76                             gtk.gdk.PROP_MODE_REPLACE, bundle_id)
     77