if (event.x + event.width > getScrollWidth ()) { setScrollWidth (event.x + event.width);
int width = OS.SendMessage (handle, OS.LVM_GETCOLUMNWIDTH, 0, 0); if (event.x + event.width > width) { OS.SendMessage (handle, OS.LVM_SETCOLUMNWIDTH, 0, event.x + event.width);
Event sendMeasureItemEvent (TableItem item, int row, int column, int hDC) {	int hFont = item.cellFont != null ? item.cellFont [column] : -1;	if (hFont == -1) hFont = item.font;	GCData data = new GCData ();	data.device = display;	data.hFont = hFont;	int nSavedDC = OS.SaveDC (hDC);	GC gc = GC.win32_new (hDC, data);	RECT itemRect = item.getBounds (row, column, true, true, false, false, hDC);	Event event = new Event ();	event.item = item;	event.gc = gc;	event.index = column;	event.x = itemRect.left;	event.y = itemRect.top;	event.width = itemRect.right - itemRect.left;	event.height = itemRect.bottom - itemRect.top;	sendEvent (SWT.MeasureItem, event);	event.gc = null;	gc.dispose ();	OS.RestoreDC (hDC, nSavedDC);	if (!isDisposed () && !item.isDisposed ()) {		if (columnCount == 0) {			if (event.x + event.width > getScrollWidth ()) {				setScrollWidth (event.x + event.width);			}		}		if (event.height > getItemHeight ()) setItemHeight (event.height);	}	return event;}