title: Unable to draw Composite in OwnerDrawLabelProvider
body: <p>I have a <code>TableViewer</code> widget with a single column, where each row in the table's contents is a <code>Composite</code> with a number of child widgets.  The column has a label provider that is a subclass of <code>OwnerDrawLabelProvider</code>.  The label provider is supposed to render the <code>Composite</code> children in the table cell, but when <code>paint()</code> is called, nothing is rendered. </p>
  
  <p>I have found a number of examples on how to draw plain or styled text items, or primitives using the <code>GC</code> in the <code>Event</code> object passed in, but nothing on drawing the contents of a <code>Composite</code> in the cell's area.</p>
  
  <p>Is this possible, and if so, what am I doing wrong?</p>
  
  <p>Here is the code to create the table:</p>
  
  <pre><code>    viewer = new TableViewer(container, SWT.NONE);
      final Table table = viewer.getTable();
  
      TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.LEFT);
      TableColumn tableColumn = viewerColumn.getColumn();
      tableColumn.setText(Messages.getString("column.header.name"));
      tableColumn.setResizable(true);
      tableColumn.setMoveable(false);
      tableColumn.setWidth(500);
      viewerColumn.setLabelProvider(new CompositeLabelProvider());
  </code></pre>
  
  <p>Here are the <code>measure</code> and <code>paint</code> methods for the custom label provider, <code>CompositeLabelProvider</code>:</p>
  
  <pre><code>    @Override
      protected void measure(Event event, Object element) {
  
          CompositeTableItem row = rowMap.get(element);
          Composite contents = row.getContents(viewer.getTable().getParent());
          Point size = contents.computeSize(SWT.DEFAULT, SWT.DEFAULT);
          event.setBounds(new Rectangle(event.x, event.y, size.x, size.y));
      }
  
      @Override
      protected void paint(Event event, Object element) {
  
          CompositeTableItem row = rowMap.get(element);
          Composite contents = row.getContents(viewer.getTable().getParent());
  
          contents.redraw(event.getBounds().x, event.getBounds().y, event.getBounds().width, event.getBounds().height, true);
  
          contents.update();
      }
  </code></pre>