[racket] Graphical Toolkit change question

From: Christophe Vandenberghe (chvndb at gmail.com)
Date: Fri Feb 25 10:17:31 EST 2011

Well, if panels can be transparent then I could use one main panel and add a canvas to draw the background and overlay it with the transparent panels (or use a message% with a bitmap label instead of the canvas if it is a fixed image). Then there is no need for the 'on-paint' for panels.

-----Original Message-----
From: Matthew Flatt [mailto:mflatt at cs.utah.edu] 
Sent: vrijdag 25 februari 2011 13:55
To: Christophe Vandenberghe
Cc: users at racket-lang.org
Subject: RE: [racket] Graphical Toolkit change question

Ok, but to be clear, you need both `on-paint' and transparency for
panels, right? Transparent panels can group and hide controls, but you
need `on-paint' to draw a background in the first place.

It turns out that transparency more or less falls out of supporting
`on-paint' for panels, so I'll work on both.

At Fri, 25 Feb 2011 08:30:44 +0100, "Christophe Vandenberghe" wrote:
> That is indeed my problem. I am using Win32 and panels take the same color as 
> their parent. That is why I could never make something like a background panel 
> with another panel on top that is the same size as the background and only 
> contains for example one button centered in the middle (a.k.a a menu). This 
> would make it easy to be able to hide that "menu" and show another one when the 
> button is clicked. But since the panels take the same color as their parent (in 
> this case the frame), the overlaying panel hides the background panel.
> The only workaround I have found is to use a container panel for each of these 
> "menus" that on their own contain the background and then a pane (as panes do 
> show transparent, but cannot be removed unless it's parent is removed) 
> containing the menu. That way I can always show and hide the container panel 
> and create a navigation between menus. The huge problem with this approach is 
> that the background has to be loaded and inserted for each of the menus 
> separately instead of just once in the main frame.
> -----Original Message-----
> From: Matthew Flatt [mailto:mflatt at cs.utah.edu] 
> Sent: donderdag 24 februari 2011 15:11
> To: Christophe Vandenberghe
> Cc: users at racket-lang.org
> Subject: RE: [racket] Graphical Toolkit change question
> At Thu, 24 Feb 2011 09:30:26 +0100, "Christophe Vandenberghe" wrote:
> > But then again like I said before. It would be easier to have
> > transparency for panels, as it would resolve the need for panes
> > inserted in panels to be able to hide or delete them when needed.
> > That would also solve the background problem. Would that be easy to
> > achieve with the new implementation?
> I'm not clear on the sense in which panels are currently opaque.
> Since siblings are not supposed to overlap, the only kind of window
> that can be behind a panel is another panel or eventually a frame.
> I'm relatively clear on what happens with Win32 and Cocoa:
>  * Under Win32 (the way `racket/gui' currently uses it), all panels and
>    frames are the same color, so you can't really tell whether panels
>    are transparent (i.e., transparent and solid is all the same).
>  * Under Cocoa, all panels are transparent, allowing a frame's texture
>    (if any) to show through.
> Is there a Gtk theme where frame content and/or panels can be textured
> (as opposed to being all the same color), so that you can tell the
> difference between an opaque panel and a transparent one? Or are you
> talking about something else completely?

Posted on the users mailing list.