feature: add a new button Paste (Replace all) to paste commit message from clipboard (#1169)

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo
2025-08-25 11:34:04 +08:00
parent cbe2d4a2e1
commit b07e2c2f5f
5 changed files with 34 additions and 2 deletions

View File

@@ -166,6 +166,7 @@
<x:String x:Key="Text.CommitDetail.Info.Signer" xml:space="preserve">Signer:</x:String>
<x:String x:Key="Text.CommitDetail.Info.WebLinks" xml:space="preserve">Open in Browser</x:String>
<x:String x:Key="Text.CommitMessageTextBox.MessagePlaceholder" xml:space="preserve">Description</x:String>
<x:String x:Key="Text.CommitMessageTextBox.PasteAndReplaceAll" xml:space="preserve">Paste (Replace all)</x:String>
<x:String x:Key="Text.CommitMessageTextBox.SubjectCount" xml:space="preserve">SUBJECT</x:String>
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Enter commit subject</x:String>
<x:String x:Key="Text.Configure" xml:space="preserve">Repository Configure</x:String>

View File

@@ -170,6 +170,7 @@
<x:String x:Key="Text.CommitDetail.Info.Signer" xml:space="preserve">签名者 </x:String>
<x:String x:Key="Text.CommitDetail.Info.WebLinks" xml:space="preserve">浏览器中查看</x:String>
<x:String x:Key="Text.CommitMessageTextBox.MessagePlaceholder" xml:space="preserve">详细描述</x:String>
<x:String x:Key="Text.CommitMessageTextBox.PasteAndReplaceAll" xml:space="preserve">粘贴(替换全部)</x:String>
<x:String x:Key="Text.CommitMessageTextBox.SubjectCount" xml:space="preserve">主题</x:String>
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">填写提交信息主题</x:String>
<x:String x:Key="Text.Configure" xml:space="preserve">仓库配置</x:String>

View File

@@ -170,6 +170,7 @@
<x:String x:Key="Text.CommitDetail.Info.Signer" xml:space="preserve">簽署人:</x:String>
<x:String x:Key="Text.CommitDetail.Info.WebLinks" xml:space="preserve">在瀏覽器中檢視</x:String>
<x:String x:Key="Text.CommitMessageTextBox.MessagePlaceholder" xml:space="preserve">詳細描述</x:String>
<x:String x:Key="Text.CommitMessageTextBox.PasteAndReplaceAll" xml:space="preserve">粘貼(替換所有內容)</x:String>
<x:String x:Key="Text.CommitMessageTextBox.SubjectCount" xml:space="preserve">標題</x:String>
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">填寫提交訊息標題</x:String>
<x:String x:Key="Text.Configure" xml:space="preserve">存放庫設定</x:String>

View File

@@ -66,7 +66,7 @@
Background="{DynamicResource Brush.Window}"
BorderThickness="1,0,0,0"
CornerRadius="0,0,4,4">
<Grid ColumnDefinitions="Auto,Auto,Auto,Auto,*" Margin="0,4">
<Grid ColumnDefinitions="Auto,Auto,Auto,Auto,Auto,*" Margin="0,4">
<Button Grid.Column="0"
Classes="icon_button"
Width="24"
@@ -105,7 +105,16 @@
<Path Width="13" Height="13" Data="{StaticResource Icons.Copy}"/>
</Button>
<StackPanel Grid.Column="4"
<Button Grid.Column="4"
Classes="icon_button"
Width="24"
Margin="0,0,4,0" Padding="0"
Click="PasteAndReplaceAllText"
ToolTip.Tip="{DynamicResource Text.CommitMessageTextBox.PasteAndReplaceAll}">
<Path Width="13" Height="13" Data="{StaticResource Icons.Paste}"/>
</Button>
<StackPanel Grid.Column="5"
Margin="0,0,6,0"
HorizontalAlignment="Right"
VerticalAlignment="Center"

View File

@@ -356,6 +356,26 @@ namespace SourceGit.Views
e.Handled = true;
}
private async void PasteAndReplaceAllText(object sender, RoutedEventArgs e)
{
try
{
var text = await App.GetClipboardTextAsync();
if (!string.IsNullOrEmpty(text))
{
var parts = text.ReplaceLineEndings("\n").Split("\n", 2);
var subject = parts[0];
Text = parts.Length > 1 ? $"{subject}\n\n{parts[1].Trim()}" : subject;
}
}
catch
{
// Ignore exceptions.
}
e.Handled = true;
}
private TextChangeWay _changingWay = TextChangeWay.None;
}
}