From a3ca35f2a529e3beee478d35cca93803b6662774 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 11 Jul 2006 16:10:56 +0000 Subject: [PATCH] Prevent collapsing/expanding of ExtTreeView nodes on double click if they override ActivateItem. This fixes forum-9077. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1565 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Gui/Components/ExtTreeView/ExtTreeNode.cs | 1 + .../Gui/Components/ExtTreeView/ExtTreeView.cs | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) 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