Skip to content

Commit

Permalink
Fixed context menu items and margins in text visualizers (#216)
Browse files Browse the repository at this point in the history
  • Loading branch information
chitsaw committed Mar 4, 2022
1 parent d2783d9 commit 850eaaf
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ private void OnContextMenuOpening(object sender, ContextMenuEventArgs e)
// Run a hit test at the mouse cursor
VisualTreeHelper.HitTest(
this,
null,
new HitTestFilterCallback(this.ContestMenuHitTestFilter),
new HitTestResultCallback(this.ContextMenuHitTestResult),
new PointHitTestParameters(Mouse.GetPosition(this)));

Expand Down Expand Up @@ -321,6 +321,17 @@ private void OnContextMenuOpening(object sender, ContextMenuEventArgs e)
}
}

// Filter to exclude invisible UI elements from hit test
private HitTestFilterBehavior ContestMenuHitTestFilter(DependencyObject dependencyObject)
{
if (dependencyObject is UIElement element && !element.IsVisible)
{
return HitTestFilterBehavior.ContinueSkipSelfAndChildren;
}

return HitTestFilterBehavior.Continue;
}

// Return the result of the hit test to the callback.
private HitTestResultBehavior ContextMenuHitTestResult(HitTestResult result)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
</Border>
<Border Grid.Row="1" Padding="5,2,0,0">
<Grid>
<TextBox Text="{Binding Path=FormattedData, Mode=OneWay}" IsReadOnly="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"/>
<TextBox Text="{Binding Path=FormattedData, Mode=OneWay}" Margin="{Binding Margin}" IsReadOnly="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"/>
</Grid>
</Border>
</Grid>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
</Border>
<Border Grid.Row="1" Padding="5,2,0,0">
<Grid>
<TextBox Text="{Binding Path=CurrentValue.Data, Mode=OneWay}" IsReadOnly="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"/>
<TextBox Text="{Binding Path=CurrentValue.Data, Mode=OneWay}" Margin="{Binding Margin}" IsReadOnly="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"/>
</Grid>
</Border>
</Grid>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects
[VisualizationPanelType(VisualizationPanelType.Canvas)]
public class IFormattableVisualizationObject : StreamValueVisualizationObject<IFormattable>
{
private int margin = 10;
private Thickness margin = new (5, 0, 0, 0);
private string formatString = default;
private string formattedData = default;

Expand All @@ -32,8 +32,8 @@ public class IFormattableVisualizationObject : StreamValueVisualizationObject<IF
/// </summary>
[DataMember]
[DisplayName("Margin")]
[Description("The margin in pixels.")]
public int Margin
[Description("The left, top, right and bottom margin in pixels.")]
public Thickness Margin
{
get { return this.margin; }
set { this.Set(nameof(this.Margin), ref this.margin, value); }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

namespace Microsoft.Psi.Visualization.VisualizationObjects
{
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Windows;
using Microsoft.Psi.Visualization.Helpers;
Expand All @@ -16,8 +17,22 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects
[VisualizationPanelType(VisualizationPanelType.Canvas)]
public class TextVisualizationObject : StreamValueVisualizationObject<string>
{
private Thickness margin = new (5, 0, 0, 0);

/// <inheritdoc />
[IgnoreDataMember]
public override DataTemplate DefaultViewTemplate => XamlHelper.CreateTemplate(this.GetType(), typeof(TextVisualizationObjectView));

/// <summary>
/// Gets or sets the margin.
/// </summary>
[DataMember]
[DisplayName("Margin")]
[Description("The left, top, right and bottom margin in pixels.")]
public Thickness Margin
{
get { return this.margin; }
set { this.Set(nameof(this.Margin), ref this.margin, value); }
}
}
}

0 comments on commit 850eaaf

Please sign in to comment.