Merged revision(s) 64003 #32439437d4, 64070 #609f5046d8, 64130 #e405b8c6ac, 64142 #2a0df745f0, 64161 #62462e4388 from trunk:

LCL-GTK2: Prevent "critical" messages generated by TabControl Tabs. Issue , patch from Anton Kavalenka.
........
IDE: Don't cut a dotted TargetFilename when adding an extension to it. Issue .
........
LCL-GTK2: Fix drawing of text region in TListView and others. Issue , patch from Joeny Ang.
........
LCL: Do not call TTreeView.OnCollapsing and OnCollapsed during clearing the items. Issue .
........
TAChart: Fix some ZoomDragTool and DataPointCrosshairTool painting on other chart if shared between two charts.
........

git-svn-id: branches/fixes_2_0@64611 -
This commit is contained in:
martin 2021-02-18 01:18:58 +00:00
parent 7c386df181
commit 561d01f2e6
6 changed files with 78 additions and 75 deletions

View File

@ -686,6 +686,7 @@ begin
i := FChart.ActiveToolIndex;
if (i <> Index) and InRange(i, 0, Toolset.Tools.Count) then
Toolset[i].Deactivate;
FCurrentDrawer := nil;
inherited;
SetCursor;
end;
@ -2011,6 +2012,7 @@ end;
procedure TDataPointCrosshairTool.MouseDown(APoint: TPoint);
begin
FCurrentDrawer := nil;
MouseMove(APoint);
end;

View File

@ -414,8 +414,10 @@ type
FOtherDefines: TStrings; // list of user selectable defines for custom options
FFPCMsgFile: TFPCMsgFilePoolItem;
FCreateMakefileOnBuild: boolean;
procedure AppendDefaultExt(var aFilename: string);
function GetExecuteAfter: TCompilationToolOptions;
function GetExecuteBefore: TCompilationToolOptions;
procedure PrependDefaultType(var AFilename: string);
procedure SetCreateMakefileOnBuild(AValue: boolean);
protected
function GetCompilerPath: String; override;
@ -1940,66 +1942,51 @@ begin
end;
end;
{------------------------------------------------------------------------------
TBaseCompilerOptions CreateTargetFilename
------------------------------------------------------------------------------}
function TBaseCompilerOptions.CreateTargetFilename: string;
procedure AppendDefaultExt(var aFilename: string);
var
Ext: String;
begin
if (ExtractFileName(aFilename)='') then exit;
Ext:=GetTargetFileExt;
if Ext<>'' then begin
aFilename:=ChangeFileExt(aFilename,Ext);
//debugln ( 'Filename is ',AFilename,' in AppendDefaultExt' );
exit;
end;
end;
procedure PrependDefaultType(var AFilename: string);
var
Prefix: String;
FileName: String;
PathName: String;
CurTargetOS: String;
aSrcOS: String;
begin
//debugln ( 'Filename AFilename is ',AFilename, ' in PrependDefaultType' );
if (ExtractFileName(AFilename)='')
or (CompareText(copy(ExtractFileName(AFilename),1,3), 'lib') = 0) then exit;
Prefix:=GetTargetFilePrefix;
if Prefix<>'' then begin
FileName := ExtractFileName(AFilename);
PathName := ExtractFilePath(AFilename);
//debugln ( 'Filename is ',FileName, ' in PrependDefaultType' );
CurTargetOS:=TargetOS;
if CurTargetOS='' then CurTargetOS:=GetCompiledTargetOS;
aSrcOS:=GetDefaultSrcOSForTargetOS(CurTargetOS);
if (CompareText(aSrcOS, 'unix') = 0)
then begin
AFilename:=PathName+Prefix+UTF8LowerCase(FileName);
end else begin
AFilename:=PathName+Prefix+FileName;
end;
//debugln ( 'AFilename is ',AFilename, ' in PrependDefaultType' );
exit;
end;
end;
procedure TBaseCompilerOptions.AppendDefaultExt(var aFilename: string);
var
UnitOutDir: String;
OutFilename: String;
Dir: String;
Ext: String;
begin
if ExtractFileName(aFilename)='' then exit;
Ext:=GetTargetFileExt;
if (Ext<>'') and (CompareFileExt(aFilename,Ext)<>0) then
aFilename:=aFilename+Ext;
//DebugLn('Filename is ',AFilename,' in AppendDefaultExt');
end;
procedure TBaseCompilerOptions.PrependDefaultType(var AFilename: string);
var
Prefix, FileName, PathName, CurTargetOS, aSrcOS: String;
begin
//DebugLn('Filename AFilename is ',AFilename, ' in PrependDefaultType');
if (ExtractFileName(AFilename)='')
or (CompareText(copy(ExtractFileName(AFilename),1,3), 'lib') = 0) then exit;
Prefix:=GetTargetFilePrefix;
if Prefix<>'' then
begin
FileName := ExtractFileName(AFilename);
PathName := ExtractFilePath(AFilename);
//debugln ( 'Filename is ',FileName, ' in PrependDefaultType' );
CurTargetOS:=TargetOS;
if CurTargetOS='' then CurTargetOS:=GetCompiledTargetOS;
aSrcOS:=GetDefaultSrcOSForTargetOS(CurTargetOS);
if CompareText(aSrcOS, 'unix') = 0 then
AFilename:=PathName+Prefix+UTF8LowerCase(FileName)
else
AFilename:=PathName+Prefix+FileName;
//DebugLn('AFilename is ',AFilename, ' in PrependDefaultType');
exit;
end;
end;
function TBaseCompilerOptions.CreateTargetFilename: string;
var
UnitOutDir, OutFilename, Dir: String;
begin
Result:=TargetFilename;
if Assigned(ParsedOpts.OnLocalSubstitute) then
begin
Result:=ParsedOpts.OnLocalSubstitute(Result,false);
end else begin
Result:=ParsedOpts.OnLocalSubstitute(Result,false)
else
Result:=ParseString(ParsedOpts,Result,false);
end;
if (Result<>'') and FilenameIsAbsolute(Result) then begin
// fully specified target filename
end else if Result<>'' then begin

View File

@ -2828,8 +2828,8 @@ type
nsVisible, // = Node.Visible
nsBound // bound to a tree, e.g. has Parent or is top lvl node
);
TNodeStates = set of TNodeState;
TNodeAttachMode = (
naAdd, // add as last sibling of Destination
naAddFirst, // add as first sibling of Destination
@ -2970,7 +2970,7 @@ type
function CompareCount(CompareMe: Integer): Boolean;
function DoCanExpand(ExpandIt: Boolean): Boolean;
procedure DoExpand(ExpandIt: Boolean);
procedure ExpandItem(ExpandIt: Boolean; Recurse: Boolean);
procedure ExpandItem(ExpandIt, Recurse: Boolean);
function GetAbsoluteIndex: Integer;
function GetDeleting: Boolean;
function GetHasChildren: Boolean;

View File

@ -694,7 +694,6 @@ end;
procedure TTreeNode.ExpandItem(ExpandIt: Boolean; Recurse: Boolean);
var
//Flag: Integer;
ANode: TTreeNode;
begin
if Recurse then begin
@ -1272,7 +1271,8 @@ end;
procedure TTreeNode.Unbind;
// unbind from parent and neighbor siblings, but not from owner
var OldIndex, i: integer;
var
OldIndex, i: integer;
HigherNode: TTreeNode;
TheTreeView: TCustomTreeView;
begin
@ -1332,8 +1332,13 @@ begin
ReAllocMem(FParent.FItems,SizeOf(Pointer)*FParent.FCapacity);
end;
if FParent.Count=0 then begin
FParent.Expanded:=false;
FParent.HasChildren:=false;
TheTreeView.BeginUpdate;
try
FParent.Expanded:=false;
FParent.HasChildren:=false;
finally
TheTreeView.EndUpdate;
end;
end;
FParent:=nil;
end;
@ -5447,7 +5452,8 @@ end;
procedure TCustomTreeView.GetImageIndex(Node: TTreeNode);
begin
if Assigned(FOnGetImageIndex) then FOnGetImageIndex(Self, Node);
if Assigned(FOnGetImageIndex) then
FOnGetImageIndex(Self, Node);
end;
procedure TCustomTreeView.GetSelectedIndex(Node: TTreeNode);
@ -5458,7 +5464,8 @@ end;
function TCustomTreeView.CanChange(Node: TTreeNode): Boolean;
begin
Result := True;
if Assigned(Node) and Assigned(FOnChanging) then FOnChanging(Self, Node, Result);
if Assigned(Node) and Assigned(FOnChanging) then
FOnChanging(Self, Node, Result);
end;
procedure TCustomTreeView.Change(Node: TTreeNode);
@ -5472,39 +5479,44 @@ begin
if Assigned(FOnDeletion) then FOnDeletion(Self, Node);
end;
procedure TCustomTreeView.Expand(Node: TTreeNode);
begin
UpdateScrollbars;
if Assigned(FOnExpanded) then FOnExpanded(Self, Node);
end;
function TCustomTreeView.ExpandSignSizeIsStored: Boolean;
begin
Result := FExpandSignSize >= 0;
end;
procedure TCustomTreeView.Expand(Node: TTreeNode);
begin
UpdateScrollbars;
if Assigned(FOnExpanded) and not (tvsUpdating in FStates) then
FOnExpanded(Self, Node);
end;
function TCustomTreeView.CanExpand(Node: TTreeNode): Boolean;
begin
Result := True;
if Assigned(FOnExpanding) then FOnExpanding(Self, Node, Result);
if Assigned(FOnExpanding) and not (tvsUpdating in FStates) then
FOnExpanding(Self, Node, Result);
end;
procedure TCustomTreeView.Collapse(Node: TTreeNode);
begin
UpdateScrollbars;
if Assigned(FOnCollapsed) then FOnCollapsed(Self, Node);
if Assigned(FOnCollapsed) and not (tvsUpdating in FStates) then
FOnCollapsed(Self, Node);
end;
function TCustomTreeView.CanCollapse(Node: TTreeNode): Boolean;
begin
Result := True;
if Assigned(FOnCollapsing) then FOnCollapsing(Self, Node, Result);
if Assigned(FOnCollapsing) and not (tvsUpdating in FStates) then
FOnCollapsing(Self, Node, Result);
end;
function TCustomTreeView.CanEdit(Node: TTreeNode): Boolean;
begin
Result := True;
if Assigned(FOnEditing) then FOnEditing(Self, Node, Result);
if Assigned(FOnEditing) then
FOnEditing(Self, Node, Result);
end;
procedure TCustomTreeView.EndEditing(Cancel: boolean);

View File

@ -4112,11 +4112,13 @@ function GetControlWindow(Widget: Pointer) : PGDKWindow;
begin
if Widget <> nil then
begin
gtk_widget_realize(Widget); // associate with window
If not GTKWidgetIsA(PGTKWidget(Widget), GTK_Layout_Get_Type) then
Result := PGTKWidget(Widget)^.Window
else
begin
gtk_widget_realize(Widget); // associate with window
Result := PGtkLayout(Widget)^.bin_window;
end;
if (Result=nil) and (GTK_WIDGET_NO_WINDOW(Widget)) then
Result:=gtk_widget_get_parent_window(Widget);
end else

View File

@ -3753,7 +3753,7 @@ begin
Clip:=CreateEmptyRegion
else begin
GDK_Window_Get_Size(Drawable, @X, @Y);
Clip := CreateRectRGN(0, 0, X, Y);
Clip := CreateRectRGN(-Offset.X, -Offset.Y, X - Offset.X, Y - Offset.Y);
end;
// create target clip
Tmp := CreateEmptyRegion;