Il 26/09/2014 22:47, Luca Olivetti ha scritto:
El 26/09/14 22:45, Luca Olivetti ha escrit:
Strange, on mageia 4, kde, lazarus 1.2.4 it doesn't work. What I'm
trying to do is to tile windows one next to the other. Using
GetWindowRect under windows I can do it properly, while on linux gtk the
windows overlap (i.e. with this layout
A B C
D E
A overlaps D and B overlaps E, the amount of overlap seems to be equal
to the height of the title bar).
Oh, and there's also a slight overlap between A-B, B-C and D-E
Something which could affect your results is the timing. The window
manager takes a time to add the decorations. Different window managers
take different time. It's meant for human observers, which don't
perceive a delay of some tens of milliseconds. Therefore it's given a
low priority (and the mechanism is quite different from Windows to
Linux). If you ask the size too early, you get a size which has not yet
been adjusted.
You may verify if the function works properly by adding somewhere in
your form a button and a label, and with the onClick of the button write
in the label caption both the result of GetWindowSize and of
GetWindowRect. You can't possibly push the button faster than the time
it takes the window manager to decorate your window!
If you get the expected result, (i.e. size of client area and size with
decorations) then you know that the problem is just of timing.
If you add a delay of let's say 50ms from window paint, or window show
to getting its size and positioning the next window, you should be out
of trouble. A total delay of 200ms should be unnoticeable and harmless,
even if maybe useless in Windows.
So in theory GetWindowRect is the "right" function while GetWindowSize
is redundant (since there's already width and height)?
That's at least what I gather by comparing documentation with actual
results.
Giuliano
--
Giuliano Colla
Project planning question: when it's 90% done, are we halfway or not yet?
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus