// prevent mouse button from selecting a filler tree item
tree.addListener(SWT.MouseDown, event -> {
- TreeItem treeItem = tree.getItem(new Point(event.x, event.y));
- if (treeItem == null || treeItem.getData() == FILLER) {
+ List<TreeItem> treeItems = getVisibleExpandedItems(tree, false);
+ if (treeItems.isEmpty()) {
+ event.doit = false;
+ fTreeViewer.setSelection(new StructuredSelection());
+ fTimeGraphViewer.setSelection(null);
+ return;
+ }
+ TreeItem lastTreeItem = treeItems.get(treeItems.size() - 1);
+ if (event.y >= lastTreeItem.getBounds().y + lastTreeItem.getBounds().height) {
event.doit = false;
- List<TreeItem> treeItems = getVisibleExpandedItems(tree, false);
- if (treeItems.size() == 0) {
- fTreeViewer.setSelection(new StructuredSelection());
- fTimeGraphViewer.setSelection(null);
- return;
- }
// this prevents from scrolling up when selecting
// the partially visible tree item at the bottom
tree.select(treeItems.get(treeItems.size() - 1));
* Get the show filter dialog action.
*
* @return The Action object
- * @since 2.0
+ * @since 1.2
*/
public ShowFilterDialogAction getShowFilterDialogAction() {
if (fShowFilterDialogAction == null) {
* Returns this viewer's filters.
*
* @return an array of viewer filters
- * @since 2.0
+ * @since 1.2
*/
public @NonNull ViewerFilter[] getFilters() {
return fTimeGraphViewer.getFilters();
*
* @param filters
* an array of viewer filters, or null
- * @since 2.0
+ * @since 1.2
*/
public void setFilters(@NonNull ViewerFilter[] filters) {
fInhibitTreeSelection = true;
tree.removePaintListener(this);
doAlignTreeItems();
redraw();
- /*
- * Bug in GTK. Calling setTopItem() can scroll to the wrong item
- * when the 'tree view' is dirty. Set it again once it is clean.
- */
- if (SWT.getPlatform().equals("gtk")) { //$NON-NLS-1$
- tree.getDisplay().asyncExec(() -> {
- TreeItem topItem = tree.getTopItem();
- if (!tree.isDisposed() && topItem != null && !topItem.isDisposed()) {
- tree.setTopItem(topItem);
- }
- });
- }
}
});
/* Make sure the paint event is triggered. */