Browse Source

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
shortcuts
Daniel Grunwald 19 years ago
parent
commit
a3ca35f2a5
  1. 1
      src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
  2. 23
      src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs

1
src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs

@ -99,6 +99,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public virtual void ActivateItem() public virtual void ActivateItem()
{ {
this.Toggle();
} }
public virtual void CheckedChanged() public virtual void CheckedChanged()

23
src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs

@ -181,9 +181,15 @@ namespace ICSharpCode.SharpDevelop.Gui
bool inRefresh; bool inRefresh;
protected override void OnBeforeExpand(TreeViewCancelEventArgs e) 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); base.OnBeforeExpand(e);
if (e.Node == null) if (e.Node == null) {
return; return;
}
try { try {
if (e.Node is ExtTreeNode) { if (e.Node is ExtTreeNode) {
if (((ExtTreeNode)e.Node).IsInitialized == false) { if (((ExtTreeNode)e.Node).IsInitialized == false) {
@ -219,9 +225,13 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
} }
protected override void OnBeforeCollapse(TreeViewCancelEventArgs e) 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); base.OnBeforeCollapse(e);
if (e.Node is ExtTreeNode) { if (e.Node is ExtTreeNode) {
((ExtTreeNode)e.Node).Collapsing(); ((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) protected override void OnMouseDown(MouseEventArgs e)
{ {
mouseClickNum = e.Clicks;
base.OnMouseDown(e); base.OnMouseDown(e);
TreeNode node = GetNodeAt(e.X, e.Y); TreeNode node = GetNodeAt(e.X, e.Y);
if (node != null) { 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) protected override void OnBeforeSelect(TreeViewCancelEventArgs e)
{ {
// setting the context menu must be done by BeforeSelect because // setting the context menu must be done by BeforeSelect because

Loading…
Cancel
Save