def cleanup(self): # This is my attempt to cleanly close, in such a way that the icons do # not get an X window error for tid in self.tray.order: t = self.tray.tasks[tid] g = t.obj.query_tree() t.obj.unmap() t.obj.unmap_sub_windows() self.dsp.sync() t.obj.reparent(g.root.id, 0, 0) #Release the selection so that other system trays can start. #This would be done automatically by the X-server anyway when the screenlet exits request.SetSelectionOwner(display=self.selowin.display, onerror=None, window=0, selection=self.selection, time=X.CurrentTime) self.tr__sendEvent(self.root, self.manager, [X.CurrentTime, self.selection, 0], (X.StructureNotifyMask)) self.dsp.sync()
def set_selection_owner(self, selection, time, onerror=None): request.SetSelectionOwner(display=self.display, onerror=onerror, window=self.id, selection=selection, time=time)