Skip to content

Commit 77f24c4

Browse files
committed
ux: re-design built-in merge conflict editor
Signed-off-by: leo <longshuang@msn.cn>
1 parent e92810e commit 77f24c4

2 files changed

Lines changed: 55 additions & 41 deletions

File tree

src/Views/MergeConflictEditor.axaml

Lines changed: 49 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
Icon="/App.ico"
1414
Title="{DynamicResource Text.MergeConflictEditor.Title}"
1515
MinWidth="1024" MinHeight="600">
16-
<Grid RowDefinitions="Auto,32,*,Auto">
16+
<Grid RowDefinitions="Auto,32,*,32">
1717
<!-- TitleBar -->
1818
<Grid Grid.Row="0" Height="28" IsVisible="{Binding !#ThisControl.UseSystemWindowFrame}">
1919
<Border Background="{DynamicResource Brush.TitleBar}"
@@ -37,47 +37,39 @@
3737

3838
<!-- Toolbar -->
3939
<Border Grid.Row="1" Padding="8,0" Background="{DynamicResource Brush.ToolBar}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border2}">
40-
<Grid ColumnDefinitions="Auto,*,Auto">
41-
<!-- File Path -->
42-
<StackPanel Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
43-
<Path Width="14" Height="14" Data="{StaticResource Icons.File}"/>
44-
<TextBlock Margin="8" Text="{Binding FilePath}" VerticalAlignment="Center"/>
45-
</StackPanel>
40+
<Grid ColumnDefinitions="Auto,*,Auto,Auto,Auto">
41+
<Path Grid.Column="0" Width="14" Height="14" Data="{StaticResource Icons.File}"/>
42+
43+
<TextBlock Grid.Column="1"
44+
Margin="8"
45+
Text="{Binding FilePath}"
46+
VerticalAlignment="Center"
47+
TextTrimming="CharacterEllipsis"/>
4648

47-
<!-- Navigation and Actions -->
48-
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="8">
49-
<!-- Navigation -->
50-
<Button Classes="icon_button"
51-
Width="24"
52-
ToolTip.Tip="{DynamicResource Text.MergeConflictEditor.PrevConflict}"
53-
Click="OnGotoPrevConflict"
54-
HotKey="{OnPlatform Ctrl+Up, macOS=⌘+Up}"
55-
IsEnabled="{Binding UnsolvedCount, Converter={x:Static c:IntConverters.IsGreaterThanZero}, Mode=OneWay}">
56-
<Path Width="12" Height="12" Margin="0,6,0,0" Data="{StaticResource Icons.Up}"/>
57-
</Button>
58-
<Button Classes="icon_button"
59-
Width="24"
60-
ToolTip.Tip="{DynamicResource Text.MergeConflictEditor.NextConflict}"
61-
Click="OnGotoNextConflict"
62-
HotKey="{OnPlatform Ctrl+Down, macOS=⌘+Down}"
63-
IsEnabled="{Binding UnsolvedCount, Converter={x:Static c:IntConverters.IsGreaterThanZero}, Mode=OneWay}">
64-
<Path Width="12" Height="12" Margin="0,6,0,0" Data="{StaticResource Icons.Down}"/>
65-
</Button>
66-
67-
<!-- Info Bar -->
68-
<TextBlock Text="{Binding UnsolvedCount, Converter={x:Static c:IntConverters.ToUnsolvedDesc}, Mode=OneWay}"
69-
VerticalAlignment="Center"/>
70-
<Rectangle Width="1" Fill="{DynamicResource Brush.Border2}" Margin="4,6"/>
49+
<Button Grid.Column="2"
50+
Classes="icon_button"
51+
Width="32"
52+
ToolTip.Tip="{DynamicResource Text.MergeConflictEditor.PrevConflict}"
53+
Click="OnGotoPrevConflict"
54+
HotKey="{OnPlatform Ctrl+Up, macOS=⌘+Up}"
55+
IsEnabled="{Binding UnsolvedCount, Converter={x:Static c:IntConverters.IsGreaterThanZero}, Mode=OneWay}">
56+
<Path Width="12" Height="12" Margin="0,6,0,0" Data="{StaticResource Icons.Up}"/>
57+
</Button>
58+
59+
<Button Grid.Column="3"
60+
Classes="icon_button"
61+
Width="32"
62+
ToolTip.Tip="{DynamicResource Text.MergeConflictEditor.NextConflict}"
63+
Click="OnGotoNextConflict"
64+
HotKey="{OnPlatform Ctrl+Down, macOS=⌘+Down}"
65+
IsEnabled="{Binding UnsolvedCount, Converter={x:Static c:IntConverters.IsGreaterThanZero}, Mode=OneWay}">
66+
<Path Width="12" Height="12" Margin="0,6,0,0" Data="{StaticResource Icons.Down}"/>
67+
</Button>
7168

72-
<!-- Save -->
73-
<Button Classes="icon_button"
74-
Margin="0" Padding="0"
75-
Click="OnSaveAndStage"
76-
HotKey="{OnPlatform Ctrl+S, macOS=⌘+S}"
77-
ToolTip.Tip="{DynamicResource Text.MergeConflictEditor.SaveAndStage}">
78-
<Path Width="16" Height="16" Data="{StaticResource Icons.Save}"/>
79-
</Button>
80-
</StackPanel>
69+
<TextBlock Grid.Column="4"
70+
Margin="8,0,0,0"
71+
Text="{Binding UnsolvedCount, Converter={x:Static c:IntConverters.ToUnsolvedDesc}, Mode=OneWay}"
72+
VerticalAlignment="Center"/>
8173
</Grid>
8274
</Border>
8375

@@ -331,5 +323,22 @@
331323
HotKey="Escape"/>
332324
</StackPanel>
333325
</Border>
326+
327+
<!-- Foot -->
328+
<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top" Spacing="8">
329+
<Button Classes="flat primary"
330+
HorizontalAlignment="Center" VerticalAlignment="Top"
331+
HotKey="{OnPlatform Ctrl+S, macOS=⌘+S}"
332+
Click="OnSaveAndStage"
333+
IsEnabled="{Binding UnsolvedCount, Converter={x:Static c:IntConverters.IsZero}}">
334+
<TextBlock Text="{DynamicResource Text.MergeConflictEditor.SaveAndStage}"/>
335+
</Button>
336+
337+
<Button Classes="flat"
338+
Width="80"
339+
Content="{DynamicResource Text.Cancel}"
340+
Click="CloseWindow"
341+
HorizontalAlignment="Center"/>
342+
</StackPanel>
334343
</Grid>
335344
</v:ChromelessWindow>

src/Views/MergeConflictEditor.axaml.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,7 @@ protected override async void OnClosing(WindowClosingEventArgs e)
705705
e.Cancel = true;
706706

707707
var confirm = new Confirm();
708-
confirm.SetData(App.Text("MergeConflictEditor.UnsavedChanges"), Models.ConfirmButtonType.OkCancel);
708+
confirm.SetData(App.Text("MergeConflictEditor.UnsavedChanges"), Models.ConfirmButtonType.YesNo);
709709

710710
var result = await confirm.ShowDialog<bool>(this);
711711
if (result)
@@ -820,6 +820,11 @@ private async void OnSaveAndStage(object sender, RoutedEventArgs e)
820820
}
821821
}
822822

823+
private void CloseWindow(object sender, RoutedEventArgs e)
824+
{
825+
Close();
826+
}
827+
823828
private void UpdatePopupVisibility()
824829
{
825830
// Hide all popups first

0 commit comments

Comments
 (0)