diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs index f9653635f8..be0573509d 100644 --- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs +++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs @@ -99,6 +99,7 @@ namespace ICSharpCode.SharpDevelop.Gui public virtual void ActivateItem() { + this.Toggle(); } public virtual void CheckedChanged() diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs index 2e9d4ea9cc..b2f3a34833 100644 --- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs +++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs @@ -181,9 +181,15 @@ namespace ICSharpCode.SharpDevelop.Gui bool inRefresh; protected override void OnBeforeExpand(TreeViewCancelEventArgs e) { + if (mouseClickNum == 2) { + mouseClickNum = 0; // only intercept first occurrance, don't prevent expansion by ActivateItem on double click + e.Cancel = true; + return; + } base.OnBeforeExpand(e); - if (e.Node == null) + if (e.Node == null) { return; + } try { if (e.Node is ExtTreeNode) { if (((ExtTreeNode)e.Node).IsInitialized == false) { @@ -219,9 +225,13 @@ namespace ICSharpCode.SharpDevelop.Gui } } - protected override void OnBeforeCollapse(TreeViewCancelEventArgs e) { + if (mouseClickNum == 2) { + mouseClickNum = 0; // only intercept first occurrance, don't prevent collapsing by ActivateItem on double click + e.Cancel = true; + return; + } base.OnBeforeCollapse(e); if (e.Node is ExtTreeNode) { ((ExtTreeNode)e.Node).Collapsing(); @@ -263,8 +273,11 @@ namespace ICSharpCode.SharpDevelop.Gui } } + int mouseClickNum; // 0 if mouse button is not pressed, otherwise click number (1=normal, 2=double click) + protected override void OnMouseDown(MouseEventArgs e) { + mouseClickNum = e.Clicks; base.OnMouseDown(e); TreeNode node = GetNodeAt(e.X, e.Y); if (node != null) { @@ -278,6 +291,12 @@ namespace ICSharpCode.SharpDevelop.Gui } } + protected override void OnMouseUp(MouseEventArgs e) + { + mouseClickNum = 0; + base.OnMouseUp(e); + } + protected override void OnBeforeSelect(TreeViewCancelEventArgs e) { // setting the context menu must be done by BeforeSelect because