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.