summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
diff options
context:
space:
mode:
authorVeronika Irvine <veronika>2006-02-09 19:22:34 +0000
committerVeronika Irvine <veronika>2006-02-09 19:22:34 +0000
commit063685a169683c6f9ba82158e73aa27116b562f1 (patch)
tree86a151c4119199d388afc3b0bae3b00440880e7f /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
parent8b07739025e4483fd6ae8247a0edcd7b527a4681 (diff)
downloadeclipse.platform.swt-063685a169683c6f9ba82158e73aa27116b562f1.tar.gz
eclipse.platform.swt-063685a169683c6f9ba82158e73aa27116b562f1.tar.xz
eclipse.platform.swt-063685a169683c6f9ba82158e73aa27116b562f1.zip
Bug 126966 can't set text or image asynchronously in virtual table or 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.java31
1 files changed, 31 insertions, 0 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 bcf1ba836c..93716c44ab 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,6 +1315,30 @@ public void setImage (int index, Image image) {
}
int modelIndex = parent.columnCount == 0 ? Tree.FIRST_COLUMN : parent.columns [index].modelIndex;
OS.gtk_tree_store_set (parent.modelHandle, handle, modelIndex + Tree.CELL_PIXBUF, pixbuf, -1);
+ if (image != null && parent.columnCount == 0) {
+ int /*long*/parentHandle = parent.handle;
+ int /*long*/ column = OS.gtk_tree_view_get_column (parentHandle, 0);
+ if (OS.gtk_tree_view_column_get_sizing (column) == OS.GTK_TREE_VIEW_COLUMN_FIXED) {
+ parent.setScrollWidth (column, this);
+ /*
+ * Bug in GTK. When in fixed height mode, GTK does not recalculate the cell renderer width
+ * when the image is changed in the model. The fix is to force it to recalculate the width if
+ * more space is required.
+ */
+ int [] w = new int [1];
+ int /*long*/ pixbufRenderer = parent.getPixbufRenderer(column);
+ OS.gtk_tree_view_column_cell_get_position (column, pixbufRenderer, null, w);
+ if (w[0] < image.getBounds().width) {
+ /*
+ * There is no direct way to clear the cell renderer width so we
+ * are relying on the fact that it is done as part of modifying
+ * the style.
+ */
+ int /*long*/ style = OS.gtk_widget_get_modifier_style (parentHandle);
+ OS.gtk_widget_modify_style (parentHandle, style);
+ }
+ }
+ }
cached = true;
}
@@ -1377,6 +1401,13 @@ public void setText (int index, String string) {
byte[] buffer = Converter.wcsToMbcs (null, string, true);
int modelIndex = parent.columnCount == 0 ? Tree.FIRST_COLUMN : parent.columns [index].modelIndex;
OS.gtk_tree_store_set (parent.modelHandle, handle, modelIndex + Tree.CELL_TEXT, buffer, -1);
+ if (parent.columnCount == 0) {
+ int /*long*/parentHandle = parent.handle;
+ int /*long*/ column = OS.gtk_tree_view_get_column (parentHandle, 0);
+ if (OS.gtk_tree_view_column_get_sizing (column) == OS.GTK_TREE_VIEW_COLUMN_FIXED) {
+ parent.setScrollWidth (column, this);
+ }
+ }
cached = true;
}