Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSilenio Quarti2009-11-05 21:39:04 +0000
committerSilenio Quarti2009-11-05 21:39:04 +0000
commit944ed637ee27b1afe8f63ddc1be51d9fca79b1ea (patch)
tree433ad09b3496aec724072ebf93c2d282f8970226
parent6f8a3123bd7d13cf7b7fef17a7396024e7b0b573 (diff)
downloadeclipse.platform.swt-944ed637ee27b1afe8f63ddc1be51d9fca79b1ea.tar.gz
eclipse.platform.swt-944ed637ee27b1afe8f63ddc1be51d9fca79b1ea.tar.xz
eclipse.platform.swt-944ed637ee27b1afe8f63ddc1be51d9fca79b1ea.zip
Bug 142593 - Scrolling a table eventually locks up the entire application (back port to 3.3.2)v3349eR3_3_maintenance
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java26
1 files changed, 13 insertions, 13 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 c162d185d1..32e62313fc 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
@@ -5843,7 +5843,18 @@ LRESULT wmNotifyChild (NMHDR hdr, int wParam, int lParam) {
// if (drawCount != 0 || !OS.IsWindowVisible (handle)) break;
NMLVDISPINFO plvfi = new NMLVDISPINFO ();
OS.MoveMemory (plvfi, lParam, NMLVDISPINFO.sizeof);
-
+
+ /*
+ * 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
@@ -5853,23 +5864,12 @@ LRESULT wmNotifyChild (NMHDR hdr, int wParam, int 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

Back to the top