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 175507 | Differences between
and this patch

Collapse All | Expand All

(-)Eclipse UI/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java (-1 / +39 lines)
Lines 87-92 Link Here
87
import org.eclipse.swt.widgets.Label;
87
import org.eclipse.swt.widgets.Label;
88
import org.eclipse.swt.widgets.Menu;
88
import org.eclipse.swt.widgets.Menu;
89
import org.eclipse.swt.widgets.Shell;
89
import org.eclipse.swt.widgets.Shell;
90
import org.eclipse.swt.widgets.Table;
90
import org.eclipse.swt.widgets.Text;
91
import org.eclipse.swt.widgets.Text;
91
import org.eclipse.swt.widgets.ToolBar;
92
import org.eclipse.swt.widgets.ToolBar;
92
import org.eclipse.swt.widgets.ToolItem;
93
import org.eclipse.swt.widgets.ToolItem;
Lines 809-815 Link Here
809
		if (list != null && !list.getTable().isDisposed()) {
810
		if (list != null && !list.getTable().isDisposed()) {
810
811
811
			list.setItemCount(contentProvider.getElements(null).length);
812
			list.setItemCount(contentProvider.getElements(null).length);
812
			list.refresh();
813
			contentProvider.internalRefresh();
813
814
814
			if (list.getTable().getItemCount() > 0) {
815
			if (list.getTable().getItemCount() > 0) {
815
				list.getTable().setSelection(0);
816
				list.getTable().setSelection(0);
Lines 2488-2493 Link Here
2488
		public void refresh() {
2489
		public void refresh() {
2489
			scheduleRefresh();
2490
			scheduleRefresh();
2490
		}
2491
		}
2492
		
2493
			private void internalRefresh() {
2494
2495
			int lastFilteredItemsSize = lastFilteredItems.size();
2496
2497
			if (lastFilteredItems.size() != items.size())
2498
				reloadCache(false, null);
2499
2500
			Table table = list.getTable();
2501
			if (table.getItemCount() == 0 || lastFilteredItemsSize == 0 || lastCompletedFilter == null) {
2502
				list.refresh(true);
2503
			} else {
2504
				int topVisible = table.getTopIndex();
2505
				int numberOfVisible = table.getClientArea().height
2506
						/ table.getItems()[0].getBounds().height + 1;
2507
				for (int i = 0; i < numberOfVisible; i++) {
2508
2509
					int index = topVisible + i;
2510
					Object newElement = null;
2511
					Object oldElement = list.getElementAt(index);
2512
2513
					if (index < lastFilteredItems.size()) {
2514
						newElement = lastFilteredItems.get(index);
2515
					}
2516
2517
					if (newElement != null && oldElement != null
2518
							&& !newElement.equals(oldElement)) {
2519
						if (index >= table.getItemCount()) {
2520
							list.add(newElement);
2521
						} else {
2522
							list.replace(newElement, index);
2523
						}
2524
					}
2525
2526
				}
2527
			}
2528
		}
2491
2529
2492
		/**
2530
		/**
2493
		 * Sets progress message.
2531
		 * Sets progress message.

Return to bug 175507