From 0374dc7a0069d31f2ad6b980f8d290434fcdacd9 Mon Sep 17 00:00:00 2001 From: mattias Date: Tue, 9 Mar 2010 17:00:25 +0000 Subject: [PATCH] IDE: reduced autosizing git-svn-id: trunk@23900 - --- ide/componentpalette.pas | 60 ++++++++++++++++++++++++++-------------- ide/main.pp | 2 +- ideintf/componentreg.pas | 2 +- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/ide/componentpalette.pas b/ide/componentpalette.pas index dffe766335..9e2903f52e 100644 --- a/ide/componentpalette.pas +++ b/ide/componentpalette.pas @@ -107,6 +107,7 @@ type ): TRegisteredComponent; override; procedure RegisterCustomIDEComponents( const RegisterProc: RegisterUnitComponentProc); override; + procedure ShowHideControls(Show: boolean); override; public property NoteBook: TNotebook read FNoteBook write SetNoteBook; property Selected: TRegisteredComponent read FSelected write SetSelected; @@ -455,31 +456,38 @@ var ButtonCount: Integer; MaxBtnPerRow: Integer; begin - ButtonCount:=0; - // skip the first control (this is the selection tool (TSpeedButton)) - for j:= 1 to Page.ControlCount-1 do begin - CurButton:=TSpeedbutton(Page.Controls[j]); - if not (CurButton is TSpeedButton) then continue; - inc(ButtonCount); - end; + if FNoteBook<>nil then + NoteBook.DisableAutoSizing; + try + ButtonCount:=0; + // skip the first control (this is the selection tool (TSpeedButton)) + for j:= 1 to Page.ControlCount-1 do begin + CurButton:=TSpeedbutton(Page.Controls[j]); + if not (CurButton is TSpeedButton) then continue; + inc(ButtonCount); + end; - ButtonX:= ((ComponentPaletteBtnWidth*3) div 2) + 2; + ButtonX:= ((ComponentPaletteBtnWidth*3) div 2) + 2; - MaxBtnPerRow:=((Page.ClientWidth - ButtonX) div ComponentPaletteBtnWidth); - if MaxBtnPerRow<1 then MaxBtnPerRow:=1; - Rows:=((ButtonCount-1) div MaxBtnPerRow)+1; - //DebugLn(['TComponentPalette.ReAlignButtons ',DbgSName(Page),' PageIndex=',Page.PageIndex,' ClientRect=',dbgs(Page.ClientRect)]); - // automatically set optimal row count and re-position controls to use height optimally + MaxBtnPerRow:=((Page.ClientWidth - ButtonX) div ComponentPaletteBtnWidth); + if MaxBtnPerRow<1 then MaxBtnPerRow:=1; + Rows:=((ButtonCount-1) div MaxBtnPerRow)+1; + //DebugLn(['TComponentPalette.ReAlignButtons ',DbgSName(Page),' PageIndex=',Page.PageIndex,' ClientRect=',dbgs(Page.ClientRect)]); + // automatically set optimal row count and re-position controls to use height optimally - if Rows <= 0 then Rows:= 1; // avoid division by zero + if Rows <= 0 then Rows:= 1; // avoid division by zero - for j:= 1 to Page.ControlCount-1 do begin - CurButton:=TSpeedbutton(Page.Controls[j]); - if not (CurButton is TSpeedButton) then continue; - CurButton.SetBounds( - ButtonX + ((j-1) div Rows) * ComponentPaletteBtnWidth, - ((j-1) mod Rows) * ComponentPaletteBtnHeight, - CurButton.Width,CurButton.Height) + for j:= 1 to Page.ControlCount-1 do begin + CurButton:=TSpeedbutton(Page.Controls[j]); + if not (CurButton is TSpeedButton) then continue; + CurButton.SetBounds( + ButtonX + ((j-1) div Rows) * ComponentPaletteBtnWidth, + ((j-1) mod Rows) * ComponentPaletteBtnHeight, + CurButton.Width,CurButton.Height) + end; + finally + if NoteBook<>nil then + NoteBook.EnableAutoSizing; end; end; @@ -650,6 +658,16 @@ begin {$ENDIF} end; +procedure TComponentPalette.ShowHideControls(Show: boolean); +begin + NoteBook.DisableAutoSizing; + try + inherited ShowHideControls(Show); + finally + NoteBook.EnableAutoSizing; + end; +end; + initialization {$I ../images/components_images.lrs} diff --git a/ide/main.pp b/ide/main.pp index a327f8d726..fcaf372119 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -1787,10 +1787,10 @@ begin // Component Notebook MainIDEBar.ComponentNotebook := TNotebook.Create(OwningComponent); with MainIDEBar.ComponentNotebook do begin - Parent := MainIDEBar; Name := 'ComponentNotebook'; Align := alClient; Visible:=EnvironmentOptions.ComponentPaletteVisible; + Parent := MainIDEBar; end; end; diff --git a/ideintf/componentreg.pas b/ideintf/componentreg.pas index 4095a4959c..4cfdd55320 100644 --- a/ideintf/componentreg.pas +++ b/ideintf/componentreg.pas @@ -182,7 +182,7 @@ type function FindButton(Button: TComponent): TRegisteredComponent; function CreateNewClassName(const Prefix: string): string; function IndexOfPageComponent(AComponent: TComponent): integer; - procedure ShowHideControls(Show: boolean); + procedure ShowHideControls(Show: boolean); virtual; procedure IterateRegisteredClasses(Proc: TGetComponentClass); procedure RegisterCustomIDEComponents( const RegisterProc: RegisterUnitComponentProc); virtual;