mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-22 10:55:00 +00:00
Merge remote-tracking branch 'official-origin/develop' into develop
This commit is contained in:
commit
000821aedb
19 changed files with 93 additions and 58 deletions
|
@ -195,23 +195,7 @@ This document shows the translation status of each locale file in the repository
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### 
|
### 
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Missing keys in ru_RU.axaml</summary>
|
|
||||||
|
|
||||||
- Text.Configure.Git.PreferredMergeMode
|
|
||||||
- Text.ConfirmEmptyCommit.Continue
|
|
||||||
- Text.ConfirmEmptyCommit.NoLocalChanges
|
|
||||||
- Text.ConfirmEmptyCommit.StageAllThenCommit
|
|
||||||
- Text.ConfirmEmptyCommit.WithLocalChanges
|
|
||||||
- Text.WorkingCopy.ConfirmCommitWithFilter
|
|
||||||
- Text.WorkingCopy.Conflicts.OpenExternalMergeTool
|
|
||||||
- Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts
|
|
||||||
- Text.WorkingCopy.Conflicts.UseMine
|
|
||||||
- Text.WorkingCopy.Conflicts.UseTheirs
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### 
|
### 
|
||||||
|
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
2025.12
|
2025.13
|
|
@ -40,7 +40,7 @@ namespace SourceGit.Commands
|
||||||
foreach (var b in branches)
|
foreach (var b in branches)
|
||||||
{
|
{
|
||||||
if (b.IsLocal && !string.IsNullOrEmpty(b.Upstream))
|
if (b.IsLocal && !string.IsNullOrEmpty(b.Upstream))
|
||||||
b.IsUpsteamGone = !remoteBranches.Contains(b.Upstream);
|
b.IsUpstreamGone = !remoteBranches.Contains(b.Upstream);
|
||||||
}
|
}
|
||||||
|
|
||||||
return branches;
|
return branches;
|
||||||
|
@ -86,7 +86,7 @@ namespace SourceGit.Commands
|
||||||
branch.Head = parts[1];
|
branch.Head = parts[1];
|
||||||
branch.IsCurrent = parts[2] == "*";
|
branch.IsCurrent = parts[2] == "*";
|
||||||
branch.Upstream = parts[3];
|
branch.Upstream = parts[3];
|
||||||
branch.IsUpsteamGone = false;
|
branch.IsUpstreamGone = false;
|
||||||
|
|
||||||
if (branch.IsLocal && !string.IsNullOrEmpty(parts[4]) && !parts[4].Equals("=", StringComparison.Ordinal))
|
if (branch.IsLocal && !string.IsNullOrEmpty(parts[4]) && !parts[4].Equals("=", StringComparison.Ordinal))
|
||||||
branch.TrackStatus = new QueryTrackStatus(WorkingDirectory, branch.Name, branch.Upstream).Result();
|
branch.TrackStatus = new QueryTrackStatus(WorkingDirectory, branch.Name, branch.Upstream).Result();
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace SourceGit.Models
|
||||||
public string Upstream { get; set; }
|
public string Upstream { get; set; }
|
||||||
public BranchTrackStatus TrackStatus { get; set; }
|
public BranchTrackStatus TrackStatus { get; set; }
|
||||||
public string Remote { get; set; }
|
public string Remote { get; set; }
|
||||||
public bool IsUpsteamGone { get; set; }
|
public bool IsUpstreamGone { get; set; }
|
||||||
|
|
||||||
public string FriendlyName => IsLocal ? Name : $"{Remote}/{Name}";
|
public string FriendlyName => IsLocal ? Name : $"{Remote}/{Name}";
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,6 +157,7 @@
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">Автозагрузка изменений</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">Автозагрузка изменений</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">Минут(а/ы)</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">Минут(а/ы)</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">Внешний репозиторий по умолчанию</x:String>
|
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">Внешний репозиторий по умолчанию</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Git.PreferredMergeMode" xml:space="preserve">Предпочтительный режим слияния</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ОТСЛЕЖИВАНИЕ ПРОБЛЕМ</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ОТСЛЕЖИВАНИЕ ПРОБЛЕМ</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">Добавить пример правила Azure DevOps</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">Добавить пример правила Azure DevOps</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">Добавить пример правила для тем в Gitea</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">Добавить пример правила для тем в Gitea</x:String>
|
||||||
|
@ -181,6 +182,10 @@
|
||||||
<x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">Цвет</x:String>
|
<x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">Цвет</x:String>
|
||||||
<x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">Имя</x:String>
|
<x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">Имя</x:String>
|
||||||
<x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">Восстанавливать вкладки при запуске</x:String>
|
<x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">Восстанавливать вкладки при запуске</x:String>
|
||||||
|
<x:String x:Key="Text.ConfirmEmptyCommit.Continue" xml:space="preserve">ПРОДОЛЖИТЬ</x:String>
|
||||||
|
<x:String x:Key="Text.ConfirmEmptyCommit.NoLocalChanges" xml:space="preserve">Обнаружена пустая ревизия! Вы хотите продолжить (--allow-empty)?</x:String>
|
||||||
|
<x:String x:Key="Text.ConfirmEmptyCommit.StageAllThenCommit" xml:space="preserve">Подготовить все и зафиксировать ревизию</x:String>
|
||||||
|
<x:String x:Key="Text.ConfirmEmptyCommit.WithLocalChanges" xml:space="preserve">Обнаружена пустая ревизия! Вы хотите продолжить (--allow-empty) или отложить все, затем зафиксировать ревизию?</x:String>
|
||||||
<x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Общепринятый помощник по ревизии</x:String>
|
<x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Общепринятый помощник по ревизии</x:String>
|
||||||
<x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Кардинальные изменения:</x:String>
|
<x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Кардинальные изменения:</x:String>
|
||||||
<x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Закрытая тема:</x:String>
|
<x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Закрытая тема:</x:String>
|
||||||
|
@ -725,8 +730,13 @@
|
||||||
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">Запустить событие щелчка</x:String>
|
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">Запустить событие щелчка</x:String>
|
||||||
<x:String x:Key="Text.WorkingCopy.CommitToEdit" xml:space="preserve">Зафиксировать (Редактировать)</x:String>
|
<x:String x:Key="Text.WorkingCopy.CommitToEdit" xml:space="preserve">Зафиксировать (Редактировать)</x:String>
|
||||||
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">Подготовить все изменения и зафиксировать</x:String>
|
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">Подготовить все изменения и зафиксировать</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter">Вы подготовили {0} файл(ов), но отображается только {1} файл(ов) ({2} файл(ов) отфильтровано). Вы хотите продолжить?</x:String>
|
||||||
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">ОБНАРУЖЕНЫ КОНФЛИКТЫ</x:String>
|
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">ОБНАРУЖЕНЫ КОНФЛИКТЫ</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeTool" xml:space="preserve">ОТКРЫТЬ ВНЕШНИЙ ИНСТРУМЕНТ СЛИЯНИЯ</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts" xml:space="preserve">ОТКРЫТЬ ВСЕ КОНФЛИКТЫ ВО ВНЕШНЕМ ИНСТРУМЕНТЕ СЛИЯНИЯ</x:String>
|
||||||
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">КОНФЛИКТЫ ФАЙЛОВ РАЗРЕШЕНЫ</x:String>
|
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">КОНФЛИКТЫ ФАЙЛОВ РАЗРЕШЕНЫ</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts.UseMine" xml:space="preserve">ИСПОЛЬЗОВАТЬ МОИ</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts.UseTheirs" xml:space="preserve">ИСПОЛЬЗОВАТЬ ИХ</x:String>
|
||||||
<x:String x:Key="Text.WorkingCopy.IncludeUntracked" xml:space="preserve">ВКЛЮЧИТЬ НЕОТСЛЕЖИВАЕМЫЕ ФАЙЛЫ</x:String>
|
<x:String x:Key="Text.WorkingCopy.IncludeUntracked" xml:space="preserve">ВКЛЮЧИТЬ НЕОТСЛЕЖИВАЕМЫЕ ФАЙЛЫ</x:String>
|
||||||
<x:String x:Key="Text.WorkingCopy.NoCommitHistories" xml:space="preserve">НЕТ ПОСЛЕДНИХ ВХОДНЫХ СООБЩЕНИЙ</x:String>
|
<x:String x:Key="Text.WorkingCopy.NoCommitHistories" xml:space="preserve">НЕТ ПОСЛЕДНИХ ВХОДНЫХ СООБЩЕНИЙ</x:String>
|
||||||
<x:String x:Key="Text.WorkingCopy.NoCommitTemplates" xml:space="preserve">НЕТ ШАБЛОНОВ РЕВИЗИИ</x:String>
|
<x:String x:Key="Text.WorkingCopy.NoCommitTemplates" xml:space="preserve">НЕТ ШАБЛОНОВ РЕВИЗИИ</x:String>
|
||||||
|
|
|
@ -41,11 +41,11 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Avalonia" Version="11.2.6" />
|
<PackageReference Include="Avalonia" Version="11.2.7" />
|
||||||
<PackageReference Include="Avalonia.Desktop" Version="11.2.6" />
|
<PackageReference Include="Avalonia.Desktop" Version="11.2.7" />
|
||||||
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.2.6" />
|
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.2.7" />
|
||||||
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.2.6" />
|
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.2.7" />
|
||||||
<PackageReference Include="Avalonia.Diagnostics" Version="11.2.6" Condition="'$(Configuration)' == 'Debug'" />
|
<PackageReference Include="Avalonia.Diagnostics" Version="11.2.7" Condition="'$(Configuration)' == 'Debug'" />
|
||||||
<PackageReference Include="Avalonia.AvaloniaEdit" Version="11.2.0" />
|
<PackageReference Include="Avalonia.AvaloniaEdit" Version="11.2.0" />
|
||||||
<PackageReference Include="AvaloniaEdit.TextMate" Version="11.2.0" />
|
<PackageReference Include="AvaloniaEdit.TextMate" Version="11.2.0" />
|
||||||
<PackageReference Include="Azure.AI.OpenAI" Version="2.2.0-beta.4" />
|
<PackageReference Include="Azure.AI.OpenAI" Version="2.2.0-beta.4" />
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
public bool ShowUpstreamGoneTip
|
public bool ShowUpstreamGoneTip
|
||||||
{
|
{
|
||||||
get => Backend is Models.Branch { IsUpsteamGone: true };
|
get => Backend is Models.Branch { IsUpstreamGone: true };
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Tooltip
|
public string Tooltip
|
||||||
|
|
|
@ -32,7 +32,11 @@ namespace SourceGit.ViewModels
|
||||||
return Task.Run(() =>
|
return Task.Run(() =>
|
||||||
{
|
{
|
||||||
new Commands.UpdateRef(_repo.FullPath, Local.FullName, To.FullName, SetProgressDescription).Exec();
|
new Commands.UpdateRef(_repo.FullPath, Local.FullName, To.FullName, SetProgressDescription).Exec();
|
||||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
CallUIThread(() =>
|
||||||
|
{
|
||||||
|
_repo.NavigateToCommit(To.Head);
|
||||||
|
_repo.SetWatcherEnabled(true);
|
||||||
|
});
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,14 +34,14 @@ namespace SourceGit.ViewModels
|
||||||
set => _repo.Settings.EnableForceOnFetch = value;
|
set => _repo.Settings.EnableForceOnFetch = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Fetch(Repository repo, Models.Remote preferedRemote = null)
|
public Fetch(Repository repo, Models.Remote preferredRemote = null)
|
||||||
{
|
{
|
||||||
_repo = repo;
|
_repo = repo;
|
||||||
_fetchAllRemotes = preferedRemote == null;
|
_fetchAllRemotes = preferredRemote == null;
|
||||||
|
|
||||||
if (preferedRemote != null)
|
if (preferredRemote != null)
|
||||||
{
|
{
|
||||||
SelectedRemote = preferedRemote;
|
SelectedRemote = preferredRemote;
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(_repo.Settings.DefaultRemote))
|
else if (!string.IsNullOrEmpty(_repo.Settings.DefaultRemote))
|
||||||
{
|
{
|
||||||
|
@ -83,6 +83,7 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
CallUIThread(() =>
|
CallUIThread(() =>
|
||||||
{
|
{
|
||||||
|
_repo.NavigateToBranchDelayed(_repo.CurrentBranch?.Upstream);
|
||||||
_repo.MarkFetched();
|
_repo.MarkFetched();
|
||||||
_repo.SetWatcherEnabled(true);
|
_repo.SetWatcherEnabled(true);
|
||||||
});
|
});
|
||||||
|
|
|
@ -32,7 +32,11 @@ namespace SourceGit.ViewModels
|
||||||
return Task.Run(() =>
|
return Task.Run(() =>
|
||||||
{
|
{
|
||||||
new Commands.Fetch(_repo.FullPath, Local, Upstream, SetProgressDescription).Exec();
|
new Commands.Fetch(_repo.FullPath, Local, Upstream, SetProgressDescription).Exec();
|
||||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
CallUIThread(() =>
|
||||||
|
{
|
||||||
|
_repo.NavigateToBranchDelayed(Upstream.FullName);
|
||||||
|
_repo.SetWatcherEnabled(true);
|
||||||
|
});
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,11 @@ namespace SourceGit.ViewModels
|
||||||
return Task.Run(() =>
|
return Task.Run(() =>
|
||||||
{
|
{
|
||||||
new Commands.Merge(_repo.FullPath, _sourceName, Mode.Arg, SetProgressDescription).Exec();
|
new Commands.Merge(_repo.FullPath, _sourceName, Mode.Arg, SetProgressDescription).Exec();
|
||||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
CallUIThread(() =>
|
||||||
|
{
|
||||||
|
_repo.NavigateToBranchDelayed(_repo.CurrentBranch?.FullName);
|
||||||
|
_repo.SetWatcherEnabled(true);
|
||||||
|
});
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -192,7 +192,11 @@ namespace SourceGit.ViewModels
|
||||||
rs = new Commands.Stash(_repo.FullPath).Pop("stash@{0}");
|
rs = new Commands.Stash(_repo.FullPath).Pop("stash@{0}");
|
||||||
}
|
}
|
||||||
|
|
||||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
CallUIThread(() =>
|
||||||
|
{
|
||||||
|
_repo.NavigateToBranchDelayed(_repo.CurrentBranch?.FullName);
|
||||||
|
_repo.SetWatcherEnabled(true);
|
||||||
|
});
|
||||||
return rs;
|
return rs;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -773,6 +773,11 @@ namespace SourceGit.ViewModels
|
||||||
NavigateToCommit(_currentBranch.Head);
|
NavigateToCommit(_currentBranch.Head);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void NavigateToBranchDelayed(string branch)
|
||||||
|
{
|
||||||
|
_navigateToBranchDelayed = branch;
|
||||||
|
}
|
||||||
|
|
||||||
public void ClearHistoriesFilter()
|
public void ClearHistoriesFilter()
|
||||||
{
|
{
|
||||||
_settings.HistoriesFilters.Clear();
|
_settings.HistoriesFilters.Clear();
|
||||||
|
@ -991,7 +996,16 @@ namespace SourceGit.ViewModels
|
||||||
_histories.IsLoading = false;
|
_histories.IsLoading = false;
|
||||||
_histories.Commits = commits;
|
_histories.Commits = commits;
|
||||||
_histories.Graph = graph;
|
_histories.Graph = graph;
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(_navigateToBranchDelayed))
|
||||||
|
{
|
||||||
|
var branch = _branches.Find(x => x.FullName == _navigateToBranchDelayed);
|
||||||
|
if (branch != null)
|
||||||
|
NavigateToCommit(branch.Head);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_navigateToBranchDelayed = string.Empty;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2588,5 +2602,7 @@ namespace SourceGit.ViewModels
|
||||||
private bool _isAutoFetching = false;
|
private bool _isAutoFetching = false;
|
||||||
private Timer _autoFetchTimer = null;
|
private Timer _autoFetchTimer = null;
|
||||||
private DateTime _lastFetchTime = DateTime.MinValue;
|
private DateTime _lastFetchTime = DateTime.MinValue;
|
||||||
|
|
||||||
|
private string _navigateToBranchDelayed = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,14 @@
|
||||||
FontFamily="{DynamicResource Fonts.Monospace}"
|
FontFamily="{DynamicResource Fonts.Monospace}"
|
||||||
FontSize="{Binding Source={x:Static vm:Preferences.Instance}, Path=EditorFontSize}"
|
FontSize="{Binding Source={x:Static vm:Preferences.Instance}, Path=EditorFontSize}"
|
||||||
TabWidth="{Binding Source={x:Static vm:Preferences.Instance}, Path=EditorTabWidth}"
|
TabWidth="{Binding Source={x:Static vm:Preferences.Instance}, Path=EditorTabWidth}"
|
||||||
BlameData="{Binding Data}"/>
|
BlameData="{Binding Data}">
|
||||||
|
<ToolTip.IsOpen>
|
||||||
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
||||||
|
<Binding Path="$self.IsPointerOver"/>
|
||||||
|
<Binding Path="$self.(ToolTip.Tip)" Converter="{x:Static ObjectConverters.IsNotNull}"/>
|
||||||
|
</MultiBinding>
|
||||||
|
</ToolTip.IsOpen>
|
||||||
|
</v:BlameTextEditor>
|
||||||
|
|
||||||
<!-- Not supported mask (for binary files) -->
|
<!-- Not supported mask (for binary files) -->
|
||||||
<StackPanel Orientation="Vertical"
|
<StackPanel Orientation="Vertical"
|
||||||
|
|
|
@ -180,7 +180,6 @@ namespace SourceGit.Views
|
||||||
{
|
{
|
||||||
var msg = blame.GetCommitMessage(info.CommitSHA);
|
var msg = blame.GetCommitMessage(info.CommitSHA);
|
||||||
ToolTip.SetTip(this, msg);
|
ToolTip.SetTip(this, msg);
|
||||||
ToolTip.SetIsOpen(this, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -188,7 +187,7 @@ namespace SourceGit.Views
|
||||||
}
|
}
|
||||||
|
|
||||||
Cursor = Cursor.Default;
|
Cursor = Cursor.Default;
|
||||||
ToolTip.SetIsOpen(this, false);
|
ToolTip.SetTip(this, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,13 @@
|
||||||
PointerEntered="OnSHAPointerEntered"
|
PointerEntered="OnSHAPointerEntered"
|
||||||
PointerPressed="OnSHAPressed"
|
PointerPressed="OnSHAPressed"
|
||||||
ToolTip.ShowDelay="0">
|
ToolTip.ShowDelay="0">
|
||||||
|
<ToolTip.IsOpen>
|
||||||
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
||||||
|
<Binding Path="$self.IsPointerOver"/>
|
||||||
|
<Binding Path="$self.(ToolTip.Tip)" Converter="{x:Static ObjectConverters.IsNotNull}"/>
|
||||||
|
</MultiBinding>
|
||||||
|
</ToolTip.IsOpen>
|
||||||
|
|
||||||
<TextBlock.DataTemplates>
|
<TextBlock.DataTemplates>
|
||||||
<DataTemplate DataType="m:Commit">
|
<DataTemplate DataType="m:Commit">
|
||||||
<StackPanel MinWidth="400" Orientation="Vertical">
|
<StackPanel MinWidth="400" Orientation="Vertical">
|
||||||
|
@ -152,6 +159,13 @@
|
||||||
PointerEntered="OnSHAPointerEntered"
|
PointerEntered="OnSHAPointerEntered"
|
||||||
PointerPressed="OnSHAPressed"
|
PointerPressed="OnSHAPressed"
|
||||||
ToolTip.ShowDelay="0">
|
ToolTip.ShowDelay="0">
|
||||||
|
<ToolTip.IsOpen>
|
||||||
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
||||||
|
<Binding Path="$self.IsPointerOver"/>
|
||||||
|
<Binding Path="$self.(ToolTip.Tip)" Converter="{x:Static ObjectConverters.IsNotNull}"/>
|
||||||
|
</MultiBinding>
|
||||||
|
</ToolTip.IsOpen>
|
||||||
|
|
||||||
<TextBlock.DataTemplates>
|
<TextBlock.DataTemplates>
|
||||||
<DataTemplate DataType="m:Commit">
|
<DataTemplate DataType="m:Commit">
|
||||||
<StackPanel MinWidth="400" Orientation="Vertical">
|
<StackPanel MinWidth="400" Orientation="Vertical">
|
||||||
|
@ -189,6 +203,13 @@
|
||||||
FullMessage="{Binding #ThisControl.FullMessage}"
|
FullMessage="{Binding #ThisControl.FullMessage}"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
TextWrapping="Wrap">
|
TextWrapping="Wrap">
|
||||||
|
<ToolTip.IsOpen>
|
||||||
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
||||||
|
<Binding Path="$self.IsPointerOver"/>
|
||||||
|
<Binding Path="$self.(ToolTip.Tip)" Converter="{x:Static ObjectConverters.IsNotNull}"/>
|
||||||
|
</MultiBinding>
|
||||||
|
</ToolTip.IsOpen>
|
||||||
|
|
||||||
<v:CommitMessagePresenter.DataTemplates>
|
<v:CommitMessagePresenter.DataTemplates>
|
||||||
<DataTemplate DataType="m:Commit">
|
<DataTemplate DataType="m:Commit">
|
||||||
<StackPanel MinWidth="400" Orientation="Vertical">
|
<StackPanel MinWidth="400" Orientation="Vertical">
|
||||||
|
|
|
@ -133,12 +133,7 @@ namespace SourceGit.Views
|
||||||
Dispatcher.UIThread.Invoke(() =>
|
Dispatcher.UIThread.Invoke(() =>
|
||||||
{
|
{
|
||||||
if (ctl.IsEffectivelyVisible && ctl.DataContext is string newSHA && newSHA == sha)
|
if (ctl.IsEffectivelyVisible && ctl.DataContext is string newSHA && newSHA == sha)
|
||||||
{
|
|
||||||
ToolTip.SetTip(ctl, c);
|
ToolTip.SetTip(ctl, c);
|
||||||
|
|
||||||
if (ctl.IsPointerOver)
|
|
||||||
ToolTip.SetIsOpen(ctl, true);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,14 +107,9 @@ namespace SourceGit.Views
|
||||||
|
|
||||||
_lastHover = link;
|
_lastHover = link;
|
||||||
if (!link.IsCommitSHA)
|
if (!link.IsCommitSHA)
|
||||||
{
|
|
||||||
ToolTip.SetTip(this, link.Link);
|
ToolTip.SetTip(this, link.Link);
|
||||||
ToolTip.SetIsOpen(this, true);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
ProcessHoverCommitLink(link);
|
ProcessHoverCommitLink(link);
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -264,12 +259,7 @@ namespace SourceGit.Views
|
||||||
// If we have already queried this SHA, just use it.
|
// If we have already queried this SHA, just use it.
|
||||||
if (_inlineCommits.TryGetValue(sha, out var exist))
|
if (_inlineCommits.TryGetValue(sha, out var exist))
|
||||||
{
|
{
|
||||||
if (exist != null)
|
ToolTip.SetTip(this, exist);
|
||||||
{
|
|
||||||
ToolTip.SetTip(this, exist);
|
|
||||||
ToolTip.SetIsOpen(this, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,10 +284,7 @@ namespace SourceGit.Views
|
||||||
|
|
||||||
// Make sure user still hovers the target SHA.
|
// Make sure user still hovers the target SHA.
|
||||||
if (_lastHover == link && c != null)
|
if (_lastHover == link && c != null)
|
||||||
{
|
|
||||||
ToolTip.SetTip(this, c);
|
ToolTip.SetTip(this, c);
|
||||||
ToolTip.SetIsOpen(this, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -144,7 +144,6 @@ namespace SourceGit.Views
|
||||||
_lastHover = match;
|
_lastHover = match;
|
||||||
SetCurrentValue(CursorProperty, Cursor.Parse("Hand"));
|
SetCurrentValue(CursorProperty, Cursor.Parse("Hand"));
|
||||||
ToolTip.SetTip(this, match.Link);
|
ToolTip.SetTip(this, match.Link);
|
||||||
ToolTip.SetIsOpen(this, true);
|
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue