Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions source/clog-base.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,24 @@ result or if time out DEFAULT-ANSWER. see JQUERY-QUERY (Internal)"))
:meta-key (js-true-p (nth 6 f))
:drag-data (quri:url-decode (or (nth 7 f) "")))))

;;;;;;;;;;;;;;;;;;;;;;;
;; parse-wheel-event ;;
;;;;;;;;;;;;;;;;;;;;;;;

(defparameter wheel-event-script
"+ e.originalEvent.deltaX + ':' + e.originalEvent.deltaY + ':' + e.originalEvent.deltaZ +
':' + e.originalEvent.deltaMode"
"JavaScript to collect wheel event data from browser.")

(defun parse-wheel-event (data)
(let ((f (ppcre:split ":" data)))
(list
:event-type :wheel
:delta-x (js-to-float (nth 0 f))
:delta-y (js-to-float (nth 1 f))
:delta-z (js-to-float (nth 2 f))
:delta-mode (js-to-integer (nth 3 f)))))

;;;;;;;;;;;;;;;
;; set-event ;;
;;;;;;;;;;;;;;;
Expand Down Expand Up @@ -1062,6 +1080,25 @@ ON-MOUSE-MOVE-HANDLER is nil unbind the event."))
:cancel-event cancel-event
:call-back-script mouse-event-script))

;;;;;;;;;;;;;;;;;;
;; set-on-wheel ;;
;;;;;;;;;;;;;;;;;;

(defgeneric set-on-wheel (clog-obj on-wheel-handler
&key one-time cancel-event)
(:documentation "Set the ON-WHEEL-HANDLER for CLOG-OBJ. If
ON-WHEEL-HANDLER is nil unbind the event."))

(defmethod set-on-wheel ((obj clog-obj) handler
&key (one-time nil) (cancel-event nil))
(set-event obj "wheel"
(when handler
(lambda (data)
(funcall handler obj (parse-wheel-event data))))
:one-time one-time
:cancel-event cancel-event
:call-back-script wheel-event-script))

;;;;;;;;;;;;;;;;;;;;;;;;;;
;; set-on-pointer-enter ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
Expand Down
1 change: 1 addition & 0 deletions source/clog.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ embedded in a native template application.)"
(set-on-mouse-down generic-function)
(set-on-mouse-up generic-function)
(set-on-mouse-move generic-function)
(set-on-wheel generic-function)
(set-on-pointer-enter generic-function)
(set-on-pointer-leave generic-function)
(set-on-pointer-over generic-function)
Expand Down
6 changes: 6 additions & 0 deletions test/test-clog.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@
(lambda (obj data)
(declare (ignore obj))
(format t "x=~A Y=~A~%" (getf data ':x) (getf data ':y))))
(set-on-wheel *last-obj*
(lambda (obj data)
(declare (ignore obj))
(format t "delta-x=~A delta-y=~A~%"
(getf data ':delta-x)
(getf data ':delta-y))))
(set-on-key-down win
(lambda (obj data)
(declare (ignore obj))
Expand Down