gesture docs?

Nisar Ahmad nisarahmad1324 at gmail.com
Sun Aug 5 18:25:54 UTC 2018


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
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/mcclim-devel/attachments/20180805/38bbf9ec/attachment.html>


More information about the mcclim-devel mailing list