diff options
author | Pawel Piech | 2013-02-06 21:33:15 +0000 |
---|---|---|
committer | Mike Rennie | 2013-02-06 21:33:15 +0000 |
commit | ff948dc0f00a50d9679b69d8065bfc3d3ea7c081 (patch) | |
tree | fabb2271a31c4f73d4910ddbd95e519de628d176 /org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model | |
parent | bbea51989eac9c9221e99947c2bb9be25e33386c (diff) | |
download | eclipse.platform.debug-ff948dc0f00a50d9679b69d8065bfc3d3ea7c081.tar.gz eclipse.platform.debug-ff948dc0f00a50d9679b69d8065bfc3d3ea7c081.tar.xz eclipse.platform.debug-ff948dc0f00a50d9679b69d8065bfc3d3ea7c081.zip |
Bug 399628 - IllegalArgumentException in InternalTreeModelViewer#insertv20130206-213315I20130212-0800
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java index 4f6bd9d9f..5a8f563fc 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java @@ -1365,20 +1365,21 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon TreePath parentPath = getViewerTreePath(delta.getParentDelta()); Object element = delta.getElement(); int modelIndex = delta.getIndex(); - if (modelIndex >= 0) { - int viewIndex = modelToViewIndex(parentPath, modelIndex); - if (viewIndex >= 0) { - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("handleInsert(" + parentPath.getLastSegment() + ", (model) " + modelIndex + " (view) " + viewIndex + ", " + element); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - } - getViewer().insert(parentPath, element, viewIndex); - } else { - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("[filtered] handleInsert(" + delta.getElement() + ") > modelIndex: " + modelIndex); //$NON-NLS-1$ //$NON-NLS-2$ - } - // Element is filtered - do not insert + int viewIndex = modelIndex >= 0 ? modelToViewIndex(parentPath, modelIndex) : -1; + int viewCount = getViewer().getChildCount(parentPath); + if (viewIndex >= 0 && viewIndex <= viewCount) { + // Index in range, insert. + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("handleInsert(" + parentPath.getLastSegment() + ", (model) " + modelIndex + " (view) " + viewIndex + ", " + element); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + } + getViewer().insert(parentPath, element, viewIndex); + } else if (modelIndex >= 0 && viewIndex < 0) { + // Element is filtered - do not insert + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("[filtered] handleInsert(" + delta.getElement() + ") > modelIndex: " + modelIndex); //$NON-NLS-1$ //$NON-NLS-2$ } } else { + // Invalid index given, do a refresh instead. if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { DebugUIPlugin.trace("handleInsert(" + delta.getElement() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ } |