diff options
author | Felipe Heidrich <fheidric> | 2009-09-24 18:58:32 +0000 |
---|---|---|
committer | Felipe Heidrich <fheidric> | 2009-09-24 18:58:32 +0000 |
commit | 2ef2e709c4c31aa7b46fb0d933d3fc8c2c2d5682 (patch) | |
tree | c77efaea60b74f3296d89a4337854dee1273cb48 /bundles/org.eclipse.swt/Eclipse SWT | |
parent | ae82898454d0dd8bb09e947aa6f83ea8c44ff2f1 (diff) | |
download | eclipse.platform.swt-2ef2e709c4c31aa7b46fb0d933d3fc8c2c2d5682.tar.gz eclipse.platform.swt-2ef2e709c4c31aa7b46fb0d933d3fc8c2c2d5682.tar.xz eclipse.platform.swt-2ef2e709c4c31aa7b46fb0d933d3fc8c2c2d5682.zip |
142593 - Scrolling a table eventually locks up the entire application
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java index 64c5caff9a..1a15a14e0f 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java @@ -6316,6 +6316,17 @@ LRESULT wmNotifyChild (NMHDR hdr, int /*long*/ wParam, int /*long*/ lParam) { } /* + * Feature in Windows. When a new table item is inserted + * using LVM_INSERTITEM in a table that is transparent + * (ie. LVM_SETBKCOLOR has been called with CLR_NONE), + * TVM_INSERTITEM calls LVN_GETDISPINFO before the item + * has been added to the array. The fix is to check for + * null. + */ + TableItem item = _getItem (plvfi.iItem); + if (item == null) break; + + /* * When an item is being deleted from a virtual table, do not * allow the application to provide data for a new item that * becomes visible until the item has been removed from the @@ -6324,23 +6335,12 @@ LRESULT wmNotifyChild (NMHDR hdr, int /*long*/ wParam, int /*long*/ lParam) { * in an inconsistent state. Rather than answering the data * right away, queue a redraw for later. */ - if ((style & SWT.VIRTUAL) != 0) { + if ((style & SWT.VIRTUAL) != 0 && !item.cached) { if (ignoreShrink) { OS.SendMessage (handle, OS.LVM_REDRAWITEMS, plvfi.iItem, plvfi.iItem); break; } } - - /* - * Feature in Windows. When a new table item is inserted - * using LVM_INSERTITEM in a table that is transparent - * (ie. LVM_SETBKCOLOR has been called with CLR_NONE), - * TVM_INSERTITEM calls LVN_GETDISPINFO before the item - * has been added to the array. The fix is to check for - * null. - */ - TableItem item = _getItem (plvfi.iItem); - if (item == null) break; /* * The cached flag is used by both virtual and non-virtual |