gesture docs?

Orm Finnendahl orm.finnendahl at selma.hfmdk-frankfurt.de
Mon Aug 6 12:17:26 UTC 2018


Hi Nisar,

 thanks for your support, that's really appreciated! I'll follow the
suggested path.

On my machine your example causes the problem that the event handler
for the scroll wheel is called twice (de/incrementing the counter
twice). Consulting xev reveals that on scroll wheel movement X
generates two events: A button press and a button release event of
button 4/5.

I corrected this in the event-handler routine in input.lisp of the
mcclim clx backend and filed a pull request on github.

--
Orm

Am Sonntag, den 05. August 2018 um 23:55:54 Uhr (+0530) schrieb Nisar Ahmad:
> 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
> > 
> 



More information about the mcclim-devel mailing list