summaryrefslogtreecommitdiff
path: root/packages/chm
diff options
context:
space:
mode:
authorandrew <andrew@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-10-24 19:06:12 +0000
committerandrew <andrew@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-10-24 19:06:12 +0000
commit132a7afcc6150e7690ea3ff8efd948467739e6e5 (patch)
tree3d0a818428b31afb4c13510cf5ecadc7b1e1436b /packages/chm
parent1c9665cf4f02a5df90ba8524ab40404fbd8ab760 (diff)
downloadfpc-132a7afcc6150e7690ea3ff8efd948467739e6e5.tar.gz
* Fixed bug 14858 where chmsitemap could not properly read a file
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@13947 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/chm')
-rw-r--r--packages/chm/src/chmsitemap.pas17
1 files changed, 14 insertions, 3 deletions
diff --git a/packages/chm/src/chmsitemap.pas b/packages/chm/src/chmsitemap.pas
index dd15d2cfa3..fa13854b2b 100644
--- a/packages/chm/src/chmsitemap.pas
+++ b/packages/chm/src/chmsitemap.pas
@@ -124,6 +124,7 @@ type
FUseFolderImages: Boolean;
FWindowName: String;
FLevel: Integer;
+ FLevelForced: Boolean;
FWindowStyles: LongInt;
procedure SetItems(const AValue: TChmSiteMapItems);
protected
@@ -202,7 +203,7 @@ begin
else begin // looking for /HTML
if TagName = '/HTML' then Exclude(FSiteMapTags, smtHTML);
end;}
-
+
//if (smtHTML in FSiteMapTags) then begin
if not (smtBODY in FSiteMapTags) then begin
if TagName = 'BODY' then Include(FSiteMapTags, smtBODY);
@@ -210,7 +211,7 @@ begin
else begin
if TagName = '/BODY' then Exclude(FSiteMapTags, smtBODY);
end;
-
+
if (smtBODY in FSiteMapTags) then begin
//WriteLn('GOT TAG: ', AActualTag);
if TagName = 'UL' then begin
@@ -221,16 +222,26 @@ begin
//WriteLN('Dec Level');
DecreaseULevel;
end
+ else if (TagName = 'LI') and (FLevel = 0) then
+ FLevelForced := True
else if TagName = 'OBJECT' then begin
Include(FSiteMapBodyTags, smbtOBJECT);
+ if FLevelForced then
+ IncreaseULevel;
If FLevel > 0 then // if it is zero it is the site properties
NewSiteMapItem;
end
else if TagName = '/OBJECT' then begin
Exclude(FSiteMapBodyTags, smbtOBJECT);
+ if FLevelForced then
+ begin
+ DecreaseULevel;
+ FLevelForced := False;
+ end;
end
else begin // we are the properties of the object tag
- if (smbtOBJECT in FSiteMapBodyTags) then begin
+ if (FLevel > 0 ) and (smbtOBJECT in FSiteMapBodyTags) then begin
+
if LowerCase(GetTagName(AActualTag)) = 'param' then begin
TagAttributeName := GetVal(AActualTag, 'name');