On Oct 9, 2013, at 7:40 PM, Matthias Felleisen wrote:
>
>
> world uses get-x like this:
>
> (define/public (deal-with-mouse %)
>(if (not on-mouse)
>;; No mouse handler => discard mouse events (so snip are not
> selected
>;; in the pasteboard, for example
>(class %
> (super-new)
> (define/override (on-event e)
>(void)))
>;; Mouse handler => handle mouse events
>(class %
> (super-new)
> (define/override (on-event e)
>(define-values (x y me) (mouse-event->parts e))
>(when live
> (cond
>[(and (<= 0 x width) (<= 0 y height)) (pmouse x y me)]
>[(member me '("leave" "enter")) (pmouse x y me)]
>[else (void)]))
>
> [[ Yes, this is a method-based mixin ]]
>
> but note that I override on-event not on-key. The mouse-event->parts method
> uses get-x on e. -- Matthias
Right... I was hoping to use get-x on a key event. The docs suggest that it
should work. Obviously, the workaround is just to capture the x value whenever
the mouse moves. Maybe get-x should just be removed from the key event?
John
>
>
>
> On Oct 9, 2013, at 5:17 PM, John Clements wrote:
>
>> It appears to me that the 'get-x' method on a key event always returns zero,
>> counter to what the docs say. Is this a doc bug, a software bug, or just me
>> being dumb?
>>
>> FWIW, here's a simple program that illustrates this; press a key while the
>> window has focus, and you will always see 0 in the x value field:
>>
>> #lang racket/base
>>
>>
>> (require racket/gui
>>racket/class)
>>
>>
>> (define sound-canvas%
>> (class canvas%
>> (init-field frame-num-text)
>> (init-field y-value-text)
>>
>> (define/override (on-char evt)
>> (send y-value-text begin-edit-sequence #f)
>> (send y-value-text erase)
>> (send y-value-text insert
>> (format "x value: ~v"
>> (send evt get-x)))
>> (send y-value-text end-edit-sequence)
>> (send frame-num-text begin-edit-sequence #f)
>> (send frame-num-text erase)
>> (send frame-num-text insert (format "key : ~a" (send evt get-key-code)))
>> (send frame-num-text end-edit-sequence))
>>
>> (super-new)))
>>
>>
>> (let* ([f (new frame% [label "abc"] [width 400] [height 100])]
>> [tx (new text%)]
>> [ty (new text%)]
>> [c (new sound-canvas%
>> [parent f]
>> #;[paint-callback
>> (make-sound-drawing-callback left-getter right-getter
>> len data-left data-right)]
>> [frame-num-text tx]
>> [y-value-text ty])]
>> [ecx (new editor-canvas%
>>[parent f]
>>[editor tx]
>>[style '(no-border no-hscroll no-vscroll)]
>>[stretchable-width #t]
>>[stretchable-height #f]
>>[horizontal-inset 1]
>>[vertical-inset 1]
>>[min-width 50]
>>[min-height 20])]
>> [ecy (new editor-canvas%
>>[parent f]
>>[editor ty]
>>[style '(no-border no-hscroll no-vscroll)]
>>[stretchable-width #t]
>>[stretchable-height #f]
>>[horizontal-inset 1]
>>[vertical-inset 1]
>>[min-width 50]
>>[min-height 20])])
>> (send f show #t))
>>
>>
>> _
>> Racket Developers list:
>> http://lists.racket-lang.org/dev
>
_
Racket Developers list:
http://lists.racket-lang.org/dev