diff options
author | Patrik Suzzi | 2016-06-27 23:22:40 +0000 |
---|---|---|
committer | Patrik Suzzi | 2016-06-30 11:16:43 +0000 |
commit | d087a6b7e24c09db8fa729b985383ba168fb4055 (patch) | |
tree | 2df902921ae107db516967c14dc61755de012bb6 /bundles | |
parent | c574fc16a5885c8fb52341afec376d203c2ae9be (diff) | |
download | eclipse.platform.swt-d087a6b7e24c09db8fa729b985383ba168fb4055.tar.gz eclipse.platform.swt-d087a6b7e24c09db8fa729b985383ba168fb4055.tar.xz eclipse.platform.swt-d087a6b7e24c09db8fa729b985383ba168fb4055.zip |
Bug 496854 - Eclipse should display libwebgtk version when using gtk
With this change proposal, WebKit stores the WebKitGTK version in system
properties, after the first time the WebKitGTK is used.
Change-Id: Ide338b198fa67e65422ee1aeb363c5a6cf8a4b50
Signed-off-by: Patrik Suzzi <psuzzi@gmail.com>
Diffstat (limited to 'bundles')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java index d65638e0ca..9675d82487 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java +++ b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java @@ -94,6 +94,8 @@ class WebKit extends WebBrowser { static final String KEY_CHECK_SUBWINDOW = "org.eclipse.swt.internal.control.checksubwindow"; //$NON-NLS-1$ + static final String SWT_WEBKITGTK_VERSION = "org.eclipse.swt.internal.webkitgtk.version"; //$NON-NLS-1$ + /* the following Callbacks are never freed */ static Callback Proc2, Proc3, Proc4, Proc5, Proc6; static Callback JSObjectHasPropertyProc, JSObjectGetPropertyProc, JSObjectCallAsFunctionProc; @@ -227,6 +229,24 @@ class WebKit extends WebBrowser { } } + /** + * Gets the webkit version, within an <code>int[3]</code> array with + * <code>{major, minor, micro}</code> version + */ + private static int[] internalGetWebkitVersion(){ + int [] vers = new int[3]; + if (WEBKIT2){ + vers[0] = WebKitGTK.webkit_get_major_version (); + vers[1] = WebKitGTK.webkit_get_minor_version (); + vers[2] = WebKitGTK.webkit_get_micro_version (); + } else { + vers[0] = WebKitGTK.webkit_major_version (); + vers[1] = WebKitGTK.webkit_minor_version (); + vers[2] = WebKitGTK.webkit_micro_version (); + } + return vers; + } + static String getString (long /*int*/ strPtr) { int length = OS.strlen (strPtr); byte [] buffer = new byte [length]; @@ -248,16 +268,8 @@ static boolean IsInstalled () { // TODO webkit_check_version() should take care of the following, but for some // reason this symbol is missing from the latest build. If it is present in // Linux distro-provided builds then replace the following with this call. - int major, minor, micro; - if (WEBKIT2){ - major = WebKitGTK.webkit_get_major_version (); - minor = WebKitGTK.webkit_get_minor_version (); - micro = WebKitGTK.webkit_get_micro_version (); - } else { - major = WebKitGTK.webkit_major_version (); - minor = WebKitGTK.webkit_minor_version (); - micro = WebKitGTK.webkit_micro_version (); - } + int [] vers = internalGetWebkitVersion(); + int major = vers[0], minor = vers[1], micro = vers[2]; IsWebKit14orNewer = major > 1 || (major == 1 && minor > 4) || (major == 1 && minor == 4 && micro >= 0); @@ -558,18 +570,11 @@ long /*int*/ webViewProc (long /*int*/ handle, long /*int*/ arg0, long /*int*/ a @Override public void create (Composite parent, int style) { if (ExternalClass == 0) { + int [] vers = internalGetWebkitVersion(); + System.setProperty(SWT_WEBKITGTK_VERSION, + String.format("%s.%s.%s", vers[0], vers[1], vers[2])); // $NON-NLS-1$ if (Device.DEBUG) { - int major, minor, micro; - if (WEBKIT2){ - major = WebKitGTK.webkit_get_major_version (); - minor = WebKitGTK.webkit_get_minor_version (); - micro = WebKitGTK.webkit_get_micro_version (); - } else { - major = WebKitGTK.webkit_major_version (); - minor = WebKitGTK.webkit_minor_version (); - micro = WebKitGTK.webkit_micro_version (); - } - System.out.println("WebKit version " + major + "." + minor + "." + micro); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + System.out.println(String.format("WebKit version %s.%s.%s", vers[0], vers[1], vers[2])); //$NON-NLS-1$ } JSClassDefinition jsClassDefinition = new JSClassDefinition (); byte[] bytes = Converter.wcsToMbcs (null, CLASSNAME_EXTERNAL, true); @@ -786,14 +791,8 @@ public void create (Composite parent, int style) { * it. The workaround is to temporarily give it a size that forces * the native resize events to fire. */ - int major, minor; - if (WEBKIT2){ - major = WebKitGTK.webkit_get_major_version (); - minor = WebKitGTK.webkit_get_minor_version (); - } else { - major = WebKitGTK.webkit_major_version (); - minor = WebKitGTK.webkit_minor_version (); - } + int [] vers = internalGetWebkitVersion(); + int major = vers[0], minor = vers[1]; if (major == 1 && minor >= 10) { Rectangle minSize = browser.computeTrim (0, 0, 2, 2); Point size = browser.getSize (); |