Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 21 additions & 22 deletions src/DynamoCoreWpf/Views/Core/NodeView.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ public Grid PresentationGrid
private static Style _nodeButtonStyle = GetNodeButtonStyle();
private static Style _codeBlockNodeItemControlStyle = GetCodeBlockPortItemControlStyle();
internal static readonly Style DynamoToolTipTopStyle = GetDynamoToolTipTopStyle();
// Initiate context menu style as static resource.
private static ContextMenu nodeContextMenu = GetNodeContextMenu();

#region constructors
Expand Down Expand Up @@ -2324,18 +2325,21 @@ internal void TogglePreviewControlAllowance()
/// </summary>
private void StashNodeViewCustomizationMenuItems()
{
Comment thread
zeusongit marked this conversation as resolved.
foreach (var obj in grid.ContextMenu.Items)
Comment thread
aparajit-pratap marked this conversation as resolved.
if (MainContextMenu != null && MainContextMenu.Items.Count > 0 && NodeViewCustomizationMenuItems.Count == 0)
{
if (!(obj is MenuItem menuItem)) continue;
foreach (var obj in MainContextMenu.Items)
{
if (!(obj is MenuItem menuItem)) continue;

// We don't stash default MenuItems, such as 'Freeze'.
if (NodeContextMenuBuilder.NodeContextMenuDefaultItemNames.Contains(menuItem.Header.ToString())) continue;
// We don't stash default MenuItems, such as 'Freeze'.
if (NodeContextMenuBuilder.NodeContextMenuDefaultItemNames.Contains(menuItem.Header.ToString())) continue;

// We don't stash the same MenuItem multiple times.
if (NodeViewCustomizationMenuItems.Contains(menuItem.Header.ToString())) continue;
// We don't stash the same MenuItem multiple times.
if (NodeViewCustomizationMenuItems.Contains(menuItem.Header.ToString())) continue;

// The MenuItem gets stashed.
NodeViewCustomizationMenuItems.Add(menuItem.Header.ToString(), menuItem);
// The MenuItem gets stashed.
NodeViewCustomizationMenuItems.Add(menuItem.Header.ToString(), menuItem);
}
}
}

Expand All @@ -2360,30 +2364,25 @@ private void DisplayNodeContextMenu(object sender, RoutedEventArgs e)
ViewModel.DynamoViewModel.ExecuteCommand(
new DynCmd.SelectModelCommand(nodeGuid, Keyboard.Modifiers.AsDynamoType()));

var contextMenu = grid.ContextMenu;

// Stashing any injected MenuItems from the Node View Customization process.
if (contextMenu.Items.Count > 0 && NodeViewCustomizationMenuItems.Count < 1)
{
StashNodeViewCustomizationMenuItems();
}
StashNodeViewCustomizationMenuItems();

// Clearing any existing items in the node's ContextMenu.
contextMenu.Items.Clear();
MainContextMenu.Items.Clear();
nodeContextMenu.Items.Clear();
NodeContextMenuBuilder.Build(nodeContextMenu, viewModel, NodeViewCustomizationMenuItems);

nodeContextMenu.DataContext = viewModel;
nodeContextMenu.Closed += MainContextMenu_OnClosed;
nodeContextMenu.IsOpen = true;

MainContextMenu = nodeContextMenu;
grid.ContextMenu = MainContextMenu;
MainContextMenu.DataContext = viewModel;
MainContextMenu.Closed += MainContextMenu_OnClosed;
MainContextMenu.IsOpen = true;
e.Handled = true;
}

private void MainContextMenu_OnClosed(object sender, RoutedEventArgs e)
{
nodeContextMenu.Closed -= MainContextMenu_OnClosed;
nodeContextMenu.Items.Clear();
MainContextMenu.Closed -= MainContextMenu_OnClosed;
MainContextMenu.Items.Clear();
e.Handled = true;
}

Expand Down
Loading