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:
authorDavid Karlaš <david.karlas@xamarin.com>2017-03-09 23:52:08 +0300
committerDavid Karlaš <david.karlas@xamarin.com>2017-03-09 23:52:08 +0300
commit662040f4ce61add6fee8e05eda1063554b745fc4 (patch)
treed82afb7a291dd3f77cecf3c9c7ab97ecc8cb1193 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar
parent5b3368f4499607dd99889d83047b045d9adc053a (diff)
parent68b7358e10140cf482cc773fd18c979d3fc26f74 (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.cs25
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;