@@ -55,14 +55,19 @@ public class FilterOptionsPopupSkin implements Skin<FilterOptionsPopup> {
5555
5656 private Subscription subscription ;
5757 private Subscription filterSubscription ;
58+ private boolean updating ;
5859
5960 private final FilterOptions defaultFilterOptions = new FilterOptions ();
6061 private final ObjectProperty <FilterOptions > currentFilterOptionsProperty = new SimpleObjectProperty <>() {
6162 @ Override
6263 protected void invalidated () {
6364 FilterOptions filterOptions = get ();
6465 if (filterOptions != null ) {
65- applyButton .setDisable (control .getFilterOptions ().equals (filterOptions ));
66+ if (!updating ) {
67+ control .setFilterOptions (filterOptions );
68+ }
69+ // Keep button always enabled, though it won't do anything, since filterOptions are already passed to the control
70+ // applyButton.setDisable(control.getFilterOptions().equals(filterOptions));
6671 revertButton .setDisable (defaultFilterOptions .equals (filterOptions ));
6772 }
6873 }
@@ -157,6 +162,7 @@ private void setupFilter(FilterOptions filterOptions) {
157162 return ;
158163 }
159164 // changes from titledPane control:
165+ updating = true ;
160166 filterSubscription = Subscription .EMPTY ;
161167 accordion .getPanes ().stream ()
162168 .filter (FilterTitledPane .class ::isInstance )
@@ -179,6 +185,7 @@ private void setupFilter(FilterOptions filterOptions) {
179185 });
180186 updateCurrentFilterOptions ();
181187 control .getProperties ().put (DEFAULT_OPTIONS_KEY , defaultFilterOptions .equals (control .getFilterOptions ()));
188+ updating = false ;
182189 }
183190
184191 @ Override
@@ -203,8 +210,11 @@ public void dispose() {
203210
204211 private void revertFilterOptions () {
205212 accordion .setExpandedPane (null );
206- control .setFilterOptions (null );
213+ updating = true ;
214+ currentFilterOptionsProperty .set (null );
215+ setupFilter (null );
207216 setOptionsFromNavigator (control .getNavigator ());
217+ updating = false ;
208218 updateCurrentFilterOptions ();
209219 }
210220
@@ -316,7 +326,8 @@ private void setOptionsFromNavigator(Navigator navigator) {
316326 }
317327
318328 // initially, set default options
319- control .setFilterOptions (defaultFilterOptions );
329+ currentFilterOptionsProperty .set (defaultFilterOptions );
330+ setupFilter (defaultFilterOptions );
320331 updateCurrentFilterOptions ();
321332 }
322333
0 commit comments