diff --git a/SourceGit/Git/Branch.cs b/SourceGit/Git/Branch.cs
index 05375b95..5410c9b6 100644
--- a/SourceGit/Git/Branch.cs
+++ b/SourceGit/Git/Branch.cs
@@ -26,27 +26,27 @@ namespace SourceGit.Git {
///
/// Branch name
///
- public string Name { get; set; }
+ public string Name { get; set; } = "";
///
/// Full name.
///
- public string FullName { get; set; }
+ public string FullName { get; set; } = "";
///
/// Head ref
///
- public string Head { get; set; }
+ public string Head { get; set; } = "";
///
/// Subject for head ref.
///
- public string HeadSubject { get; set; }
+ public string HeadSubject { get; set; } = "";
///
/// Is local branch
///
- public bool IsLocal { get; set; }
+ public bool IsLocal { get; set; } = false;
///
/// Branch type.
@@ -56,7 +56,7 @@ namespace SourceGit.Git {
///
/// Remote name. Only used for remote branch
///
- public string Remote { get; set; }
+ public string Remote { get; set; } = "";
///
/// Upstream. Only used for local branches.
diff --git a/SourceGit/UI/Dashboard.xaml b/SourceGit/UI/Dashboard.xaml
index b09f1b5e..478e14fb 100644
--- a/SourceGit/UI/Dashboard.xaml
+++ b/SourceGit/UI/Dashboard.xaml
@@ -445,12 +445,17 @@
+
+
+
{
+ var errs = repo.RunCommand("submodule update", PopupManager.UpdateStatus, true);
+ if (errs != null) App.RaiseError(errs);
+ });
+ }
+
private void SubmoduleLostFocus(object sender, RoutedEventArgs e) {
(sender as DataGrid).UnselectAll();
}
diff --git a/SourceGit/UI/Waiting.xaml b/SourceGit/UI/Waiting.xaml
new file mode 100644
index 00000000..bf98f70a
--- /dev/null
+++ b/SourceGit/UI/Waiting.xaml
@@ -0,0 +1,8 @@
+
+
diff --git a/SourceGit/UI/Waiting.xaml.cs b/SourceGit/UI/Waiting.xaml.cs
new file mode 100644
index 00000000..3c15c82e
--- /dev/null
+++ b/SourceGit/UI/Waiting.xaml.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Threading.Tasks;
+using System.Windows.Controls;
+
+namespace SourceGit.UI {
+
+ ///
+ /// General waiting dialog.
+ ///
+ public partial class Waiting : UserControl {
+
+ ///
+ /// Constructor.
+ ///
+ public Waiting() {
+ InitializeComponent();
+ }
+
+ ///
+ /// Show this dialog.
+ ///
+ ///
+ public static void Show(Action job) {
+ var dialog = new Waiting();
+ PopupManager.Show(dialog);
+ PopupManager.Lock();
+ Task.Run(() => {
+ job.Invoke();
+ dialog.Dispatcher.Invoke(() => {
+ PopupManager.Close(true);
+ });
+ });
+ }
+ }
+}