mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-28 15:29:34 +02:00
fixed expandingtabs in synedit painting
git-svn-id: trunk@6668 -
This commit is contained in:
parent
94f6a1142d
commit
650a6ec0c5
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user