Greetings Orm,
CLIM is a layered toolkit, the implementation in
"text-selection.lisp" is using the lower level where you handle
events yourself. For example `dispatch-event`, `handle-repaint`,
`handle-event` are all part of CLIM.
I am attaching an example program which shows an integer value
which can be increased or decreased with mouse wheel. Just put the
following in a file and load it:
(eval-when (:compile-toplevel
:load-toplevel :execute)
(unless (find-package "CLIM")
(ql:quickload "mcclim")))
(in-package :clim-user)
(defclass counter-pane (basic-pane)
((counter :initform 0)))
(defmethod handle-event ((pane counter-pane)
(event
climi::pointer-scroll-event))
(with-slots ((counter counter)) pane
(setf counter (+ counter (climi::pointer-event-delta-y
event))))
(repaint-sheet pane +everywhere+))
(defmethod handle-repaint ((pane counter-pane)
region)
(with-bounding-rectangle* (min-x min-y max-x max-y)
region
(draw-rectangle* pane min-x min-y max-x max-y :ink
+sky-blue+)
(draw-text* pane "Use Mouse Wheel to increase/decrease
counter." 20 20)
(with-slots ((counter counter)) pane
(with-text-size (pane 48)
(draw-text* pane (format nil "~A" counter) 170 180)))))
(define-application-frame counter-frame ()
()
(:pane
(clim:make-pane 'counter-pane))
(:geometry :width 400 :height 400))
(defun show-counter ()
(let ((frame (make-application-frame 'counter-frame)))
(run-frame-top-level frame)))
(show-counter)
Since gestures on McCLIM are currently
broken, You can implement multiple-select (mentioned in your parent
mail) as text-selection is implemented/
Good luck,
Nisar Ahmad
On 08/05/2018 10:30 PM, Orm Finnendahl
wrote:
Hi,
just FYI (if someone googles this question...):
After some code inspection I found out that the "cut-and-paste-mixin"
sends pointer-events in its dispatch-event :around method to
eos/shift-click if the shift key is pressed. This seems related to
some historic semantics of shift-click behaviour for setting and
dragging points as explained in the "text-selection.lisp" file.
I couldn't find anything in the clim specific docs. May it'd be
sensible to add this information (maybe at bauhh.dyndns.org?).
--
Orm