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-03-24 20:15:44 +0300
committerVsevolod Kukol <sevoku@microsoft.com>2017-03-24 21:30:01 +0300
commit9c6565cdbeb792b791748b42645ae1f47e467c73 (patch)
tree9bd08dd99cee04d743a6c13f96cf42dbdae6f56a /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar
parent7462d5bb8f640001bf0b9f8574ed7502b6039405 (diff)
parent4c5318b71fdaff36827e7ab0c9c33900149d5b2a (diff)
Merge remote-tracking branch 'origin/master' into native-popups
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs56
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs5
2 files changed, 39 insertions, 22 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 456d8525f5..5507692708 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
@@ -425,8 +425,8 @@ namespace MonoDevelop.Components.MainToolbar
foreach (var item in confs) {
string config = item.OriginalId;
if (config == name) {
- IdeApp.Workspace.ActiveConfigurationId = config;
ToolbarView.ActiveConfiguration = item;
+ UpdateBuildConfiguration ();
selected = true;
break;
}
@@ -434,7 +434,7 @@ namespace MonoDevelop.Components.MainToolbar
if (!selected) {
ToolbarView.ActiveConfiguration = ToolbarView.ConfigurationModel.First ();
- IdeApp.Workspace.ActiveConfigurationId = defaultConfig;
+ UpdateBuildConfiguration ();
}
}
} finally {
@@ -547,16 +547,16 @@ namespace MonoDevelop.Components.MainToolbar
{
if (currentSolution != null) {
currentSolution.StartupConfigurationChanged -= HandleStartupItemChanged;
- currentSolution.Saved -= HandleUpdateCombosWidthDelay;
- currentSolution.EntrySaved -= HandleUpdateCombosWidthDelay;
+ currentSolution.Saved -= HandleSolutionSaved;
+ currentSolution.EntrySaved -= HandleSolutionEntrySaved;
}
currentSolution = e.Solution;
if (currentSolution != null) {
currentSolution.StartupConfigurationChanged += HandleStartupItemChanged;
- currentSolution.Saved += HandleUpdateCombosWidthDelay;
- currentSolution.EntrySaved += HandleUpdateCombosWidthDelay;
+ currentSolution.Saved += HandleSolutionSaved;
+ currentSolution.EntrySaved += HandleSolutionEntrySaved;
}
TrackStartupProject ();
@@ -589,17 +589,16 @@ namespace MonoDevelop.Components.MainToolbar
}
}
- bool updatingCombos;
- void HandleUpdateCombosWidthDelay (object sender, EventArgs e)
+ void HandleSolutionSaved (object sender, EventArgs e)
{
- if (!updatingCombos) {
- updatingCombos = true;
- GLib.Timeout.Add (100, () => {
- updatingCombos = false;
- UpdateCombos ();
- return false;
- });
- }
+ UpdateCombos ();
+ }
+
+ void HandleSolutionEntrySaved (object sender, SolutionItemSavedEventArgs e)
+ {
+ // Skip the per-project update when a solution is being saved. The solution Saved callback will do the final update.
+ if (!e.SavingSolution)
+ HandleSolutionSaved (sender, e);
}
void HandleStartupItemChanged (object sender, EventArgs e)
@@ -832,6 +831,7 @@ namespace MonoDevelop.Components.MainToolbar
class ButtonBarButton : IButtonBarButton
{
+ CommandInfo lastCmdInfo;
MainToolbarController Controller { get; set; }
string CommandId { get; set; }
@@ -855,7 +855,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 ()
@@ -863,10 +863,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)
@@ -889,6 +900,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;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs
index 0cb55e0c0d..1e5ea75dcf 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs
@@ -34,6 +34,7 @@ using MonoDevelop.Ide.Gui;
using MonoDevelop.Core.Text;
using MonoDevelop.Ide.TypeSystem;
using MonoDevelop.Ide.CodeCompletion;
+using Roslyn.Utilities;
using MonoDevelop.Ide;
namespace MonoDevelop.Components.MainToolbar
@@ -48,7 +49,7 @@ namespace MonoDevelop.Components.MainToolbar
{
if (IdeApp.ProjectOperations.CurrentSelectedSolution != null)
searchResultCallback.ReportResult (new SearchInSolutionSearchResult (pattern));
- return SpecializedTasks.EmptyTask;
+ return Task.CompletedTask;
}
//public override Task<ISearchDataSource> GetResults (SearchPopupSearchPattern searchPattern, int resultsCount, CancellationToken token)
@@ -99,4 +100,4 @@ namespace MonoDevelop.Components.MainToolbar
}
}
}
-} \ No newline at end of file
+}