Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVsevolod Kukol <sevoku@microsoft.com>2017-07-17 13:30:27 +0300
committerVsevolod Kukol <sevoku@microsoft.com>2017-07-17 13:32:59 +0300
commite1353c9a9cdc96c0849d18c9d3650f3bcb13bcce (patch)
treeb5676d3c391b454275bdeaca1484a3b2649eac8f /main/src/core/MonoDevelop.Ide
parentfda5aedebfd97350b3651cb4eeda67ae08204e87 (diff)
[Ide] Fix KeyBindingSet compare with parent Pt. 2
* fix parent selection for compare * skip unchanged and empty bindings in schemes (fixes bug #57111)
Diffstat (limited to 'main/src/core/MonoDevelop.Ide')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/KeyBindingSet.cs20
1 files changed, 17 insertions, 3 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/KeyBindingSet.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/KeyBindingSet.cs
index e649670aa1..eaa9121cac 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/KeyBindingSet.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/KeyBindingSet.cs
@@ -100,7 +100,9 @@ namespace MonoDevelop.Components.Commands
public bool Equals (KeyBindingSet other)
{
- if (parent != other && bindings.Count != other.bindings.Count)
+ if (other == null)
+ return false;
+ if (parent != null && parent != other && !parent.Equals (other.parent))
return false;
foreach (KeyValuePair<string, string> binding in bindings) {
string accel;
@@ -214,9 +216,21 @@ namespace MonoDevelop.Components.Commands
case "binding":
command = reader.GetAttribute (commandAttr);
binding = reader.GetAttribute (shortcutAttr);
+
+ if (string.IsNullOrEmpty (command))
+ continue;
+
+ if (!string.IsNullOrEmpty (binding))
+ binding = KeyBindingManager.FixChordSeparators (binding);
+
+ string pbind;
+ if (parent?.bindings != null && parent.bindings.TryGetValue (command, out pbind)) {
+ if (binding == pbind)
+ continue;
+ } else if (string.IsNullOrEmpty (binding))
+ continue;
- if (!string.IsNullOrEmpty (command))
- bindings.Add (command, KeyBindingManager.FixChordSeparators(binding));
+ bindings.Add (command, binding);
break;
}