diff --git a/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/Bookmark.java b/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/Bookmark.java --- a/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/Bookmark.java +++ b/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/Bookmark.java @@ -196,6 +196,10 @@ lineToAnnotation.remove (line); } + void detachAnnotation() { + annotation.detach(); + } + BookmarkInfo info() { return info; } diff --git a/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/BookmarkList.java b/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/BookmarkList.java --- a/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/BookmarkList.java +++ b/editor.bookmarks/src/org/netbeans/lib/editor/bookmarks/api/BookmarkList.java @@ -61,6 +61,7 @@ import javax.swing.text.Element; import javax.swing.text.Position; import org.netbeans.api.annotations.common.NonNull; +import org.netbeans.api.editor.EditorRegistry; import org.netbeans.modules.editor.NbEditorUtilities; import org.netbeans.modules.editor.bookmarks.BookmarkChange; @@ -149,7 +150,18 @@ } }; + + private PropertyChangeListener componentRemovedListener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (EditorRegistry.COMPONENT_REMOVED_PROPERTY.equals(evt.getPropertyName())) { + for (Bookmark bookmark: bookmarks) { + bookmark.detachAnnotation(); + } + } + } + }; private boolean pendingFireChange; private BookmarkList(final Document document) { @@ -159,7 +171,7 @@ this.document = document; this.bookmarks = new ArrayList (); this.info2bookmark = new HashMap(); - + EditorRegistry.addPropertyChangeListener(componentRemovedListener); BookmarkUtils.postTask(new Runnable() { @Override public void run() {