|
[Synedit-checkins] SynEdit/Source SynEdit.pas,1.386.2.46,1.386.2.47 SynTextDrawer.pas,1.6.2.8,1.6.2.9
From: Maël Hörz <maelh@us...> - 2006-01-21 19:08
|
Update of /cvsroot/synedit/SynEdit/Source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16347/Source
Modified Files:
Tag: Unicode_2004_08_31
SynEdit.pas SynTextDrawer.pas
Log Message:
Fix a clipping bug
Index: SynEdit.pas
===================================================================
RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v
retrieving revision 1.386.2.46
retrieving revision 1.386.2.47
diff -u -d -r1.386.2.46 -r1.386.2.47
--- SynEdit.pas 21 Jan 2006 18:36:05 -0000 1.386.2.46
+++ SynEdit.pas 21 Jan 2006 19:08:28 -0000 1.386.2.47
@@ -3074,10 +3074,10 @@
LastChar: Cardinal;
RealCharWidth: Integer;
CharInfo: TABC;
+ tm: TTextMetricA;
begin
- RealCharWidth := 0;
LastChar := Ord(TokenAccu.s[TokenAccu.Len]);
-
+ RealCharWidth := CharWidth;
if Win32PlatformIsUnicode then
begin
if GetCharABCWidthsW(Canvas.Handle, LastChar, LastChar, CharInfo) then
@@ -3086,8 +3086,11 @@
if CharInfo.abcC >= 0 then
Inc(RealCharWidth, CharInfo.abcC);
end
- else
- RealCharWidth := CharWidth;
+ else if LastChar < Ord(High(AnsiChar)) then
+ begin
+ GetTextMetricsA(Canvas.Handle, tm);
+ RealCharWidth := tm.tmAveCharWidth + tm.tmOverhang;
+ end;
end
else if WideChar(LastChar) <= High(AnsiChar) then
begin
@@ -3097,8 +3100,11 @@
if CharInfo.abcC >= 0 then
Inc(RealCharWidth, CharInfo.abcC);
end
- else
- RealCharWidth := CharWidth;
+ else if LastChar < Ord(High(AnsiChar)) then
+ begin
+ GetTextMetricsA(Canvas.Handle, tm);
+ RealCharWidth := tm.tmAveCharWidth + tm.tmOverhang;
+ end;
end;
if RealCharWidth > CharWidth then
Index: SynTextDrawer.pas
===================================================================
RCS file: /cvsroot/synedit/SynEdit/Source/SynTextDrawer.pas,v
retrieving revision 1.6.2.8
retrieving revision 1.6.2.9
diff -u -d -r1.6.2.8 -r1.6.2.9
--- SynTextDrawer.pas 21 Jan 2006 18:36:05 -0000 1.6.2.8
+++ SynTextDrawer.pas 21 Jan 2006 19:08:28 -0000 1.6.2.9
@@ -980,12 +980,13 @@
LastChar: Cardinal;
RealCharWidth, CharWidth: Integer;
CharInfo: TABC;
+ tm: TTextMetricA;
begin
if Length <= 0 then Exit;
- RealCharWidth := 0;
LastChar := Ord(Text[Length]);
CharWidth := FETODist[Length - 1];
+ RealCharWidth := CharWidth;
if Win32PlatformIsUnicode then
begin
if GetCharABCWidthsW(FDC, LastChar, LastChar, CharInfo) then
@@ -994,8 +995,11 @@
if CharInfo.abcC >= 0 then
Inc(RealCharWidth, CharInfo.abcC);
end
- else
- RealCharWidth := CharWidth;
+ else if LastChar < Ord(High(AnsiChar)) then
+ begin
+ GetTextMetricsA(FDC, tm);
+ RealCharWidth := tm.tmAveCharWidth + tm.tmOverhang;
+ end;
end
else if WideChar(LastChar) <= High(AnsiChar) then
begin
@@ -1005,8 +1009,11 @@
if CharInfo.abcC >= 0 then
Inc(RealCharWidth, CharInfo.abcC);
end
- else
- RealCharWidth := CharWidth
+ else if LastChar < Ord(High(AnsiChar)) then
+ begin
+ GetTextMetricsA(FDC, tm);
+ RealCharWidth := tm.tmAveCharWidth + tm.tmOverhang;
+ end;
end;
if RealCharWidth > CharWidth then
Inc(ARect.Right, RealCharWidth - CharWidth);
|
| Thread | Author | Date |
|---|---|---|
| [Synedit-checkins] SynEdit/Source SynEdit.pas,1.386.2.46,1.386.2.47 SynTextDrawer.pas,1.6.2.8,1.6.2.9 | Maël Hörz <maelh@us...> |