setScrollWidth (tree_column, iter);
setScrollWidth (tree_column, item);
int /*long*/ cellDataProc (int /*long*/ tree_column, int /*long*/ cell, int /*long*/ tree_model, int /*long*/ iter, int /*long*/ data) {	if (cell == ignoreCell) return 0;	int /*long*/ path = OS.gtk_tree_model_get_path (tree_model, iter);	int [] buffer = new int [1];	OS.memmove (buffer, OS.gtk_tree_path_get_indices (path), 4);	int index = buffer [0];	TableItem item = _getItem (index);	OS.gtk_tree_path_free (path);	if (item != null) OS.g_object_set_qdata (cell, Display.SWT_OBJECT_INDEX2, item.handle);	boolean isPixbuf = OS.GTK_IS_CELL_RENDERER_PIXBUF (cell);	if (!(isPixbuf || OS.GTK_IS_CELL_RENDERER_TEXT (cell))) return 0;	int modelIndex = -1;	boolean customDraw = false;	if (columnCount == 0) {		modelIndex = Table.FIRST_COLUMN;		customDraw = firstCustomDraw;	} else {		TableColumn column = (TableColumn) display.getWidget (tree_column);		if (column != null) {			modelIndex = column.modelIndex;			customDraw = column.customDraw;		}	}	if (modelIndex == -1) return 0;	boolean setData = false;	if ((style & SWT.VIRTUAL) != 0) {		/*		* Feature in GTK.  On GTK before 2.4, fixed_height_mode is not		* supported, and the tree asks for the data of all items.  The		* fix is to only provide the data if the row is visible.		*/		if (OS.GTK_VERSION < OS.VERSION (2, 3, 2)) {			OS.gtk_widget_realize (handle);			GdkRectangle visible = new GdkRectangle ();			OS.gtk_tree_view_get_visible_rect (handle, visible);			GdkRectangle area = new GdkRectangle ();			path = OS.gtk_tree_model_get_path (tree_model, iter);			OS.gtk_tree_view_get_cell_area (handle, path, tree_column, area);			OS.gtk_tree_path_free (path);			if (area.y + area.height < 0 || area.y + visible.y > visible.y + visible.height) {				/* Give an image from the image list to make sure the row has				* the correct height.				*/				if (imageList != null && imageList.pixbufs.length > 0) {					OS.g_object_set (cell, OS.pixbuf, imageList.pixbufs [0], 0);				}				return 0;			}		}		if (!item.cached) {			lastIndexOf = index;			setData = checkData (item);		}	}	if (setData) {		buffer [0] = 0;		if (isPixbuf) {			OS.gtk_tree_model_get (tree_model, iter, modelIndex + CELL_PIXBUF, buffer, -1);			OS.g_object_set (cell, OS.pixbuf, buffer [0], 0);		} else {			OS.gtk_tree_model_get (tree_model, iter, modelIndex + CELL_TEXT, buffer, -1); 			if (buffer [0] != 0) {				OS.g_object_set (cell, OS.text, buffer [0], 0);				OS.g_free (buffer [0]);			}		}	}	if (customDraw) {		/*		* Bug on GTK. Gtk renders the background on top of the checkbox and pixbuf.		* This only happens in version 2.2.1 and earlier. The fix is not to set the background.   		*/		if (OS.GTK_VERSION > OS.VERSION (2, 2, 1)) {			buffer [0] = 0;			OS.gtk_tree_model_get (tree_model, iter, modelIndex + CELL_BACKGROUND, buffer, -1);			if (buffer [0] != 0) {				OS.g_object_set (cell, OS.cell_background_gdk, buffer [0], 0);			}		}		if (!isPixbuf) {			buffer [0] = 0;			OS.gtk_tree_model_get (tree_model, iter, modelIndex + CELL_FOREGROUND, buffer, -1);			if (buffer [0] != 0) {				OS.g_object_set (cell, OS.foreground_gdk, buffer [0], 0);			}			buffer [0] = 0;			OS.gtk_tree_model_get (tree_model, iter, modelIndex + CELL_FONT, buffer, -1);			if (buffer [0] != 0) {				OS.g_object_set (cell, OS.font_desc, buffer [0], 0);			}		}	}	if (setData) {		ignoreCell = cell;		setScrollWidth (tree_column, iter);		ignoreCell = 0;	}	return 0;}