Hello,

Here is a rather big patch that fixes the broken non-client areas in X, and
since it involves quite a few changes in key areas I'd appreciate any
comments .

The first thing I found is that when sending a WM_NCCALCSIZE, we were
initializing the message with a proposed client area, while MS initializes
it to the entire window area and then they calculate the client area in
their DefWndProc. This got broken when Winforms handles WM_NCCALCSIZE
somewhere and doesn't send it to DefWndProc for further processing, in which
case the borders on X were calculated twice. This was hidden by the fact
that Hwnd.GetClientRectangle didn't calculate the borders correctly, but
when I fixed that very weird things started to happen (windows jumping
around when moving them for instance), so that's the reason for the rest of
the changes. Hopefully I didn't get completely lost in there :)

Rolf

Attachment: ncpublic.patch
Description: Binary data

_______________________________________________
Mono-winforms-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

Reply via email to