summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
diff options
context:
space:
mode:
authorSilenio Quarti <silenio_quarti@ca.ibm.com>2012-01-25 10:15:07 -0500
committerSilenio Quarti <silenio_quarti@ca.ibm.com>2012-01-25 10:16:00 -0500
commit5dc68b1cb799fd3d7f3b8218db3d623442a9221c (patch)
tree0d2913640bbd286c37db11626ae9f9322cc8a871 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
parent2b55541da7a18b7f348931c2fb61f81eb1d459db (diff)
downloadeclipse.platform.swt-5dc68b1cb799fd3d7f3b8218db3d623442a9221c.tar.gz
eclipse.platform.swt-5dc68b1cb799fd3d7f3b8218db3d623442a9221c.tar.xz
eclipse.platform.swt-5dc68b1cb799fd3d7f3b8218db3d623442a9221c.zip
Bug 356414 - TreeItem.setExpanded(false) can cause blank lines in a
virtual tree.
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java21
1 files changed, 11 insertions, 10 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
index 68d8a81a5f..da70cac94e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
@@ -1315,18 +1315,19 @@ public void setChecked (boolean checked) {
public void setExpanded (boolean expanded) {
checkWidget();
int /*long*/ path = OS.gtk_tree_model_get_path (parent.modelHandle, handle);
- if (expanded) {
- OS.g_signal_handlers_block_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_EXPAND_ROW);
- OS.gtk_tree_view_expand_row (parent.handle, path, false);
- OS.g_signal_handlers_unblock_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_EXPAND_ROW);
- } else {
- OS.g_signal_handlers_block_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_COLLAPSE_ROW);
- OS.gtk_widget_realize (parent.handle);
- OS.gtk_tree_view_collapse_row (parent.handle, path);
- OS.g_signal_handlers_unblock_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_COLLAPSE_ROW);
+ if (expanded != OS.gtk_tree_view_row_expanded (parent.handle, path)) {
+ if (expanded) {
+ OS.g_signal_handlers_block_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_EXPAND_ROW);
+ OS.gtk_tree_view_expand_row (parent.handle, path, false);
+ OS.g_signal_handlers_unblock_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_EXPAND_ROW);
+ } else {
+ OS.g_signal_handlers_block_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_COLLAPSE_ROW);
+ OS.gtk_widget_realize (parent.handle);
+ OS.gtk_tree_view_collapse_row (parent.handle, path);
+ OS.g_signal_handlers_unblock_matched (parent.handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEST_COLLAPSE_ROW);
+ }
}
OS.gtk_tree_path_free (path);
- cached = true;
}