From a50f96606bc112e0ec97e73ef88002cd13132f2e Mon Sep 17 00:00:00 2001 From: David Sparer Date: Thu, 15 Sep 2016 13:31:00 -0600 Subject: [PATCH] Resolved bug when editing a tree node name - the context menu would steal keyboard input for its shortcut keys --- .../UI/Controls/ConnectionContextMenu.cs | 27 ++++++++++++++----- mRemoteV1/UI/Window/ConnectionTreeWindow.cs | 15 +++-------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/mRemoteV1/UI/Controls/ConnectionContextMenu.cs b/mRemoteV1/UI/Controls/ConnectionContextMenu.cs index 8fbf1e4c4..52b34b152 100644 --- a/mRemoteV1/UI/Controls/ConnectionContextMenu.cs +++ b/mRemoteV1/UI/Controls/ConnectionContextMenu.cs @@ -51,6 +51,7 @@ namespace mRemoteNG.UI.Controls { InitializeComponent(); ApplyLanguage(); + EnableShortcutKeys(); Opening += (sender, args) => AddExternalApps(); } @@ -122,7 +123,6 @@ namespace mRemoteNG.UI.Controls // _cMenTreeConnect.Image = Resources.Play; _cMenTreeConnect.Name = "_cMenTreeConnect"; - _cMenTreeConnect.ShortcutKeys = ((Keys.Control | Keys.Shift) | Keys.C); _cMenTreeConnect.Size = new System.Drawing.Size(199, 22); _cMenTreeConnect.Text = "Connect"; _cMenTreeConnect.Click += (sender, args) => OnConnectClicked(args); @@ -218,7 +218,6 @@ namespace mRemoteNG.UI.Controls // _cMenTreeDuplicate.Image = Resources.page_copy; _cMenTreeDuplicate.Name = "_cMenTreeDuplicate"; - _cMenTreeDuplicate.ShortcutKeys = Keys.Control | Keys.D; _cMenTreeDuplicate.Size = new System.Drawing.Size(199, 22); _cMenTreeDuplicate.Text = "Duplicate"; _cMenTreeDuplicate.Click += (sender, args) => OnDuplicateClicked(args); @@ -227,7 +226,6 @@ namespace mRemoteNG.UI.Controls // _cMenTreeRename.Image = Resources.Rename; _cMenTreeRename.Name = "_cMenTreeRename"; - _cMenTreeRename.ShortcutKeys = Keys.F2; _cMenTreeRename.Size = new System.Drawing.Size(199, 22); _cMenTreeRename.Text = "Rename"; _cMenTreeRename.Click += (sender, args) => OnRenameClicked(args); @@ -236,7 +234,6 @@ namespace mRemoteNG.UI.Controls // _cMenTreeDelete.Image = Resources.Delete; _cMenTreeDelete.Name = "_cMenTreeDelete"; - _cMenTreeDelete.ShortcutKeys = Keys.Delete; _cMenTreeDelete.Size = new System.Drawing.Size(199, 22); _cMenTreeDelete.Text = "Delete"; _cMenTreeDelete.Click += (sender, args) => OnDeleteClicked(args); @@ -341,7 +338,6 @@ namespace mRemoteNG.UI.Controls // _cMenTreeMoveUp.Image = Resources.Arrow_Up; _cMenTreeMoveUp.Name = "_cMenTreeMoveUp"; - _cMenTreeMoveUp.ShortcutKeys = Keys.Control | Keys.Up; _cMenTreeMoveUp.Size = new System.Drawing.Size(199, 22); _cMenTreeMoveUp.Text = "Move up"; _cMenTreeMoveUp.Click += (sender, args) => OnMoveUpClicked(args); @@ -350,7 +346,6 @@ namespace mRemoteNG.UI.Controls // _cMenTreeMoveDown.Image = Resources.Arrow_Down; _cMenTreeMoveDown.Name = "_cMenTreeMoveDown"; - _cMenTreeMoveDown.ShortcutKeys = Keys.Control | Keys.Down; _cMenTreeMoveDown.Size = new System.Drawing.Size(199, 22); _cMenTreeMoveDown.Text = "Move down"; _cMenTreeMoveDown.Click += (sender, args) => OnMoveDownClicked(args); @@ -488,6 +483,26 @@ namespace mRemoteNG.UI.Controls } } + internal void DisableShortcutKeys() + { + _cMenTreeConnect.ShortcutKeys = Keys.None; + _cMenTreeDuplicate.ShortcutKeys = Keys.None; + _cMenTreeRename.ShortcutKeys = Keys.None; + _cMenTreeDelete.ShortcutKeys = Keys.None; + _cMenTreeMoveUp.ShortcutKeys = Keys.None; + _cMenTreeMoveDown.ShortcutKeys = Keys.None; + } + + internal void EnableShortcutKeys() + { + _cMenTreeConnect.ShortcutKeys = ((Keys.Control | Keys.Shift) | Keys.C); + _cMenTreeDuplicate.ShortcutKeys = Keys.Control | Keys.D; + _cMenTreeRename.ShortcutKeys = Keys.F2; + _cMenTreeDelete.ShortcutKeys = Keys.Delete; + _cMenTreeMoveUp.ShortcutKeys = Keys.Control | Keys.Up; + _cMenTreeMoveDown.ShortcutKeys = Keys.Control | Keys.Down; + } + private static void EnableMenuItemsRecursive(ToolStripItemCollection items, bool enable = true) { foreach (ToolStripItem item in items) diff --git a/mRemoteV1/UI/Window/ConnectionTreeWindow.cs b/mRemoteV1/UI/Window/ConnectionTreeWindow.cs index 580660a73..8662aeb4d 100644 --- a/mRemoteV1/UI/Window/ConnectionTreeWindow.cs +++ b/mRemoteV1/UI/Window/ConnectionTreeWindow.cs @@ -307,18 +307,17 @@ namespace mRemoteNG.UI.Window #region Private Methods private void tvConnections_BeforeLabelEdit(object sender, LabelEditEventArgs e) - { - //cMenTreeDelete.ShortcutKeys = Keys.None; - } + { + _contextMenu.DisableShortcutKeys(); + } private void tvConnections_AfterLabelEdit(object sender, LabelEditEventArgs e) { try { - //cMenTreeDelete.ShortcutKeys = Keys.Delete; + _contextMenu.EnableShortcutKeys(); ConnectionTreeModel.RenameNode(SelectedNode, e.Label); Windows.configForm.pGrid_SelectedObjectChanged(); - //ShowHideTreeContextMenuItems(SelectedNode); Runtime.SaveConnectionsBG(); } catch (Exception ex) @@ -332,7 +331,6 @@ namespace mRemoteNG.UI.Window try { Windows.configForm.SetPropertyGridObject(olvConnections.SelectedObject); - //ShowHideTreeContextMenuItems((ConnectionInfo)olvConnections.SelectedObject); Runtime.LastSelected = ((ConnectionInfo)olvConnections.SelectedObject)?.ConstantID; } catch (Exception ex) @@ -347,7 +345,6 @@ namespace mRemoteNG.UI.Window { if (e.ClickCount > 1) return; var clickedNode = (ConnectionInfo)e.Model; - //ShowHideTreeContextMenuItems(SelectedNode); //if (e.Button != MouseButtons.Left) return; if (clickedNode.GetTreeNodeType() != TreeNodeType.Connection && clickedNode.GetTreeNodeType() != TreeNodeType.PuttySession) return; @@ -387,10 +384,6 @@ namespace mRemoteNG.UI.Window Runtime.MessageCollector.AddExceptionStackTrace("tvConnections_MouseMove (UI.Window.ConnectionTreeWindow) failed", ex); } } - - - - #endregion #region Tree Context Menu