diff --git a/dlls/x11drv/clipboard.c b/dlls/x11drv/clipboard.c
index 3f7e262..9a2c821 100644
--- a/dlls/x11drv/clipboard.c
+++ b/dlls/x11drv/clipboard.c
@@ -110,11 +110,8 @@
 
 static int selectionAcquired = 0;              /* Contains the current selection masks */
 static Window selectionWindow = None;          /* The top level X window which owns the selection */
-static BOOL clearAllSelections = FALSE;        /* Always lose all selections */
 static BOOL usePrimary = FALSE;                /* Use primary selection in additon to the clipboard selection */
 static Atom selectionCacheSrc = XA_PRIMARY;    /* The selection source from which the clipboard cache was filled */
-static Window PrimarySelectionOwner = None;    /* The window which owns the primary selection */
-static Window ClipboardSelectionOwner = None;  /* The window which owns the clipboard selection */
 
 INT X11DRV_RegisterClipboardFormat(LPCSTR FormatName);
 void X11DRV_EmptyClipboard(BOOL keepunowned);
@@ -282,9 +279,6 @@
     {
 	char buffer[20];
 	DWORD type, count = sizeof(buffer);
-	if(!RegQueryValueExA(hkey, "ClearAllSelections", 0, &type, buffer, &count))
-            clearAllSelections = IS_OPTION_TRUE( buffer[0] );
-        count = sizeof(buffer);
         if(!RegQueryValueExA(hkey, "UsePrimary", 0, &type, buffer, &count))
             usePrimary = IS_OPTION_TRUE( buffer[0] );
         RegCloseKey(hkey);
@@ -1923,12 +1917,9 @@
 /**************************************************************************
  *		X11DRV_CLIPBOARD_ReleaseSelection
  *
- * Release an XA_PRIMARY or XA_CLIPBOARD selection that we own, in response
- * to a SelectionClear event.
- * This can occur in response to another client grabbing the X selection.
- * If the XA_CLIPBOARD selection is lost, we relinquish XA_PRIMARY as well.
+ * Release XA_CLIPBOARD and XA_PRIMARY in response to a SelectionClear event.
  */
-void X11DRV_CLIPBOARD_ReleaseSelection(Atom selType, Window w, HWND hwnd)
+void X11DRV_CLIPBOARD_ReleaseSelection(Atom selType, Window w, HWND hwnd, Time time)
 {
     Display *display = thread_display();
 
@@ -1937,98 +1928,65 @@
     TRACE("event->window = %08x (selectionWindow = %08x) selectionAcquired=0x%08x\n",
 	  (unsigned)w, (unsigned)selectionWindow, (unsigned)selectionAcquired);
 
-    if (selectionAcquired)
+    if (selectionAcquired && (w == selectionWindow))
     {
-	if (w == selectionWindow)
+        CLIPBOARDINFO cbinfo;
+
+        /* completely give up the selection */
+        TRACE("Lost CLIPBOARD (+PRIMARY) selection\n");
+
+        X11DRV_CLIPBOARD_GetClipboardInfo(&cbinfo);
+
+        if (cbinfo.flags & CB_OWNER)
         {
-            /* If we're losing the CLIPBOARD selection, or if the preferences in .winerc
-             * dictate that *all* selections should be cleared on loss of a selection,
-             * we must give up all the selections we own.
-             */
-            if (clearAllSelections || (selType == x11drv_atom(CLIPBOARD)))
+            /* Since we're still the owner, this wasn't initiated by 
+               another Wine process */
+            if (OpenClipboard(hwnd))
             {
-                CLIPBOARDINFO cbinfo;
+                /* Destroy private objects */
+                SendMessageW(cbinfo.hWndOwner, WM_DESTROYCLIPBOARD, 0, 0);
 
-                /* completely give up the selection */
-                TRACE("Lost CLIPBOARD (+PRIMARY) selection\n");
-
-              /* We are completely giving up the selection. There is a
-               * potential race condition where the apps that now owns
-	       * the selection has already grabbed both selections. In
-	       * this case, if we clear any selection we may clear the
-	       * new owners selection. To prevent this common case we
-	       * try to open the clipboard. If we can't, we assume it
-	       * was a wine apps that took it and has taken both selections.
-	       * In this case, don't bother releasing the other selection.
-	       * Otherwise only release the selection if we still own it.
-               */
-                X11DRV_CLIPBOARD_GetClipboardInfo(&cbinfo);
-
-                if (cbinfo.flags & CB_OWNER)
-                {
-                    /* Since we're still the owner, this wasn't initiated by 
-		       another Wine process */
-                    if (OpenClipboard(hwnd))
-                    {
-                      /* We really lost CLIPBOARD but want to voluntarily lose PRIMARY */
-                      if ((selType == x11drv_atom(CLIPBOARD)) && (selectionAcquired & S_PRIMARY))
-                      {
-		          TRACE("Lost clipboard. Check if we need to release PRIMARY\n");
-                          wine_tsx11_lock();
-                          if (selectionWindow == XGetSelectionOwner(display,XA_PRIMARY))
-                          {
-		             TRACE("We still own PRIMARY. Releasing PRIMARY.\n");
-                             XSetSelectionOwner(display, XA_PRIMARY, None, CurrentTime);
-                          }
-		          else
-		             TRACE("We no longer own PRIMARY\n");
-                          wine_tsx11_unlock();
-                      }
-
-                      /* We really lost PRIMARY but want to voluntarily lose CLIPBOARD  */
-                      if ((selType == XA_PRIMARY) && (selectionAcquired & S_CLIPBOARD))
-                      {
-		          TRACE("Lost PRIMARY. Check if we need to release CLIPBOARD\n");
-                          wine_tsx11_lock();
-                          if (selectionWindow == XGetSelectionOwner(display,x11drv_atom(CLIPBOARD)))
-                          {
-		              TRACE("We still own CLIPBOARD. Releasing CLIPBOARD.\n");
-                              XSetSelectionOwner(display, x11drv_atom(CLIPBOARD), None, CurrentTime);
-                          }
-		          else
-		              TRACE("We no longer own CLIPBOARD\n");
-                          wine_tsx11_unlock();
-                      }
-
-                      /* Destroy private objects */
-                      SendMessageW(cbinfo.hWndOwner, WM_DESTROYCLIPBOARD, 0, 0);
-   
-                      /* Give up ownership of the windows clipboard */
-                      X11DRV_CLIPBOARD_ReleaseOwnership();
-
-                      CloseClipboard();
-                    }
-                }
-	        else
-                {
-                    TRACE("Lost selection to other Wine process.\n");
-                }
-
-                selectionWindow = None;
-                PrimarySelectionOwner = ClipboardSelectionOwner = 0;
-
-                X11DRV_EmptyClipboard(FALSE);
-
-                /* Reset the selection flags now that we are done */
-                selectionAcquired = S_NOSELECTION;
+                /* Give up ownership of the windows clipboard */
+                X11DRV_CLIPBOARD_ReleaseOwnership();
+                CloseClipboard();
             }
-            else if ( selType == XA_PRIMARY ) /* Give up only PRIMARY selection */
+        }
+
+        if ((selType == x11drv_atom(CLIPBOARD)) && (selectionAcquired & S_PRIMARY))
+        {
+            TRACE("Lost clipboard. Check if we need to release PRIMARY\n");
+
+            wine_tsx11_lock();
+            if (selectionWindow == XGetSelectionOwner(display, XA_PRIMARY))
             {
-                TRACE("Lost PRIMARY selection\n");
-                PrimarySelectionOwner = 0;
-                selectionAcquired &= ~S_PRIMARY;  /* clear S_PRIMARY mask */
+                TRACE("We still own PRIMARY. Releasing PRIMARY.\n");
+                XSetSelectionOwner(display, XA_PRIMARY, None, time);
             }
-	}
+            else
+                TRACE("We no longer own PRIMARY\n");
+            wine_tsx11_unlock();
+        }
+        else if ((selType == XA_PRIMARY) && (selectionAcquired & S_CLIPBOARD))
+        {
+            TRACE("Lost PRIMARY. Check if we need to release CLIPBOARD\n");
+
+            wine_tsx11_lock();
+            if (selectionWindow == XGetSelectionOwner(display,x11drv_atom(CLIPBOARD)))
+            {
+                TRACE("We still own CLIPBOARD. Releasing CLIPBOARD.\n");
+                XSetSelectionOwner(display, x11drv_atom(CLIPBOARD), None, time);
+            }
+            else
+                TRACE("We no longer own CLIPBOARD\n");
+            wine_tsx11_unlock();
+        }
+
+        selectionWindow = None;
+
+        X11DRV_EmptyClipboard(FALSE);
+
+        /* Reset the selection flags now that we are done */
+        selectionAcquired = S_NOSELECTION;
     }
 }
 
@@ -2485,14 +2443,6 @@
         {
             bLostSelection = TRUE;
         }
-        else
-        {
-            /* Update selection state */
-            if (saveSelectionState & S_PRIMARY)
-               PrimarySelectionOwner = selectionWindow;
-
-            ClipboardSelectionOwner = selectionWindow;
-        }
         wine_tsx11_unlock();
     }
     else
@@ -2506,7 +2456,6 @@
 
         X11DRV_CLIPBOARD_ReleaseOwnership();
         selectionAcquired = S_NOSELECTION;
-        ClipboardSelectionOwner = PrimarySelectionOwner = 0;
         selectionWindow = 0;
     }
 }
diff --git a/dlls/x11drv/event.c b/dlls/x11drv/event.c
index d4c8817..8c18a55 100644
--- a/dlls/x11drv/event.c
+++ b/dlls/x11drv/event.c
@@ -913,7 +913,7 @@
 static void EVENT_SelectionClear( HWND hWnd, XSelectionClearEvent *event )
 {
   if (event->selection == XA_PRIMARY || event->selection == x11drv_atom(CLIPBOARD))
-      X11DRV_CLIPBOARD_ReleaseSelection( event->selection, event->window, hWnd );
+      X11DRV_CLIPBOARD_ReleaseSelection( event->selection, event->window, hWnd, event->time );
 }
 
 /***********************************************************************
diff --git a/dlls/x11drv/x11drv.h b/dlls/x11drv/x11drv.h
index 5d41f42..aa021f2 100644
--- a/dlls/x11drv/x11drv.h
+++ b/dlls/x11drv/x11drv.h
@@ -483,7 +483,7 @@
 #define CF_FLAG_SYNTHESIZED  8 /* Implicitly converted data */
 
 extern void X11DRV_InitClipboard(void);
-extern void X11DRV_CLIPBOARD_ReleaseSelection(Atom selType, Window w, HWND hwnd);
+extern void X11DRV_CLIPBOARD_ReleaseSelection(Atom selType, Window w, HWND hwnd, Time time);
 extern INT X11DRV_CountClipboardFormats(void);
 extern UINT X11DRV_EnumClipboardFormats(UINT wFormat);
 extern LPWINE_CLIPFORMAT X11DRV_CLIPBOARD_LookupFormat(WORD wID);
diff --git a/documentation/samples/config b/documentation/samples/config
index c2751ae..b6d2d67 100644
--- a/documentation/samples/config
+++ b/documentation/samples/config
@@ -154,7 +154,6 @@
 "SaveOnlyUpdatedKeys" = "Y"
 
 [Clipboard]
-"ClearAllSelections" = "0"
 "UsePrimary" = "0"
 
 ; List of all directories directly contain .AFM files
