Browse Source

Setter methods for implementing a custom HitTestFilterCallback

pull/315/head
tbulle 12 years ago
parent
commit
c22443ba71
  1. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
  2. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs
  3. 6
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/CreateComponentTool.cs
  4. 7
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/ToolService.cs
  5. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Tools.cs

9
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs

@ -89,9 +89,12 @@ namespace ICSharpCode.WpfDesign.Designer
bool continueHitTest = true; bool continueHitTest = true;
HitTestFilterCallback filterBehavior = CustomHitTestFilterBehavior ?? FilterHitTestInvisibleElements;
CustomHitTestFilterBehavior = null;
if (testAdorners) { if (testAdorners) {
RunHitTest( RunHitTest(
_adornerLayer, mousePosition, FilterHitTestInvisibleElements, _adornerLayer, mousePosition, filterBehavior,
delegate(HitTestResult result) { delegate(HitTestResult result) {
if (result != null && result.VisualHit != null && result.VisualHit is Visual) { if (result != null && result.VisualHit != null && result.VisualHit is Visual) {
DesignPanelHitTestResult customResult = new DesignPanelHitTestResult((Visual)result.VisualHit); DesignPanelHitTestResult customResult = new DesignPanelHitTestResult((Visual)result.VisualHit);
@ -113,7 +116,7 @@ namespace ICSharpCode.WpfDesign.Designer
if (continueHitTest && testDesignSurface) { if (continueHitTest && testDesignSurface) {
RunHitTest( RunHitTest(
this.Child, mousePosition, FilterHitTestInvisibleElements, this.Child, mousePosition, filterBehavior,
delegate(HitTestResult result) { delegate(HitTestResult result) {
if (result != null && result.VisualHit != null && result.VisualHit is Visual) { if (result != null && result.VisualHit != null && result.VisualHit is Visual) {
DesignPanelHitTestResult customResult = new DesignPanelHitTestResult((Visual)result.VisualHit); DesignPanelHitTestResult customResult = new DesignPanelHitTestResult((Visual)result.VisualHit);
@ -165,6 +168,8 @@ namespace ICSharpCode.WpfDesign.Designer
#region Properties #region Properties
//Set custom HitTestFilterCallbak
public HitTestFilterCallback CustomHitTestFilterBehavior { get; set; }
/// <summary> /// <summary>
/// Gets/Sets the design context. /// Gets/Sets the design context.
/// </summary> /// </summary>

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
public CategoriesCollection Categories { get; private set; } public CategoriesCollection Categories { get; private set; }
public PropertyNodeCollection Events { get; private set; } public PropertyNodeCollection Events { get; private set; }
public EventHandler AggregatePropertiesUpdated; public EventHandler AggregatePropertiesUpdated { get; set; }
private PropertyGridGroupMode _groupMode; private PropertyGridGroupMode _groupMode;

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

@ -142,6 +142,12 @@ namespace ICSharpCode.WpfDesign.Designer.Services
return item; return item;
} }
public static bool AddItemWithCustomSizePosition(DesignItem container, Type createdItem, Size size, Point position)
{
CreateComponentTool cct = new CreateComponentTool(createdItem);
return AddItemWithCustomSize(container, cct.CreateItem(container.Context), position, size);
}
public static bool AddItemWithDefaultSize(DesignItem container, Type createdItem, Size size) public static bool AddItemWithDefaultSize(DesignItem container, Type createdItem, Size size)
{ {
CreateComponentTool cct = new CreateComponentTool(createdItem); CreateComponentTool cct = new CreateComponentTool(createdItem);

7
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/ToolService.cs

@ -3,7 +3,7 @@
using System; using System;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media;
namespace ICSharpCode.WpfDesign.Designer.Services namespace ICSharpCode.WpfDesign.Designer.Services
{ {
// See IToolService for description. // See IToolService for description.
@ -22,6 +22,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services
}); });
} }
public HitTestFilterCallback DesignPanelHitTestFilterCallback
{
set{ _designPanel.CustomHitTestFilterBehavior = value; }
}
public void Dispose() public void Dispose()
{ {
if (_designPanel != null) { if (_designPanel != null) {

9
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Tools.cs

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.WpfDesign.Adorners; using ICSharpCode.WpfDesign.Adorners;
@ -38,6 +39,10 @@ namespace ICSharpCode.WpfDesign
/// </summary> /// </summary>
public interface IToolService public interface IToolService
{ {
/// <summary>
/// Set custom HitTestFilterCallback for DesignPanel
/// </summary>
HitTestFilterCallback DesignPanelHitTestFilterCallback{ set; }
/// <summary> /// <summary>
/// Gets the 'pointer' tool. /// Gets the 'pointer' tool.
/// The pointer tool is the default tool for selecting and moving elements. /// The pointer tool is the default tool for selecting and moving elements.
@ -62,6 +67,10 @@ namespace ICSharpCode.WpfDesign
public interface IDesignPanel : IInputElement public interface IDesignPanel : IInputElement
{ {
/// <summary> /// <summary>
/// Set a custom filter callback so that any element can be filtered out
/// </summary>
HitTestFilterCallback CustomHitTestFilterBehavior { get; set; }
/// <summary>
/// Gets the design context used by the DesignPanel. /// Gets the design context used by the DesignPanel.
/// </summary> /// </summary>
DesignContext Context { get; } DesignContext Context { get; }

Loading…
Cancel
Save