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

Reply via email to