diff --git a/Graphics/X11/Xlib/Extras.hsc b/Graphics/X11/Xlib/Extras.hsc
--- a/Graphics/X11/Xlib/Extras.hsc
+++ b/Graphics/X11/Xlib/Extras.hsc
@@ -191,6 +191,15 @@
         , ev_property              :: !Atom
         , ev_time                  :: !Time
         }
+    | SelectionClear
+        { ev_event_type            :: !EventType
+        , ev_serial                :: !CULong
+        , ev_send_event            :: !Bool
+        , ev_event_display         :: Display
+        , ev_window                :: !Window
+        , ev_selection             :: !Atom
+        , ev_time                  :: !Time
+        }
     | PropertyEvent
         { ev_event_type            :: !EventType
         , ev_serial                :: !CULong
@@ -641,6 +650,22 @@
                         }
 
           -------------------------
+          -- SelectionClearEvent:
+          -------------------------
+          | type_ == selectionClear -> do
+            window <- #{peek XSelectionClearEvent, window    } p
+            atom   <- #{peek XSelectionClearEvent, selection } p
+            time   <- #{peek XSelectionClearEvent, time      } p
+            return $ SelectionClear
+                        { ev_event_type    = type_
+                        , ev_serial        = serial
+                        , ev_send_event    = send_event
+                        , ev_event_display = display
+                        , ev_window        = window
+                        , ev_selection     = atom
+                        , ev_time          = time
+                        }
+          -------------------------
           -- PropertyEvent
           -------------------------
           | type_ == propertyNotify -> do
@@ -877,7 +902,7 @@
         #{poke XWindowChanges, border_width} p $ wc_border_width wc
         #{poke XWindowChanges, sibling     } p $ wc_sibling wc
         #{poke XWindowChanges, stack_mode  } p $ wc_stack_mode wc
-        
+
     peek p = return WindowChanges
                 `ap` (#{peek XWindowChanges, x} p)
                 `ap` (#{peek XWindowChanges, y} p)
@@ -943,7 +968,7 @@
             , wa_override_redirect :: Bool
             }
 
--- 
+--
 -- possible map_states'
 --
 waIsUnmapped, waIsUnviewable, waIsViewable :: CInt
@@ -1262,7 +1287,7 @@
 
 ------------------------------------------------------------------------
 -- XErrorEvents
--- 
+--
 -- I'm too lazy to write the binding
 --
 
@@ -1297,6 +1322,9 @@
 foreign import ccall unsafe "XlibExtras.h XChangeProperty"
     xChangeProperty :: Display -> Window -> Atom -> Atom -> CInt -> CInt -> Ptr CUChar -> CInt -> IO Status
 
+foreign import ccall unsafe "XlibExtras.h XDeleteProperty"
+    xDeleteProperty :: Display -> Window -> Atom -> IO Status
+
 foreign import ccall unsafe "XlibExtras.h XGetWindowProperty"
     xGetWindowProperty :: Display -> Window -> Atom -> CLong -> CLong -> Bool -> Atom -> Ptr Atom -> Ptr CInt -> Ptr CULong -> Ptr CULong -> Ptr (Ptr CUChar) -> IO Status
 
@@ -1363,6 +1391,11 @@
 propModeReplace = #{const PropModeReplace}
 propModePrepend = #{const PropModePrepend}
 propModeAppend = #{const PropModeAppend}
+
+deleteProperty :: Display -> Window -> Atom -> IO ()
+deleteProperty dpy w prop = do
+    _ <- xDeleteProperty dpy w prop
+    return ()
 
 -- Windows
 
diff --git a/X11.cabal b/X11.cabal
--- a/X11.cabal
+++ b/X11.cabal
@@ -1,5 +1,5 @@
 name:               X11
-version:            1.7
+version:            1.8
 license:            BSD3
 license-file:       LICENSE
 copyright:          Alastair Reid, 1999-2003, libraries@haskell.org 2003-2007, Don Stewart 2007-2009, Spencer Janssen 2007-2009, Daniel Wagner 2009-2011.
