mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-29 11:55:40 +02:00
Fix for bug 141484 - Data loss when dnd elements in C/C++ Project browser
This commit is contained in:
parent
406419e29a
commit
7fc9ce0335
4 changed files with 21 additions and 11 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2004 QNX Software Systems and others.
|
* Copyright (c) 2000, 2006 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Anton Leherbauer (Wind River Systems) - Fixed bug 141484
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.core.model;
|
package org.eclipse.cdt.internal.core.model;
|
||||||
|
@ -86,10 +87,10 @@ public class CopyElementsOperation extends MultiOperation {
|
||||||
* Returns the nested operation to use for processing this element
|
* Returns the nested operation to use for processing this element
|
||||||
*/
|
*/
|
||||||
protected CModelOperation getNestedOperation(ICElement element) {
|
protected CModelOperation getNestedOperation(ICElement element) {
|
||||||
ITranslationUnit unit = getDestinationTranslationUnit(element);
|
ICElement parentElement = getDestinationParent(element);
|
||||||
String name = element.getElementName();
|
String name = element.getElementName();
|
||||||
int type = element.getElementType();
|
int type = element.getElementType();
|
||||||
return new CreateSourceReferenceOperation(unit, name, type, getSourceFor(element));
|
return new CreateSourceReferenceOperation(parentElement, name, type, getSourceFor(element));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ITranslationUnit getDestinationTranslationUnit(ICElement element) {
|
protected ITranslationUnit getDestinationTranslationUnit(ICElement element) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2005 QNX Software Systems and others.
|
* Copyright (c) 2002, 2006 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,12 +7,14 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Anton Leherbauer (Wind River Systems) - Fixed bug 141484
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.core.model;
|
package org.eclipse.cdt.internal.core.model;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.CModelException;
|
import org.eclipse.cdt.core.model.CModelException;
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
|
import org.eclipse.cdt.core.model.IParent;
|
||||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -56,9 +58,9 @@ public class CreateSourceReferenceOperation extends CreateElementInTUOperation {
|
||||||
* @see org.eclipse.cdt.internal.core.model.CreateElementInTUOperation#generateResultHandle()
|
* @see org.eclipse.cdt.internal.core.model.CreateElementInTUOperation#generateResultHandle()
|
||||||
*/
|
*/
|
||||||
protected ICElement generateResultHandle() {
|
protected ICElement generateResultHandle() {
|
||||||
ITranslationUnit unit = getTranslationUnit();
|
IParent parent = (IParent)getParentElement();
|
||||||
try {
|
try {
|
||||||
ICElement[] celements = unit.getChildren();
|
ICElement[] celements = parent.getChildren();
|
||||||
for (int i = 0; i < celements.length; ++i) {
|
for (int i = 0; i < celements.length; ++i) {
|
||||||
if (celements[i].getElementType() == fElementType) {
|
if (celements[i].getElementType() == fElementType) {
|
||||||
String name = celements[i].getElementName();
|
String name = celements[i].getElementName();
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#
|
#
|
||||||
# Contributors:
|
# Contributors:
|
||||||
# IBM Corporation - initial API and implementation
|
# IBM Corporation - initial API and implementation
|
||||||
|
# Anton Leherbauer (Wind River Systems) - Fixed bug 141484
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,3 +63,7 @@ CView.statusLine = {0} items selected
|
||||||
|
|
||||||
CopyToClipboardProblemDialog_title=Problem Copying to Clipboard
|
CopyToClipboardProblemDialog_title=Problem Copying to Clipboard
|
||||||
CopyToClipboardProblemDialog_message=There was a problem when accessing the system clipboard. Retry?
|
CopyToClipboardProblemDialog_message=There was a problem when accessing the system clipboard. Retry?
|
||||||
|
|
||||||
|
SelectionTransferDropAdapter.error.title=Drag and Drop Problem
|
||||||
|
SelectionTransferDropAdapter.error.message=A problem occurred during Drag and Drop.
|
||||||
|
SelectionTransferDropAdapter.error.exception=An unexpected exception occurred during Drag and Drop.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2005 QNX Software Systems and others.
|
* Copyright (c) 2002, 2006 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Anton Leherbauer (Wind River Systems) - Fixed bug 141484
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.ui.cview;
|
package org.eclipse.cdt.internal.ui.cview;
|
||||||
|
@ -19,7 +20,6 @@ import java.util.List;
|
||||||
import org.eclipse.cdt.core.model.CModelException;
|
import org.eclipse.cdt.core.model.CModelException;
|
||||||
import org.eclipse.cdt.core.model.CoreModel;
|
import org.eclipse.cdt.core.model.CoreModel;
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.core.model.ICProject;
|
|
||||||
import org.eclipse.cdt.core.model.ISourceReference;
|
import org.eclipse.cdt.core.model.ISourceReference;
|
||||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||||
import org.eclipse.cdt.internal.ui.dnd.CDTViewerDropAdapter;
|
import org.eclipse.cdt.internal.ui.dnd.CDTViewerDropAdapter;
|
||||||
|
@ -143,7 +143,7 @@ public class SelectionTransferDropAdapter extends CDTViewerDropAdapter implement
|
||||||
} catch (CModelException e){
|
} catch (CModelException e){
|
||||||
ExceptionHandler.handle(e, CViewMessages.getString("SelectionTransferDropAdapter.error.title"), CViewMessages.getString("SelectionTransferDropAdapter.error.message")); //$NON-NLS-1$ //$NON-NLS-2$
|
ExceptionHandler.handle(e, CViewMessages.getString("SelectionTransferDropAdapter.error.title"), CViewMessages.getString("SelectionTransferDropAdapter.error.message")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
} catch(InvocationTargetException e) {
|
} catch(InvocationTargetException e) {
|
||||||
ExceptionHandler.handle(e, CViewMessages.getString("OpenRefactoringWizardAction.refactoring"), CViewMessages.getString("OpenRefactoringWizardAction.exception")); //$NON-NLS-1$ //$NON-NLS-2$
|
ExceptionHandler.handle(e, CViewMessages.getString("SelectionTransferDropAdapter.error.title"), CViewMessages.getString("SelectionTransferDropAdapter.error.exception")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
//ok
|
//ok
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -162,7 +162,7 @@ public class SelectionTransferDropAdapter extends CDTViewerDropAdapter implement
|
||||||
}
|
}
|
||||||
|
|
||||||
private int handleValidateMove(Object target, DropTargetEvent event) throws CModelException {
|
private int handleValidateMove(Object target, DropTargetEvent event) throws CModelException {
|
||||||
if (target == null) {
|
if (target == null || fElements.contains(target)) {
|
||||||
return DND.DROP_NONE;
|
return DND.DROP_NONE;
|
||||||
}
|
}
|
||||||
if (fMoveData == null) {
|
if (fMoveData == null) {
|
||||||
|
@ -247,10 +247,12 @@ public class SelectionTransferDropAdapter extends CDTViewerDropAdapter implement
|
||||||
}
|
}
|
||||||
|
|
||||||
private int handleValidateCopy(Object target, DropTargetEvent event) throws CModelException{
|
private int handleValidateCopy(Object target, DropTargetEvent event) throws CModelException{
|
||||||
|
if (target == null) {
|
||||||
|
return DND.DROP_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
if (fCopyData == null) {
|
if (fCopyData == null) {
|
||||||
ICElement[] cElements= getCElements(fElements);
|
ICElement[] cElements= getCElements(fElements);
|
||||||
ICProject project= null;
|
|
||||||
if (cElements != null && cElements.length > 0) {
|
if (cElements != null && cElements.length > 0) {
|
||||||
fCopyData= cElements;
|
fCopyData= cElements;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue