Blob Blame History Raw
From 3d7489f4c6e1826bbfbf73c8665aa28a5b2f6a90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 17 Feb 2016 16:09:01 +0000
Subject: [PATCH 1/2] Resolves: rhbz#1285356 force swing not to use gtk2 if
 gtk3 is loaded

Change-Id: I6347bf4c25ce649073afdfe4225182ab2dc84af1
---
 stoc/source/javavm/javavm.cxx | 9 ++++++++-
 vcl/unx/gtk/gtksys.cxx        | 7 +++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/stoc/source/javavm/javavm.cxx b/stoc/source/javavm/javavm.cxx
index c7a061c..64b55f7 100644
--- a/stoc/source/javavm/javavm.cxx
+++ b/stoc/source/javavm/javavm.cxx
@@ -534,8 +534,15 @@ void initVMConfiguration(
     }
 
     *pjvm= jvm;
-    setTimeZone(pjvm);
 
+    // rhbz#1285356, native look will be gtk2, which crashes
+    // when gtk3 is already loaded. Until there is a solution
+    // java-side force look and feel to something that doesn't
+    // crash when we are using gtk3
+    if (getenv("STOC_FORCE_SYSTEM_LAF"))
+        pjvm->pushProp(OUString("swing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel"));
+
+    setTimeZone(pjvm);
 }
 
 class DetachCurrentThread: private boost::noncopyable {
diff --git a/vcl/unx/gtk/gtksys.cxx b/vcl/unx/gtk/gtksys.cxx
index 80153fe..97f2464 100644
--- a/vcl/unx/gtk/gtksys.cxx
+++ b/vcl/unx/gtk/gtksys.cxx
@@ -40,6 +40,13 @@ GtkSalSystem::GtkSalSystem() : SalGenericSystem()
 {
     mpDisplay = gdk_display_get_default();
     countScreenMonitors();
+#if GTK_CHECK_VERSION(3,0,0)
+    // rhbz#1285356, native look will be gtk2, which crashes
+    // when gtk3 is already loaded. Until there is a solution
+    // java-side force look and feel to something that doesn't
+    // crash when we are using gtk3
+    setenv("STOC_FORCE_SYSTEM_LAF", "true", 1);
+#endif
 }
 
 GtkSalSystem::~GtkSalSystem()
-- 
2.7.1