I've fixed the Gtk and Cocoa bindings to never invoke a `tab-panel%'
callback when the tab changes indirectly via the `set', `append', or
`delete' method.

It's possible that you were hoping to have the callback invoked more
often on Windows, instead of less often on Gtk, but `racket/gui' is
meant to invoke callbacks only in response to user actions.

Thanks for the report!

At Mon, 05 Mar 2012 16:10:06 +0100, Marijn wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi,
> 
> if you create a tab-panel with a callback, then on GNU/Linux the
> callback is called once by the system, but on Windows 7 it isn't. This
> can result in different initial tab visibility. For example:
> 
> 
> #lang racket/gui
> 
> (define root
>   (new frame% (width 300) (height 300)
>        (label "Test tabs")))
> 
> (define (tab-callback tab-panel event)
>   (send tab-panel change-children
>       (lambda (children)
>         (list
>          (vector-ref tab-vector
>                      (send tab-panel
>                            get-selection))))))
> 
> (define tab-panel
>   (new tab-panel% (parent root)
>        (callback (lambda (tab-panel event)
>                  (displayln "called!")
>                  (tab-callback tab-panel event)))
>        (choices '())))
> 
> (define tab1
>   (new panel% (parent tab-panel)
>        (style '(deleted)))) ; <===
> 
> (define tab2
>   (new panel% (parent tab-panel)
>        (style '(deleted))))
> 
> (define msg1
>   (new message% (parent tab1)
>        (label "visible?")))
> 
> (define tabs
>   `((,tab1 . "t1")
>     (,tab2 . "t2")))
> 
> (define tab-names (map cdr tabs))
> (define tab-vector (list->vector (map car tabs)))
> 
> (send tab-panel set tab-names)
> 
> (send root show #t)
> 
> 
> The difference in this example is caused by all tabs being initially
> deleted and the callback always enabling one tab. Arguably this is not
> a valid configuration (I don't know), but there are other ways to
> tickle this difference that don't rely on that: any effectful callback
> would exhibit the difference. Is it possible to remove this
> platform-dependent difference?
> 
> Marijn
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.18 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iEYEARECAAYFAk9U104ACgkQp/VmCx0OL2wNlgCeKYg8aGBi0182hcZI0415tqfT
> BHEAnR7h+hNlPBXpZYbaKjTuDgkgpu96
> =7rnA
> -----END PGP SIGNATURE-----
> _________________________
>   Racket Developers list:
>   http://lists.racket-lang.org/dev
_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to