anchor.diff:          ((webkit:webkit-hit-test-result-media-uri hit-test-result)
            (push-url-at-point buffer (webkit:webkit-hit-test-result-media-uri hit-test-result)))))
   
  -(serapeum:export-always 'ffi-window-make)
   (defmethod ffi-window-make ((browser gtk-browser))
     "Make a window."
     (make-instance *window-class*))
   
  -(serapeum:export-always 'ffi-window-to-foreground)
   (defmethod ffi-window-to-foreground ((window gtk-window))
     "Show window in foreground."
     (gtk:gtk-window-present (gtk-object window))
     (setf (slot-value *browser* 'last-active-window) window))
   
  -(serapeum:export-always 'ffi-window-set-title)
   (defmethod ffi-window-set-title ((window gtk-window) title)
     "Set the title for a window."
     (setf (gtk:gtk-window-title (gtk-object window)) title))
   
  -(serapeum:export-always 'ffi-window-active)
   (defmethod ffi-window-active ((browser gtk-browser))
     "Return the window object for the currently active window."
     (setf (slot-value browser 'last-active-window)
           (or (find-if #'gtk:gtk-window-is-active (window-list) :key #'gtk-object)
               (slot-value browser 'last-active-window))))
   
  -(serapeum:export-always 'ffi-window-set-active-buffer)
   (defmethod ffi-window-set-active-buffer ((window gtk-window) (buffer gtk-buffer))
     "Set BROWSER's WINDOW buffer to BUFFER. "
     (gtk:gtk-container-remove (box-layout window) (gtk-object (active-buffer window)))
  
positive.code:     (webkit:webkit-web-context-set-network-proxy-settings
       context mode settings)))
  
  (serapeum:export-always 'ffi-buffer-get-proxy)
  (defmethod ffi-buffer-get-proxy ((buffer gtk-buffer))
    "Return the proxy URI and list of ignored hosts (a list of strings) as second value."
    (values (proxy-uri buffer)
            (proxy-ignored-hosts buffer)))
  
  (serapeum:export-always 'ffi-generate-input-event)
  (defmethod ffi-generate-input-event ((window gtk-window) event)
    ;; The "send_event" field is used to mark the event as an "unconsumed"
    ;; keypress.  The distinction allows us to avoid looping indefinitely.
    (setf (gdk:gdk-event-button-send-event event) t)
    (gtk:gtk-main-do-event event))
  
  (serapeum:export-always 'ffi-generated-input-event-p)
  (defmethod ffi-generated-input-event-p ((window gtk-window) event)
    (gdk:gdk-event-send-event event))
  
negative.code:   (gtk:gtk-container-remove (box-layout window) (gtk-object (active-buffer window)))
    (window-delete window))
  
  (defmethod ffi-window-delete ((window gtk-window))
    "Delete a window object and remove it from the hash of windows."
    (gtk:gtk-widget-destroy (gtk-object window)))
  