
(require (quote mini-cl))

(require (quote epoch-util))

(require (quote property))

(provide (quote message))

(defvar message::functions nil "\
List of message/handler")

(defun install-message (message) (byte-code "	Ε! ' ;$ Α9 Ζ!! Ζ!' ΗΘ!)Ι	\"?8 	ΔBB" [PrOpErTy message t message::functions nil resourcep intern-atom error "Invalid property argument" assoc] 7))

(defun remove-message (message) (byte-code "	Δ! ' ;$ Α9 Ε!! Ε!' ΖΗ!)ΘΙ\"" [PrOpErTy message t message::functions resourcep intern-atom error "Invalid property argument" delete-if (lambda (x) (byte-code "Β	@\"" [message x equal] 3))] 7))

(defun push-message (message handler) (byte-code "	Ζ! ' ;$ Α9 Η!! Η!' ΘΙ!)Κ	\":= ΛAB\"D 	DB)" [PrOpErTy message t elist message::functions handler resourcep intern-atom error "Invalid property argument" assoc setcdr] 9))

(defun pop-message (message) (byte-code "	Ζ! ' ;$ Α9 Η!! Η!' ΘΙ!)Κ	\":?8 ΕB Λ!ΜΝ!\")" [PrOpErTy message t elist message::functions nil resourcep intern-atom error "Invalid property argument" assoc cadr setcdr cddr] 11))

(defun ignore-message (message) (byte-code "	Γ! ' ;$ Α9 Δ!! Δ!' ΕΖ!)Η	Β\"" [PrOpErTy message t resourcep intern-atom error "Invalid property argument" push-message] 7))

(defun resume-message (message) (byte-code "	Ε! ' ;$ Α9 Ζ!! Ζ!' ΗΘ!)Ι	!4 Κ!?< Δ@ Λ	\")" [PrOpErTy message t h nil resourcep intern-atom error "Invalid property argument" pop-message functionp push-message] 9))

(defun message::handler (type value scr) (byte-code "	@ΙΚ\"!Λ!? Ζ\" ΜΝ	$)+" [message::atom value message::event-handler epoch::event-handler callback message::functions nil type scr cadr assoc functionp ((byte-code "??
 Α Δ
!" [epoch::event-handler nil message::atom message::event-handler ignore-message] 3)) funcall] 8))

(push-event (quote client-message) (quote message::handler))

(defvar xa-wm-delete-window (quote nil))

(defvar xa-wm-protocols (quote nil))

(defvar wm-protocol-list (quote nil) "\
List of protocol atoms that epoch recognizes")

(defun handle-wm-protocols (type value screen) (byte-code "Ζ	!Γ< @Η\"* ΗΘ \"' ΙΚΛ!!* Μ!*" [type value epoch::event-handler-abort nil xa-wm-delete-window screen cddr equal minibuf-screen funcall global-key-binding "" delete-screen] 8))

(epoch-add-setup-hook (quote message::init))

(defun message::init nil (byte-code "ΖΗ!ΖΘ!CΙ	Κ\"ΛΜΝΓ!\"ΕΕ)" [xa-wm-delete-window xa-wm-protocols wm-protocol-list t s nil epoch::intern-atom "WM_DELETE_WINDOW" "WM_PROTOCOLS" push-message handle-wm-protocols mapcar (lambda (s) (byte-code "Δ	
#Ε
!? Γ Ζ
Η\"Θ
!" [xa-wm-protocols wm-protocol-list s nil set-property screen-mapped-p on-unmap-do map-screen unmap-screen] 5)) screen-list] 7))
