tvplanit: Fix crash of IDE when a folder is added and deleted to an empty JvNavBar. Issue #33676. Patch by Hichem.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6374 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2018-05-03 13:19:15 +00:00
parent 8b3da42703
commit 166dae1e7f

View File

@ -117,7 +117,7 @@ type
procedure OnTimer(Sender: TObject);
procedure SelectionChanged(AOrderChanged: Boolean = false);
procedure SelectList(SelList: TPersistentSelectionList);
procedure UpdateBtnState;
procedure UpdateBtnStates;
private
FDesigner: TComponentEditorDesigner;
@ -233,6 +233,7 @@ begin
AddDesignHookHandlers;
SelectionChanged;
UpdateBtnStates;
end;
destructor TfrmNavBarEd.Destroy;
@ -301,10 +302,11 @@ begin
lbFolders.Items[Bar.ActiveFolder] := S;
if (lbItems.ItemIndex > -1) then begin
S := lbItems.Items.Strings[lbItems.ItemIndex];
S := lbItems.Items[lbItems.ItemIndex];
PopulateItemList;
if S <> '' then
lbItems.ItemIndex := lbItems.Items.IndexOf(S);
lbItems.ItemIndex := lbItems.Items.IndexOf(S);
UpdateBtnStates;
end;
end;
@ -411,6 +413,7 @@ begin
lbItems.ItemIndex := i;
end;
end;
UpdateBtnStates;
end;
procedure TfrmNavBarEd.OnPersistentDeleting(APersistent: TPersistent);
@ -427,6 +430,7 @@ begin
i := FindBtnIndex(APersistent);
if i <> -1 then lbItems.Items.Delete(i);
end;
UpdateBtnStates;
end;
procedure TfrmNavBarEd.OnSetSelection(const ASelection: TPersistentSelectionList);
@ -514,6 +518,7 @@ begin
FSelImgIndex := -1;
AddDesignHookHandlers;
UpdateBtnStates;
end;
procedure TfrmNavBarEd.lbFoldersClick(Sender: TObject);
@ -538,7 +543,7 @@ begin
if SelList.Count > 0 then
SelectList(SelList);
UpdateBtnState;
UpdateBtnStates;
end;
procedure TfrmNavBarEd.lbItemsMeasureItem(Control: TWinControl;
@ -614,7 +619,7 @@ begin
SelectList(SelList);
end;
UpdateBtnState;
UpdateBtnStates;
end;
procedure TfrmNavBarEd.btnItemUpClick(Sender: TObject);
@ -629,7 +634,7 @@ begin
Item.Index := Item.Index - 1;
PopulateItemList;
UpdateBtnState;
UpdateBtnStates;
if Assigned(Designer) then begin
GlobalDesignHook.SelectOnlyThis(nil);
@ -650,7 +655,7 @@ begin
Item.Index := Item.Index + 1;
PopulateItemList;
UpdateBtnState;
UpdateBtnStates;
if Assigned(Designer) then begin
GlobalDesignHook.SelectOnlyThis(nil);
@ -674,7 +679,7 @@ begin
PopulateFolderList;
lbFolders.ItemIndex := SaveItemIndex - 1;
UpdateBtnState;
UpdateBtnStates;
if Assigned(Designer) then begin
GlobalDesignHook.SelectOnlyThis(nil);
@ -696,7 +701,7 @@ begin
PopulateFolderList;
lbFolders.ItemIndex := Folder.Index;
UpdateBtnState;
UpdateBtnStates;
if Assigned(Designer) then begin
GlobalDesignHook.SelectOnlyThis(nil);
@ -715,7 +720,7 @@ begin
PopulateItemList;
if Assigned(Designer) then
Designer.Modified;
UpdateBtnState;
UpdateBtnStates;
end;
end;
@ -724,11 +729,13 @@ begin
if (lbFolders.ItemIndex <> -1) then begin
TVpNavFolder(lbFolders.Items.Objects[lbFolders.ItemIndex]).Free;
lbFolders.ItemIndex := -1;
FBar.Activefolder := -1;
FSelImgIndex := -1;
PopulateFolderList;
PopulateItemList;
if Assigned(Designer) then
Designer.Modified;
UpdateBtnState;
UpdateBtnStates;
end;
end;
@ -741,7 +748,7 @@ begin
if Assigned(Designer) then
Designer.Modified;
lbFoldersClick(Self);
UpdateBtnState;
UpdateBtnStates;
end;
procedure TfrmNavBarEd.btnItemAddClick(Sender: TObject);
@ -750,12 +757,13 @@ begin
TVpNavFolder(
lbFolders.Items.Objects[lbFolders.ItemIndex]).ItemCollection.Add;
lbItems.ItemIndex := -1;
FSelImgIndex := -1;
PopulateItemList;
SelectionChanged(true);
if assigned(Designer) then
Designer.Modified;
end;
UpdateBtnState;
UpdateBtnStates;
end;
procedure TfrmNavBarEd.pnlImageViewPaint(Sender: TObject);
@ -861,7 +869,7 @@ begin
SelList.Free;
end;
procedure TfrmNavBarEd.UpdateBtnState;
procedure TfrmNavBarEd.UpdateBtnStates;
var
canChangeFolders: Boolean;
canChangeItems: Boolean;