@@ -22,19 +22,19 @@ public string Error
2222 private set => SetProperty ( ref _error , value ) ;
2323 }
2424
25- public List < Models . TextDiffLine > OursDiffLines
25+ public List < Models . ConflictLine > OursDiffLines
2626 {
2727 get => _oursDiffLines ;
2828 private set => SetProperty ( ref _oursDiffLines , value ) ;
2929 }
3030
31- public List < Models . TextDiffLine > TheirsDiffLines
31+ public List < Models . ConflictLine > TheirsDiffLines
3232 {
3333 get => _theirsDiffLines ;
3434 private set => SetProperty ( ref _theirsDiffLines , value ) ;
3535 }
3636
37- public List < Models . TextDiffLine > ResultDiffLines
37+ public List < Models . ConflictLine > ResultDiffLines
3838 {
3939 get => _resultDiffLines ;
4040 private set => SetProperty ( ref _resultDiffLines , value ) ;
@@ -207,8 +207,8 @@ private void ParseOriginalContent(string content)
207207 return ;
208208
209209 var lines = content . Split ( '\n ' , StringSplitOptions . None ) ;
210- var oursLines = new List < Models . TextDiffLine > ( ) ;
211- var theirsLines = new List < Models . TextDiffLine > ( ) ;
210+ var oursLines = new List < Models . ConflictLine > ( ) ;
211+ var theirsLines = new List < Models . ConflictLine > ( ) ;
212212 int oursLineNumber = 1 ;
213213 int theirsLineNumber = 1 ;
214214 int i = 0 ;
@@ -225,16 +225,19 @@ private void ParseOriginalContent(string content)
225225 StartMarker = line ,
226226 } ;
227227
228- oursLines . Add ( new Models . TextDiffLine ( ) ) ;
229- theirsLines . Add ( new Models . TextDiffLine ( ) ) ;
228+ oursLines . Add ( new ( ) ) ;
229+ theirsLines . Add ( new ( ) ) ;
230230 i ++ ;
231231
232232 // Collect ours content
233233 while ( i < lines . Length &&
234234 ! lines [ i ] . StartsWith ( "|||||||" , StringComparison . Ordinal ) &&
235235 ! lines [ i ] . StartsWith ( "=======" , StringComparison . Ordinal ) )
236236 {
237- region . OursContent . Add ( lines [ i ] ) ;
237+ line = lines [ i ] ;
238+ region . OursContent . Add ( line ) ;
239+ oursLines . Add ( new ( Models . ConflictLineType . Ours , line , oursLineNumber ++ ) ) ;
240+ theirsLines . Add ( new ( ) ) ;
238241 i ++ ;
239242 }
240243
@@ -249,36 +252,27 @@ private void ParseOriginalContent(string content)
249252 // Capture separator marker
250253 if ( i < lines . Length && lines [ i ] . StartsWith ( "=======" , StringComparison . Ordinal ) )
251254 {
252- oursLines . Add ( new Models . TextDiffLine ( ) ) ;
253- theirsLines . Add ( new Models . TextDiffLine ( ) ) ;
255+ oursLines . Add ( new ( ) ) ;
256+ theirsLines . Add ( new ( ) ) ;
254257 region . SeparatorMarker = lines [ i ] ;
255258 i ++ ;
256259 }
257260
258261 // Collect theirs content
259262 while ( i < lines . Length && ! lines [ i ] . StartsWith ( ">>>>>>>" , StringComparison . Ordinal ) )
260263 {
261- region . TheirsContent . Add ( lines [ i ] ) ;
264+ line = lines [ i ] ;
265+ region . TheirsContent . Add ( line ) ;
266+ oursLines . Add ( new ( ) ) ;
267+ theirsLines . Add ( new ( Models . ConflictLineType . Theirs , line , theirsLineNumber ++ ) ) ;
262268 i ++ ;
263269 }
264270
265- foreach ( var mine in region . OursContent )
266- {
267- oursLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Deleted , mine , oursLineNumber ++ , 0 ) ) ;
268- theirsLines . Add ( new Models . TextDiffLine ( ) ) ;
269- }
270-
271- foreach ( var theirs in region . TheirsContent )
272- {
273- oursLines . Add ( new Models . TextDiffLine ( ) ) ;
274- theirsLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Added , theirs , 0 , theirsLineNumber ++ ) ) ;
275- }
276-
277271 // Capture end marker (e.g., ">>>>>>> feature-branch")
278272 if ( i < lines . Length && lines [ i ] . StartsWith ( ">>>>>>>" , StringComparison . Ordinal ) )
279273 {
280- oursLines . Add ( new Models . TextDiffLine ( ) ) ;
281- theirsLines . Add ( new Models . TextDiffLine ( ) ) ;
274+ oursLines . Add ( new ( ) ) ;
275+ theirsLines . Add ( new ( ) ) ;
282276
283277 region . EndMarker = lines [ i ] ;
284278 region . EndLineInOriginal = i ;
@@ -289,8 +283,8 @@ private void ParseOriginalContent(string content)
289283 }
290284 else
291285 {
292- oursLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Normal , line , oursLineNumber , oursLineNumber ) ) ;
293- theirsLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Normal , line , theirsLineNumber , theirsLineNumber ) ) ;
286+ oursLines . Add ( new ( Models . ConflictLineType . Common , line , oursLineNumber ) ) ;
287+ theirsLines . Add ( new ( Models . ConflictLineType . Common , line , theirsLineNumber ) ) ;
294288 i ++ ;
295289 oursLineNumber ++ ;
296290 theirsLineNumber ++ ;
@@ -305,7 +299,7 @@ private void ParseOriginalContent(string content)
305299
306300 private void RefreshDisplayData ( )
307301 {
308- var resultLines = new List < Models . TextDiffLine > ( ) ;
302+ var resultLines = new List < Models . ConflictLine > ( ) ;
309303 _lineStates . Clear ( ) ;
310304
311305 if ( _oursDiffLines == null || _oursDiffLines . Count == 0 )
@@ -343,14 +337,14 @@ private void RefreshDisplayData()
343337 int mineCount = currentRegion . OursContent . Count ;
344338 for ( int i = 0 ; i < mineCount ; i ++ )
345339 {
346- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Deleted , currentRegion . OursContent [ i ] , resultLineNumber , resultLineNumber ) ) ;
340+ resultLines . Add ( new ( Models . ConflictLineType . Ours , currentRegion . OursContent [ i ] , resultLineNumber ) ) ;
347341 resultLineNumber ++ ;
348342 }
349343
350344 int theirsCount = currentRegion . TheirsContent . Count ;
351345 for ( int i = 0 ; i < theirsCount ; i ++ )
352346 {
353- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Added , currentRegion . TheirsContent [ i ] , resultLineNumber , resultLineNumber ) ) ;
347+ resultLines . Add ( new ( Models . ConflictLineType . Theirs , currentRegion . TheirsContent [ i ] , resultLineNumber ) ) ;
354348 resultLineNumber ++ ;
355349 }
356350 }
@@ -359,14 +353,14 @@ private void RefreshDisplayData()
359353 int theirsCount = currentRegion . TheirsContent . Count ;
360354 for ( int i = 0 ; i < theirsCount ; i ++ )
361355 {
362- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Added , currentRegion . TheirsContent [ i ] , resultLineNumber , resultLineNumber ) ) ;
356+ resultLines . Add ( new ( Models . ConflictLineType . Theirs , currentRegion . TheirsContent [ i ] , resultLineNumber ) ) ;
363357 resultLineNumber ++ ;
364358 }
365359
366360 int mineCount = currentRegion . OursContent . Count ;
367361 for ( int i = 0 ; i < mineCount ; i ++ )
368362 {
369- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Deleted , currentRegion . OursContent [ i ] , resultLineNumber , resultLineNumber ) ) ;
363+ resultLines . Add ( new ( Models . ConflictLineType . Ours , currentRegion . OursContent [ i ] , resultLineNumber ) ) ;
370364 resultLineNumber ++ ;
371365 }
372366 }
@@ -375,7 +369,7 @@ private void RefreshDisplayData()
375369 int mineCount = currentRegion . OursContent . Count ;
376370 for ( int i = 0 ; i < mineCount ; i ++ )
377371 {
378- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Deleted , currentRegion . OursContent [ i ] , resultLineNumber , resultLineNumber ) ) ;
372+ resultLines . Add ( new ( Models . ConflictLineType . Ours , currentRegion . OursContent [ i ] , resultLineNumber ) ) ;
379373 resultLineNumber ++ ;
380374 }
381375 }
@@ -384,7 +378,7 @@ private void RefreshDisplayData()
384378 int theirsCount = currentRegion . TheirsContent . Count ;
385379 for ( int i = 0 ; i < theirsCount ; i ++ )
386380 {
387- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Added , currentRegion . TheirsContent [ i ] , resultLineNumber , resultLineNumber ) ) ;
381+ resultLines . Add ( new ( Models . ConflictLineType . Theirs , currentRegion . TheirsContent [ i ] , resultLineNumber ) ) ;
388382 resultLineNumber ++ ;
389383 }
390384 }
@@ -393,7 +387,7 @@ private void RefreshDisplayData()
393387 int added = resultLines . Count - oldLineCount ;
394388 int padding = regionLines - added ;
395389 for ( int p = 0 ; p < padding ; p ++ )
396- resultLines . Add ( new Models . TextDiffLine ( ) ) ;
390+ resultLines . Add ( new ( ) ) ;
397391
398392 int blockSize = resultLines . Count - oldLineCount - 2 ;
399393 _lineStates . Add ( Models . ConflictLineState . ResolvedBlockStart ) ;
@@ -403,31 +397,25 @@ private void RefreshDisplayData()
403397 }
404398 else
405399 {
406- // Unresolved - show conflict markers with content, aligned with Mine/Theirs
407- // First line: start marker (use real marker from file)
408- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Indicator , currentRegion . StartMarker , 0 , 0 ) ) ;
400+ resultLines . Add ( new ( Models . ConflictLineType . Marker , currentRegion . StartMarker ) ) ;
409401 _lineStates . Add ( Models . ConflictLineState . ConflictBlockStart ) ;
410402
411- // Mine content lines (matches the deleted lines in Ours panel)
412403 foreach ( var line in currentRegion . OursContent )
413404 {
414- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Deleted , line , 0 , resultLineNumber ++ ) ) ;
405+ resultLines . Add ( new ( Models . ConflictLineType . Ours , line , resultLineNumber ++ ) ) ;
415406 _lineStates . Add ( Models . ConflictLineState . ConflictBlock ) ;
416407 }
417408
418- // Separator marker between Mine and Theirs
419- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Indicator , currentRegion . SeparatorMarker , 0 , 0 ) ) ;
409+ resultLines . Add ( new ( Models . ConflictLineType . Marker , currentRegion . SeparatorMarker ) ) ;
420410 _lineStates . Add ( Models . ConflictLineState . ConflictBlock ) ;
421411
422- // Theirs content lines (matches the added lines in Theirs panel)
423412 foreach ( var line in currentRegion . TheirsContent )
424413 {
425- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Added , line , 0 , resultLineNumber ++ ) ) ;
414+ resultLines . Add ( new ( Models . ConflictLineType . Theirs , line , resultLineNumber ++ ) ) ;
426415 _lineStates . Add ( Models . ConflictLineState . ConflictBlock ) ;
427416 }
428417
429- // End marker (use real marker from file)
430- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Indicator , currentRegion . EndMarker , 0 , 0 ) ) ;
418+ resultLines . Add ( new ( Models . ConflictLineType . Marker , currentRegion . EndMarker ) ) ;
431419 _lineStates . Add ( Models . ConflictLineState . ConflictBlockEnd ) ;
432420 }
433421
@@ -436,20 +424,10 @@ private void RefreshDisplayData()
436424 }
437425 else
438426 {
439- // Normal line - copy from ours panel
440427 var oursLine = _oursDiffLines [ currentLine ] ;
441- if ( oursLine . Type == Models . TextDiffLineType . Normal )
442- {
443- resultLines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Normal , oursLine . Content , resultLineNumber , resultLineNumber ) ) ;
444- resultLineNumber ++ ;
445- }
446- else
447- {
448- // Empty placeholder line (shouldn't happen outside conflicts, but handle it)
449- resultLines . Add ( new Models . TextDiffLine ( ) ) ;
450- }
451-
428+ resultLines . Add ( new ( oursLine . Type , oursLine . Content , resultLineNumber ) ) ;
452429 _lineStates . Add ( Models . ConflictLineState . Normal ) ;
430+ resultLineNumber ++ ;
453431 currentLine ++ ;
454432 }
455433 }
@@ -473,9 +451,9 @@ private void RefreshDisplayData()
473451 private string _originalContent = string . Empty ;
474452 private int _unsolvedCount = 0 ;
475453 private int _diffMaxLineNumber = 0 ;
476- private List < Models . TextDiffLine > _oursDiffLines = [ ] ;
477- private List < Models . TextDiffLine > _theirsDiffLines = [ ] ;
478- private List < Models . TextDiffLine > _resultDiffLines = [ ] ;
454+ private List < Models . ConflictLine > _oursDiffLines = [ ] ;
455+ private List < Models . ConflictLine > _theirsDiffLines = [ ] ;
456+ private List < Models . ConflictLine > _resultDiffLines = [ ] ;
479457 private List < Models . ConflictRegion > _conflictRegions = [ ] ;
480458 private List < Models . ConflictLineState > _lineStates = [ ] ;
481459 private Vector _scrollOffset = Vector . Zero ;
0 commit comments