+    try :
+        lightbox = portal.restrictedTraverse(lightboxpath)
+        selectionIsLightbox = True
+    except:
+        sd['lightboxpath'] = None
+
+# form processing
+if fg('delete.x') or form.has_key('delete') :
+    selection = sd.get('objects_selection', [])
+    selDict = sd.get('objects_selection_dict', {})
+
+    # get selection from session data or from selected lightbox
+    if not selectionIsLightbox :
+       selection = sd.get('objects_selection', [])
+    else :
+       try :
+               lightbox = portal.restrictedTraverse(lightboxpath)
+               selection = lightbox.getUidList()
+       except KeyError :
+               sd['lightboxpath'] = None
+               selection = sd.get('objects_selection', [])
+        
+    # remove items from selection
+    rmCpt = 0
+    for uid in [int(uid) for uid in fg('uids', [])] :
+        if selDict.has_key(uid) :
+            del selDict[uid]
+            selection.remove(uid)
+            if selectionIsLightbox :
+                lightbox.remove(uid)
+            sd['objects_selection'] = selection
+            sd['objects_selection_dict'] = selDict
+            rmCpt = rmCpt + 1
+        
+    # ui feedback message
+    if rmCpt :
+        if rmCpt == 1 :
+            msg = _('Photo deselected.')
+        else :
+            msg = _('Deselected photos.')
+    else :
+        msg = _('Nothing to deselect.')
+    
+    if fg('ajax') :
+        req.RESPONSE.setHeader('Content-Type', 'text/xml;;charset=utf-8')
+        return '<deleted>%s</deleted>' % msg
+    else :
+        context.setStatus(True, msg)