diff options
author | Carolyn MacLeod <Carolyn_MacLeod@ca.ibm.com> | 2013-02-05 16:16:23 -0500 |
---|---|---|
committer | Carolyn MacLeod <Carolyn_MacLeod@ca.ibm.com> | 2013-02-05 16:16:23 -0500 |
commit | 1a14ea69ecd8828d401196778d87114e683d18b8 (patch) | |
tree | 72583da2c1161b4267d2bf5b0139dffa8d4c0a92 | |
parent | 7c8383f51b93f7d1d47653a4cf70e9ab97bfb48a (diff) | |
download | eclipse.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.java | 18 |
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]; |