summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarolyn MacLeod <Carolyn_MacLeod@ca.ibm.com>2013-02-05 16:16:23 -0500
committerCarolyn MacLeod <Carolyn_MacLeod@ca.ibm.com>2013-02-05 16:16:23 -0500
commit1a14ea69ecd8828d401196778d87114e683d18b8 (patch)
tree72583da2c1161b4267d2bf5b0139dffa8d4c0a92
parent7c8383f51b93f7d1d47653a4cf70e9ab97bfb48a (diff)
downloadeclipse.platform.swt-1a14ea69ecd8828d401196778d87114e683d18b8.tar.gz
eclipse.platform.swt-1a14ea69ecd8828d401196778d87114e683d18b8.tar.xz
eclipse.platform.swt-1a14ea69ecd8828d401196778d87114e683d18b8.zip
Bug 388628 - [Viewers] ILazyTreeContentProvider: NPE when refreshing
viewer while an inner node is selected and using OwnerDrawLabelProvider
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
index 6deb574d1c..47980b87c4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
@@ -3364,7 +3364,12 @@ int getSelection (long /*int*/ hItem, TVITEM tvItem, TreeItem [] selection, int
OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem);
if ((tvItem.state & OS.TVIS_SELECTED) != 0) {
if (selection != null && index < selection.length) {
- selection [index] = _getItem (hItem, (int)/*64*/tvItem.lParam);
+ TreeItem item = _getItem (hItem, (int)/*64*/tvItem.lParam);
+ if (item != null) {
+ selection [index] = item;
+ } else {
+ index--;
+ }
}
index++;
}
@@ -3375,7 +3380,12 @@ int getSelection (long /*int*/ hItem, TVITEM tvItem, TreeItem [] selection, int
if (tvItem != null && selection != null && index < selection.length) {
tvItem.hItem = hItem;
OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem);
- selection [index] = _getItem (hItem, (int)/*64*/tvItem.lParam);
+ TreeItem item = _getItem (hItem, (int)/*64*/tvItem.lParam);
+ if (item != null) {
+ selection [index] = item;
+ } else {
+ index--;
+ }
}
index++;
}
@@ -3423,7 +3433,9 @@ public TreeItem [] getSelection () {
tvItem.hItem = hItem;
OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem);
if ((tvItem.state & OS.TVIS_SELECTED) == 0) return new TreeItem [0];
- return new TreeItem [] {_getItem (tvItem.hItem, (int)/*64*/tvItem.lParam)};
+ TreeItem item = _getItem (tvItem.hItem, (int)/*64*/tvItem.lParam);
+ if (item == null) return new TreeItem [0];
+ return new TreeItem [] {item};
}
int count = 0;
TreeItem [] guess = new TreeItem [(style & SWT.VIRTUAL) != 0 ? 8 : 1];