diff options
author | David Karlaš <david.karlas@xamarin.com> | 2017-03-09 23:52:08 +0300 |
---|---|---|
committer | David Karlaš <david.karlas@xamarin.com> | 2017-03-09 23:52:08 +0300 |
commit | 662040f4ce61add6fee8e05eda1063554b745fc4 (patch) | |
tree | d82afb7a291dd3f77cecf3c9c7ab97ecc8cb1193 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar | |
parent | 5b3368f4499607dd99889d83047b045d9adc053a (diff) | |
parent | 68b7358e10140cf482cc773fd18c979d3fc26f74 (diff) |
Merge vNext into roslyn-ivt
# Conflicts:
# version-checks
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs index 5b1bc7cce5..a25b928146 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs @@ -837,6 +837,7 @@ namespace MonoDevelop.Components.MainToolbar class ButtonBarButton : IButtonBarButton { + CommandInfo lastCmdInfo; MainToolbarController Controller { get; set; } string CommandId { get; set; } @@ -860,7 +861,7 @@ namespace MonoDevelop.Components.MainToolbar public void NotifyPushed () { - IdeApp.CommandService.DispatchCommand (CommandId, null, Controller.lastCommandTarget, CommandSource.MainToolbar); + IdeApp.CommandService.DispatchCommand (CommandId, null, Controller.lastCommandTarget, CommandSource.MainToolbar, lastCmdInfo); } public void Update () @@ -868,10 +869,21 @@ namespace MonoDevelop.Components.MainToolbar if (IsSeparator) return; - var ci = IdeApp.CommandService.GetCommandInfo (CommandId, new CommandTargetRoute (Controller.lastCommandTarget)); - if (ci == null) - return; + if (lastCmdInfo != null) { + lastCmdInfo.CancelAsyncUpdate (); + lastCmdInfo.Changed -= LastCmdInfoChanged; + } + + lastCmdInfo = IdeApp.CommandService.GetCommandInfo (CommandId, new CommandTargetRoute (Controller.lastCommandTarget)); + + if (lastCmdInfo != null) { + lastCmdInfo.Changed += LastCmdInfoChanged; + Update (lastCmdInfo); + } + } + void Update (CommandInfo ci) + { if (ci.Icon != Image) { Image = ci.Icon; if (ImageChanged != null) @@ -894,6 +906,11 @@ namespace MonoDevelop.Components.MainToolbar } } + void LastCmdInfoChanged (object sender, EventArgs e) + { + Update (lastCmdInfo); + } + public event EventHandler EnabledChanged; public event EventHandler ImageChanged; public event EventHandler VisibleChanged; |