Changeset 17055 in josm


Ignore:
Timestamp:
2020-09-23T14:54:56+02:00 (4 years ago)
Author:
GerdP
Message:

see #19793: Memory leaks: Bad programming pattern reg. listeners
SearchDialog did not remove TaggingPresetListener

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/SearchDialog.java

    r16581 r17055  
    6969    private JRadioButton remove;
    7070    private JRadioButton inSelection;
    71 
     71    private TaggingPresetSelector selector;
    7272    /**
    7373     * Constructs a new {@code SearchDialog}.
     
    232232         * if the corresponding group of the preset exists, otherwise it is simply ' presetName'.
    233233         */
    234         TaggingPresetSelector selector = new TaggingPresetSelector(false, false);
     234        selector = new TaggingPresetSelector(false, false);
    235235        selector.setBorder(BorderFactory.createTitledBorder(tr("Search by preset")));
    236236        selector.setDblClickListener(ev -> setPresetDblClickListener(selector, editorComponent));
     
    532532        }
    533533    }
     534
     535    @Override
     536    public void dispose() {
     537        if (selector != null)
     538            selector.destroy();
     539        super.dispose();
     540    }
    534541}
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java

    r16643 r17055  
    4747import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
    4848import org.openstreetmap.josm.gui.widgets.SearchTextResultListPanel;
     49import org.openstreetmap.josm.tools.Destroyable;
    4950import org.openstreetmap.josm.tools.Utils;
    5051
     
    5455 */
    5556public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPreset>
    56         implements DataSelectionListener, TaggingPresetListener {
     57        implements DataSelectionListener, TaggingPresetListener, Destroyable {
    5758
    5859    private static final int CLASSIFICATION_IN_FAVORITES = 300;
     
    465466        classifications.loadPresets(TaggingPresets.getTaggingPresets());
    466467    }
     468
     469    @Override
     470    public void destroy() {
     471        TaggingPresets.removeListener(this);
     472    }
     473
    467474}
Note: See TracChangeset for help on using the changeset viewer.