in src/XmlNotepad/XmlTreeView.cs [1003:1099]
private void myTreeView_KeyDown(object sender, KeyEventArgs e)
{
CurrentEvent.Event = e;
if (!this.IsEditing)
{
bool ctrlMods = e.Modifiers == Keys.Control || e.Modifiers == (Keys.Control | Keys.Shift);
bool nudgeMods = e.Modifiers == (Keys.Control | Keys.Shift);
XmlTreeNode xn = this.SelectedNode;
TreeNode n = this._myTreeView.SelectedNode;
switch (e.KeyCode)
{
case Keys.Escape:
this.Commit();
if (!e.Handled)
{
this._myTreeView.SelectedNode = null;
if (this.SelectionChanged != null)
SelectionChanged(this, EventArgs.Empty);
}
break;
case Keys.X:
if (ctrlMods)
{
this.Cut();
e.Handled = true;
}
break;
case Keys.C:
if (ctrlMods)
{
this.Copy();
e.Handled = true;
}
break;
case Keys.V:
if (ctrlMods)
{
this.Paste(InsertPosition.Child);
e.Handled = true;
}
break;
case Keys.Right:
if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Right))
{
this.NudgeNode(xn, NudgeDirection.Right);
e.Handled = true;
}
else if (!this.IsEditing && n != null && n.Children.Count == 0)
{
this._nodeTextView.Focus();
e.Handled = true;
}
break;
case Keys.Delete:
this.Delete();
break;
case Keys.F2:
case Keys.Enter:
BeginEditNodeName();
e.Handled = true;
break;
case Keys.Up:
if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Up))
{
this.NudgeNode(xn, NudgeDirection.Up);
e.Handled = true;
}
break;
case Keys.Down:
if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Down))
{
this.NudgeNode(xn, NudgeDirection.Down);
e.Handled = true;
}
break;
case Keys.Left:
if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Left))
{
this.NudgeNode(xn, NudgeDirection.Left);
e.Handled = true;
}
break;
default:
if (!e.Handled)
{
nodeTextView_KeyDown(sender, e);
}
break;
}
}
else if (!e.Handled)
{
base.OnKeyDown(e);
}
}