fixed expandingtabs in synedit painting

git-svn-id: trunk@6668 -
This commit is contained in:
mattias 2005-01-23 11:43:38 +00:00
parent 94f6a1142d
commit 650a6ec0c5
4 changed files with 22 additions and 56 deletions

View File

@ -2726,7 +2726,7 @@ var
SetLength(ExpandedPaintToken,LengthNeeded+CharsInWindow);
SrcPos:=0;
DestPos:=0;
ScreenPos:=1;
ScreenPos:=PhysicalStartPos;
Dest:=PChar(ExpandedPaintToken);
while SrcPos<Count do begin
c:=p[SrcPos];
@ -2751,6 +2751,7 @@ var
begin
// tab char
SpaceCount:=TabWidth - ((ScreenPos-1) mod TabWidth);
//debugln('ExpandSpecialChars SpaceCount=',dbgs(SpaceCount),' TabWidth=',dbgs(TabWidth),' ScreenPos=',dbgs(ScreenPos));
for i:=1 to SpaceCount do begin
Dest[DestPos]:=FTabChar;
inc(DestPos);
@ -2771,7 +2772,7 @@ var
end;
p:=PChar(ExpandedPaintToken);
Count:=DestPos;
//debugln('Token with Tabs: "',copy(ExpandedPaintToken,1,Count),'"');
//debugln('ExpandSpecialChars Token with Tabs: "',DbgStr(copy(ExpandedPaintToken,1,Count)),'"');
end;
procedure PaintToken(
@ -8804,7 +8805,9 @@ begin
{begin} //mh 2000-10-01
StartOfBlock := CaretXY;
NewCaretX := StartOfBlock.X + i;
//debugln('TCustomSynEdit.DoTabKey Before SetSelText Line="',DbgStr(GetLineText),'"');
SetSelText(Spaces);
//debugln('TCustomSynEdit.DoTabKey After SetSelText Line="',DbgStr(GetLineText),'"');
ChangeScroll := not (eoScrollPastEol in fOptions);
try
Include(fOptions, eoScrollPastEol);

View File

@ -34,16 +34,17 @@ uses
Classes, SysUtils,
{$IfNDef GTK2_2}
{$IfNDef Win32}
X, XLib, XUtil,
XLib, //X, XUtil,
{$EndIf}
{$EndIf}
gdk2pixbuf, gtk2, gdk2, glib2, Pango,
LMessages, Controls, Forms, LCLProc, LCLStrConsts, LCLIntf, LCLType,
DynHashArray, LazLinkedList, GraphType, GraphMath, Graphics, Buttons, Menus,
GTKWinApiWindow, StdCtrls, ComCtrls, CListBox, Calendar, Arrow, Spin,
CommCtrl, ExtCtrls, Dialogs, ExtDlgs, FileCtrl, LResources, Math, GTKGlobals,
DynHashArray, GraphType, GraphMath, Graphics, Menus,
GTKWinApiWindow, StdCtrls, ComCtrls,
Dialogs, ExtDlgs, LResources, Math, GTKGlobals,
{Buttons, CListBox, Calendar, Arrow, Spin, FileCtrl, CommCtrl, ExtCtrls, }
gtkDef, gtkInt;
type
@ -247,8 +248,8 @@ end;
------------------------------------------------------------------------------}
procedure TGtkListStoreStringList.ConnectItemCallbacks(Li: TGtkTreeIter);
begin
{gtk_object_set_data(PGtkObject(li),GtkListItemLCLListTag,Self);
gtk_object_set_data(PGtkObject(li),GtkListItemGtkListTag,FGtkList);}
{gtk_object_set_data(PGtkObject(li.user_data),GtkListItemLCLListTag,Self);
gtk_object_set_data(PGtkObject(li.user_data),GtkListItemGtkListTag,FGtkList);}
end;
{------------------------------------------------------------------------------
@ -594,6 +595,9 @@ end.
{
$Log$
Revision 1.37 2005/01/23 11:43:38 mattias
fixed expandingtabs in synedit painting
Revision 1.36 2005/01/22 23:53:43 mattias
fixed gtk2 intf from Peter Vreman

View File

@ -211,11 +211,7 @@ var
Box : Pointer; // currently only used for TCustomBitBtn
pixmapwid : pGtkWidget; // currently only used for TCustomBitBtn
label1 : pgtkwidget; // currently only used for TCustomBitBtn
ParentForm: TCustomForm;
AccelText : PChar;
AccelKey : guint;
SetupProps : boolean;
AWindow: PGdkWindow;
liststore : PGtkListStore;
renderer : PGtkCellRenderer;
column : PGtkTreeViewColumn;
@ -858,7 +854,7 @@ procedure TGTK2WidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTK
end;
var
gObject, gFixed, gCore, Scroll: PGTKObject;
gObject, gFixed, gCore: PGTKObject;
begin
gObject := AGTKObject;
if gObject = nil then Exit;
@ -1255,7 +1251,6 @@ const
TestString = '{Am|g_}';
var
XT : TSize;
dummy: LongInt;
UseFontDesc : PPangoFontDescription;
UnRef : Boolean;
AVGBuffer: array[#32..#126] of char;
@ -1299,7 +1294,6 @@ begin
If (AttrList = nil) then
AttrList := pango_attr_list_new();
//fix me... what about &&, can we strip and do do markup substitution?
If Underline then
Attr := pango_attr_underline_new(PANGO_UNDERLINE_SINGLE)
else
@ -1317,12 +1311,6 @@ begin
pango_layout_set_alignment(Layout, PANGO_ALIGN_LEFT);
//fix me... and what about UTF-8 conversion?
//this could be a massive problem since we
//will need to know before hand what the current
//locale is, and if we stored UTF-8 string this would break
//cross-compatibility with GTK1.2 and win32 interfaces.....
pango_layout_set_text(Layout, TestString, length(TestString));
pango_layout_get_extents(Layout, nil, @Extents);
@ -1380,6 +1368,9 @@ end;
{ =============================================================================
$Log$
Revision 1.21 2005/01/23 11:43:38 mattias
fixed expandingtabs in synedit painting
Revision 1.20 2005/01/22 23:53:43 mattias
fixed gtk2 intf from Peter Vreman

View File

@ -30,9 +30,6 @@
// {$DEFINE ASSERT_IS_ON}
{$EndIf}
const
BOOL_TEXT: array[Boolean] of string = ('False', 'True');
//##apiwiz##sps## // Do not remove
@ -395,37 +392,9 @@ var
end;
procedure DrawTextLine;
var
UnderLineLen, Y: integer;
CurDistX: PInteger;
CharsWritten, CurX, i: integer;
LinePos: PChar;
begin
with TDeviceContext(DC) do begin
{$IFDEF GTK1}
if (Dx=nil) then begin
// no dist array -> write as one block
//fix me... do we even need to do it this way with pango?
DoTextOut(TxtPt.X, TxtPt.Y, LineStart, LineLen);
end else begin
// dist array -> write each char separately
CharsWritten:=integer(LineStart-Str);
if DCTextMetric.IsDoubleByteChar then
CharsWritten:=CharsWritten div 2;
CurDistX:=Dx+CharsWritten*SizeOf(Integer);
CurX:=TxtPt.X;
LinePos:=LineStart;
for i:=1 to LineLen do begin
//fix me... do we even need to do it this way with pango?
DoTextOut(CurX, TxtPt.Y, LinePos, 1);
inc(LinePos);
inc(CurX,CurDistX^);
inc(CurDistX);
end;
end;
{$ELSE GTK1}
DoTextOut(TxtPt.X, TxtPt.Y, LineStart, LineLen);
{$ENDIF GTK1}
end;
end;
@ -615,9 +584,6 @@ end;
function TGtk2WidgetSet.GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer;
var Size: TSize): Boolean;
var
DCOrigin: TPoint;
aRect : TRect;
UnRef,
Underline,
StrikeOut : Boolean;
@ -650,7 +616,6 @@ begin
If UseFontDesc = nil then
DebugLn('WARNING: [TGtk2WidgetSet.GetTextExtentPoint] Missing Font')
else begin
DCOrigin:=GetDCOffset(TDeviceContext(DC));
GetStyle(lgsdefault);
Layout := gtk_widget_create_pango_layout (GetStyleWidget(lgsdefault), nil);
pango_layout_set_font_description(Layout, UseFontDesc);
@ -830,6 +795,9 @@ end;
{ =============================================================================
$Log$
Revision 1.12 2005/01/23 11:43:38 mattias
fixed expandingtabs in synedit painting
Revision 1.11 2004/11/08 19:11:55 mattias
disabled hardly used gtk FillScreenFont, this should be only done on demand, improved getting default font family for gtk