diff options
author | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2012-01-25 10:15:07 -0500 |
---|---|---|
committer | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2012-01-25 10:16:00 -0500 |
commit | 5dc68b1cb799fd3d7f3b8218db3d623442a9221c (patch) | |
tree | 0d2913640bbd286c37db11626ae9f9322cc8a871 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java | |
parent | 2b55541da7a18b7f348931c2fb61f81eb1d459db (diff) | |
download | eclipse.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.java | 21 |
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; } |