From cbd4600086da64d407fb5304b5ef96e9bb8c84c8 Mon Sep 17 00:00:00 2001 From: tbulle Date: Fri, 7 Nov 2014 08:27:00 +0100 Subject: [PATCH] Addition to DesignPanel to be able to suppress default key action for objects --- .../WpfDesign.Designer/Project/DesignPanel.cs | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs index a01b1046e8..3ccaef0d64 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs @@ -355,6 +355,21 @@ namespace ICSharpCode.WpfDesign.Designer int dx = 0; int dy = 0; + /// + /// If interface implementing class sets this to false defaultkeyaction will be + /// + /// + /// + bool InvokeDefaultKeyDownAction(Extension e) + { + var keyDown = e as IKeyDown; + if (keyDown != null) { + return keyDown.InvokeDefaultAction; + } + + return true; + } + private void DesignPanel_KeyUp(object sender, KeyEventArgs e) { if (e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up || e.Key == Key.Down) @@ -398,9 +413,17 @@ namespace ICSharpCode.WpfDesign.Designer e.Handled = true; if (placementOp == null) { + + //check if any objects don't want the default action to be invoked + List placedItems = Context.Services.Selection.SelectedItems.Where(x => x.Extensions.All(InvokeDefaultKeyDownAction)).ToList(); + + //if no remaining objects, break + if (placedItems.Count < 1) return; + dx = 0; dy = 0; - placementOp = PlacementOperation.Start(Context.Services.Selection.SelectedItems, PlacementType.Move); + + placementOp = PlacementOperation.Start(placedItems, PlacementType.Move); }