diff options
Diffstat (limited to 'main')
10 files changed, 39 insertions, 20 deletions
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.UserGitConfigDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.UserGitConfigDialog.cs index 9b0e3d85e3..6bbc421a54 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.UserGitConfigDialog.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.UserGitConfigDialog.cs @@ -143,7 +143,6 @@ namespace MonoDevelop.VersionControl.Git }
this.DefaultWidth = 332;
this.DefaultHeight = 184;
- this.Show ();
this.usernameEntry.Changed += new global::System.EventHandler (this.OnChanged);
this.emailEntry.Changed += new global::System.EventHandler (this.OnChanged);
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs index 55278dbfa6..9ed5f6cec4 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs @@ -95,7 +95,7 @@ namespace MonoDevelop.VersionControl.Git string user; string email; - repo.GetUserInfo (out user, out email); + repo.GetUserInfo (out user, out email, CommitDialog); string val = sol.UserProperties.GetValue<string> ("GitUserInfo"); if (val == "UsingMD") { diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs index cf2b6d1a44..f2e4f1f90c 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs @@ -903,7 +903,7 @@ namespace MonoDevelop.VersionControl.Git } } - protected override VersionControlOperation GetSupportedOperations (VersionInfo vinfo) + protected internal override VersionControlOperation GetSupportedOperations (VersionInfo vinfo) { VersionControlOperation ops = base.GetSupportedOperations (vinfo); if (GetCurrentRemote () == null) @@ -1353,7 +1353,7 @@ namespace MonoDevelop.VersionControl.Git return name == null && email == null; } - public void GetUserInfo (out string name, out string email) + public void GetUserInfo (out string name, out string email, Components.Window parent = null) { try { string lname = null, lemail = null; @@ -1369,7 +1369,7 @@ namespace MonoDevelop.VersionControl.Git Runtime.RunInMainThread (() => { var dlg = new UserGitConfigDialog (); try { - if ((Gtk.ResponseType)MessageService.RunCustomDialog (dlg) == Gtk.ResponseType.Ok) { + if ((Gtk.ResponseType)MessageService.RunCustomDialog (dlg, parent) == Gtk.ResponseType.Ok) { dlgName = dlg.UserText; dlgEmail = dlg.EmailText; SetUserInfo (dlgName, dlgEmail); diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs index c639251548..bc56415478 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs @@ -89,6 +89,7 @@ namespace MonoDevelop.VersionControl.Dialogs continue; } if (ext.Initialize (changeSet)) { + ext.CommitDialog = this; var newTitle = ext.FormatDialogTitle (changeSet, Title); if (newTitle != null) Title = newTitle; diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj index edc0664983..fa094de8ec 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj @@ -525,6 +525,7 @@ </ItemGroup> <ItemGroup> <InternalsVisibleTo Include="MonoDevelop.VersionControl.Git.Tests" /> + <InternalsVisibleTo Include="MonoDevelop.VersionControl.Git" /> <InternalsVisibleTo Include="MonoDevelop.MacDev" /> </ItemGroup> <ItemGroup> diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/BlameCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/BlameCommand.cs index d3757a0e81..ca73d7011c 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/BlameCommand.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/BlameCommand.cs @@ -26,6 +26,7 @@ using System.Linq; using System.Threading.Tasks; +using Microsoft.VisualStudio.Text.Editor; using Mono.Addins; using MonoDevelop.Ide; using MonoDevelop.Ide.Gui; @@ -52,7 +53,11 @@ namespace MonoDevelop.VersionControl foreach (var item in items) { var document = await IdeApp.Workbench.OpenDocument (item.Path, item.ContainerProject, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer); - document?.GetContent<VersionControlDocumentController> ()?.ShowBlameView (); + if (document == null) + continue; + document.RunWhenContentAdded<ITextView> (tv => { + document.GetContent<VersionControlDocumentController> ()?.ShowBlameView (); + }); } return true; diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs index 59f9fe1025..75a3d1fd34 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs @@ -6,8 +6,9 @@ namespace MonoDevelop.VersionControl /// <summary> /// Base class for commit dialog extensions. /// </summary> - public class CommitDialogExtension: Gtk.EventBox + public class CommitDialogExtension : Gtk.EventBox { + internal VersionControl.Dialogs.CommitDialog CommitDialog { get; set; } /// <summary> /// Initialize the extension. /// </summary> diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/DiffCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/DiffCommand.cs index 408ad6a88f..33aeba3529 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/DiffCommand.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/DiffCommand.cs @@ -26,6 +26,7 @@ using System.Linq; using System.Threading.Tasks; +using Microsoft.VisualStudio.Text.Editor; using Mono.Addins; using MonoDevelop.Ide; using MonoDevelop.Ide.Gui; @@ -51,7 +52,11 @@ namespace MonoDevelop.VersionControl foreach (var item in items) { var document = await IdeApp.Workbench.OpenDocument (item.Path, item.ContainerProject, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer); - document?.GetContent<VersionControlDocumentController> ()?.ShowDiffView (); + if (document == null) + continue; + document.RunWhenContentAdded<ITextView> (tv => { + document.GetContent<VersionControlDocumentController> ()?.ShowDiffView (); + }); } return true; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageService.cs index dd003cab69..7d59ecb6e6 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageService.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageService.cs @@ -110,23 +110,26 @@ namespace MonoDevelop.Ide.WelcomePage // Try to get a dialog version of the "welcome screen" first if (!await ShowWelcomeWindow (options)) { - ShowWelcomePage (true); + await Runtime.RunInMainThread (() => ShowWelcomePage (true)); } } public static async void HideWelcomePageOrWindow () { - if (WelcomeWindowProvider != null) { - await WelcomeWindowProvider.HideWindow (); - WelcomeWindowHidden?.Invoke (WelcomeWindow, EventArgs.Empty); - } else { - HideWelcomePage (true); - } - visible = false; + await Runtime.RunInMainThread (async () => { + if (WelcomeWindowProvider != null) { + await WelcomeWindowProvider.HideWindow (); + visible = false; + WelcomeWindowHidden?.Invoke (WelcomeWindow, EventArgs.Empty); + } else { + HideWelcomePage (true); + } + }); } public static void ShowWelcomePage (bool animate = false) { + Runtime.AssertMainThread (); if (!visible) { visible = true; if (welcomePage == null) { @@ -150,6 +153,7 @@ namespace MonoDevelop.Ide.WelcomePage public static void HideWelcomePage (bool animate = false) { + Runtime.AssertMainThread (); if (visible) { visible = false; ((DefaultWorkbench)IdeApp.Workbench.RootWindow).BottomBar.Show (); @@ -164,10 +168,11 @@ namespace MonoDevelop.Ide.WelcomePage return false; } - await WelcomeWindowProvider.ShowWindow (options); - visible = true; - - WelcomeWindowShown?.Invoke (WelcomeWindow, EventArgs.Empty); + await Runtime.RunInMainThread (async () => { + await WelcomeWindowProvider.ShowWindow (options); + visible = true; + WelcomeWindowShown?.Invoke (WelcomeWindow, EventArgs.Empty); + }); return true; } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs index dd6b82f1fc..0fea13b651 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs @@ -395,6 +395,8 @@ namespace MonoDevelop.Ide NSWindow nativeParent = null; try { nativeParent = parent; + if (nativeParent.Handle == nsdialog.Handle) + throw new InvalidOperationException ("Can't add dialog as child to itself."); nativeParent.AddChildWindow (nsdialog, NSWindowOrderingMode.Above); } catch (Exception ex) { LoggingService.LogInternalError ("Failed to get the native parent window", ex); |