summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Barnes <krbarnes>2008-02-01 17:15:08 +0000
committerKevin Barnes <krbarnes>2008-02-01 17:15:08 +0000
commit6139c6e26cd836fd18e47718989b0319dde81e15 (patch)
treedfc778e31f7f7904008888fa7b6cf55b7848a83a
parentfc0e6b84f6c4e64e9af96370f80c85dc819267a2 (diff)
downloadeclipse.platform.swt-6139c6e26cd836fd18e47718989b0319dde81e15.tar.gz
eclipse.platform.swt-6139c6e26cd836fd18e47718989b0319dde81e15.tar.xz
eclipse.platform.swt-6139c6e26cd836fd18e47718989b0319dde81e15.zip
191252 - Virtual Tree w/ columns: Items appear in wrong order when sortDirection is SWT.DOWN
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Table.java3
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java10
2 files changed, 11 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Table.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Table.java
index c9b01a7ad0..f0cb53717c 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Table.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Table.java
@@ -2848,6 +2848,9 @@ public void setItemCount (int count) {
callbacks.v1_itemCompareCallback = itemCompareProc ();
OS.SetDataBrowserCallbacks (handle, callbacks);
fixScrollBar ();
+ if (sortColumn != null && !sortColumn.isDisposed () && sortDirection == SWT.DOWN) {
+ OS.UpdateDataBrowserItems (handle, 0, 0, null, OS.kDataBrowserItemNoProperty, OS.kDataBrowserNoItem);
+ }
setRedraw (true);
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java
index 2bd6736ea1..3a1714a64a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java
@@ -2113,8 +2113,10 @@ int _indexOf (TreeItem parentItem, TreeItem item) {
}
int itemCompareProc (int browser, int itemOne, int itemTwo, int sortProperty) {
- TreeItem item1 = _getItem (itemOne, false);
- TreeItem item2 = _getItem (itemTwo, false);
+ boolean create = (style & SWT.VIRTUAL) != 0 && sortColumn != null
+ && !sortColumn.isDisposed () && sortDirection == SWT.DOWN;
+ TreeItem item1 = _getItem (itemOne, create);
+ TreeItem item2 = _getItem (itemTwo, create);
if (item1 == null || item2 == null) return OS.noErr;
int index1 = _indexOf (item1.parentItem, item1);
int index2 = _indexOf (item2.parentItem , item2);
@@ -3013,6 +3015,10 @@ void setItemCount (TreeItem parentItem, int count) {
callbacks.v1_itemNotificationCallback = display.itemNotificationProc;
callbacks.v1_itemCompareCallback = display.itemCompareProc;
OS.SetDataBrowserCallbacks (handle, callbacks);
+ if ((style & SWT.VIRTUAL) != 0 && sortColumn != null
+ && !sortColumn.isDisposed () && sortDirection == SWT.DOWN) {
+ OS.UpdateDataBrowserItems (handle, 0, 0, null, OS.kDataBrowserItemNoProperty, OS.kDataBrowserNoItem);
+ }
setRedraw (true);
if (itemCount == 0 && parentItem != null) parentItem.redraw (OS.kDataBrowserNoItem);
}