From 495d86f69ca3459ada03a27b54c51c98506f2e61 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 4 Feb 2011 03:16:36 +0100 Subject: [PATCH] SharpTreeView: add ActivateItem() [double-click support] --- SharpTreeView/SharpTreeNode.cs | 7 +++++++ SharpTreeView/SharpTreeViewItem.cs | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/SharpTreeView/SharpTreeNode.cs b/SharpTreeView/SharpTreeNode.cs index 28222a919..cbd746b35 100644 --- a/SharpTreeView/SharpTreeNode.cs +++ b/SharpTreeView/SharpTreeNode.cs @@ -609,5 +609,12 @@ namespace ICSharpCode.TreeView } #endregion + + /// + /// Gets called when the item is double-clicked. + /// + public virtual void ActivateItem(RoutedEventArgs e) + { + } } } diff --git a/SharpTreeView/SharpTreeViewItem.cs b/SharpTreeView/SharpTreeViewItem.cs index 4201f1393..d9c0d367b 100644 --- a/SharpTreeView/SharpTreeViewItem.cs +++ b/SharpTreeView/SharpTreeViewItem.cs @@ -65,6 +65,7 @@ namespace ICSharpCode.TreeView Point startPoint; bool wasSelected; + bool wasDoubleClick; protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { @@ -78,9 +79,7 @@ namespace ICSharpCode.TreeView CaptureMouse(); if (e.ClickCount == 2) { - if (!Node.IsRoot || ParentTreeView.ShowRootExpander) { - Node.IsExpanded = !Node.IsExpanded; - } + wasDoubleClick = true; } } } @@ -101,6 +100,16 @@ namespace ICSharpCode.TreeView protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { + if (wasDoubleClick) { + wasDoubleClick = false; + Node.ActivateItem(e); + if (!e.Handled) { + if (!Node.IsRoot || ParentTreeView.ShowRootExpander) { + Node.IsExpanded = !Node.IsExpanded; + } + } + } + ReleaseMouseCapture(); if (wasSelected) { base.OnMouseLeftButtonDown(e);