Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2009-08

csInlin how is it suppossed to work?

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Martin
Paul Ishenin wrote 11 lines
Martin wrote: > http://bugs.freepascal.org/view.php?id=14364 saving frames with > anchorsides (or rather the inability of doing so) > > Either we do something wrong with csInline flag or it is a but in the FPC. Best regards, Paul Ishenin.

Yes it is strange.....

I am down to
rtl\objpas\classes\writer.inc
line 599

   if (FAncestor is TComponent) then
       begin
       FAncestors:=TStringList.Create;
       if csInline in TComponent(FAncestor).ComponentState then
         FRootAncestor := TComponent(FAncestor);
       TComponent(FAncestor).GetChildren(@AddToAncestorList,FRootAncestor);
       FAncestors.Sorted:=True;
       end;
    try
      Component.GetChildren(@WriteComponent, FRoot);

A Frame has csInline => so Frame.Getchildren is called with FRootAncestor (which is the frame itself?)

But ALL the children are added to the AnchestorList => is that supposed to be?

Because then later:
  procedure TWriter.WriteComponent(Component: TComponent);
      DetermineAncestor(Component);

will find a random children there and that seems wrong.

Martin

Reply by email