Hi,
it's fully unclear to me what was meant from whoever wrote this portion of code in customdrawnwsforms_x11.inc (starting from line 97) :
if AWinControl.Parent = nil then
begin
{$Note This doesn't work yet. I want to position a new window relative to
another window. Used for popup windows, like the TComboBox dropdown. }
{$IFDEF DEBUG} writeln('SetPosition with no Parent'); {$ENDIF}
lx := APosition.x;
ly := APosition.y;
XTranslateCoordinates(CDWidgetSet.FDisplay, lWindow,
XDefaultRootWindow(CDWidgetSet.FDisplay),
lx, ly, @dx, @dy, @cw);
lx := dx;
ly := dy;
endThis portion is execute to position whatever control is a root window, as opposed to controls inside a windows. The effect is that XTranslate returns garbage in dx and dy, and any attempt to position a window fails.
By commenting out the XTranslate and the following assignments, window positioning is correct (poDesigned, poScreenCenter, etc. or simply Top:=Something or Left:=SomethingElse.
I assume that the idea is that a TComboBox dropdown may be higher than the widow containing the widget, and therefore a new window is required, but IMHO, the simplest way to position a new window relative to an existing one is that whoever creates the new window decides its position on the screen relative to the existing one, and gives the Top and Left values accordingly, without attempting to use a function which isn't intended for that purpose.
Am I missing something?
Giuliano
