Hi Veksler,

Right now there is no way to write over the decorations provided by the
windows managers and since many flavors of window managers exist, I think
that's something we shouldn't try to do.

> That was the general feeling. In that case there are several questions:
> 1. What should be done when a client is writing to a non-client area?
>    It is wrong to put it in the client area (the way it is done now).
>    Your suggested hack works when the string is few pixels above the
>    client area, but is makes no sense when it is below.

In managed windows,  there are still some parts of  the non-client area to
which we can write (the menu bar for example). Only the decoration provided
by the window manager (caption, border) are not accessible. This can be a
problem because a managed Wine window starts just below the window managers
decorations. However, this keeps the code a lot more simple :)

> 2. Whose responsibility it is to recognize this non-client area writing?
>    Is it x11drv, GDI32 or USER32 ?
>    I guess that x11drv since it is the part that knows what managed
>    and unmanaged is, right?

Yes, that's the x11drv part, however this knowledge is also shared
throughout the Window structure using the WIN_MANAGED flag.

> 3. How to detect this kind of non-client area writing in a clean way?
>    Is there a call to do this?
>    I guess this one I'd have to dig out of the code and the X11 docs.

At the current time, you can check at the Wine level if a windows has
decoration with the flag WIN_MANAGED (wndPtr->flags & WIN_MANAGED).

Jean-Claude Batista
Macadamian Technologies.



Reply via email to