From 52deae97f4f5483d3f23ca047795a190cad092a6 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Wed, 13 Dec 2006 16:10:24 +0000 Subject: [PATCH] Fix some more outline view label and synchronization issues --- .../cdt/internal/core/model/ASTStringUtil.java | 1 + .../cdt/internal/core/model/CModelBuilder2.java | 15 +++++++++++++-- .../eclipse/cdt/internal/ui/editor/CEditor.java | 4 ++-- .../internal/ui/viewsupport/CElementLabels.java | 14 ++++++++++---- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ASTStringUtil.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ASTStringUtil.java index 76b3c83a4e5..2991d92b829 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ASTStringUtil.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ASTStringUtil.java @@ -521,6 +521,7 @@ public class ASTStringUtil { appendQualifiedNameString(buffer, elaboratedTypeSpec.getName()); } else if (declSpecifier instanceof IASTEnumerationSpecifier) { final IASTEnumerationSpecifier enumerationSpec= (IASTEnumerationSpecifier)declSpecifier; + buffer.append(Keywords.ENUM).append(' '); appendQualifiedNameString(buffer, enumerationSpec.getName()); } else if (declSpecifier instanceof IASTSimpleDeclSpecifier) { final IASTSimpleDeclSpecifier simpleDeclSpec= (IASTSimpleDeclSpecifier)declSpecifier; diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java index e4b0a09bf93..975776ba8e6 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java @@ -218,6 +218,8 @@ public class CModelBuilder2 implements IContributedModelBuilder { * @see org.eclipse.cdt.core.model.IContributedModelBuilder#parse(boolean) */ public void parse(boolean quickParseMode) throws Exception { + // always parse fast + quickParseMode= true; IIndex index= CCorePlugin.getIndexManager().getIndex(fTranslationUnit.getCProject()); try { if (index != null) { @@ -541,8 +543,7 @@ public class CModelBuilder2 implements IContributedModelBuilder { } } } - final CElement compositeType= createCompositeType(parent, (IASTCompositeTypeSpecifier)declSpecifier, isTemplate); - return compositeType; + return createCompositeType(parent, (IASTCompositeTypeSpecifier)declSpecifier, isTemplate); } else if (declSpecifier instanceof IASTElaboratedTypeSpecifier) { if (declarator == null) { return createElaboratedTypeDeclaration(parent, (IASTElaboratedTypeSpecifier)declSpecifier, isTemplate); @@ -550,6 +551,16 @@ public class CModelBuilder2 implements IContributedModelBuilder { return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate); } } else if (declSpecifier instanceof IASTEnumerationSpecifier) { + if (declarator != null) { + // create type nested + CElement element= createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate); + if (element instanceof IParent) { + parent= (Parent)element; + if (!isTemplate) { + setBodyPosition((SourceManipulation)element, declSpecifier.getParent()); + } + } + } return createEnumeration(parent, (IASTEnumerationSpecifier)declSpecifier); } else if (declSpecifier instanceof IASTNamedTypeSpecifier) { return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java index 2934a0742eb..4b5fd816555 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java @@ -1884,10 +1884,10 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR int caret= 0; if (sourceViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5)sourceViewer; - caret= extension.widgetOffset2ModelOffset(styledText.getCaretOffset()); + caret= extension.widgetOffset2ModelOffset(styledText.getSelection().x); } else { int offset= sourceViewer.getVisibleRegion().getOffset(); - caret= offset + styledText.getCaretOffset(); + caret= offset + styledText.getSelection().x; } ICElement element= getElementAt(caret, false); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java index ffe8565585f..2bcf075d9e9 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java @@ -533,8 +533,11 @@ public class CElementLabels { } if( getFlag( flags, M_APP_RETURNTYPE ) && func.exists()) { - buf.append( DECL_STRING ); - buf.append( func.getReturnType() ); + String typeName= func.getReturnType(); + if (typeName != null && typeName.length() > 0) { + buf.append( DECL_STRING ); + buf.append(typeName); + } } // post qualification @@ -573,8 +576,11 @@ public class CElementLabels { buf.append( typedef.getElementName() ); if( getFlag( flags, F_APP_TYPE_SIGNATURE ) && typedef.exists()) { - buf.append( DECL_STRING ); - buf.append( typedef.getTypeName() ); + String typeName= typedef.getTypeName(); + if (typeName != null && typeName.length() > 0) { + buf.append( DECL_STRING ); + buf.append(typeName); + } } // post qualification