Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Fix for bug 45688: Must highlight keyword to use "Open Declarations"


This patch enables Open Declaration to work without having to select a word - you just need to have the cursor over a word. It also fixes a potential NPE in the TestSuite caused by a resource being deleted before the UpdateDependency job has a chance to run.

Automation Suite run on Windows + Linux.

This patch should be applied to both 1.2 and Head.

- Bogdan

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.203.2.5
diff -u -r1.203.2.5 ChangeLog
--- ChangeLog	5 Nov 2003 18:15:01 -0000	1.203.2.5
+++ ChangeLog	10 Nov 2003 15:24:56 -0000
@@ -1,3 +1,6 @@
+2003-11-10 Bogdan Gheorghe
+	fix bug 45688: must highlight keyword  to use "Open Declarations" or  "Add Include"
+	
 2003-11-05 John Camelon
 	Updated parser clients to use new IProblem strategy.  
 
Index: src/org/eclipse/cdt/internal/ui/editor/OpenDeclarationsAction.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OpenDeclarationsAction.java,v
retrieving revision 1.2.2.1
diff -u -r1.2.2.1 OpenDeclarationsAction.java
--- src/org/eclipse/cdt/internal/ui/editor/OpenDeclarationsAction.java	3 Nov 2003 14:00:48 -0000	1.2.2.1
+++ src/org/eclipse/cdt/internal/ui/editor/OpenDeclarationsAction.java	10 Nov 2003 15:24:56 -0000
@@ -27,12 +27,14 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.ITextSelection;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.texteditor.IDocumentProvider;
 
 /**
  * This action opens a java CEditor on the element represented by text selection of
@@ -105,6 +107,15 @@
 			try {
 				ArrayList elementsFound = new ArrayList();
 				String sel = selection.getText();
+				if (sel.equals(""))
+				{
+					int selStart =  selection.getOffset();
+					
+					IDocumentProvider prov = fEditor.getDocumentProvider();
+					IDocument doc = prov.getDocument(fEditor.getEditorInput());
+					sel = getSelection(doc, selStart);
+				}
+				
 				IFile file = fEditor.getInputFile();
 				if(file == null)
 					return;
@@ -202,6 +213,39 @@
 			}
 		}		
 		return null;
-	}					
+	}	
+	
+
+	public String getSelection(IDocument doc, int fPos){
+		int pos= fPos;
+		char c;
+		int fStartPos =0, fEndPos=0;
+		String selectedWord=null;
+		
+		try{
+			while (pos >= 0) {
+				c= doc.getChar(pos);
+				if (!Character.isJavaIdentifierPart(c))
+					break;
+				--pos;
+			}
+			fStartPos= pos + 1;
+			
+			pos= fPos;
+			int length= doc.getLength();
+			while (pos < length) {
+				c= doc.getChar(pos);
+				if (!Character.isJavaIdentifierPart(c))
+					break;
+				++pos;
+			}
+			fEndPos= pos;
+			selectedWord = doc.get(fStartPos, (fEndPos - fStartPos));
+		}
+		catch(BadLocationException e){
+		}
+	
+		return selectedWord;		
+	}
 }
 
Index: dependency/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dependency/ChangeLog,v
retrieving revision 1.5.2.1
diff -u -r1.5.2.1 ChangeLog
--- dependency/ChangeLog	27 Oct 2003 20:44:57 -0000	1.5.2.1
+++ dependency/ChangeLog	10 Nov 2003 15:26:24 -0000
@@ -1,3 +1,7 @@
+2003-11-10 Bogdan Gheorghe
+	- Added a null resource check in UpdateDependency to fix up
+	  a potential NPE in the test suite
+	
 2003-10-23 Bogdan Gheorghe
 	- Added UpdateDependency job
 	
Index: dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 UpdateDependency.java
--- dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java	27 Oct 2003 20:44:57 -0000	1.1.2.1
+++ dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java	10 Nov 2003 15:26:24 -0000
@@ -58,7 +58,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.search.processing.IJob#execute(org.eclipse.core.runtime.IProgressMonitor)
 	 */
-	public boolean execute(IProgressMonitor progress) {		
+	public boolean execute(IProgressMonitor progress) {	
+		if (resource == null) return false;	
+		  
 		PathCollector pathCollector = new PathCollector();
 			//SubProgressMonitor subMonitor = (progressMonitor == null ) ? null : new SubProgressMonitor( progressMonitor, 5 );
 			ICSearchScope scope = SearchEngine.createWorkspaceScope();

Back to the top