mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 22:40:53 +03:00
Linux: changing system font did not update FlatLaf font
This commit is contained in:
@@ -74,6 +74,7 @@ public abstract class FlatLaf
|
|||||||
private static final String DESKTOPFONTHINTS = "awt.font.desktophints";
|
private static final String DESKTOPFONTHINTS = "awt.font.desktophints";
|
||||||
|
|
||||||
private String desktopPropertyName;
|
private String desktopPropertyName;
|
||||||
|
private String desktopPropertyName2;
|
||||||
private PropertyChangeListener desktopPropertyListener;
|
private PropertyChangeListener desktopPropertyListener;
|
||||||
|
|
||||||
private static boolean aquaLoaded;
|
private static boolean aquaLoaded;
|
||||||
@@ -160,15 +161,19 @@ public abstract class FlatLaf
|
|||||||
// Settings > Ease of Access > Display > Make text bigger (100% - 225%)
|
// Settings > Ease of Access > Display > Make text bigger (100% - 225%)
|
||||||
desktopPropertyName = "win.messagebox.font";
|
desktopPropertyName = "win.messagebox.font";
|
||||||
} else if( SystemInfo.IS_LINUX ) {
|
} else if( SystemInfo.IS_LINUX ) {
|
||||||
|
// Linux/Gnome allows changing font in "Tweaks" app
|
||||||
|
desktopPropertyName = "gnome.Gtk/FontName";
|
||||||
|
|
||||||
// Linux/Gnome allows extra scaling and larger text:
|
// Linux/Gnome allows extra scaling and larger text:
|
||||||
// Settings > Devices > Displays > Scale (100% or 200%)
|
// Settings > Devices > Displays > Scale (100% or 200%)
|
||||||
// Settings > Universal access > Large Text (off or on, 125%)
|
// Settings > Universal access > Large Text (off or on, 125%)
|
||||||
desktopPropertyName = "gnome.Xft/DPI";
|
// "Tweaks" app > Fonts > Scaling Factor (0,5 - 3)
|
||||||
|
desktopPropertyName2 = "gnome.Xft/DPI";
|
||||||
}
|
}
|
||||||
if( desktopPropertyName != null ) {
|
if( desktopPropertyName != null ) {
|
||||||
desktopPropertyListener = e -> {
|
desktopPropertyListener = e -> {
|
||||||
String propertyName = e.getPropertyName();
|
String propertyName = e.getPropertyName();
|
||||||
if( desktopPropertyName.equals( propertyName ) )
|
if( desktopPropertyName.equals( propertyName ) || propertyName.equals( desktopPropertyName2 ) )
|
||||||
reSetLookAndFeel();
|
reSetLookAndFeel();
|
||||||
else if( DESKTOPFONTHINTS.equals( propertyName ) ) {
|
else if( DESKTOPFONTHINTS.equals( propertyName ) ) {
|
||||||
if( UIManager.getLookAndFeel() instanceof FlatLaf ) {
|
if( UIManager.getLookAndFeel() instanceof FlatLaf ) {
|
||||||
@@ -179,6 +184,8 @@ public abstract class FlatLaf
|
|||||||
};
|
};
|
||||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||||
toolkit.addPropertyChangeListener( desktopPropertyName, desktopPropertyListener );
|
toolkit.addPropertyChangeListener( desktopPropertyName, desktopPropertyListener );
|
||||||
|
if( desktopPropertyName2 != null )
|
||||||
|
toolkit.addPropertyChangeListener( desktopPropertyName2, desktopPropertyListener );
|
||||||
toolkit.addPropertyChangeListener( DESKTOPFONTHINTS, desktopPropertyListener );
|
toolkit.addPropertyChangeListener( DESKTOPFONTHINTS, desktopPropertyListener );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,8 +208,11 @@ public abstract class FlatLaf
|
|||||||
if( desktopPropertyListener != null ) {
|
if( desktopPropertyListener != null ) {
|
||||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||||
toolkit.removePropertyChangeListener( desktopPropertyName, desktopPropertyListener );
|
toolkit.removePropertyChangeListener( desktopPropertyName, desktopPropertyListener );
|
||||||
|
if( desktopPropertyName2 != null )
|
||||||
|
toolkit.removePropertyChangeListener( desktopPropertyName2, desktopPropertyListener );
|
||||||
toolkit.removePropertyChangeListener( DESKTOPFONTHINTS, desktopPropertyListener );
|
toolkit.removePropertyChangeListener( DESKTOPFONTHINTS, desktopPropertyListener );
|
||||||
desktopPropertyName = null;
|
desktopPropertyName = null;
|
||||||
|
desktopPropertyName2 = null;
|
||||||
desktopPropertyListener = null;
|
desktopPropertyListener = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user