@@ -13,15 +13,16 @@ class Window : BaseWindow
13
13
private const string Menu_Window_GitHub = "Window/GitHub" ;
14
14
private const string Menu_Window_GitHub_Command_Line = "Window/GitHub Command Line" ;
15
15
16
- [ NonSerialized ] private bool currentBranchAndRemoteHasUpdate ;
17
- [ NonSerialized ] private bool currentTrackingStatusHasUpdate ;
18
16
[ NonSerialized ] private double notificationClearTime = - 1 ;
19
17
[ NonSerialized ] private double timeSinceLastRotation = - 1f ;
20
18
[ NonSerialized ] private Spinner spinner ;
21
19
[ NonSerialized ] private IProgress progress ;
22
20
[ NonSerialized ] private float progressValue ;
23
21
[ NonSerialized ] private string progressMessage ;
24
22
23
+ [ SerializeField ] private bool currentBranchAndRemoteHasUpdate ;
24
+ [ SerializeField ] private bool currentTrackingStatusHasUpdate ;
25
+ [ SerializeField ] private bool currentStatusEntriesHasUpdate ;
25
26
[ SerializeField ] private SubTab changeTab = SubTab . InitProject ;
26
27
[ SerializeField ] private SubTab activeTab = SubTab . InitProject ;
27
28
[ SerializeField ] private InitProjectView initProjectView = new InitProjectView ( ) ;
@@ -40,6 +41,7 @@ class Window : BaseWindow
40
41
[ SerializeField ] private GUIContent currentRemoteUrlContent ;
41
42
[ SerializeField ] private CacheUpdateEvent lastCurrentBranchAndRemoteChangedEvent ;
42
43
[ SerializeField ] private CacheUpdateEvent lastTrackingStatusChangedEvent ;
44
+ [ SerializeField ] private CacheUpdateEvent lastStatusEntriesChangedEvent ;
43
45
44
46
[ MenuItem ( Menu_Window_GitHub ) ]
45
47
public static void Window_GitHub ( )
@@ -271,13 +273,16 @@ private void MaybeUpdateData()
271
273
if ( currentTrackingStatusHasUpdate )
272
274
{
273
275
currentTrackingStatusHasUpdate = false ;
274
-
275
276
statusAhead = Repository . CurrentAhead ;
276
277
statusBehind = Repository . CurrentBehind ;
278
+ }
277
279
280
+ if ( currentStatusEntriesHasUpdate )
281
+ {
282
+ currentStatusEntriesHasUpdate = false ;
278
283
var currentChanges = Repository . CurrentChanges ;
279
- hasItemsToCommit = currentChanges != null
280
- && currentChanges . Any ( entry => entry . Status != GitFileStatus . Ignored && ! entry . Staged ) ;
284
+ hasItemsToCommit = currentChanges != null &&
285
+ currentChanges . Any ( entry => entry . Status != GitFileStatus . Ignored && ! entry . Staged ) ;
281
286
}
282
287
283
288
if ( currentBranchAndRemoteHasUpdate )
@@ -366,6 +371,7 @@ private void AttachHandlers(IRepository repository)
366
371
return ;
367
372
repository . CurrentBranchAndRemoteChanged += RepositoryOnCurrentBranchAndRemoteChanged ;
368
373
repository . TrackingStatusChanged += RepositoryOnTrackingStatusChanged ;
374
+ repository . StatusEntriesChanged += RepositoryOnStatusEntriesChanged ;
369
375
}
370
376
371
377
private void RepositoryOnCurrentBranchAndRemoteChanged ( CacheUpdateEvent cacheUpdateEvent )
@@ -388,6 +394,16 @@ private void RepositoryOnTrackingStatusChanged(CacheUpdateEvent cacheUpdateEvent
388
394
}
389
395
}
390
396
397
+ private void RepositoryOnStatusEntriesChanged ( CacheUpdateEvent cacheUpdateEvent )
398
+ {
399
+ if ( ! lastStatusEntriesChangedEvent . Equals ( cacheUpdateEvent ) )
400
+ {
401
+ lastStatusEntriesChangedEvent = cacheUpdateEvent ;
402
+ currentStatusEntriesHasUpdate = true ;
403
+ Redraw ( ) ;
404
+ }
405
+ }
406
+
391
407
private void OnProgress ( IProgress progr )
392
408
{
393
409
progress = progr ;
@@ -399,6 +415,7 @@ private void DetachHandlers(IRepository repository)
399
415
return ;
400
416
repository . CurrentBranchAndRemoteChanged -= RepositoryOnCurrentBranchAndRemoteChanged ;
401
417
repository . TrackingStatusChanged -= RepositoryOnTrackingStatusChanged ;
418
+ repository . StatusEntriesChanged -= RepositoryOnStatusEntriesChanged ;
402
419
}
403
420
404
421
private void DoHeaderGUI ( )
0 commit comments