From c65b6cde05144118d30bc0fd36440bed6f31d1be Mon Sep 17 00:00:00 2001 From: Andreas Weizel Date: Fri, 12 Jul 2013 00:39:50 +0200 Subject: [PATCH] Now ClassBrowser tree nodes show their context menus independently. --- .../Dom/ClassBrowser/ClassBrowserTreeView.cs | 14 ++++---------- .../Dom/ClassBrowser/WorkspaceTreeNode.cs | 17 +++++++++++++++++ .../Base/Project/Dom/ModelCollectionTreeNode.cs | 5 +++++ 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs b/src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs index 2ccebe401d..c48e44a6ac 100644 --- a/src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs +++ b/src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs @@ -36,17 +36,11 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser } } - protected override void OnMouseUp(System.Windows.Input.MouseButtonEventArgs e) + protected override void OnContextMenuOpening(ContextMenuEventArgs e) { - if (e.ChangedButton == MouseButton.Right) { - var treeNode = this.SelectedItem as ModelCollectionTreeNode; - if (treeNode != null) { - var model = treeNode.Model; - if (model is IEntityModel) { - var ctx = MenuService.ShowContextMenu(e.Source as UIElement, (IEntityModel) model, "/SharpDevelop/EntityContextMenu"); - e.Handled = true; - } - } + var treeNode = this.SelectedItem as ModelCollectionTreeNode; + if (treeNode != null) { + treeNode.ShowContextMenu(); } } } diff --git a/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs index beb61727a3..40771a191b 100644 --- a/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs +++ b/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Windows.Media; +using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Utils; using ICSharpCode.TreeView; @@ -220,6 +221,14 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser if (target != null) NavigationService.NavigateTo(target); } + + public override void ShowContextMenu() + { + var model = this.Model; + if (model is IEntityModel) { + var ctx = MenuService.ShowContextMenu(null, (IEntityModel) model, "/SharpDevelop/EntityContextMenu"); + } + } } public class MemberTreeNode : ModelCollectionTreeNode @@ -282,5 +291,13 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser if (target != null) NavigationService.NavigateTo(target); } + + public override void ShowContextMenu() + { + var model = this.Model; + if (model is IEntityModel) { + var ctx = MenuService.ShowContextMenu(null, (IEntityModel) model, "/SharpDevelop/EntityContextMenu"); + } + } } } diff --git a/src/Main/Base/Project/Dom/ModelCollectionTreeNode.cs b/src/Main/Base/Project/Dom/ModelCollectionTreeNode.cs index 4222f53fa2..57767df6ae 100644 --- a/src/Main/Base/Project/Dom/ModelCollectionTreeNode.cs +++ b/src/Main/Base/Project/Dom/ModelCollectionTreeNode.cs @@ -54,6 +54,11 @@ namespace ICSharpCode.SharpDevelop.Dom } } + public virtual void ShowContextMenu() + { + // Do nothing in base class + } + #region Manage Children protected override void LoadChildren() {