diff --git a/components/lazcontrols/lazcontrols.lpk b/components/lazcontrols/lazcontrols.lpk
index 6853809445..2c2b1eecf8 100644
--- a/components/lazcontrols/lazcontrols.lpk
+++ b/components/lazcontrols/lazcontrols.lpk
@@ -5,7 +5,7 @@
-
+
diff --git a/components/lazcontrols/treefilteredit.pas b/components/lazcontrols/treefilteredit.pas
index b1a86e4061..3f123b6a1e 100644
--- a/components/lazcontrols/treefilteredit.pas
+++ b/components/lazcontrols/treefilteredit.pas
@@ -422,31 +422,13 @@ begin
end;
procedure TTreeFilterEdit.MoveNext;
-var
- tn: TTreeNode;
begin
- tn := fFilteredTreeview.Selected;
- if not Assigned(tn) then
- begin
- tn := fFilteredTreeview.TopItem;
- if Assigned(tn) then
- fFilteredTreeview.Selected := tn;
- Exit;
- end;
- tn := tn.GetNext;
- if Assigned(tn) then
- fFilteredTreeview.Selected := tn;
+ fFilteredTreeview.MoveToNextNode;
end;
procedure TTreeFilterEdit.MovePrev;
-var
- tn: TTreeNode;
begin
- tn := fFilteredTreeview.Selected;
- if not Assigned(tn) then Exit;
- tn := tn.GetPrev;
- if Assigned(tn) then
- fFilteredTreeview.Selected := tn;
+ fFilteredTreeview.MoveToPrevNode;
end;
end.
diff --git a/lcl/comctrls.pp b/lcl/comctrls.pp
index 40629db2f6..6f56c309b1 100644
--- a/lcl/comctrls.pp
+++ b/lcl/comctrls.pp
@@ -2914,6 +2914,8 @@ type
function GetLastMultiSelected: TTreeNode;
function SelectionVisible: boolean;
procedure MakeSelectionVisible;
+ procedure MoveToNextNode;
+ procedure MoveToPrevNode;
public
property BackgroundColor: TColor
read FBackgroundColor write SetBackgroundColor default clWindow;
diff --git a/lcl/include/treeview.inc b/lcl/include/treeview.inc
index 794740545a..f34789aa63 100644
--- a/lcl/include/treeview.inc
+++ b/lcl/include/treeview.inc
@@ -3332,6 +3332,14 @@ begin
end;
end;
+procedure TCustomTreeView.SetSeparatorColor(const AValue: TColor);
+begin
+ if fSeparatorColor=AValue then exit;
+ fSeparatorColor:=AValue;
+ if tvoShowSeparators in Options then
+ Invalidate;
+end;
+
procedure TCustomTreeView.SetShowButton(Value: Boolean);
begin
if ShowButtons <> Value then begin
@@ -5435,12 +5443,42 @@ begin
ANode.MakeVisible;
end;
-procedure TCustomTreeView.SetSeparatorColor(const AValue: TColor);
+procedure TCustomTreeView.MoveToNextNode;
+var
+ lNode: TTreeNode;
begin
- if fSeparatorColor=AValue then exit;
- fSeparatorColor:=AValue;
- if tvoShowSeparators in Options then
- Invalidate;
+ if tvoAllowMultiSelect in FOptions then
+ lNode := FTreeNodes.FLastMultiSelected
+ else
+ lNode := Selected;
+ if lNode <> nil then
+ lNode := lNode.GetNextExpanded
+ else if Items.Count > 0 then
+ lNode := FTreeNodes.GetFirstNode;
+ if lNode <> nil then
+ if tvoAllowMultiSelect in FOptions then
+ FTreeNodes.SelectOnlyThis(lNode)
+ else
+ Selected := lNode;
+end;
+
+procedure TCustomTreeView.MoveToPrevNode;
+var
+ lNode: TTreeNode;
+begin
+ if tvoAllowMultiSelect in FOptions then
+ lNode := FTreeNodes.FLastMultiSelected
+ else
+ lNode := Selected;
+ if lNode <> nil then
+ lNode := lNode.GetPrevExpanded
+ else if Items.Count > 0 then
+ lNode := Items.GetLastExpandedSubNode;
+ if lNode <> nil then
+ if tvoAllowMultiSelect in FOptions then
+ FTreeNodes.SelectOnlyThis(lNode)
+ else
+ Selected := lNode;
end;
// back to comctrls.pp