[racket] how to stop canvas% from refreshing after on-event

From: Michael Wilber (mwilber at uccs.edu)
Date: Tue Feb 12 13:37:27 EST 2013

Your OpenGL example still doesn't flash for me when I move the mouse
over it, on 64-bit linux.

It does, however, flash when I change window focus... for some reason?

What OS are you using?

Philipp Dikmann <philipp at dikmann.de> writes:
> I'm sorry, I should have been more specific – it happens when using a
> gl-enabled canvas (example below).
> I hope that does not turn it into a dragons' den? ;)
>
> Philipp
>
> #lang racket/gui
>
> (require sgl)
>
> (define c%
>    (class canvas%
>      (inherit with-gl-context swap-gl-buffers)
>      (define/override (on-paint)
>        (with-gl-context
>         (lambda ()
>           (gl-clear-color (random) (random) (random) 1)
>           (gl-clear 'color-buffer-bit)
>           (swap-gl-buffers)
>           (gl-flush))))
>      (super-new (style '(gl no-autoclear)))))
>
> (define f (new frame% [label ""] [width 100] [height 100]))
> (define c (new c% [parent f]))
> (send f show #t)
>
>
> On 11.02.13 22:39, Robby Findler wrote:
>> I don't think it does that. The program below, at least for me,
>> doesn't do crazy colors when I move the mouse around (it does when
>> resizing, tho).
>>
>> Robby
>>
>> #lang racket/gui
>>
>> (define c%
>>   (class canvas%
>>     (inherit get-client-size get-dc)
>>     (define/override (on-paint)
>>       (define-values (w h) (get-client-size))
>>       (define dc (get-dc))
>>       (define c (make-object color% (random 255) (random 255) (random
>> 255)))
>>       (send dc set-brush c 'solid)
>>       (send dc set-pen "black" 1 'transparent)
>>       (send dc draw-ellipse 0 0 w h))
>>     (super-new)))
>>
>> (define f (new frame% [label ""] [width 100] [height 100]))
>> (define c (new c% [parent f]))
>> (send f show #t)
>>
>>
>> On Mon, Feb 11, 2013 at 9:41 AM, Philipp Dikmann <philipp at dikmann.de
>> <mailto:philipp at dikmann.de>> wrote:
>>
>>     It appears that the GUI canvas% refreshes itself whenever it
>>     receives a mouse-event%.
>>     I intend to refresh the canvas at a steady pace (using a timer%)
>>     and independently of any mouse-events instead.
>>     Is there a reasonable way to suppress the default behavior?
>>
>>     Thanks for your time,
>>     Philipp
>>     ____________________
>>      Racket Users list:
>>     http://lists.racket-lang.org/users
>>
>>
>
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users


Posted on the users mailing list.