소스 검색

FIX: TFileViewNotebook.DestroyAllPages: algorithm of tabs.clear() (#681)

rich2014 2 년 전
부모
커밋
cc3ca9662f
1개의 변경된 파일5개의 추가작업 그리고 11개의 파일을 삭제
  1. 5 11
      src/ufileviewnotebook.pas

+ 5 - 11
src/ufileviewnotebook.pas

@@ -107,7 +107,6 @@ type
 
 
   TFileViewNotebook = class(TPageControl)
   TFileViewNotebook = class(TPageControl)
   private
   private
-    FCanChangePageIndex: Boolean;
     FNotebookSide: TFilePanelSelect;
     FNotebookSide: TFilePanelSelect;
     FStartDrag: Boolean;
     FStartDrag: Boolean;
     FDraggedPageIndex: Integer;
     FDraggedPageIndex: Integer;
@@ -141,7 +140,6 @@ type
     procedure WndProc(var Message: TLMessage); override;
     procedure WndProc(var Message: TLMessage); override;
 {$ENDIF}
 {$ENDIF}
     function AddPage: TFileViewPage;
     function AddPage: TFileViewPage;
-    function CanChangePageIndex: Boolean; override;
     function InsertPage(Index: Integer): TFileViewPage; reintroduce;
     function InsertPage(Index: Integer): TFileViewPage; reintroduce;
     function NewEmptyPage: TFileViewPage;
     function NewEmptyPage: TFileViewPage;
     function NewPage(CloneFromPage: TFileViewPage): TFileViewPage;
     function NewPage(CloneFromPage: TFileViewPage): TFileViewPage;
@@ -409,7 +407,6 @@ begin
   ShowHint := True;
   ShowHint := True;
 
 
   FHintPageIndex := -1;
   FHintPageIndex := -1;
-  FCanChangePageIndex := True;
   FNotebookSide := NotebookSide;
   FNotebookSide := NotebookSide;
   FStartDrag := False;
   FStartDrag := False;
 
 
@@ -460,11 +457,6 @@ begin
   Result := InsertPage(PageCount);
   Result := InsertPage(PageCount);
 end;
 end;
 
 
-function TFileViewNotebook.CanChangePageIndex: Boolean;
-begin
-  Result:= (inherited CanChangePageIndex) and FCanChangePageIndex;
-end;
-
 function TFileViewNotebook.InsertPage(Index: Integer): TFileViewPage;
 function TFileViewNotebook.InsertPage(Index: Integer): TFileViewPage;
 begin
 begin
   Tabs.Insert(Index, '');
   Tabs.Insert(Index, '');
@@ -544,10 +536,12 @@ begin
 end;
 end;
 
 
 procedure TFileViewNotebook.DestroyAllPages;
 procedure TFileViewNotebook.DestroyAllPages;
+var
+  i: Integer;
 begin
 begin
-  FCanChangePageIndex:= False;
-  Tabs.Clear;
-  FCanChangePageIndex:= True;
+  for i:=PageCount-1 downto 0 do
+    if i<>ActivePageIndex then inherited RemovePage( i );
+  inherited RemovePage( 0 );
 end;
 end;
 
 
 procedure TFileViewNotebook.ActivatePrevTab;
 procedure TFileViewNotebook.ActivatePrevTab;