Skip to content

Commit 129cbd5

Browse files
committed
Don't keep unnecessary refs to components in the disabler.
1 parent 96c237e commit 129cbd5

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

src/main/java/fiji/plugin/trackmate/util/EverythingDisablerAndReenabler.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323

2424
import java.awt.Component;
2525
import java.awt.Container;
26+
import java.lang.ref.WeakReference;
2627
import java.util.ArrayList;
2728
import java.util.List;
29+
import java.util.Optional;
2830

2931
/**
3032
* Purpose: To recursively disable (and later re-enable) all components of a
@@ -45,7 +47,7 @@ final public class EverythingDisablerAndReenabler
4547

4648
final private Class< ? >[] componentClassesToBeIgnored;
4749

48-
final private List< Component > componentsToReenable = new ArrayList<>();
50+
final private List< WeakReference< Component > > componentsToReenable = new ArrayList<>();
4951

5052
private boolean disableHasBeenCalled = false;
5153
// Order is strictly upheld via IllegalStateException!
@@ -116,9 +118,8 @@ public void reenable()
116118
disableHasBeenCalled = false;
117119

118120
for ( int i = componentsToReenable.size() - 1; i >= 0; i-- )
119-
{
120-
componentsToReenable.get( i ).setEnabled( true );
121-
}
121+
Optional.ofNullable( componentsToReenable.get( i ).get() ).ifPresent( c -> c.setEnabled( true ) );
122+
122123
componentsToReenable.clear();
123124
}
124125

@@ -156,7 +157,7 @@ private void disableEverythingInsideThisHierarchically( final Container containe
156157
if ( !found && component.isEnabled() )
157158
{
158159
component.setEnabled( false );
159-
componentsToReenable.add( component );
160+
componentsToReenable.add( new WeakReference<>( component ) );
160161
}
161162
}
162163
}

0 commit comments

Comments
 (0)