1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 113114: Expanding Modules View throws SWTError: No more handles.

This commit is contained in:
Mikhail Khodjaiants 2005-10-19 19:58:36 +00:00
parent 6f2faec4eb
commit 4eb41a0f15
2 changed files with 28 additions and 1 deletions

View file

@ -1,3 +1,7 @@
2005-10-19 Mikhail Khodjaiants
Bug 113114: Expanding Modules View throws SWTError: No more handles.
* ModulesView.java
2005-09-06 Mikhail Khodjaiants
Cleanup: replaced "new Boolean" by the static Boolean objects (Java 1.4).
* QuestionStatusHandler.java

View file

@ -11,6 +11,8 @@
package org.eclipse.cdt.debug.internal.ui.views.modules;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.debug.core.model.ICDebugElement;
@ -123,7 +125,7 @@ public class ModulesView extends AbstractDebugEventHandlerView implements IDebug
if ( de != null ) {
ImageDescriptor descriptor = de.getImageDescriptor( element );
if ( descriptor != null ) {
image = descriptor.createImage();
image = ModulesView.this.getImage( descriptor );
}
}
}
@ -327,6 +329,8 @@ public class ModulesView extends AbstractDebugEventHandlerView implements IDebug
private HashMap fSelectionStates = new HashMap( 10 );
private AbstractViewerState fLastState = null;
private HashMap fImageCache = new HashMap( 10 );
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractDebugView#createViewer(org.eclipse.swt.widgets.Composite)
@ -989,10 +993,29 @@ public class ModulesView extends AbstractDebugEventHandlerView implements IDebug
if ( viewer != null ) {
getDetailDocument().removeDocumentListener( getDetailDocumentListener() );
}
disposeImageCache();
super.dispose();
}
private AbstractViewerState getViewerState() {
return new ModulesViewerState( getModulesViewer() );
}
protected Image getImage( ImageDescriptor desc ) {
Image image = (Image)fImageCache.get( desc );
if ( image == null ) {
image = desc.createImage();
fImageCache.put( desc, image );
}
return image;
}
private void disposeImageCache() {
Iterator it = fImageCache.values().iterator();
while( it.hasNext() ) {
Map.Entry entry = (Map.Entry)it.next();
((Image)entry.getValue()).dispose();
}
fImageCache.clear();
}
}