From: Maël Hörz <ma...@us...> - 2008-03-01 18:32:08
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv19659/Source Modified Files: Tag: Unicode_2004_08_31 SynEdit.pas SynEditHighlighter.pas SynHighlighterManager.pas SynUnicode.pas Log Message: - Fix a drawing bug caused by text measurement (#9 was assigned width=0 when using USP but other WinAPIs return the average character width) - Use friendly language names in the highlighter manager Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.386.2.72 retrieving revision 1.386.2.73 diff -u -d -r1.386.2.72 -r1.386.2.73 --- SynEdit.pas 30 Jan 2008 20:41:59 -0000 1.386.2.72 +++ SynEdit.pas 1 Mar 2008 18:31:59 -0000 1.386.2.73 @@ -3706,7 +3706,7 @@ try {$IFNDEF SYN_CLX} // Check for our special format and read PasteMode. - // The text is ignored as it is ANSI-only to keep compatible with programs + // The text is ignored as it is ANSI-only to stay compatible with programs // using the ANSI version of SynEdit. // // Instead we take the text stored in CF_UNICODETEXT or CF_TEXT. Index: SynEditHighlighter.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEditHighlighter.pas,v retrieving revision 1.36.2.16 retrieving revision 1.36.2.17 diff -u -d -r1.36.2.16 -r1.36.2.17 --- SynEditHighlighter.pas 24 Dec 2007 13:59:57 -0000 1.36.2.16 +++ SynEditHighlighter.pas 1 Mar 2008 18:32:02 -0000 1.36.2.17 @@ -248,6 +248,7 @@ constructor Create; destructor Destroy; override; function Count: Integer; + function FindByFriendlyName(FriendlyName: string): Integer; function FindByName(Name: string): Integer; function FindByClass(Comp: TComponent): Integer; property Items[Index: Integer]: TSynCustomHighlighterClass @@ -305,6 +306,21 @@ end; end; +function TSynHighlighterList.FindByFriendlyName(FriendlyName: string): Integer; +var + i: Integer; +begin + Result := -1; + for i := 0 to Count - 1 do + begin + if Items[i].GetFriendlyLanguageName = FriendlyName then + begin + Result := i; + Exit; + end; + end; +end; + function TSynHighlighterList.FindByName(Name: string): Integer; var i: Integer; Index: SynUnicode.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/Attic/SynUnicode.pas,v retrieving revision 1.1.2.36 retrieving revision 1.1.2.37 diff -u -d -r1.1.2.36 -r1.1.2.37 --- SynUnicode.pas 2 Feb 2008 19:13:53 -0000 1.1.2.36 +++ SynUnicode.pas 1 Mar 2008 18:32:02 -0000 1.1.2.37 @@ -2296,7 +2296,14 @@ begin lpSize := ScriptString_pSize(saa); if lpSize <> nil then + begin Result := lpSize^; + if Result.cx = 0 then + begin + GetTextMetricsA(DC, tm); + Result.cx := tm.tmAveCharWidth; + end; + end; ScriptStringFree(@saa); end; end Index: SynHighlighterManager.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynHighlighterManager.pas,v retrieving revision 1.7.2.1 retrieving revision 1.7.2.2 diff -u -d -r1.7.2.1 -r1.7.2.2 --- SynHighlighterManager.pas 31 Aug 2004 12:55:21 -0000 1.7.2.1 +++ SynHighlighterManager.pas 1 Mar 2008 18:32:02 -0000 1.7.2.2 @@ -158,7 +158,7 @@ for i := 0 to form.ComponentCount-1 do begin j := highlight.FindByClass(form.Components[i]); if j >= 0 then begin - j := synForm.clbHighlighters.Items.IndexOf(highlight[j].GetLanguageName); + j := synForm.clbHighlighters.Items.IndexOf(highlight[j].GetFriendlyLanguageName); if j >= 0 then synForm.clbHighlighters.Checked[j] := true; end; @@ -258,7 +258,7 @@ // in second. for i := 0 to synForm.clbHighlighters.Items.Count-1 do begin if not synForm.clbHighlighters.Checked[i] then begin // unchecked - remove - high := highlight.FindByName(synForm.clbHighlighters.Items[i]); + high := highlight.FindByFriendlyName(synForm.clbHighlighters.Items[i]); if high >= 0 then begin comp := FindHighlighterComp(highlight[high]); if comp >= 0 then @@ -268,7 +268,7 @@ end; //for for i := 0 to synForm.clbHighlighters.Items.Count-1 do begin if synForm.clbHighlighters.Checked[i] then begin // checked - add - high := highlight.FindByName(synForm.clbHighlighters.Items[i]); + high := highlight.FindByFriendlyName(synForm.clbHighlighters.Items[i]); if high >= 0 then begin if FindHighlighterComp(highlight[high]) < 0 then begin GetFreeCoordinates; @@ -459,7 +459,7 @@ begin clbHighlighters.Clear; for i := 0 to Highlight.Count-1 do begin - clbHighlighters.Items.Add(Highlight[i].GetLanguageName); + clbHighlighters.Items.Add(Highlight[i].GetFriendlyLanguageName); end; //for end; |