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