diff --git a/designer/componenteditors.pas b/designer/componenteditors.pas index 10ec2ddc4a..62592631d5 100644 --- a/designer/componenteditors.pas +++ b/designer/componenteditors.pas @@ -463,6 +463,8 @@ begin NewPageIndex:=AMenuItem.MenuIndex; if (NewPageIndex<0) or (NewPageIndex>=Notebook.PageCount) then exit; NoteBook.PageIndex:=NewPageIndex; + GetDesigner.SelectOnlyThisComponent( + TPage(NoteBook.PageList[NoteBook.PageIndex])); end; procedure TNotebookComponentEditor.AddNewPageToDesigner(Index: integer); diff --git a/designer/controlselection.pp b/designer/controlselection.pp index b9f7a40677..370e09af9b 100644 --- a/designer/controlselection.pp +++ b/designer/controlselection.pp @@ -548,7 +548,6 @@ end; procedure TControlSelection.UpdateBounds; begin - if IsResizing then exit; if FUpdateLock>0 then begin Include(FStates,cssBoundsNeedsUpdate); exit; @@ -1118,10 +1117,10 @@ begin Result:=FControls.Add(NewSelectedControl); FStates:=FStates+[cssOnlyNonVisualNeedsUpdate,cssOnlyVisualNeedsUpdate]; if Count=1 then SetCustomForm; + DoChange; UpdateBounds; SaveBounds; EndUpdate; - DoChange; end; function TControlSelection.AssignComponent(AComponent: TComponent): boolean; @@ -1145,6 +1144,7 @@ end; procedure TControlSelection.Delete(Index:integer); begin if Index<0 then exit; + BeginUpdate; Items[Index].Free; FControls.Delete(Index); FStates:=FStates+[cssOnlyNonVisualNeedsUpdate,cssOnlyVisualNeedsUpdate]; @@ -1152,6 +1152,7 @@ begin UpdateBounds; SaveBounds; DoChange; + EndUpdate; end; procedure TControlSelection.Clear; @@ -1450,6 +1451,10 @@ var i:integer; begin SelectionChanged:=false; if ClearBefore then begin + if IsSelected(ACustomForm) then begin + Remove(ACustomForm); + SelectionChanged:=true; + end; for i:=0 to ACustomForm.ComponentCount-1 do if not ControlInRubberBand(ACustomForm.Components[i]) then begin if IsSelected(ACustomForm.Components[i]) then begin