X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/utils/blobdiff_plain/f8381827382941d2868dae6ea4fb8d92489f8c5d..4bf3e4f31e6361cd9dd111945a66f5cfba1e49da:/xcopy/xcopy.c diff --git a/xcopy/xcopy.c b/xcopy/xcopy.c index da1f6ac..bb72814 100644 --- a/xcopy/xcopy.c +++ b/xcopy/xcopy.c @@ -610,25 +610,27 @@ void run_X(void) { return; } } else { - int exiting = False; + int have_ownership = True; switch (ev.type) { case SelectionClear: /* Selection has been cleared by another app. */ - exiting = True; + have_ownership = False; break; case SelectionRequest: - e2.xselection.type = SelectionNotify; - e2.xselection.requestor = ev.xselectionrequest.requestor; - e2.xselection.selection = ev.xselectionrequest.selection; - e2.xselection.target = ev.xselectionrequest.target; - e2.xselection.time = ev.xselectionrequest.time; - e2.xselection.property = - convert_sel_outer(ev.xselectionrequest.requestor, - ev.xselectionrequest.target, - ev.xselectionrequest.property); - XSendEvent (disp, ev.xselectionrequest.requestor, - False, 0, &e2); + if (have_ownership) { + e2.xselection.type = SelectionNotify; + e2.xselection.requestor = ev.xselectionrequest.requestor; + e2.xselection.selection = ev.xselectionrequest.selection; + e2.xselection.target = ev.xselectionrequest.target; + e2.xselection.time = ev.xselectionrequest.time; + e2.xselection.property = + convert_sel_outer(ev.xselectionrequest.requestor, + ev.xselectionrequest.target, + ev.xselectionrequest.property); + XSendEvent (disp, ev.xselectionrequest.requestor, + False, 0, &e2); + } break; case PropertyNotify: for (i = j = 0; i < nincrs; i++) { @@ -667,7 +669,7 @@ void run_X(void) { nincrs = j; break; } - if (nincrs == 0 && exiting) + if (nincrs == 0 && !have_ownership) return; } }