* Merge fixes from 4.8 branch

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1239 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
blikblum
2010-06-28 16:51:38 +00:00
parent a09e6ab7e0
commit 68477cc125
15 changed files with 134 additions and 92 deletions

View File

@ -29,6 +29,21 @@ unit VirtualTrees;
//
// January 2010 (j.wielicki@sotecware.net)
// - Improvement: Introduced 64-bit compatibility.
// January 2010
// - Bug fix: TBaseVirtualTree.AdjustTotalHeight now longer calculates wrong total heights if nodes have been
// made invisible
// - Bug fix: TCustomVirtualStringTree.OnMeasureTextWidth now works as intended
// - Bug fix: Added missing $IFDEFs concerning theming support
// - Bug fix: Removed default from properties TVirtualTreeColumn.Color and TVirtualTreeColumn.BiDiMode
// July 2009
// - Bug fix: TWorkerThread will no longer reference the tree after it has been destroyed (Mantis issue #384)
// - Bug fix: TBaseVirtualTree.InternalConnectNode checked the expanded state of the wrong node if Mode was
// amAddChildFirst or amAddChildLast
// June 2009
// - Bug fix: fixed some issues concerning the vista theme handling
// - Improvement: removed hidden node handling in this branch
// - Improvement: reverted header click handling to old version to keep compatibility in this branch
// - Improvement: removed TVTPaintOption toHideTreeLinesIfThemed
// May 2009
// - Improvement: new TVTMiscOption toEditOnClick, toEditOnDblClick to control if editing can be started with a single
// click or a double click
@ -491,8 +506,6 @@ type
Result: Integer;
end;
TLMContextMenu = TLMMouse;
// Be careful when adding new states as this might change the size of the type which in turn
// changes the alignment in the node record as well as the stream chunks.
// Do not reorder the states and always add new states at the end of this enumeration in order to avoid
@ -22316,8 +22329,8 @@ procedure TBaseVirtualTree.PaintCheckImage(const PaintInfo: TVTPaintInfo);
ButtonState := ButtonState or DFCS_CHECKED;
if Flat then
ButtonState := ButtonState or DFCS_FLAT;
//lcl DrawFrameControl is different from windows
DelphiCompat.DrawFrameControl(Canvas.Handle, R, DFC_BUTTON, ButtonType or ButtonState);
DrawFrameControl(Canvas.Handle, R, DFC_BUTTON, ButtonType or ButtonState);
end;
@ -28357,8 +28370,7 @@ begin
{$ifndef Gtk}
SetMapMode(Canvas.Handle, GetMapMode(TargetCanvas.Handle));
{$endif}
//Workaround to LCL bug 8626
SetWindowOrgEx(Canvas.Handle, {$ifdef Gtk}-{$endif}Window.Left, 0, nil);
SetWindowOrgEx(Canvas.Handle, Window.Left, 0, nil);
R.Bottom := PaintInfo.Node.NodeHeight;
end;
// Set the origin of the canvas' brush. This depends on the node heights.
@ -28671,7 +28683,7 @@ begin
{$ifdef DEBUG_VTV}Logger.Send([lcPaintDetails],'TargetRect',TargetRect);{$endif}
{$ifdef DEBUG_VTV}Logger.Send([lcPaintDetails],'NodeBitmap Width: %d Height: %d',[NodeBitmap.Width,NodeBitmap.Height]);{$endif}
// Call back application/descendants whether they want to erase this area.
SetWindowOrgEx(NodeBitmap.Canvas.Handle,{$ifndef Windows}-{$endif}Target.X, 0, nil);
SetWindowOrgEx(NodeBitmap.Canvas.Handle, Target.X, 0, nil);
if not DoPaintBackground(NodeBitmap.Canvas, TargetRect) then
begin
if UseBackground then
@ -30634,9 +30646,13 @@ begin
// This does not harm formatting as single line control, if we don't use word wrapping.
with Params do
begin
Style := Style or ES_MULTILINE;
//todo: delphi uses Multiline for all
//Style := Style or ES_MULTILINE;
if vsMultiline in FLink.FNode.States then
begin
Style := Style and not (ES_AUTOHSCROLL or WS_HSCROLL) or WS_VSCROLL or ES_AUTOVSCROLL;
Style := Style or ES_MULTILINE;
end;
if tsUseThemes in FLink.FTree.FStates then
begin
Style := Style and not WS_BORDER;
@ -30852,7 +30868,7 @@ constructor TCustomVirtualStringTree.Create(AOwner: TComponent);
begin
inherited;
if (Owner = nil) or (([csReading, csDesigning] * Owner.ComponentState) = [csDesigning]) then
FDefaultText := 'Node';
FInternalDataOffset := AllocateInternalDataArea(SizeOf(Cardinal));
end;

View File

@ -13,7 +13,7 @@
<TargetFileExt Value=".exe"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
<StringTable Comments="" CompanyName="" FileDescription="" FileVersion="0.0.0.0" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion=""/>
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
@ -150,8 +150,13 @@
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="8"/>
<Version Value="9"/>
<PathDelim Value="\"/>
<Parsing>
<SyntaxOptions>
<UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>

View File

@ -1,40 +1,41 @@
object Form1: TForm1
Left = 188
Height = 437
Height = 434
Top = 104
Width = 612
ActiveControl = Button1
Width = 648
ActiveControl = MyTree
Caption = 'Form1'
ClientHeight = 437
ClientWidth = 612
ClientHeight = 434
ClientWidth = 648
Font.Height = -11
Font.Name = 'MS Sans Serif'
OnClose = FormClose
OnCreate = FormCreate
LCLVersion = '0.9.27'
Position = poScreenCenter
LCLVersion = '0.9.29'
object Label1: TLabel
Left = 207
Left = 224
Height = 14
Top = 351
Width = 149
Top = 348
Width = 174
Anchors = [akRight, akBottom]
Caption = 'Array data of the clicked node'
Caption = 'Array data of the clicked node:'
ParentColor = False
end
object Label2: TLabel
Left = 367
Left = 224
Height = 14
Top = 335
Width = 222
Top = 382
Width = 256
Anchors = [akRight, akBottom]
Caption = 'Find and show the node by specific array index'
ParentColor = False
end
object Label3: TLabel
Left = 367
Left = 224
Height = 14
Top = 351
Width = 237
Top = 398
Width = 274
Anchors = [akRight, akBottom]
Caption = 'Type index to get related tree node on the screen:'
ParentColor = False
@ -42,7 +43,7 @@ object Form1: TForm1
object Button1: TButton
Left = 8
Height = 25
Top = 342
Top = 344
Width = 83
Anchors = [akLeft, akBottom]
BorderSpacing.InnerBorder = 4
@ -53,7 +54,7 @@ object Form1: TForm1
object btnDelete: TButton
Left = 96
Height = 25
Top = 342
Top = 344
Width = 97
Anchors = [akLeft, akBottom]
BorderSpacing.InnerBorder = 4
@ -62,18 +63,21 @@ object Form1: TForm1
TabOrder = 1
end
object Edit1: TEdit
Left = 208
Height = 21
Top = 376
Width = 153
Anchors = [akRight, akBottom]
AnchorSideLeft.Control = Label1
AnchorSideLeft.Side = asrBottom
Left = 402
Height = 23
Top = 344
Width = 170
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 4
ReadOnly = True
TabOrder = 2
end
object btnCleanAll: TButton
Left = 56
Height = 25
Top = 374
Top = 376
Width = 75
Anchors = [akLeft, akBottom]
BorderSpacing.InnerBorder = 4
@ -82,25 +86,29 @@ object Form1: TForm1
TabOrder = 3
end
object Edit2: TEdit
Left = 368
Height = 21
Top = 378
AnchorSideLeft.Control = Label3
AnchorSideLeft.Side = asrBottom
Left = 502
Height = 23
Top = 394
Width = 97
Anchors = [akRight, akBottom]
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 4
OnChange = Edit2Change
TabOrder = 4
end
object MyTree: TVirtualStringTree
Left = 3
Height = 321
Height = 326
Top = 8
Width = 605
Width = 641
Anchors = [akTop, akLeft, akRight, akBottom]
AutoScrollDelay = 1
BorderStyle = bsSingle
DefaultText = 'Node'
Header.AutoSizeIndex = 0
Header.Columns = <
item
Position = 0
Text = 'Text'
Width = 150
end
@ -115,6 +123,7 @@ object Form1: TForm1
Text = 'Random'
Width = 100
end>
Header.DefaultHeight = 17
Header.Font.Height = -11
Header.Font.Name = 'MS Sans Serif'
Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoShowSortGlyphs, hoVisible]

View File

@ -13,11 +13,10 @@
<TargetFileExt Value=".exe"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
<StringTable Comments="" CompanyName="" FileDescription="" FileVersion="0.0.0.0" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion=""/>
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
@ -52,8 +51,13 @@
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="8"/>
<Version Value="9"/>
<PathDelim Value="\"/>
<Parsing>
<SyntaxOptions>
<UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
<Linking>
<Options>
<Win32>

View File

@ -10,10 +10,12 @@ object Form1: TForm1
Font.Height = -11
Font.Name = 'MS Sans Serif'
OnCreate = FormCreate
LCLVersion = '0.9.27'
LCLVersion = '0.9.29'
object VST1: TVirtualStringTree
Cursor = 63
Left = 0
Height = 440
Top = 0
Width = 500
Align = alClient
CheckImageKind = ckXP
@ -22,10 +24,12 @@ object Form1: TForm1
DragMode = dmAutomatic
DragOperations = [doCopy, doMove, doLink]
DrawSelectionMode = smBlendedRectangle
Header.AutoSizeIndex = 0
Header.Columns = <
item
Hint = 'Glavna kolona'
ImageIndex = 0
Position = 0
Text = 'Main'
Width = 200
end
@ -46,6 +50,7 @@ object Form1: TForm1
Text = 'Percent'
Width = 150
end>
Header.DefaultHeight = 17
Header.Font.Height = -11
Header.Font.Name = 'MS Sans Serif'
Header.Height = 24

View File

@ -13,11 +13,10 @@
<TargetFileExt Value=".exe"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
<StringTable Comments="" CompanyName="" FileDescription="" FileVersion="0.0.0.0" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion=""/>
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
@ -43,17 +42,22 @@
</Unit0>
<Unit1>
<Filename Value="Unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="8"/>
<Version Value="9"/>
<PathDelim Value="\"/>
<Parsing>
<SyntaxOptions>
<UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
<Linking>
<Options>
<Win32>

View File

@ -2,7 +2,7 @@ program images;
{$mode objfpc}{$H+}
{$define DEBUG_VTV}
{.$define DEBUG_VTV}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}

View File

@ -17,7 +17,6 @@
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>

View File

@ -2,10 +2,11 @@
<CONFIG>
<ProjectOptions>
<PathDelim Value="\"/>
<Version Value="6"/>
<Version Value="7"/>
<General>
<Flags>
<AlwaysBuild Value="False"/>
<LRSInOutputDirectory Value="False"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
@ -16,7 +17,6 @@
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
@ -45,11 +45,10 @@
</Unit0>
<Unit1>
<Filename Value="MVCDemoMain.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="fmMVCDemo"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<ResourceFilename Value="MVCDemoMain.lrs"/>
<UnitName Value="MVCDemoMain"/>
</Unit1>
<Unit2>

View File

@ -11,7 +11,6 @@
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<TargetFileExt Value=".exe"/>
<Icon Value="0"/>
<UseXPManifest Value="True"/>
</General>
<VersionInfo>
@ -26,7 +25,7 @@
<RunParams>
<local>
<FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="2">
@ -46,8 +45,8 @@
</Unit0>
<Unit1>
<Filename Value="fmain.pas"/>
<ComponentName Value="MainForm"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="MainForm"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="fMain"/>
</Unit1>

View File

@ -3,7 +3,7 @@ object frmVTNoData: TfrmVTNoData
Height = 346
Top = 154
Width = 401
ActiveControl = VT
ActiveControl = Panel1
Caption = 'Basic VT as a Tree (no node data used)'
ClientHeight = 346
ClientWidth = 401
@ -14,9 +14,11 @@ object frmVTNoData: TfrmVTNoData
OnCreate = FormCreate
OnDestroy = FormDestroy
Position = poDefaultPosOnly
LCLVersion = '0.9.27'
LCLVersion = '0.9.29'
object Panel1: TPanel
Left = 0
Height = 346
Top = 0
Width = 401
Align = alClient
BevelOuter = bvNone
@ -31,9 +33,10 @@ object frmVTNoData: TfrmVTNoData
Top = 7
Width = 387
Align = alClient
BorderStyle = bsSingle
DefaultText = 'Node'
Header.AutoSizeIndex = 0
Header.Columns = <>
Header.DefaultHeight = 17
Header.Font.Height = -11
Header.Font.Name = 'MS Shell Dlg 2'
Header.MainColumn = -1
@ -64,7 +67,7 @@ object frmVTNoData: TfrmVTNoData
Left = 9
Height = 14
Top = 9
Width = 76
Width = 82
Alignment = taCenter
Caption = 'VT.TreeOptions'
Font.Color = clRed
@ -75,27 +78,27 @@ object frmVTNoData: TfrmVTNoData
end
object chkCheckBoxes: TCheckBox
Left = 180
Height = 17
Height = 22
Top = 7
Width = 81
Width = 93
Caption = 'Check Boxes'
OnClick = chkCheckBoxesClick
TabOrder = 0
end
object chkFullExpand: TCheckBox
Left = 100
Height = 17
Height = 22
Top = 7
Width = 75
Width = 86
Caption = 'Full Expand'
OnClick = chkFullExpandClick
TabOrder = 1
end
object chkShowLevel: TCheckBox
Left = 271
Height = 17
Height = 22
Top = 7
Width = 74
Width = 86
Caption = 'Show Level'
OnClick = chkShowLevelClick
TabOrder = 2

View File

@ -167,7 +167,9 @@ implementation
'VariableNodeHeight',
'FullRowDrag',
'NodeHeightResize',
'NodeHeightDblClickResize'
'NodeHeightDblClickResize',
'EditOnClick',
'EditOnDblClick'
);
aPaintOpts : array[0..Ord(High(TVTPaintOption ))] of string[25] =
@ -191,7 +193,8 @@ implementation
'UseBlendedSelection', // Enable alpha blending for node selections.
'StaticBackground',
'ChildrenAbove',
'FixedIndent'
'FixedIndent',
'UseExplorerTheme'
);
aSelOpts : array[0..Ord(High(TVTSelectionOption))] of string[25] =

View File

@ -17,7 +17,6 @@
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
@ -50,9 +49,9 @@
</Unit0>
<Unit1>
<Filename Value="Main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMain"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Main"/>
</Unit1>
@ -63,17 +62,17 @@
</Unit2>
<Unit3>
<Filename Value="VTNoData.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmVTNoData"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="VTNoData"/>
</Unit3>
<Unit4>
<Filename Value="VTPropEdit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmVTPropEdit"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="VTPropEdit"/>
</Unit4>
@ -84,24 +83,24 @@
</Unit5>
<Unit6>
<Filename Value="ViewCode.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmViewCode"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ViewCode"/>
</Unit6>
<Unit7>
<Filename Value="VTCheckList.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmVTCheckList"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="VTCheckList"/>
</Unit7>
<Unit8>
<Filename Value="VTDBExample.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmVTDBExample"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="VTDBExample"/>
</Unit8>

View File

@ -1,12 +1,12 @@
uses
gtkdef, gdk2, GTKProc, Cairo;
gtk2def, gdk2, GTK2Proc, Cairo;
function gdk_cairo_create(drawable: PGdkDrawable): Pcairo_t cdecl external gdklib;
procedure AlphaBlend(Source, Destination: HDC; const R: TRect; const Target: TPoint; Mode: TBlendMode; ConstantAlpha, Bias: Integer);
function GetContext(GtkDC: TGtkDeviceContext): Pcairo_t;
function GetContext(GtkDC: TGtk2DeviceContext): Pcairo_t;
begin
Result := nil;
if (GtkDC <> nil) and (GtkDC.Drawable <> nil) then
@ -14,8 +14,8 @@ procedure AlphaBlend(Source, Destination: HDC; const R: TRect; const Target: TPo
end;
var
SrcDC: TGtkDeviceContext absolute Source;
DestDC: TGtkDeviceContext absolute Destination;
SrcDC: TGtk2DeviceContext absolute Source;
DestDC: TGtk2DeviceContext absolute Destination;
SrcContext, DestContext: Pcairo_t;
begin
case Mode of

View File

@ -2,7 +2,7 @@
<CONFIG>
<Package Version="3">
<Name Value="virtualtreeview_package"/>
<Author Value="Mike Lischke (LCL Port: Luiz Americo)"/>
<Author Value="Mike Lischke (LCL Port: Luiz Américo)"/>
<CompilerOptions>
<Version Value="8"/>
<SearchPaths>
@ -16,9 +16,9 @@
</CompilerOptions>
<Description Value="Virtual Treeview is an advanced component originally created for Delphi
"/>
<License Value=" Moziall Public License 1.1 (MPL 1.1) or GNU Lesser General Public License
<License Value=" Mozilla Public License 1.1 (MPL 1.1) or GNU Lesser General Public License
"/>
<Version Major="4" Minor="5" Release="1"/>
<Version Major="4" Minor="8" Release="6"/>
<Files Count="7">
<Item1>
<Filename Value="virtualtrees.lrs"/>
@ -51,16 +51,13 @@
</Item7>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="3">
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="multiloglaz"/>
<PackageName Value="lclextensions_package"/>
</Item1>
<Item2>
<PackageName Value="lclextensions_package"/>
</Item2>
<Item3>
<PackageName Value="LCL"/>
</Item3>
</Item2>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)/"/>