swallow checkbox events if the item isn't loaded yet.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Table.java b/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Table.java
index 395fb9c..a8d1db6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Table.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Table.java
@@ -1282,6 +1282,8 @@
int source = OS.RoutedEventArgs_Source (e);
TableItem item = (TableItem) display.getWidget (source);
OS.GCHandle_Free (source);
+ // ignore events that result from the initial binding
+ if (!OS.FrameworkElement_IsLoaded (item.handle)) return;
if (item.grayed) {
int checkbox = item.findPart (0, CHECKBOX_PART_NAME);
if (checkbox != 0) {
@@ -1302,6 +1304,8 @@
int source = OS.RoutedEventArgs_Source (e);
TableItem item = (TableItem) display.getWidget (source);
OS.GCHandle_Free (source);
+ // ignore events that result from the initial binding
+ if (!OS.FrameworkElement_IsLoaded (item.handle)) return;
if (!item.grayed) {
int checkbox = item.findPart (0, CHECKBOX_PART_NAME);
if (checkbox != 0) {
@@ -1372,6 +1376,8 @@
int source = OS.RoutedEventArgs_Source (e);
TableItem item = (TableItem) display.getWidget (source);
OS.GCHandle_Free (source);
+ // ignore events that result from the initial binding
+ if (!OS.FrameworkElement_IsLoaded (item.handle)) return;
item.checked = false;
item.updateCheckState (false);
Event event = new Event ();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Tree.java
index 3efe85e..f8c7019 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Tree.java
@@ -1176,6 +1176,8 @@
int source = OS.RoutedEventArgs_Source (e);
TreeItem item = (TreeItem) display.getWidget (source);
OS.GCHandle_Free (source);
+ // ignore events that result from the initial binding
+ if (!OS.FrameworkElement_IsLoaded (item.handle)) return;
if (item.grayed) {
int checkbox = item.findPart (0, CHECKBOX_PART_NAME);
if (checkbox != 0) {
@@ -1218,6 +1220,8 @@
int source = OS.RoutedEventArgs_Source (e);
TreeItem item = (TreeItem) display.getWidget (source);
OS.GCHandle_Free (source);
+ // ignore events that result from the initial binding
+ if (!OS.FrameworkElement_IsLoaded (item.handle)) return;
if (!item.grayed) {
int checkbox = item.findPart (0, CHECKBOX_PART_NAME);
if (checkbox != 0) {
@@ -1284,6 +1288,8 @@
int source = OS.RoutedEventArgs_Source (e);
TreeItem item = (TreeItem) display.getWidget (source);
OS.GCHandle_Free (source);
+ // ignore events that result from the initial binding
+ if (!OS.FrameworkElement_IsLoaded (item.handle)) return;
item.checked = false;
item.updateCheckState (false);
Event event = new Event ();