1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-26 02:15:31 +02:00

[194602] Kevin's patch for Double Clicking on Folder sometimes expands wrong folder

This commit is contained in:
David McKnight 2007-06-29 14:26:04 +00:00
parent bf65ff0dec
commit ea0c061e2c

View file

@ -28,6 +28,7 @@
* Martin Oberhuber (Wind River) - [186964] Fix adapter actions for multiselect, and and NPE * Martin Oberhuber (Wind River) - [186964] Fix adapter actions for multiselect, and and NPE
* Martin Oberhuber (Wind River) - [186991] Avoid remote refresh if no element is remote * Martin Oberhuber (Wind River) - [186991] Avoid remote refresh if no element is remote
* Martin Oberhuber (Wind River) - [190271] Move ISystemViewInputProvider to Core * Martin Oberhuber (Wind River) - [190271] Move ISystemViewInputProvider to Core
* Kevin Doyle (IBM) - [194602] handleDoubleClick does expand/collapse on treepath instead of element
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.ui.view; package org.eclipse.rse.internal.ui.view;
@ -66,6 +67,7 @@ import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.ITreePathContentProvider; import org.eclipse.jface.viewers.ITreePathContentProvider;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.ITreeViewerListener; import org.eclipse.jface.viewers.ITreeViewerListener;
import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredSelection;
@ -506,12 +508,17 @@ public class SystemView extends SafeTreeViewer
//event.doit = false; //event.doit = false;
return; return;
} }
IStructuredSelection s = (IStructuredSelection) event.getSelection(); ITreeSelection s = (ITreeSelection) event.getSelection();
Object element = s.getFirstElement(); Object element = s.getFirstElement();
if (element == null) return; if (element == null) return;
if (isExpandable(element)) { // Get the path for the element and use it for setting expanded state,
boolean expandedState = getExpandedState(element); // so the proper TreeItem is expanded/collapsed
setExpandedState(element, !expandedState); TreePath[] paths = s.getPathsFor(element);
if (paths == null || paths.length == 0 || paths[0] == null) return;
TreePath elementPath = paths[0];
if (isExpandable(elementPath)) {
boolean expandedState = getExpandedState(elementPath);
setExpandedState(elementPath, !expandedState);
// DY: fire collapse / expand event // DY: fire collapse / expand event
if (expandedState) { if (expandedState) {
fireTreeCollapsed(new TreeExpansionEvent(this, element)); fireTreeCollapsed(new TreeExpansionEvent(this, element));
@ -2103,16 +2110,20 @@ public class SystemView extends SafeTreeViewer
// if it's NOT a container, pass in it's parent // if it's NOT a container, pass in it's parent
ISystemViewElementAdapter adapter = getViewAdapter(src); ISystemViewElementAdapter adapter = getViewAdapter(src);
if (adapter != null) if (adapter != null)
{ {
// we need to refresh filters // we need to refresh filters
ISystemRegistry sr = RSECorePlugin.getTheSystemRegistry(); ISystemRegistry sr = RSECorePlugin.getTheSystemRegistry();
List filterReferences = sr.findFilterReferencesFor(src, adapter.getSubSystem(src), false); List filterReferences = sr.findFilterReferencesFor(src, adapter.getSubSystem(src), false);
// if filters reference this resource we need them refreshed // if filters reference this resource we need them refreshed
for (int f = 0; f < filterReferences.size(); f++) for (int f = 0; f < filterReferences.size(); f++)
{ {
ISystemFilterReference ref = (ISystemFilterReference)filterReferences.get(f); ISystemFilterReference ref = (ISystemFilterReference)filterReferences.get(f);
ref.markStale(true); if (!ref.isStale())
smartRefresh(ref, true); {
ref.markStale(true);
smartRefresh(ref, true);
}
} }
@ -2168,6 +2179,9 @@ public class SystemView extends SafeTreeViewer
} }
refreshRemoteObject(src, parent, originatedHere); refreshRemoteObject(src, parent, originatedHere);
break; break;
case ISystemResourceChangeEvents.EVENT_SELECT_REMOTE: case ISystemResourceChangeEvents.EVENT_SELECT_REMOTE:
if (debug) logDebugMsg("SV event: EVENT_SELECT_REMOTE: src = " + src); //$NON-NLS-1$ if (debug) logDebugMsg("SV event: EVENT_SELECT_REMOTE: src = " + src); //$NON-NLS-1$
@ -3402,7 +3416,13 @@ public class SystemView extends SafeTreeViewer
//item = (Item)recursiveFindRemoteItem(itemToExpand.parentItem, itemToExpand.remoteName, itemToExpand.subsystem); //item = (Item)recursiveFindRemoteItem(itemToExpand.parentItem, itemToExpand.remoteName, itemToExpand.subsystem);
//else //else
//item = (Item)findRemoteItem(itemToExpand.remoteName, itemToExpand.subsystem); //item = (Item)findRemoteItem(itemToExpand.remoteName, itemToExpand.subsystem);
//************************************************************///
// FIXME!!
// TODO
// DKM - problem here is that if a query is in progress, then we won't find it untli the deferred query completes
item = findFirstRemoteItemReference(itemToExpand.remoteName, itemToExpand.subsystem, itemToExpand.parentItem); item = findFirstRemoteItemReference(itemToExpand.remoteName, itemToExpand.subsystem, itemToExpand.parentItem);
//************************************************************///
// if found, re-expand it // if found, re-expand it
if (item != null) { if (item != null) {
//setExpanded(item, true); //setExpanded(item, true);