From 43c9a048f00479fc09f74ace4a5c4c816bf07fef Mon Sep 17 00:00:00 2001 From: Anton Keks Date: Wed, 23 Dec 2020 13:05:42 +0200 Subject: [PATCH] dispose created fonts - they are not disposed automatically by SWT --- CHANGELOG | 3 +++ src/net/azib/ipscan/gui/InfoDialog.java | 7 +------ src/net/azib/ipscan/gui/util/LayoutHelper.java | 4 +++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 5ef4fd87..a1ce029b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Unreleased: +- Cleanup some GUI resource leaks + Changes in 3.7.3: - Local IP address popup will now list IPv6 addresses and support IPv6 netmasks - Support for silent uninstall on Windows #263 diff --git a/src/net/azib/ipscan/gui/InfoDialog.java b/src/net/azib/ipscan/gui/InfoDialog.java index 6d6f7f0c..04f51278 100644 --- a/src/net/azib/ipscan/gui/InfoDialog.java +++ b/src/net/azib/ipscan/gui/InfoDialog.java @@ -41,6 +41,7 @@ public class InfoDialog extends AbstractModalDialog { FontData sysFontData = shell.getFont().getFontData()[0]; titleLabel.setLayoutData(formData(new FormAttachment(iconLabel), null, new FormAttachment(0), null)); titleLabel.setFont(new Font(null, sysFontData.getName(), sysFontData.getHeight() + 3, sysFontData.getStyle() | SWT.BOLD)); + titleLabel.addDisposeListener(e -> titleLabel.getFont().dispose()); titleLabel.setText(title2); Text statsText = new Text(shell, SWT.MULTI | SWT.READ_ONLY); @@ -62,16 +63,10 @@ public class InfoDialog extends AbstractModalDialog { return super.getShellStyle() | SWT.SHEET; } - /** - * @return Returns the message. - */ public String getMessage() { return message; } - /** - * @param message The message to set. - */ public InfoDialog setMessage(String message) { this.message = message; return this; diff --git a/src/net/azib/ipscan/gui/util/LayoutHelper.java b/src/net/azib/ipscan/gui/util/LayoutHelper.java index 70ce5955..012edb9a 100644 --- a/src/net/azib/ipscan/gui/util/LayoutHelper.java +++ b/src/net/azib/ipscan/gui/util/LayoutHelper.java @@ -46,7 +46,9 @@ public class LayoutHelper { public static Font iconFont(Shell shell) { FontData fontData = shell.getFont().getFontData()[0]; fontData.setHeight(fontData.getHeight() * 4/3); - return new Font(shell.getDisplay(), fontData); + Font font = new Font(shell.getDisplay(), fontData); + shell.addDisposeListener(e -> font.dispose()); + return font; } public static Image icon(final String baseName) {