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