-
Notifications
You must be signed in to change notification settings - Fork 190
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Eclipse: 4.38
OS: Windows 11
Monitor Setup: Primary Monitor 100% (1920x1080), Second Monitor 150% (3840x2160)
In our RCP application we have some views and editors where the icons and text of tree cells are overlapped in a monitor setup with multiple resolutions.
I have created a mini snippet that demonstrates the problem.
- I verified I can reproduce this issue against latest Integration Build of Eclipse SDK (eclipse-SDK-I20260208-1140-win32-x86_64)
Steps to reproduce
Open the given sample program.
The tree looks like this:
Move the window from the primary monitor to the second monitor.
You can see that icon and text overlaps in the second column.
If you move the window back to the primary monitor the icon and text still overlaps.
Here is the sample snippet:
import java.io.File;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TreeColumn;
public class CellIconError {
public CellIconError(Shell shell) {
final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION);
v.setContentProvider(new DummyContentProvider());
TreeColumn column = new TreeColumn(v.getTree(), SWT.NONE);
column.setWidth(200);
column.setText("Column 1");
TreeViewerColumn viewerColumn = new TreeViewerColumn(v, column);
viewerColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(new DummyLabelProvider()));
column = new TreeColumn(v.getTree(), SWT.NONE);
column.setWidth(200);
column.setText("Column 2");
viewerColumn = new TreeViewerColumn(v, column);
viewerColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(new DummyLabelProviderWithCellImage()));
v.setInput(new File[] { new File("C:\\") });
v.getTree().setLinesVisible(true);
v.getTree().setHeaderVisible(true);
}
public static void main(String[] args) {
System.setProperty("swt.autoScale.updateOnRuntime", "true");
Display display = new Display();
JFaceResources.getImageRegistry().put("stop", ImageDescriptor.createFromURLSupplier(true, () -> {
return Action.class.getResource("images/stop.png");
}));
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
new CellIconError(shell);
shell.setSize(600, 150);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static class DummyLabelProvider extends LabelProvider implements IStyledLabelProvider {
@Override
public StyledString getStyledText(Object element) {
return new StyledString(element.toString());
}
}
public static class DummyLabelProviderWithCellImage extends LabelProvider implements IStyledLabelProvider {
@Override
public StyledString getStyledText(Object element) {
return new StyledString(element.toString());
}
@Override
public Image getImage(Object element) {
return JFaceResources.getImage("stop");
}
}
public static class DummyContentProvider extends ArrayContentProvider implements ITreeContentProvider {
@Override
public Object[] getChildren(Object parentElement) {
return new Object[0];
}
@Override
public Object getParent(Object element) {
return null;
}
@Override
public boolean hasChildren(Object element) {
return false;
}
}
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working