Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Fix PR 36584

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.92
diff -u -r1.92 ChangeLog
--- ChangeLog	16 Apr 2003 18:46:53 -0000	1.92
+++ ChangeLog	17 Apr 2003 16:53:21 -0000
@@ -1,3 +1,15 @@
+2003-04-17 Alain Magloire
+
+	Bug 36584
+	
+	When switching the through the CEditor the range was not 
+	save.
+	
+	* src/org/eclipse/cdt/internal/ui/editor/CEditor.java:
+	setSelection(ICElement), new method
+	* src/org/eclipse/cdt/internal/util/EditorUtility.java:
+	revealInEditor use setSelection(ICElement).
+
 2003-04-16 Alain Magloire
 
 	Bug 36582
Index: src/org/eclipse/cdt/internal/ui/editor/CEditor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java,v
retrieving revision 1.21
diff -u -r1.21 CEditor.java
--- src/org/eclipse/cdt/internal/ui/editor/CEditor.java	7 Apr 2003 16:52:40 -0000	1.21
+++ src/org/eclipse/cdt/internal/ui/editor/CEditor.java	17 Apr 2003 16:53:21 -0000
@@ -14,8 +14,10 @@
 
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.core.model.ISourceRange;
 import org.eclipse.cdt.core.model.ISourceReference;
+import org.eclipse.cdt.core.model.ITranslationUnit;
 import org.eclipse.cdt.internal.ui.IContextMenuConstants;
 import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
 import org.eclipse.cdt.internal.ui.text.CTextTools;
@@ -578,6 +580,37 @@
 		}
 	}
 	
+	public void setSelection(ICElement element) {
+
+		if (element == null || element instanceof ITranslationUnit) {
+			/*
+			 * If the element is an ITranslationUnit this unit is either the input
+			 * of this editor or not being displayed. In both cases, nothing should
+			 * happened.
+			 */
+			return;
+		} if (element instanceof ISourceReference) {
+			ISourceReference reference= (ISourceReference) element;
+			// set hightlight range
+			setSelection(reference, true);
+			// set outliner selection
+			//if (fOutlinePage != null) {
+			//	fOutlinePage.removeSelectionChangedListener(fSelectionChangedListener);
+			//	fOutlinePage.select(reference);
+			//	fOutlinePage.addSelectionChangedListener(fSelectionChangedListener);
+			//}
+		}
+	}
+
+	public void setSelection(ISourceReference element, boolean moveCursor) {
+		if (element != null) {
+			try {
+				setSelection(element.getSourceRange(), moveCursor);
+			} catch (CModelException e) {
+			}
+		}
+	}
+
 	/**
 	 * Sets the current editor selection to the source range. Optionally
 	 * sets the current editor position.
@@ -586,50 +619,52 @@
 	 * @param moveCursor if true the editor is scrolled to show the range.
 	 */
 	public void setSelection(ISourceRange element, boolean moveCursor) {
-		if (element != null) {
-			try {
-				IRegion alternateRegion = null;
-				int start= element.getStartPos();
-				int length= element.getLength();
-
-				// Sanity check sometimes the parser may throw wrong numbers.
-				if (start < 0 || length < 0) {
-					start = 0;                              
-					length = 0;
-				}
-
-				// 0 length and start and non-zero start line says we know
-				// the line for some reason, but not the offset.
-				if (length == 0 && start == 0 && element.getStartLine() != 0) {
-					alternateRegion = 
-						getDocumentProvider().getDocument(getEditorInput()).getLineInformation(element.getStartLine());
-					if (alternateRegion != null) {
-						start = alternateRegion.getOffset();
-						length = alternateRegion.getLength();
-					}
+
+		if (element == null) {
+			return;
+		}
+
+		try {
+			IRegion alternateRegion = null;
+			int start= element.getStartPos();
+			int length= element.getLength();
+
+			// Sanity check sometimes the parser may throw wrong numbers.
+			if (start < 0 || length < 0) {
+				start = 0;                              
+				length = 0;
+			}
+
+			// 0 length and start and non-zero start line says we know
+			// the line for some reason, but not the offset.
+			if (length == 0 && start == 0 && element.getStartLine() != 0) {
+				alternateRegion = 
+					getDocumentProvider().getDocument(getEditorInput()).getLineInformation(element.getStartLine());
+				if (alternateRegion != null) {
+					start = alternateRegion.getOffset();
+					length = alternateRegion.getLength();
 				}
-				setHighlightRange(start, length, moveCursor);
+			}
+			setHighlightRange(start, length, moveCursor);
 				
-				if (moveCursor) {
-					start= element.getIdStartPos();
-					length= element.getIdLength();
-					if (start == 0 && length == 0 && alternateRegion != null) {
-						start = alternateRegion.getOffset();
-						length = alternateRegion.getLength();
-					}
-					if (start > -1 && getSourceViewer() != null) {
-						getSourceViewer().revealRange(start, length);
-						getSourceViewer().setSelectedRange(start, length);
-					}
-					updateStatusField(CTextEditorActionConstants.STATUS_CURSOR_POS);
+			if (moveCursor) {
+				start= element.getIdStartPos();
+				length= element.getIdLength();
+				if (start == 0 && length == 0 && alternateRegion != null) {
+					start = alternateRegion.getOffset();
+					length = alternateRegion.getLength();
+				}
+				if (start > -1 && getSourceViewer() != null) {
+					getSourceViewer().revealRange(start, length);
+					getSourceViewer().setSelectedRange(start, length);
 				}
-				return;
-				
-			} catch (IllegalArgumentException x) {
-			} catch (BadLocationException e ) {
+				updateStatusField(CTextEditorActionConstants.STATUS_CURSOR_POS);
 			}
+			return;
+		} catch (IllegalArgumentException x) {
+		} catch (BadLocationException e ) {
 		}
-		
+
 		if (moveCursor)
 			resetHighlightRange();
 	}	
Index: src/org/eclipse/cdt/internal/ui/util/EditorUtility.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java,v
retrieving revision 1.8
diff -u -r1.8 EditorUtility.java
--- src/org/eclipse/cdt/internal/ui/util/EditorUtility.java	2 Apr 2003 15:06:10 -0000	1.8
+++ src/org/eclipse/cdt/internal/ui/util/EditorUtility.java	17 Apr 2003 16:53:22 -0000
@@ -102,13 +102,7 @@
 	 */     
 	public static void revealInEditor(IEditorPart part, ICElement element) {
 		if (element != null && part instanceof CEditor) {
-			if (element instanceof ISourceReference) {
-				try {
-					ISourceRange range = ((ISourceReference) element).getSourceRange();
-					((CEditor) part).setSelection(range, true);
-				} catch (CModelException e) {
-				}
-			}
+			((CEditor) part).setSelection(element);
 		}
 	}
 



Back to the top