anchor.diff:       do (progn ;ignore-errors
             (incf icon-pen 20)
             (let* ((image (load-image icon))
  -                 (width (mezzano.gui:surface-width image))
  -                 (height (mezzano.gui:surface-height image)))
  +                 (width (gui:surface-width image))
  +                 (height (gui:surface-height image)))
               (when (and (<= 20 x (1- (+ 20 width)))
                          (<= icon-pen y (1- (+ icon-pen height))))
                 (return icon-repr))
  -            (incf icon-pen (mezzano.gui:surface-height image))))))
  -
  -(defmethod dispatch-event (desktop (event mezzano.gui.compositor:mouse-event))
  -  (when (logbitp 0 (mezzano.gui.compositor:mouse-button-change event))
  -    (let ((x (mezzano.gui.compositor:mouse-x-position event))
  -          (y (mezzano.gui.compositor:mouse-y-position event)))
  -      (cond ((logbitp 0 (mezzano.gui.compositor:mouse-button-state event))
  +            (incf icon-pen (gui:surface-height image))))))
  +
  +(defmethod dispatch-event (desktop (event comp:mouse-event))
  +  (when (logbitp 0 (comp:mouse-button-change event))
  +    (let ((x (comp:mouse-x-position event))
  +          (y (comp:mouse-y-position event)))
  +      (cond ((logbitp 0 (comp:mouse-button-state event))
                ;; Mouse down, begin click. Highlight the clicked thing.
                (setf (clicked-icon desktop) (get-icon-at-point desktop x y))
                (when (clicked-icon desktop)
  
positive.code:   (let* ((truename (truename path))
           (image (gethash truename *image-cache*)))
      (unless image
        (setf image (mezzano.gui:make-surface-from-array
                     (or (load-jpeg truename)
                        (load-png truename)
                        (error "Unable to load ~S." path))))
  
negative.code:                      (slot-value desktop '%image-pathname) path)))))
    (redraw-desktop-window desktop))
  
  (defmethod dispatch-event (desktop (event comp:screen-geometry-update))
    (let ((new-window (comp:make-window (fifo desktop)
                                                          (comp:width event)
                                                          (comp:height event)
                                                          :layer :bottom
                                                          :initial-z-order :below-current
                                                          :kind :desktop))
          (old-window (window desktop)))
      (setf (slot-value desktop '%window) new-window)
      (redraw-desktop-window desktop)
      (comp:close-window old-window)))
  
  (defmethod dispatch-event (desktop (event comp:window-close-event))
    (when (or (eql (comp:window event) (window desktop))
              (eql (comp:window event) (notification-window desktop)))
      ;; Either the desktop window or the notification window was closed. Exit.
      (throw 'quitting-time nil)))
  
  