Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 346576
Collapse All | Expand All

(-)src/org/eclipse/swt/widgets/Table.java (-1 / +1 lines)
Lines 567-573 Link Here
567
  public void setItemCount( int count ) {
567
  public void setItemCount( int count ) {
568
    checkWidget();
568
    checkWidget();
569
    int newItemCount = Math.max( 0, count );
569
    int newItemCount = Math.max( 0, count );
570
    if( newItemCount != itemCount ) {
570
    if( newItemCount != itemCount && !isInDispose() ) {
571
      while( newItemCount < itemCount ) {
571
      while( newItemCount < itemCount ) {
572
        TableItem item = items[ newItemCount ];
572
        TableItem item = items[ newItemCount ];
573
        if( item != null && !item.isDisposed() ) {
573
        if( item != null && !item.isDisposed() ) {
(-)src/org/eclipse/swt/widgets/Table_Test.java (+30 lines)
Lines 1402-1407 Link Here
1402
    table.dispose();
1402
    table.dispose();
1403
  }
1403
  }
1404
1404
1405
  public void testSetItemCountInDisposeListener() {
1406
    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
1407
    final Table table = new Table( shell, SWT.VIRTUAL );
1408
    table.setItemCount( 10 );
1409
    table.addDisposeListener( new DisposeListener() {
1410
      public void widgetDisposed( DisposeEvent e ) {
1411
        table.setItemCount( 0 );
1412
      }
1413
    } );
1414
    table.dispose();
1415
  }
1416
1417
  public void testDisposeItemsWithSetItemCountInDisposeListener() {
1418
    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
1419
    final Table table = new Table( shell, SWT.VIRTUAL );
1420
    TableItem item1 = new TableItem( table, SWT.NONE );
1421
    TableItem item2 = new TableItem( table, SWT.NONE );
1422
    TableItem item3 = new TableItem( table, SWT.NONE );
1423
    table.setItemCount( 10 );
1424
    table.addDisposeListener( new DisposeListener() {
1425
      public void widgetDisposed( DisposeEvent e ) {
1426
        table.setItemCount( 0 );
1427
      }
1428
    } );
1429
    table.dispose();
1430
    assertTrue( item1.isDisposed() );
1431
    assertTrue( item2.isDisposed() );
1432
    assertTrue( item3.isDisposed() );
1433
  }
1434
1405
  public void testRedrawAfterDisposeVirtual() {
1435
  public void testRedrawAfterDisposeVirtual() {
1406
    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
1436
    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
1407
    Table table = new Table( shell, SWT.VIRTUAL );
1437
    Table table = new Table( shell, SWT.VIRTUAL );

Return to bug 346576