clarified default of flatlaf.useNativeLibrary=false, for cross-platform GUI uniformity;
authorwenzelm
Sun, 02 Feb 2025 14:16:26 +0100
changeset 82050 0f22f7b370b2
parent 82049 0eac687b768d
child 82051 1be62b17bed9
clarified default of flatlaf.useNativeLibrary=false, for cross-platform GUI uniformity;
NEWS
src/Pure/GUI/gui.scala
--- 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 ***
--- 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()