mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-21 07:55:24 +02:00
Fix for 217776: Keep namespaces open in Outline view (follow-up)
This commit is contained in:
parent
12348ba297
commit
07fd280fc9
1 changed files with 22 additions and 6 deletions
|
@ -95,6 +95,7 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent
|
||||||
/*
|
/*
|
||||||
* @see TreeViewer#internalExpandToLevel
|
* @see TreeViewer#internalExpandToLevel
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
protected void internalExpandToLevel(Widget node, int level) {
|
protected void internalExpandToLevel(Widget node, int level) {
|
||||||
if (node instanceof Item) {
|
if (node instanceof Item) {
|
||||||
Item i= (Item) node;
|
Item i= (Item) node;
|
||||||
|
@ -103,17 +104,32 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent
|
||||||
if (data instanceof CElementGrouping) {
|
if (data instanceof CElementGrouping) {
|
||||||
return;
|
return;
|
||||||
} else if (data instanceof ICElement) {
|
} else if (data instanceof ICElement) {
|
||||||
// expand classes and namespaces
|
if (!shouldExpandElement((ICElement)data)) {
|
||||||
final int elementType = ((ICElement) data).getElementType();
|
|
||||||
if (elementType != ICElement.C_CLASS
|
|
||||||
&& elementType != ICElement.C_TEMPLATE_CLASS
|
|
||||||
&& elementType != ICElement.C_NAMESPACE) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.internalExpandToLevel(node, level);
|
super.internalExpandToLevel(node, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean shouldExpandElement(ICElement cElement) {
|
||||||
|
final ICElement parent= cElement.getParent();
|
||||||
|
if (parent == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// expand classes and namespaces
|
||||||
|
final int elementType= cElement.getElementType();
|
||||||
|
final int parentType= parent.getElementType();
|
||||||
|
switch (elementType) {
|
||||||
|
case ICElement.C_CLASS:
|
||||||
|
case ICElement.C_TEMPLATE_CLASS:
|
||||||
|
return parentType == ICElement.C_UNIT || parentType == ICElement.C_NAMESPACE;
|
||||||
|
case ICElement.C_NAMESPACE:
|
||||||
|
return parentType == ICElement.C_UNIT;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static class IncludeGroupingAction extends Action {
|
protected static class IncludeGroupingAction extends Action {
|
||||||
|
@ -279,7 +295,7 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent
|
||||||
fTreeViewer = new OutlineTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
fTreeViewer = new OutlineTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||||
fTreeViewer.setContentProvider(createContentProvider(fTreeViewer));
|
fTreeViewer.setContentProvider(createContentProvider(fTreeViewer));
|
||||||
fTreeViewer.setLabelProvider(new DecoratingCLabelProvider(new AppearanceAwareLabelProvider(TEXT_FLAGS, IMAGE_FLAGS), true));
|
fTreeViewer.setLabelProvider(new DecoratingCLabelProvider(new AppearanceAwareLabelProvider(TEXT_FLAGS, IMAGE_FLAGS), true));
|
||||||
fTreeViewer.setAutoExpandLevel(2);
|
fTreeViewer.setAutoExpandLevel(3);
|
||||||
fTreeViewer.setUseHashlookup(true);
|
fTreeViewer.setUseHashlookup(true);
|
||||||
fTreeViewer.addSelectionChangedListener(this);
|
fTreeViewer.addSelectionChangedListener(this);
|
||||||
return fTreeViewer;
|
return fTreeViewer;
|
||||||
|
|
Loading…
Add table
Reference in a new issue