Compare commits

...

4 commits

Author SHA1 Message Date
Arthur Amalvy
70646d1752
Merge 36e2bd0d18 into dca8a7c92a 2025-05-23 14:31:36 +08:00
David Botton
dca8a7c92a
Merge pull request #430 from kensan73/patch-2
Update OCICL.md
2025-05-21 23:00:17 -04:00
Ken Ore
4a50935641
Update OCICL.md
temlates -> templates
2025-05-21 19:05:46 -05:00
Aethor
36e2bd0d18 Add ability to handle wheel events with clog:set-on-wheel 2025-03-03 11:15:39 +01:00
4 changed files with 45 additions and 1 deletions

2
OCICL.md vendored
View file

@ -1,6 +1,6 @@
OCICL is a complete secure alternative to a QuickLisp CLOG install
Note: New project temlates contain setup-ocicl and edit-ocicl run-ocicl
Note: New project templates contain setup-ocicl and edit-ocicl run-ocicl
for builder so only need to install OCICL.
OCICL loads dependencies with your project. Once setup the command line

View file

@ -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 ;;
;;;;;;;;;;;;;;;
@ -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 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

View file

@ -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)

View file

@ -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))