diff --git a/unix/xserver/hw/vnc/vncSelection.c b/unix/xserver/hw/vnc/vncSelection.c index 51dfd9c..57e13e7 100644 --- a/unix/xserver/hw/vnc/vncSelection.c +++ b/unix/xserver/hw/vnc/vncSelection.c @@ -512,6 +512,13 @@ static void vncSelectionCallback(CallbackListPtr *callbacks, LOG_DEBUG("Selection owner change for %s", NameForAtom(info->selection->selection)); + /* + * If we're the previous owner of this selection, then we're also the + * owner of _the other_ selection. Make sure we drop all ownerships so + * we either own both selections or nonw. + */ + DeleteWindowFromAnySelections(pWindow); + if ((info->selection->selection != xaPRIMARY) && (info->selection->selection != xaCLIPBOARD)) return;