From be294a7bedcaafa13dc399c3590e0ca1a1421000 Mon Sep 17 00:00:00 2001 From: juha Date: Thu, 4 Dec 2014 23:28:54 +0000 Subject: [PATCH] IDE: fix a bug in component palette configuration. git-svn-id: trunk@47109 - --- ide/componentpalette.pas | 5 ++--- ide/frames/componentpalette_options.pas | 29 ++++++++++++------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/ide/componentpalette.pas b/ide/componentpalette.pas index 23ad57531e..5c187826b1 100644 --- a/ide/componentpalette.pas +++ b/ide/componentpalette.pas @@ -618,15 +618,14 @@ var sl: TStringList; i: Integer; begin + DestComps.Clear; if fOrigComponentPageCache.Find(PageName, i) then begin sl := fOrigComponentPageCache.Objects[i] as TStringList; for i := 0 to sl.Count-1 do if FindComponent(sl[i]).Visible then DestComps.Add(sl[i]); - end - else - raise Exception.Create(Format('AssignOrigVisibleCompsForPage: %s not found in cache.', [PageName])); + end; end; function TComponentPalette.RefUserCompsForPage(PageName: string): TStringList; diff --git a/ide/frames/componentpalette_options.pas b/ide/frames/componentpalette_options.pas index 3d6af2c1c5..453dc5d95c 100644 --- a/ide/frames/componentpalette_options.pas +++ b/ide/frames/componentpalette_options.pas @@ -215,27 +215,26 @@ var PgName: String; i: Integer; begin - OrigComps := Nil; - cpo.ComponentPages.Clear; - for i := 1 to PagesListBox.Count-1 do // Skip all components page - begin - PgName := PagesListBox.Items[i]; - UserComps := PagesListBox.Items.Objects[i] as TStringList; - Assert(Assigned(UserComps), 'TCompPaletteOptionsFrame.WriteComponents: No UserComps for '+PgName); - Pg := IDEComponentPalette.GetPage(PgName); - try + OrigComps := TStringList.Create; + try + cpo.ComponentPages.Clear; + for i := 1 to PagesListBox.Count-1 do // Skip all components page + begin + PgName := PagesListBox.Items[i]; + UserComps := PagesListBox.Items.Objects[i] as TStringList; + Assert(Assigned(UserComps), 'TCompPaletteOptionsFrame.WriteComponents: No UserComps for '+PgName); + Pg := IDEComponentPalette.GetPage(PgName); if Assigned(Pg) and Pg.Visible then // Can be Nil if this page was added or renamed. - begin - OrigComps := TStringList.Create; // Collect original visible components from this page. IDEComponentPalette.AssignOrigVisibleCompsForPage(OrigComps, PgName) - end; + else + OrigComps.Clear; // Differs from original order -> add configuration for components. - if (OrigComps=Nil) or not OrigComps.Equals(UserComps) then + if (OrigComps.Count=0) or not OrigComps.Equals(UserComps) then cpo.AssignComponentPage(PgName, UserComps); - finally - FreeAndNil(OrigComps); end; + finally + OrigComps.Free; end; end;