diff --git a/ide/sourceeditprocs.pas b/ide/sourceeditprocs.pas index 16e5cc0c8a..8c618ca0b0 100644 --- a/ide/sourceeditprocs.pas +++ b/ide/sourceeditprocs.pas @@ -104,7 +104,7 @@ var CurToken:=copy(AKey,TokenStart,TokenEnd-TokenStart); ACanvas.TextOut(x+1, y, CurToken); x := x + ACanvas.TextWidth(CurToken); - //debugln('Paint A Text="',CurToken,'" x=',dbgs(x),' y=',dbgs(y),' "',ACanvas.Font.Name,'" ',dbgs(ACanvas.Font.Height)); + //debugln('Paint A Text="',CurToken,'" x=',dbgs(x),' y=',dbgs(y),' "',ACanvas.Font.Name,'" ',dbgs(ACanvas.Font.Height),' ',dbgs(ACanvas.TextWidth(CurToken))); TokenStart:=0; end; end; diff --git a/lcl/include/winapih.inc b/lcl/include/winapih.inc index cef09e8368..d1f7bf6a42 100644 --- a/lcl/include/winapih.inc +++ b/lcl/include/winapih.inc @@ -132,8 +132,8 @@ function GetSystemPaletteEntries(DC: HDC; StartIndex, NumEntries: UINT; function GetSystemMetrics(nIndex: Integer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} function GetTextColor(DC: HDC) : TColorRef; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} function GetTextExtentExPoint(DC: HDC; Str: PChar; Count, MaxWidth: Integer; MaxCount, PartialWidths: PInteger; var Size: TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} -function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} -function GetTextExtentPoint32(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} +function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: LCLType.TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} +function GetTextExtentPoint32(DC: HDC; Str: PChar; Count: Integer; var Size: LCLType.TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} function GetTextMetrics(DC: HDC; var TM: TTextMetric): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} function GetWindowLong(Handle : hwnd; int : Integer): Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} function GetWindowRect(Handle : hwnd; var Rect : TRect): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} @@ -295,6 +295,9 @@ function RGB(R, G, B : Byte) : TColorRef; { ============================================================================= $Log$ + Revision 1.101 2005/01/01 20:17:30 mattias + implemented gtk GetTextExtentPoint for UTF8 + Revision 1.100 2004/04/10 17:58:57 mattias implemented mainunit hints for include files diff --git a/lcl/interfaces/gtk/gtkwinapi.inc b/lcl/interfaces/gtk/gtkwinapi.inc index 4f741e6898..85602ed412 100644 --- a/lcl/interfaces/gtk/gtkwinapi.inc +++ b/lcl/interfaces/gtk/gtkwinapi.inc @@ -5409,6 +5409,8 @@ var lbearing, rbearing, width, ascent,descent: LongInt; UseFont : PGDKFont; UnRef : Boolean; + IsDBCSFont: Boolean; + NewCount: Integer; begin Result := IsValidDC(DC); if Result @@ -5427,10 +5429,23 @@ begin DebugLn('WARNING: [TGtkWidgetSet.GetTextExtentPoint] Missing font') else begin descent:=0; - gdk_text_extents(UseFont, Str, Count, - @lbearing, @rBearing, @width, @ascent, @descent); + UpdateDCTextMetric(TDeviceContext(DC)); + IsDBCSFont:=TDeviceContext(DC).DCTextMetric.IsDoubleByteChar; + if IsDBCSFont then begin + NewCount:=Count*2; + if FExtUTF8OutCacheSize