Under a screen (with only pannels and desktop icons), launch a window whose height is maximal but width is smaller than half of the screen width. Again launch a window with the same size. You would normally expect that two disjoint windows appear in the screen. However both two windows are placed at the same position (left,top) and completely overlapped. Reason: The values of full_y, frameTop(c) and ymax of smartPlacement() (xfwm4/src/placement.c) are 27, 28, and 53 respectively in my case. Thus the code of calculations of the placement are completely ignored because of fully_y + frameTop(c) > ymax. It might be better to change the code from for (test_y = fully_y + frameTop(c); test_y <= maxy; test_y += 8){ ..... } to do { test_y = fully_y + frameTop(c); .... (here it's better to change the code for x coordinate in the same way) test_y += 8; } while (test_y <= maxy). The above change means the program would always calculate the window (smart) position.
Closing old bugs.