mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-23 20:47:25 -08:00
refactor: rewrite Preference.FindOrAddNodeByRepositoryPath
* prevent moving node while opening repository directly from commandline * supports to set parent node while dropping folder to initialize repository
This commit is contained in:
parent
8d726656dc
commit
faf2c39056
6 changed files with 15 additions and 12 deletions
|
@ -113,7 +113,7 @@ namespace SourceGit.ViewModels
|
|||
CallUIThread(() =>
|
||||
{
|
||||
var repo = Preference.AddRepository(path, Path.Combine(path, ".git"));
|
||||
var node = Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, null);
|
||||
var node = Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, null, true);
|
||||
_launcher.OpenRepositoryInTab(node, _page);
|
||||
});
|
||||
|
||||
|
|
|
@ -11,9 +11,11 @@ namespace SourceGit.ViewModels
|
|||
set => SetProperty(ref _targetPath, value);
|
||||
}
|
||||
|
||||
public Init(string path)
|
||||
public Init(string path, RepositoryNode parent)
|
||||
{
|
||||
TargetPath = path;
|
||||
_targetPath = path;
|
||||
_parentNode = parent;
|
||||
|
||||
View = new Views.Init() { DataContext = this };
|
||||
}
|
||||
|
||||
|
@ -31,13 +33,14 @@ namespace SourceGit.ViewModels
|
|||
CallUIThread(() =>
|
||||
{
|
||||
var repo = Preference.AddRepository(_targetPath, gitDir);
|
||||
Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, null);
|
||||
Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, _parentNode, true);
|
||||
});
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private string _targetPath;
|
||||
private string _targetPath = string.Empty;
|
||||
private RepositoryNode _parentNode = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ namespace SourceGit.ViewModels
|
|||
|
||||
var gitDir = new Commands.QueryGitDir(root).Result();
|
||||
var repo = Preference.AddRepository(root, gitDir);
|
||||
var node = Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, null);
|
||||
var node = Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, null, false);
|
||||
OpenRepositoryInTab(node, null);
|
||||
}
|
||||
else if (Preference.Instance.RestoreTabs)
|
||||
|
|
|
@ -363,7 +363,7 @@ namespace SourceGit.ViewModels
|
|||
return FindNodeRecursive(id, _instance.RepositoryNodes);
|
||||
}
|
||||
|
||||
public static RepositoryNode FindOrAddNodeByRepositoryPath(string repo, RepositoryNode parent)
|
||||
public static RepositoryNode FindOrAddNodeByRepositoryPath(string repo, RepositoryNode parent, bool shouldMoveNode)
|
||||
{
|
||||
var node = FindNodeRecursive(repo, _instance.RepositoryNodes);
|
||||
if (node == null)
|
||||
|
@ -378,7 +378,7 @@ namespace SourceGit.ViewModels
|
|||
|
||||
AddNode(node, parent);
|
||||
}
|
||||
else
|
||||
else if (shouldMoveNode)
|
||||
{
|
||||
MoveNode(node, parent);
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace SourceGit.ViewModels
|
|||
}
|
||||
}
|
||||
|
||||
public void InitRepository(string path)
|
||||
public void InitRepository(string path, RepositoryNode parent)
|
||||
{
|
||||
if (!Preference.Instance.IsGitConfigured)
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ namespace SourceGit.ViewModels
|
|||
|
||||
if (PopupHost.CanCreatePopup())
|
||||
{
|
||||
PopupHost.ShowPopup(new Init(path));
|
||||
PopupHost.ShowPopup(new Init(path, parent));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -248,7 +248,7 @@ namespace SourceGit.Views
|
|||
{
|
||||
Dispatcher.UIThread.Invoke(() =>
|
||||
{
|
||||
(DataContext as ViewModels.Welcome).InitRepository(path);
|
||||
(DataContext as ViewModels.Welcome).InitRepository(path, parent);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -257,7 +257,7 @@ namespace SourceGit.Views
|
|||
Dispatcher.UIThread.Invoke(() =>
|
||||
{
|
||||
var repo = ViewModels.Preference.AddRepository(root, gitDir);
|
||||
var node = ViewModels.Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, parent);
|
||||
var node = ViewModels.Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, parent, true);
|
||||
launcher.OpenRepositoryInTab(node, page);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue