mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-02 12:13:11 +02:00
IDE: Optimize Component Palette's update logic a little.
git-svn-id: trunk@64183 -
This commit is contained in:
parent
ce1d8c1014
commit
96027c20c3
@ -235,8 +235,6 @@ type
|
||||
fSelected: TRegisteredComponent;
|
||||
fSelectionMode: TComponentSelectionMode;
|
||||
fHideControls: boolean;
|
||||
fUpdateLock: integer;
|
||||
fChanged: boolean;
|
||||
fChangeStamp: integer;
|
||||
fOnClassSelected: TNotifyEvent;
|
||||
fLastFoundCompClassName: String;
|
||||
@ -247,14 +245,17 @@ type
|
||||
const AMethod: TMethod);
|
||||
procedure CacheOrigComponentPages;
|
||||
function CreatePagesFromUserOrder: Boolean;
|
||||
procedure DoChange;
|
||||
procedure DoPageAddedComponent(Component: TRegisteredComponent);
|
||||
procedure DoPageRemovedComponent(Component: TRegisteredComponent);
|
||||
procedure SetHideControls(AValue: boolean);
|
||||
function VoteCompVisibility(AComponent: TRegisteredComponent): Boolean;
|
||||
function GetSelected: TRegisteredComponent;
|
||||
function GetMultiSelect: boolean;
|
||||
procedure SetSelected(const AValue: TRegisteredComponent);
|
||||
procedure SetMultiSelect(AValue: boolean);
|
||||
protected
|
||||
FChanged: boolean;
|
||||
procedure DoChange; virtual; abstract;
|
||||
public
|
||||
constructor Create(EnvPaletteOptions: TCompPaletteOptions);
|
||||
destructor Destroy; override;
|
||||
@ -264,9 +265,8 @@ type
|
||||
function AssignOrigVisibleCompNames(PageName: string;
|
||||
DestCompNames: TStringList): Boolean;
|
||||
function RefUserCompsForPage(PageName: string): TRegisteredCompList;
|
||||
procedure BeginUpdate(Change: boolean);
|
||||
procedure EndUpdate;
|
||||
function IsUpdateLocked: boolean;
|
||||
procedure BeginUpdate; virtual; abstract;
|
||||
procedure EndUpdate; virtual; abstract;
|
||||
procedure IncChangeStamp;
|
||||
function IndexOfPageName(const APageName: string; ACaseSensitive: Boolean): integer;
|
||||
function GetPage(const APageName: string; ACaseSensitive: Boolean=False): TBaseComponentPage;
|
||||
@ -296,7 +296,7 @@ type
|
||||
property ComponentPageClass: TBaseComponentPageClass read FComponentPageClass
|
||||
write FComponentPageClass;
|
||||
property ChangeStamp: integer read fChangeStamp;
|
||||
property HideControls: boolean read FHideControls write FHideControls;
|
||||
property HideControls: boolean read FHideControls write SetHideControls;
|
||||
property Selected: TRegisteredComponent read GetSelected write SetSelected;
|
||||
property MultiSelect: boolean read GetMultiSelect write SetMultiSelect;
|
||||
property SelectionMode: TComponentSelectionMode read FSelectionMode write FSelectionMode;
|
||||
@ -1028,14 +1028,6 @@ begin
|
||||
FHandlers[HandlerType].Remove(AMethod);
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.DoChange;
|
||||
begin
|
||||
if FUpdateLock>0 then
|
||||
fChanged:=true
|
||||
else
|
||||
Update(False);
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.DoPageAddedComponent(Component: TRegisteredComponent);
|
||||
begin
|
||||
fComponentCache.Add(Component);
|
||||
@ -1048,27 +1040,11 @@ begin
|
||||
DoChange;
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.BeginUpdate(Change: boolean);
|
||||
procedure TBaseComponentPalette.SetHideControls(AValue: boolean);
|
||||
begin
|
||||
inc(FUpdateLock);
|
||||
if FUpdateLock=1 then
|
||||
fChanged:=Change
|
||||
else
|
||||
fChanged:=fChanged or Change;
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.EndUpdate;
|
||||
begin
|
||||
if FUpdateLock<=0 then
|
||||
raise Exception.Create('TBaseComponentPalette.EndUpdate');
|
||||
dec(FUpdateLock);
|
||||
if (FUpdateLock=0) and fChanged then
|
||||
Update(False);
|
||||
end;
|
||||
|
||||
function TBaseComponentPalette.IsUpdateLocked: boolean;
|
||||
begin
|
||||
Result:=FUpdateLock>0;
|
||||
if FHideControls=AValue then Exit;
|
||||
FHideControls:=AValue;
|
||||
FChanged:=True;
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.IncChangeStamp;
|
||||
|
@ -106,6 +106,7 @@ type
|
||||
FOnChangeActivePage: TNotifyEvent;
|
||||
fSelectButtonIcon: TCustomBitmap;
|
||||
fUpdatingPageControl: boolean;
|
||||
fUpdateLock: integer;
|
||||
// Used by UpdateNoteBookButtons
|
||||
fOldActivePage: TTabSheet;
|
||||
fVisiblePageIndex: integer;
|
||||
@ -133,11 +134,16 @@ type
|
||||
function SelectAButton(Button: TSpeedButton): boolean;
|
||||
procedure ComponentWasAdded({%H-}ALookupRoot, {%H-}AComponent: TComponent;
|
||||
{%H-}ARegisteredComponent: TRegisteredComponent);
|
||||
protected
|
||||
procedure DoChange; override;
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
procedure OnGetNonVisualCompIcon(Sender: TObject;
|
||||
AComponent: TComponent; var ImageList: TCustomImageList; var ImageIndex: TImageIndex);
|
||||
procedure BeginUpdate; override;
|
||||
procedure EndUpdate; override;
|
||||
function IsUpdateLocked: boolean;
|
||||
procedure Update(ForceUpdateAll: Boolean); override;
|
||||
public
|
||||
property PageControl: TPageControl read FPageControl write SetPageControl;
|
||||
@ -820,15 +826,6 @@ begin
|
||||
Handled := True;
|
||||
end;
|
||||
|
||||
procedure TComponentPalette.Update(ForceUpdateAll: Boolean);
|
||||
begin
|
||||
inherited Update(ForceUpdateAll);
|
||||
{$IFDEF VerboseComponentPalette}
|
||||
DebugLn(['TComponentPalette.Update, calling UpdateNoteBookButtons, fUpdatingPageControl=', fUpdatingPageControl]);
|
||||
{$ENDIF}
|
||||
UpdateNoteBookButtons(ForceUpdateAll);
|
||||
end;
|
||||
|
||||
constructor TComponentPalette.Create;
|
||||
begin
|
||||
inherited Create(EnvironmentOptions.Desktop.ComponentPaletteOptions);
|
||||
@ -853,6 +850,36 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TComponentPalette.BeginUpdate;
|
||||
begin
|
||||
inc(FUpdateLock);
|
||||
end;
|
||||
|
||||
procedure TComponentPalette.EndUpdate;
|
||||
begin
|
||||
if FUpdateLock<=0 then
|
||||
raise Exception.Create('TBaseComponentPalette.EndUpdate: FUpdateLock<=0');
|
||||
dec(FUpdateLock);
|
||||
if (FUpdateLock=0) and FChanged then
|
||||
Update(False);
|
||||
end;
|
||||
|
||||
function TComponentPalette.IsUpdateLocked: boolean;
|
||||
begin
|
||||
Result:=FUpdateLock>0;
|
||||
end;
|
||||
|
||||
procedure TComponentPalette.Update(ForceUpdateAll: Boolean);
|
||||
begin
|
||||
if not FChanged then Exit;
|
||||
inherited Update(ForceUpdateAll);
|
||||
{$IFDEF VerboseComponentPalette}
|
||||
DebugLn(['TComponentPalette.Update, calling UpdateNoteBookButtons, fUpdatingPageControl=', fUpdatingPageControl]);
|
||||
{$ENDIF}
|
||||
UpdateNoteBookButtons(ForceUpdateAll);
|
||||
FChanged:=False;
|
||||
end;
|
||||
|
||||
procedure TComponentPalette.ClearButtons;
|
||||
begin
|
||||
if FPageControl<>nil then
|
||||
@ -902,6 +929,14 @@ begin
|
||||
Selected := nil;
|
||||
end;
|
||||
|
||||
procedure TComponentPalette.DoChange;
|
||||
begin
|
||||
if FUpdateLock>0 then
|
||||
FChanged:=true
|
||||
else
|
||||
Update(False);
|
||||
end;
|
||||
|
||||
procedure TComponentPalette.ReAlignButtons(aSheet: TCustomPage);
|
||||
var
|
||||
PageInd: Integer;
|
||||
|
@ -38,11 +38,15 @@ uses
|
||||
{$IFDEF IDE_MEM_CHECK}
|
||||
MemCheck,
|
||||
{$ENDIF}
|
||||
Classes, SysUtils, Math, Forms, Controls, Buttons, Menus,
|
||||
ComCtrls, ExtCtrls, LMessages, LCLIntf, LCLType, LCLProc,
|
||||
Classes, SysUtils, Math,
|
||||
// LCL
|
||||
Forms, Controls, Menus, ComCtrls, ExtCtrls, LMessages, LCLIntf, LCLType, LCLProc,
|
||||
// LazUtils
|
||||
LazFileCache,
|
||||
// IDEIntf
|
||||
ProjectIntf, MenuIntf, LazIDEIntf, IDEWindowIntf, IDEImagesIntf,
|
||||
LazFileCache, EnvironmentOpts, LazarusIDEStrConsts, ComponentReg, IdeCoolbarData;
|
||||
MenuIntf, LazIDEIntf, IDEWindowIntf, IDEImagesIntf, ComponentReg,
|
||||
// IDE
|
||||
EnvironmentOpts, LazarusIDEStrConsts, IdeCoolbarData;
|
||||
|
||||
type
|
||||
{ TMainIDEBar }
|
||||
|
@ -3041,7 +3041,7 @@ end;
|
||||
|
||||
procedure TPkgManager.LoadInstalledPackages;
|
||||
begin
|
||||
IDEComponentPalette.BeginUpdate(true);
|
||||
IDEComponentPalette.BeginUpdate;
|
||||
try
|
||||
PackageGraph.LoadStaticBasePackages;
|
||||
LoadStaticCustomPackages;
|
||||
|
Loading…
Reference in New Issue
Block a user