@@ -24,22 +24,13 @@ public IBrush DotBrush
2424 set => SetValue ( DotBrushProperty , value ) ;
2525 }
2626
27- public static readonly StyledProperty < bool > OnlyHighlightCurrentBranchProperty =
28- AvaloniaProperty . Register < CommitGraph , bool > ( nameof ( OnlyHighlightCurrentBranch ) , true ) ;
27+ public static readonly StyledProperty < Models . CommitGraphHighlighting > HighlightModeProperty =
28+ AvaloniaProperty . Register < CommitGraph , Models . CommitGraphHighlighting > ( nameof ( HighlightMode ) , Models . CommitGraphHighlighting . All ) ;
2929
30- public bool OnlyHighlightCurrentBranch
30+ public Models . CommitGraphHighlighting HighlightMode
3131 {
32- get => GetValue ( OnlyHighlightCurrentBranchProperty ) ;
33- set => SetValue ( OnlyHighlightCurrentBranchProperty , value ) ;
34- }
35-
36- public static readonly StyledProperty < bool > HighlightSelectedLineageProperty =
37- AvaloniaProperty . Register < CommitGraph , bool > ( nameof ( HighlightSelectedLineage ) , false ) ;
38-
39- public bool HighlightSelectedLineage
40- {
41- get => GetValue ( HighlightSelectedLineageProperty ) ;
42- set => SetValue ( HighlightSelectedLineageProperty , value ) ;
32+ get => GetValue ( HighlightModeProperty ) ;
33+ set => SetValue ( HighlightModeProperty , value ) ;
4334 }
4435
4536 public static readonly StyledProperty < bool [ ] > HoveredLineageCommitsProperty =
@@ -92,8 +83,7 @@ static CommitGraph()
9283 AffectsRender < CommitGraph > (
9384 GraphProperty ,
9485 DotBrushProperty ,
95- OnlyHighlightCurrentBranchProperty ,
96- HighlightSelectedLineageProperty ,
86+ HighlightModeProperty ,
9787 HoveredLineageCommitsProperty ,
9888 HoveredCommitIndexProperty ,
9989 SelectedLineageCommitsProperty ,
@@ -110,7 +100,7 @@ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs chang
110100 change . Property == HoveredLineageCommitsProperty ||
111101 change . Property == SelectedLineageCommitsProperty ||
112102 change . Property == SelectedLineagePathsProperty ||
113- change . Property == HighlightSelectedLineageProperty )
103+ change . Property == HighlightModeProperty )
114104 {
115105 UpdateHoveredRelated ( ) ;
116106 }
@@ -165,8 +155,11 @@ private void DrawCurves(DrawingContext context, Models.CommitGraph graph, double
165155 {
166156 var hoverBold = 2.0 ;
167157 var grayedPen = new Pen ( new SolidColorBrush ( Colors . Gray , 0.4 ) , Models . CommitGraph . Pens [ 0 ] . Thickness ) ;
168- var onlyHighlightCurrentBranch = OnlyHighlightCurrentBranch ;
169- var highlightSelectedLineage = HighlightSelectedLineage ;
158+ var highlightMode = HighlightMode ;
159+ var onlyHighlightCurrentBranch = highlightMode == Models . CommitGraphHighlighting . CurrentBranchOnly ||
160+ highlightMode == Models . CommitGraphHighlighting . CurrentBranchAndSelectedLineage ;
161+ var highlightSelectedLineage = highlightMode == Models . CommitGraphHighlighting . SelectedLineageOnly ||
162+ highlightMode == Models . CommitGraphHighlighting . CurrentBranchAndSelectedLineage ;
170163 var selectedLineageCommits = SelectedLineageCommits ;
171164 var hoveredLineage = HoveredLineageCommits ;
172165
@@ -195,7 +188,15 @@ private void DrawCurves(DrawingContext context, Models.CommitGraph graph, double
195188 hoveredLineage [ link . EndCommitIndex ] ;
196189
197190 var pen = link . Color < 0 ? grayedPen : Models . CommitGraph . Pens [ link . Color ] ;
198- if ( onlyHighlightCurrentBranch && ! link . IsMerged && ! isLinkInSelectedLineage )
191+ bool shouldDim = false ;
192+ if ( highlightMode == Models . CommitGraphHighlighting . CurrentBranchOnly )
193+ shouldDim = ! link . IsMerged ;
194+ else if ( highlightMode == Models . CommitGraphHighlighting . SelectedLineageOnly )
195+ shouldDim = ! isLinkInSelectedLineage ;
196+ else if ( highlightMode == Models . CommitGraphHighlighting . CurrentBranchAndSelectedLineage )
197+ shouldDim = ! link . IsMerged && ! isLinkInSelectedLineage ;
198+
199+ if ( shouldDim )
199200 pen = grayedPen ;
200201
201202 if ( isLinkInHoveredLineage )
@@ -230,7 +231,15 @@ private void DrawCurves(DrawingContext context, Models.CommitGraph graph, double
230231
231232 var geo = new StreamGeometry ( ) ;
232233 var pen = line . Color < 0 ? grayedPen : Models . CommitGraph . Pens [ line . Color ] ;
233- if ( onlyHighlightCurrentBranch && ! line . IsMerged && ! isLineInSelectedLineage )
234+ bool shouldDim = false ;
235+ if ( highlightMode == Models . CommitGraphHighlighting . CurrentBranchOnly )
236+ shouldDim = ! line . IsMerged ;
237+ else if ( highlightMode == Models . CommitGraphHighlighting . SelectedLineageOnly )
238+ shouldDim = ! isLineInSelectedLineage ;
239+ else if ( highlightMode == Models . CommitGraphHighlighting . CurrentBranchAndSelectedLineage )
240+ shouldDim = ! line . IsMerged && ! isLineInSelectedLineage ;
241+
242+ if ( shouldDim )
234243 pen = grayedPen ;
235244
236245 if ( line . IsHoveredRelated )
@@ -297,8 +306,11 @@ private void DrawAnchors(DrawingContext context, Models.CommitGraph graph, doubl
297306 var dotFill = DotBrush ;
298307 var dotFillPen = new Pen ( dotFill , 2 ) ;
299308 var grayedPen = new Pen ( Brushes . Gray , Models . CommitGraph . Pens [ 0 ] . Thickness ) ;
300- var onlyHighlightCurrentBranch = OnlyHighlightCurrentBranch ;
301- var highlightSelectedLineage = HighlightSelectedLineage ;
309+ var highlightMode = HighlightMode ;
310+ var onlyHighlightCurrentBranch = highlightMode == Models . CommitGraphHighlighting . CurrentBranchOnly ||
311+ highlightMode == Models . CommitGraphHighlighting . CurrentBranchAndSelectedLineage ;
312+ var highlightSelectedLineage = highlightMode == Models . CommitGraphHighlighting . SelectedLineageOnly ||
313+ highlightMode == Models . CommitGraphHighlighting . CurrentBranchAndSelectedLineage ;
302314 var selectedLineageCommits = SelectedLineageCommits ;
303315
304316 if ( DataContext is not ViewModels . Histories vm )
@@ -317,7 +329,15 @@ private void DrawAnchors(DrawingContext context, Models.CommitGraph graph, doubl
317329 bool isDotInSelectedLineage = highlightSelectedLineage && selectedLineageCommits != null && i >= 0 && i < selectedLineageCommits . Length && selectedLineageCommits [ i ] ;
318330
319331 var pen = Models . CommitGraph . Pens [ dot . Color ] ;
320- if ( onlyHighlightCurrentBranch && ! dot . IsMerged && ! isDotInSelectedLineage )
332+ bool shouldDim = false ;
333+ if ( highlightMode == Models . CommitGraphHighlighting . CurrentBranchOnly )
334+ shouldDim = ! dot . IsMerged ;
335+ else if ( highlightMode == Models . CommitGraphHighlighting . SelectedLineageOnly )
336+ shouldDim = ! isDotInSelectedLineage ;
337+ else if ( highlightMode == Models . CommitGraphHighlighting . CurrentBranchAndSelectedLineage )
338+ shouldDim = ! dot . IsMerged && ! isDotInSelectedLineage ;
339+
340+ if ( shouldDim )
321341 pen = grayedPen ;
322342
323343 switch ( dot . Type )
@@ -339,3 +359,4 @@ private void DrawAnchors(DrawingContext context, Models.CommitGraph graph, doubl
339359 }
340360 }
341361}
362+
0 commit comments