rem: if (!handledRequest) { notifySelection(event, None); }
context: handleRequestEvent(XEvent *event){    SelectionHandler *handler;    WMArrayIterator iter;    WMArray *copy;    Bool handledRequest = False;    WM_ITERATE_ARRAY(selHandlers, handler, iter) {	switch (event->type) {	 case SelectionClear:	    if (W_VIEW_DRAWABLE(handler->view) 		!= event->xselectionclear.window) {		break;	    }	    handler->flags.done_pending = 1;	    if (handler->procs.selectionLost)		handler->procs.selectionLost(handler->view,					     handler->selection,					     handler->data);	    handler->flags.done_pending = 0;	    handler->flags.delete_pending = 1;	    break;	 case SelectionRequest:	    	    if (W_VIEW_DRAWABLE(handler->view)		!= event->xselectionrequest.owner) {		break;	    }	    if (handler->procs.convertSelection != NULL		&& handler->selection == event->xselectionrequest.selection) {		Atom atom;		WMData *data;		Atom prop;		/* they're requesting for something old.. maybe another handler		 * can handle it */		if (event->xselectionrequest.time < handler->timestamp		    && event->xselectionrequest.time != CurrentTime) {		    break;		}		handler->flags.done_pending = 1;		data = handler->procs.convertSelection(handler->view,						     handler->selection,						     event->xselectionrequest.target,						     handler->data,						     &atom);		if (data == NULL) {		    break;		}	    		handledRequest = True;						prop = event->xselectionrequest.property;		/* obsolete clients that don't set the property field */		if (prop == None)		    prop = event->xselectionrequest.target;				if (!writeSelection(event->xselectionrequest.display,				    event->xselectionrequest.requestor,				    prop, atom, data)) {		    WMReleaseData(data);		    notifySelection(event, None);		    break;		}		WMReleaseData(data);				notifySelection(event, prop);				if (handler->procs.selectionDone != NULL) {		    handler->procs.selectionDone(handler->view,					 handler->selection,					 event->xselectionrequest.target,					 handler->data);		}				handler->flags.done_pending = 0;				if (!handledRequest) {		    notifySelection(event, None);		}	    }	    break;	}    }    /* delete handlers */    copy = WMDuplicateArray(selHandlers);    WM_ITERATE_ARRAY(copy, handler, iter) {        if (handler && handler->flags.delete_pending) {            WMDeleteSelectionHandler(handler->view, handler->selection,                                     handler->timestamp);        }    }    WMFreeArray(copy);}