-
Couldn't load subscription status.
- Fork 184
Closed
Labels
Description
Describe the bug
I ended in a completely broken UI of an Eclipse IDE after changing the scaling of my primary monitor. The DPI change handling failed with an exception:
org.eclipse.swt.SWTException: Graphic is disposed
at org.eclipse.swt.SWT.error(SWT.java:4946)
at org.eclipse.swt.SWT.error(SWT.java:4861)
at org.eclipse.swt.SWT.error(SWT.java:4832)
at org.eclipse.swt.graphics.Image.getImageData(Image.java:1250)
at org.eclipse.swt.internal.ImageList.set(ImageList.java:417)
at org.eclipse.swt.internal.ImageList.getHandle(ImageList.java:342)
at org.eclipse.swt.widgets.Tree.imageIndex(Tree.java:3754)
at org.eclipse.swt.widgets.TreeItem.setImage(TreeItem.java:1664)
at org.eclipse.swt.widgets.TreeItem.setImage(TreeItem.java:1693)
at org.eclipse.swt.internal.CommonWidgetsDPIChangeHandlers.handleItemDPIChange(CommonWidgetsDPIChangeHandlers.java:46)
at org.eclipse.swt.internal.DPIZoomChangeRegistry.applyChange(DPIZoomChangeRegistry.java:56)
To Reproduce
I have no reproducer yet, it just happened for me once by now.
Expected behavior
Rescaling on a DPI change (such as when changing primary monitor zoom) should result in a proper UI and, particularly, should not throw an exception.
I see multiple things that need to be done here
- Find out why this exception occurs at all
- Check for the image being disposed when setting it on the TreeItem during DPI change handling
- Embed every DPI change handler into a try/catch to ensure that a failure of a single handler does not lead to a completely (but at most partially) broken UI
Environment:
- Select the platform(s) on which the behavior is seen:
-
- All OS
-
- Windows
-
- Linux
-
- macOS
- Additional OS info (e.g. OS version, Linux Desktop, etc)
Windows 11
Version since
I20250815-1800
