? diff.txt Index: src/org/openide/explorer/propertysheet/PropertyDialogManager.java =================================================================== RCS file: /cvs/openide/explorer/src/org/openide/explorer/propertysheet/PropertyDialogManager.java,v retrieving revision 1.11 diff -u -u -r1.11 PropertyDialogManager.java --- src/org/openide/explorer/propertysheet/PropertyDialogManager.java 5 Nov 2007 09:58:43 -0000 1.11 +++ src/org/openide/explorer/propertysheet/PropertyDialogManager.java 12 Dec 2007 19:26:32 -0000 @@ -75,7 +75,9 @@ /* JST: Made package private because PropertyPanel should be used instead. */ /** Listener to editor property changes. */ - private PropertyChangeListener listener; + private PropertyChangeListener editorListener; + + private PropertyChangeListener componentListener; /** Cache for reverting on cancel. */ private Object oldValue; @@ -330,8 +332,12 @@ } } - if (listener != null) { - editor.removePropertyChangeListener(listener); + if (editorListener != null) { + editor.removePropertyChangeListener(editorListener); + } + + if (componentListener != null) { + component.removePropertyChangeListener(componentListener); } dialog.removeWindowListener(this); @@ -350,7 +356,7 @@ lastValueFromEditor = editor.getValue(); editor.addPropertyChangeListener( - listener = new PropertyChangeListener() { + editorListener = new PropertyChangeListener() { /** Notify displayer about property change in editor */ public void propertyChange(PropertyChangeEvent e) { changed = true; @@ -391,7 +397,7 @@ } component.addPropertyChangeListener( - listener = new PropertyChangeListener() { + componentListener = new PropertyChangeListener() { /** forward possible help context change in custom editor */ public void propertyChange(PropertyChangeEvent e) { if (DialogDescriptor.PROP_HELP_CTX.equals(e.getPropertyName())) {