--- Begin Message ---
Subject: |
[PATCH 4/7] gnu: java-openjfx-swing: Add new variable. |
Date: |
Sat, 22 Feb 2020 21:17:52 +0100 |
* gnu/packages/java.scm (java-openjfx-build): Add patch to the base package.
*
gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch:
Fix swing compilation for jdk8.
---
gnu/packages/java.scm | 16 ++++-
...ld-swing-compile-JFXPanel-with-JDK-8.patch | 58 +++++++++++++++++++
2 files changed, 73 insertions(+), 1 deletion(-)
create mode 100644
gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 4e975a0490..f2a3861501 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2357,7 +2357,8 @@ new Date();"))
(sha256
(base32
"0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
- (patches (search-patches
"java-openjfx-build-get_guix_jdk_version.patch"))))
+ (patches (search-patches
"java-openjfx-build-get_guix_jdk_version.patch"
+
"java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-openjfx.jar"
@@ -3045,6 +3046,19 @@ distribution.")))
`(("java-openjfx-base" ,java-openjfx-base)
("java-swt" ,java-swt)))))
+(define-public java-openjfx-swing
+ (package (inherit java-openjfx-build)
+ (name "java-openjfx-swing")
+ (arguments
+ `(#:jar-name "java-openjfx-swing.jar"
+ #:source-dir "modules/swing/src/main/java"
+ #:tests? #f))
+ (inputs
+ `(("antlr3" ,antlr3)
+ ("java-stringtemplate" ,java-stringtemplate)))
+ (propagated-inputs
+ `(("java-openjfx-graphics" ,java-openjfx-graphics)))))
+
(define-public java-openjfx-media
(package (inherit java-openjfx-build)
(name "java-openjfx-media")
diff --git
a/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
new file mode 100644
index 0000000000..948c0355e9
--- /dev/null
+++
b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
@@ -0,0 +1,58 @@
+From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <address@hidden>
+Date: Fri, 3 Jan 2020 01:17:45 +0100
+Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
+
+For more info please see https://bugs.openjdk.java.net/browse/JDK-8149967
+---
+ .../java/javafx/embed/swing/JFXPanel.java | 20 ++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+index 97515e2290..614ed656b9 100644
+--- a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
++++ b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+@@ -81,6 +81,7 @@ import sun.awt.AppContext;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.SunToolkit;
+ import sun.java2d.SunGraphics2D;
++import sun.java2d.SurfaceData;
+ import sun.util.logging.PlatformLogger;
+ import sun.util.logging.PlatformLogger.Level;
+
+@@ -681,6 +682,23 @@
+ e.getCaret().getInsertionIndex());
+ }
+
++ // FIXME: once we move to JDK 9 as the boot JDK we should remove the
++ // reflection code from this method, consider changing it to
++ // use double rather than int, and account for the possibility of
++ // a different scale factor in X and Y.
++ private int getDefaultScale(SurfaceData surfaceData) {
++ /*
++ double scale = surfaceData.getDefaultScaleX();
++ */
++ double scale = 1;
++ try {
++ Method meth = SurfaceData.class.getMethod("getDefaultScaleX");
++ scale = (Double)meth.invoke(surfaceData);
++ } catch (Exception ex) {
++ }
++
++ return (int)Math.round(scale);
++ }
+
+ /**
+ * Overrides the {@link javax.swing.JComponent#paintComponent(Graphics)}
+@@ -720,7 +738,7 @@ public class JFXPanel extends JComponent {
+
+ int newScaleFactor = scaleFactor;
+ if (g instanceof SunGraphics2D) {
+- newScaleFactor =
((SunGraphics2D)g).surfaceData.getDefaultScale();
++ newScaleFactor =
getDefaultScale(((SunGraphics2D)g).surfaceData);
+ }
+ if (scaleFactor != newScaleFactor) {
+ resizePixelBuffer(newScaleFactor);
+--
+2.24.1
+
--
2.24.1
--- End Message ---
--- Begin Message ---
Subject: |
Re: [bug#39742] [v2] gnu: java-openjfx-build: Add helpful patch. |
Date: |
Sun, 15 Mar 2020 14:19:53 -0400 |
I'm closing this bug ticket because Alexey is still working on some of
the patches and it's confusing to have the patches spread over multiple
tickets, even though we merged them. Alexey will open a new ticket soon.
--- End Message ---