Browse Source

Fix bug in WPF designer: ChangeGroup was left open when creating a control by clicking on the design surface (http://community.sharpdevelop.net/forums/t/12410.aspx)

pull/14/head
Daniel Grunwald 15 years ago
parent
commit
1d25ed2fd1
  1. 18
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/CreateComponentTool.cs

18
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/CreateComponentTool.cs

@ -79,7 +79,9 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -79,7 +79,9 @@ namespace ICSharpCode.WpfDesign.Designer.Services
if (AddItemWithDefaultSize(result.ModelHit, createdItem, e.GetPosition(result.ModelHit.View))) {
moveLogic = new MoveLogic(createdItem);
createPoint = p;
// We'll keep the ChangeGroup open as long as the moveLogic is active.
} else {
// Abort the ChangeGroup created by the CreateItem() call.
changeGroup.Abort();
}
}
@ -169,7 +171,9 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -169,7 +171,9 @@ namespace ICSharpCode.WpfDesign.Designer.Services
if (behavior != null) {
DesignItem createdItem = CreateItem(designPanel.Context);
new CreateComponentMouseGesture(result.ModelHit, createdItem).Start(designPanel, e);
new CreateComponentMouseGesture(result.ModelHit, createdItem, changeGroup).Start(designPanel, e);
// CreateComponentMouseGesture now is responsible for the changeGroup created by CreateItem()
changeGroup = null;
}
}
}
@ -181,12 +185,14 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -181,12 +185,14 @@ namespace ICSharpCode.WpfDesign.Designer.Services
DesignItem createdItem;
PlacementOperation operation;
DesignItem container;
ChangeGroup changeGroup;
public CreateComponentMouseGesture(DesignItem clickedOn, DesignItem createdItem)
public CreateComponentMouseGesture(DesignItem clickedOn, DesignItem createdItem, ChangeGroup changeGroup)
{
this.container = clickedOn;
this.createdItem = createdItem;
this.positionRelativeTo = clickedOn.View;
this.changeGroup = changeGroup;
}
// GrayOutDesignerExceptActiveArea grayOut;
@ -236,6 +242,10 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -236,6 +242,10 @@ namespace ICSharpCode.WpfDesign.Designer.Services
} else {
CreateComponentTool.AddItemWithDefaultSize(container, createdItem, e.GetPosition(positionRelativeTo));
}
if (changeGroup != null) {
changeGroup.Commit();
changeGroup = null;
}
base.OnMouseUp(sender, e);
}
@ -245,6 +255,10 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -245,6 +255,10 @@ namespace ICSharpCode.WpfDesign.Designer.Services
operation.Abort();
operation = null;
}
if (changeGroup != null) {
changeGroup.Abort();
changeGroup = null;
}
if (services.Tool.CurrentTool is CreateComponentTool) {
services.Tool.CurrentTool = services.Tool.PointerTool;
}

Loading…
Cancel
Save