aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/interactive/interactive.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interactive/interactive.lisp')
-rw-r--r--src/interactive/interactive.lisp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/interactive/interactive.lisp b/src/interactive/interactive.lisp
index ceacf1b..11bc5ca 100644
--- a/src/interactive/interactive.lisp
+++ b/src/interactive/interactive.lisp
@@ -7,6 +7,14 @@
(focusablep :std t :doc "Whether or not this object can receive application focus."))
(:documentation "Supplies an object with a listener slot."))
+(defun remove-all-handlers (interactive)
+ (loop
+ for type in '(keydown keyup mousedown mouseup mousemotion mousewheel focus blur perframe)
+ do (remove-handler interactive type)))
+
+(defmethod cleanup :after ((ob interactive))
+ (remove-all-handlers ob))
+
(defun add-handler (interactive handler)
"Adds HANDLER to INTERACTIVE. HANDLER is an instance of
WHEELWORK::EVENT-HANDLER, as most readily constructed by using the