From 2fa374f22e8ac6b33c956b045e1e853224f55d98 Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Fri, 5 Apr 2013 09:12:43 +0000 Subject: [PATCH] fpvectorial: Fixes a bug in the layers code of the SVG reader, it didnt return the current layer to the parent git-svn-id: trunk@40718 - --- components/fpvectorial/fpvectorial.pas | 13 +++++++++++++ components/fpvectorial/svgvectorialreader.pas | 7 ++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/components/fpvectorial/fpvectorial.pas b/components/fpvectorial/fpvectorial.pas index 3e5bd00545..a5316bc0c0 100644 --- a/components/fpvectorial/fpvectorial.pas +++ b/components/fpvectorial/fpvectorial.pas @@ -791,6 +791,8 @@ type function AddLayer(AName: string): TvLayer; function AddLayerAndSetAsCurrent(AName: string): TvLayer; procedure ClearLayerSelection(); + function SetCurrentLayer(ALayer: TvLayer): Boolean; + function GetCurrentLayer: TvLayer; // Dimensions function AddAlignedDimension(BaseLeft, BaseRight, DimLeft, DimRight: T3DPoint; AOnlyCreate: Boolean = False): TvAlignedDimension; function AddRadialDimension(AIsDiameter: Boolean; ACenter, ADimLeft, ADimRight: T3DPoint; AOnlyCreate: Boolean = False): TvRadialDimension; @@ -3724,6 +3726,17 @@ begin FCurrentLayer := nil; end; +function TvVectorialPage.SetCurrentLayer(ALayer: TvLayer): Boolean; +begin + Result := True; + FCurrentLayer := ALayer; +end; + +function TvVectorialPage.GetCurrentLayer: TvLayer; +begin + Result := FCurrentLayer; +end; + function TvVectorialPage.AddAlignedDimension(BaseLeft, BaseRight, DimLeft, DimRight: T3DPoint; AOnlyCreate: Boolean = False): TvAlignedDimension; diff --git a/components/fpvectorial/svgvectorialreader.pas b/components/fpvectorial/svgvectorialreader.pas index e4832a2881..a0a8ba7b64 100644 --- a/components/fpvectorial/svgvectorialreader.pas +++ b/components/fpvectorial/svgvectorialreader.pas @@ -916,7 +916,7 @@ var lNodeName: DOMString; lLayerName: string = ''; lCurNode, lLayerNameNode: TDOMNode; - lLayer: TvLayer; + lLayer, lParentLayer: TvLayer; i: Integer; lLayerStyleKeys, lLayerStyleValues: TStringList; begin @@ -938,6 +938,7 @@ begin end; end; + lParentLayer := AData.GetCurrentLayer(); lLayer := AData.AddLayerAndSetAsCurrent(lLayerName); lCurNode := ANode.FirstChild; @@ -952,6 +953,10 @@ begin lLayerStyleKeys.Free; FLayerStylesValues.Remove(lLayerStyleValues); lLayerStyleValues.Free; + + // Set the current layer to the parent node, + // or else items read next will be put as children of this layer + AData.SetCurrentLayer(lParentLayer); end; procedure TvSVGVectorialReader.ReadLineFromNode(ANode: TDOMNode;