# HG changeset patch # User wenzelm # Date 1738502186 -3600 # Node ID 0f22f7b370b243ef40d6c93206e76d964bbdd975 # Parent 0eac687b768d5f118c90f70f6267bf53e908412b clarified default of flatlaf.useNativeLibrary=false, for cross-platform GUI uniformity; diff -r 0eac687b768d -r 0f22f7b370b2 NEWS --- a/NEWS Sun Feb 02 13:17:54 2025 +0100 +++ b/NEWS Sun Feb 02 14:16:26 2025 +0100 @@ -191,15 +191,17 @@ * Update to jEdit 5.7.0, the latest release. -* Update to FlatLaf 3.5.4, the latest release. 2.6 was the last portable -version, but 3.x requires a Java jar together with a native library. The -latter is missing for arm64-linux, so old 2.6 is used on that platform: -this may lead to minor differences in GUI appearance and behaviour. - -* Due to the update of FlatLaf, x86_64-linux with Wayland window manager +* Update to FlatLaf 3.5.4, the latest release. Starting with version 3.x +there is native library support for non-portable GUI operations. The +Isabelle/Scala GUI setup disables that by default, for cross-platform +uniformity (arm64-linux lacks a native library). It can be enabled via +the Java runtime option -Dflatlaf.useNativeLibrary=true (e.g. via +JEDIT_JAVA_SYSTEM_OPTIONS). + +* Thanks to the update of FlatLaf, Linux with Wayland window manager (e.g. standard Ubuntu) now renders submenus like "File / Recent Files" -properly. On arm64-linux an old problem of FlatLaf persists, but it is -possible to use WaylandEnable=false in /etc/gdm3/custom.conf and reboot. +in Isabelle/jEdit properly. Before that, the menu could disappear +sponteneously. *** Isabelle/VSCode Prover IDE *** diff -r 0eac687b768d -r 0f22f7b370b2 src/Pure/GUI/gui.scala --- a/src/Pure/GUI/gui.scala Sun Feb 02 13:17:54 2025 +0100 +++ b/src/Pure/GUI/gui.scala Sun Feb 02 14:16:26 2025 +0100 @@ -23,7 +23,11 @@ object GUI { /* Swing look-and-feel */ - def init_laf(): Unit = com.formdev.flatlaf.FlatLightLaf.setup() + def init_laf(): Unit = { + val prop = com.formdev.flatlaf.FlatSystemProperties.USE_NATIVE_LIBRARY + System.setProperty(prop, System.getProperty(prop, "false")) + com.formdev.flatlaf.FlatLightLaf.setup() + } def current_laf(): String = UIManager.getLookAndFeel.getClass.getName()