Misuse of transparent color?

Hello again!

Using the standard VESA video driver with the RTP cd release.

We have come across some strange behaviour with the transparent color.
It seems that the transparent color does not get updated automatically.

If you create a window with a transparent background color and give the
window
Ph_WM_STATE_ISFRONT state, what is drawn in the transparent area (behind
the window)
is not updated. The original background stays with the transparent
parts of the window.
If you drag another window through the transparent area there is alos an
interesting
effect.

How can the transparent color be made to update itself?
Have we misused transparency?

Michel Benoit

Saab Communication Systems
Stockholm, Sweden

In article <3A2B97F8.FB9BD79D@comnet.ca>,
Michel Benoit <nube@comnet.ca> wrote:

Hello again!

Using the standard VESA video driver with the RTP cd release.

We have come across some strange behaviour with the transparent color.
It seems that the transparent color does not get updated automatically.

If you create a window with a transparent background color and give the
window
Ph_WM_STATE_ISFRONT state, what is drawn in the transparent area (behind
the window)
is not updated. The original background stays with the transparent
parts of the window.
If you drag another window through the transparent area there is alos an
interesting
effect.

How can the transparent color be made to update itself?
Have we misused transparency?

Sort of. This is a confusing area with confusing terminology to say the
least. (Years ago, everybody ran in to the same issue with X – thinking
that setting a window to transparent meant that draws behind the
window showed through).

The transparency color only affects the drawing of the window.
If you want to have other windows that draw through the window, the
region itself needs to be transparent to draw events – i.e. the
draw event gets sent to your window and also passes through so that
the window underneath gets a draw event as well. By default windows
are always opaque to draw events. Setting the background to the
transparent color doesn’t change this.

If you are using widgets, you should wait for a response from a
Photon person to indicate how you set it up so that your widgets
are all transparent as well.

For a PtWindow, I don’t believe there is a resource you can change
that directly affects this (for PtRegion, there is a Pt_ARG_REGION_OPAQUE
resource – from which you can and out the draw events). In this
case, you could to a PhRegionChange on the widget region – whose
identifier is returned by PtWidgetRid – after the widget is realized.
Change the Ph_REGION_EV_OPAQUE field within the region, so that
draw events aren’t opaque.


Michel Benoit

Saab Communication Systems
Stockholm, Sweden

Steve Furr email: furr@qnx.com
QNX Software Systems, Ltd.