Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8236651: Simplify and update glass gtk backend #77

Open
wants to merge 13 commits into
base: master
from

Conversation

@tsayao
Copy link
Collaborator

@tsayao tsayao commented Jan 6, 2020

Summary

  • Simplify and update the Gtk glass backend, making Linux a first-class OpenJFX platform.

Goals

  • Make Linux a first-class OpenJFX platform (see Motivation);
  • Simplify the code and reduce it's size;
  • Update to gtk3 (it was originally a port from gtk2);
  • Remove unused code (such as applets and web start);
  • Prepare the ground for a possible future Wayland support.

Testing

./gradlew -PEXTRA_TEST_ARGS='-Djavafx.gtk.experimental=true' -PFULL_TEST=true -PUSE_ROBOT=true :systemTests:test


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed

Testing

Linux x64 Windows x64 macOS x64
Build / test ✔️ (1/1 passed) ✔️ (1/1 passed) ✔️ (1/1 passed)

Integration blocker

 ⚠️ The change requires a CSR request to be approved.

Issue

Download

$ git fetch https://git.openjdk.java.net/jfx pull/77/head:pull/77
$ git checkout pull/77

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Jan 6, 2020

👋 Welcome back tsayao! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request (refresh this page to view it).

@openjdk openjdk bot added the rfr label Jan 6, 2020
@mlbridge
Copy link

@mlbridge mlbridge bot commented Jan 6, 2020

Webrevs

@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Jan 6, 2020

Please, mark it as WIP.

You can do this by editing the title and adding WIP: as a prefix.

@kevinrushforth kevinrushforth changed the title 8236651: Simplify and update glass gtk backend WIP: 8236651: Simplify and update glass gtk backend Jan 6, 2020
@openjdk openjdk bot removed the rfr label Jan 6, 2020
@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Jan 6, 2020

This sort of enhancement needs to be discussed on the openjfx-dev mailing list first. While the WIP PR might be used to illustrate what you have in mind to propose, it is premature to actually review the implementation without first discussing whether and it makes sense to do it, what the high-level goals are, etc.

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Jan 6, 2020

I understand. Will do that when the code works 100%. I have submitted the PR to avoid duplicated efforts and let people test it (if anyone is willing).

@mlbridge
Copy link

@mlbridge mlbridge bot commented Jan 13, 2020

Mailing list message from Thiago Milczarek Sayao on openjfx-dev:

Hello users of this list.

While fixing some bugs on glass-gtk backend I had some noticed some quite complex logic to mimic windows behavior on linux - for example, on linux window decorations are a job do the window manager - which may vary. So window sizes does not account decorations.

Also, the gtk2 -> gtk3 migration could use some improvement because gtk3 does a lot of "deprecations" - even inside the gtk3 release cycle.

There was a lot of code regarding applets and web start, which are discontinued.

So this PR simplifies te code (specially sizing a positioning of windows), updates to gtk3 recent changes (while being compatible with older releases) and removes web start / applet code.

It also eliminates some restrictions on DND. It will work with all text formats and all image formats that both gtk and javafx supports.

It's working very well. So if anyone is willing to test, or take a look.

I need to do more testing on:

* Mouse grabs to mimic windows behavior;
* Native _setBackground call

Any pointers on uses cases for this is appreciated.

Cheers.

________________________________
De: openjfx-dev <openjfx-dev-bounces at openjdk.java.net> em nome de Thiago Milczarek Sayao <tsayao at openjdk.java.net>
Enviado: s?bado, 11 de janeiro de 2020 22:00
Para: openjfx-dev at openjdk.java.net <openjfx-dev at openjdk.java.net>
Assunto: Re: [Rev 08] RFR: WIP: 8236651: Simplify and update glass gtk backend

This proposed change does the following:

- Ports DND target to use GTK reducing code size and adding extra text / image formats (such as .gif);
- Use gtk signals instead of gdk events (also to reduce code size);
- Simplifies geometry (sizing/positioning) with a more straightforward code (less special cases) ;
- Replaces (pointer and focus) grabbing with a gtk approach;
- Reworked frame extents (the wm extension to get decoration sizes) to reduce size and complexity;
- Simplified cursor changing;
- Reduced the use of gtk/gdk deprecated functions;

In general it reduces code size and complexity and hands more work to gtk.

Important notice: As I could not test the code for handling web start and web applets because browsers do not support it anymore and java has removed "javaws", I took the liberty to remove the code. Will restore if necessary.

![image](https://user-images.githubusercontent.com/30704286/71791073-58779d00-3012-11ea-89e5-07588f7a41cc.png)

The pull request has been updated with 1 additional commit.

-------------

Added commits:
- 9850bb7: Fix dialog with owner sizing

Changes:
- all: https://git.openjdk.java.net/jfx/pull/77/files
- new: https://git.openjdk.java.net/jfx/pull/77/files/209b7ac7..9850bb7

Webrevs:
- full: https://webrevs.openjdk.java.net/jfx/77/webrev.08
- incr: https://webrevs.openjdk.java.net/jfx/77/webrev.07-08

Stats: 7 lines in 1 file changed: 0 ins; 3 del; 4 mod
Patch: https://git.openjdk.java.net/jfx/pull/77.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/77/head:pull/77

PR: https://git.openjdk.java.net/jfx/pull/77

Merge master
@tsayao tsayao force-pushed the tsayao:jdk_8236651 branch from 0e07116 to 694641f Jan 23, 2020
@tsayao tsayao changed the title WIP: 8236651: Simplify and update glass gtk backend 8236651: Simplify and update glass gtk backend Jan 29, 2020
@openjdk openjdk bot added the rfr label Jan 29, 2020
@tsayao tsayao requested a review from kevinrushforth Jan 31, 2020
@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Feb 3, 2020

Code Changes

  • glass_window.cpp / glass_window.h

    • Removed WindowContextPlug and WindowContextChild (that were used for applets / web start) and moved everything to
      one class named WindowContext (since inheritance was no required anymore)
    • Changed set_enabled() to use gtk_widget_set_sensitive instead of custom code;
    • Moved to gtk signals instead of gdk events (to use gtk_widget_set_sensitive and gtk_grab_add);
    • Frame Extents: Removed the code to request extents and gtk already does it by default;
    • Size calculation: Reworked size calculation code. In general, X windows are content size instead of whole window size (considering extents - frame decorations). OpenJfx uses "whole window size" as window sizes, so it requires a "hack" to recalculate sizes when set_bounds() is called with window sizes instead of content sizes. The rework was to simplify code paths and make it more straightforward.
    • Other Size calculation changes:
      • Use gtk_window_set_default_size() for initial size which is the appropriate function;
      • Gravity is now ignored as it is on Windows glass impl;
      • Avoid sending same sizes to Java;
      • Introduced calculate_adjustments() which is a fallback when frame extents is not present (it's optional to window managers to implement it);
    • Geometry: Min / Max sizes - reworked it to simplify / Concentrated geometry changes on
      apply_geometry().
    • Mouse grab: Reworked it to use to correct functions according to gtk+ version;
    • Draw: Reworked it to use the correct calls accord to gtk+ version changes;
    • Fixed JDK-8237491;
    • Moved background code to paint() as gtk3 uses styles to set the background and other functions were deprecated;
    • Reorganized function order on glass_window.cpp to match glass_window.h
  • GlassCursor.cpp

    • Gtk+3 uses a name-like-css approach - so it was properly ported to gtk3 way;
    • Reworked Gtk+2 to use a function instead of manual calls to find the cursor;
  • GtkWindow.java

    • Moved the extents special case to native glass;
  • GlassApplication.cpp

    • Removed Gdk events where possible (it's now on glass_window as signals);
    • Removed applet/web start code;
  • GlassView.cpp

    • Changes to reflect frame extents rework on glass_window
  • GlassWindow.cpp

    • WindowContextTop -> WindowContext
    • Removed applet / web start code;
    • Removed frame extents (which is not called anymore due to GtkWindow.java change);
  • glass_general.cpp

    • Removed functions that became unused;
    • Added is_grab_disabled() that is used on glass_window
  • glass_window_ime.cpp

    • WindowContextTop -> WindowContext;
  • glass_dnd.cpp / glass_dnd.h

    • Ported to Gtk signals;
    • Use all possible image formats (supported by GdkPixbuf / OpenJfx) - .gif is now possible (for ex.);
    • Allow COMPOUND_TEXT;
    • Do not request content while dragging;
    • Reduce overall code size.
@openjdk openjdk bot added outdated and removed outdated labels Feb 3, 2020
@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Feb 13, 2020

This is going to need further discussion on the mailing list as indicated above, so it is still premature to review it (i.e., it should still be considered effectively a "WIP" until that discussion happens). Additionally, this is a significant and risky change, so I'd like additional eyes on it when we do get to the point of reviewing it.

@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Feb 13, 2020

/reviewers 3

@openjdk
Copy link

@openjdk openjdk bot commented Feb 13, 2020

@kevinrushforth
The number of required reviews for this PR is now set to 3 (with at least 1 of role reviewers).

Merge from jfx
@tsayao tsayao force-pushed the tsayao:jdk_8236651 branch 2 times, most recently from cddf3ad to f7a84fd Feb 16, 2020
Merge
@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Mar 3, 2020

I have been testing this for several days on ubuntu 18.04 and it's working good. It pass system tests, runs Ensemble 8 and Scenebuilder.

Will have to do some tests on 16.04.

merge from jfx
@openjdk openjdk bot removed the rfr label Mar 19, 2020
@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Mar 24, 2020

Ubuntu 20.04 Test Results

Updated April 2nd.

image

Merge upstream
@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Jun 9, 2020

I am running a full test using GTK 3 on Ubuntu 20.04 and will publish results. I will later do the same for Oracle Linux 7.7.

One thing to note is that this new GTK pipeline doesn't run on Ubuntu 16.04. I get the following running any program:

$ java -Djavafx.gtk.experimental=true -Djdk.gtk.verbose=true HelloRectangle
checking GTK version 3
trying GTK library libgtk-3.so.0
using GTK library version 3 set libgtk-3.so.0
Glass GTK library to load is glassgtk3_exp
loaded gdk_x11_display_set_window_scale
java: symbol lookup error: /localhome/kcr/javafx/jfx-tmp/jfx/rt/build/sdk/lib/libglassgtk3_exp.so: undefined symbol: gdk_display_get_n_monitors
@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Jun 10, 2020

Here are the results with Ubuntu 20.04:

Ubuntu-20 04-test-results

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Jun 10, 2020

I am running a full test using GTK 3 on Ubuntu 20.04 and will publish results. I will later do the same for Oracle Linux 7.7.

One thing to note is that this new GTK pipeline doesn't run on Ubuntu 16.04. I get the following running any program:

$ java -Djavafx.gtk.experimental=true -Djdk.gtk.verbose=true HelloRectangle
checking GTK version 3
trying GTK library libgtk-3.so.0
using GTK library version 3 set libgtk-3.so.0
Glass GTK library to load is glassgtk3_exp
loaded gdk_x11_display_set_window_scale
java: symbol lookup error: /localhome/kcr/javafx/jfx-tmp/jfx/rt/build/sdk/lib/libglassgtk3_exp.so: undefined symbol: gdk_display_get_n_monitors

I have limited GTK compilation to use GTK 3.8 symbols. Will run more tests, but should fix it.

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Jun 10, 2020

Here is the result on Ubuntu 20.04 with the latest changes:

image

Some tests seems intermittent.

@pankaj-bansal
Copy link
Collaborator

@pankaj-bansal pankaj-bansal commented Jun 12, 2020

I have run the test on OL82 on updated code. Following are the results. I will rerun this on Ubuntu 18.04 and get back with the results
OL82

@pankaj-bansal
Copy link
Collaborator

@pankaj-bansal pankaj-bansal commented Jun 12, 2020

I ran the systemTests on OL8.2 using gradle -PEXTRA_TEST_ARGS='-Djavafx.gtk.experimental=true' -PFULL_TEST=true -PUSE_ROBOT=true :systemTests:cleanTest :systemTests:test. Following are the results

OL82

@pankaj-bansal
Copy link
Collaborator

@pankaj-bansal pankaj-bansal commented Jun 12, 2020

After the latest commit on June 10, this is not building for me on my Ubuntu 18.04. I am attaching the build log for reference.
build.log

Update from master
@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Jun 12, 2020

After the latest commit on June 10, this is not building for me on my Ubuntu 18.04. I am attaching the build log for reference.
build.log

It's now fixed. I had used two compilation parameters to limit Gtk on 3.8 (so it would generate error if any symbol > 3.8 were used). But that does not seem to work on 18.04, so I removed it.

@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Jun 12, 2020

I had used two compilation parameters to limit Gtk on 3.8 (so it would generate error if any symbol > 3.8 were used). But that does not seem to work on 18.04, so I removed it.

Good. I was going to ask you about that, so I'm happy to see it gone.

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Jun 12, 2020

I have investigated the Tab Pane Drag Test and it works manually.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.stage.Stage;

public class Test
        extends Application {

    @Override
    public void start(Stage stage) {
        TabPane tabPane = new TabPane();
        tabPane.setTabDragPolicy(TabPane.TabDragPolicy.REORDER);
        Scene scene = new Scene(tabPane, 800, 600);
        stage.setScene(scene);
        Tab tab1 = new Tab("Tab1");
        Tab tab2 = new Tab("Tab2");

        tabPane.getTabs().addAll(tab1, tab2);


        stage.setAlwaysOnTop(true);
        stage.show();
    }

    public static class Main {
        public static void main(String[] args) {
            Application.launch(Test.class, args);
        }
    }
}

It also works if I switch back to GDK Events instead of Gtk Signals. But it is a drag test, by experience they don't work well on Robot.

@pankaj-bansal
Copy link
Collaborator

@pankaj-bansal pankaj-bansal commented Jun 14, 2020

Following are results in Ubuntu 18.04 after fix for tab pane tests.
Results_18 04

@pankaj-bansal
Copy link
Collaborator

@pankaj-bansal pankaj-bansal commented Jun 14, 2020

This is the result on OL 82 with latest commit
OL82

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Jun 14, 2020

@pankaj-bansal Sorry for commiting again. Now the Tab Pane test works properly.

Merge from upstream
@openjdk
Copy link

@openjdk openjdk bot commented Jul 3, 2020

@tsayao This pull request looks like it contains a merge commit that brings in commits from outside of this repository. If you want these commits to be preserved when you integrate, you will need to make a 'merge-style' pull request. To do this, change the title of this pull request to Merge <project>:<branch>, where <project> is the name of another project in the OpenJDK organization. For example: Merge jdk:master.

@kevinrushforth
Copy link
Member

@kevinrushforth kevinrushforth commented Jul 3, 2020

If you want these commits to be preserved when you integrate, you will need to make a 'merge-style' pull request.

Please ignore this information from Skara. I don't know what caused it, but I've pinged the Skara folks about it.

@Torbuntu
Copy link

@Torbuntu Torbuntu commented Jul 29, 2020

Would it be possible and related to add the gtk touch events to this PR as part of the Glass GTK3 update? Or would follow up update PR adding that be more appropriate?

Currently linux desktop does not have touch support because of the missing gesture/touch events from gtk3.

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Jul 29, 2020

@Torbuntu Not to this PR, I don't want to delay it too much. But can be done (I just do not own a touch device currently).

@Torbuntu
Copy link

@Torbuntu Torbuntu commented Jul 29, 2020

Sounds good! I have a few devices I'd be more than excited to test on, and even help add the feature myself if I can figure it out if time is a big issue?

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Aug 25, 2020

I would starting hooking gtk event signals (https://developer.gnome.org/gtk3/stable/GtkWidget.html), specially the "touch-event" to JavaFx events (probably need to add through JNI). Should be simple. Contact me at thiago.sayao (gmail).

@Torbuntu
Copy link

@Torbuntu Torbuntu commented Aug 27, 2020

I would starting hooking gtk event signals (https://developer.gnome.org/gtk3/stable/GtkWidget.html), specially the "touch-event" to JavaFx events (probably need to add through JNI). Should be simple. Contact me at thiago.sayao (gmail).

Would it be safe you think to branch from your PR to have the updated gtk backend? It would be much easier to work with.

tsayao added 2 commits Sep 21, 2020
Merge with main
author Thiago Sayao <thiago.sayao@gmail.com> 1578267129 -0300
committer Thiago M Sayao <thiago.sayao@gmail.com> 1600731362 -0300

parent c95598e
author Thiago Sayao <thiago.sayao@gmail.com> 1578267129 -0300
committer Thiago M Sayao <thiago.sayao@gmail.com> 1600731289 -0300

JDK-8236651 Simplify and update glass gtk backend

Cleaning

Cleaning + change year to 2020

Fix crash

Fix crash

Fix crash

Revert idea files

Fix flickering and sizing issues

Pass more tests

Small fixes

Use gtk_window_set_default_size for before-map sizing which is the appropriate function

Better alternative calculation for no _NET_FRAME_EXTENTS WM extension

Fix dialog with owner sizing

Maybe fix background

Big cleanup

Allow undecorated windows to be maximized.

Mouse pointer grab

Work on mouse grab

8233747: JVM crash in com.sun.webkit.dom.DocumentImpl.createAttribute

Reviewed-by: kcr, ghb

8234474: [macos 10.15] Crash in file dialog in sandbox mode

Reviewed-by: arapte, prr

8236648: javadoc warning on Text::tabSizeProperty method

Reviewed-by: kcr

8233798: Ctrl-L character mistakenly removed from gstreamer.md

Reviewed-by: almatvee

8232589: Remove CoreAudio Utility Classes

Reviewed-by: kcr, jvos

8236448: Remove unused and repair broken Android/Dalvik code

Reviewed-by: kcr

8236808: javafx_iio can not be used in static environment

Reviewed-by: kcr

8236733: Change JavaFX release version to 15

Reviewed-by: arapte

8232128: Better formatting for numbers

Reviewed-by: rhalade, ghb

8232214: Improved internal validations

Reviewed-by: ghb, rhalade

8237078: [macOS] Media build broken on XCode 11

Reviewed-by: kcr, almatvee

JDK-8236651 Simplify and update glass gtk backend

Cleaning

Cleaning + change year to 2020

Fix crash

Fix crash

Fix crash

Revert idea files

Fix flickering and sizing issues

Pass more tests

Small fixes

Use gtk_window_set_default_size for before-map sizing which is the appropriate function

Better alternative calculation for no _NET_FRAME_EXTENTS WM extension

Fix dialog with owner sizing

Maybe fix background

Big cleanup

Allow undecorated windows to be maximized.

Mouse pointer grab

Work on mouse grab

Fix Initial Size

Revert "Fix Initial Size"

This reverts commit 0c982d6

Better fix for initial size

8157224: isNPOTSupported check is too strict

Reviewed-by: kcr

8233942: Update to 609.1 version of WebKit

Co-authored-by: Guru HB <guru.hb@oracle.com>
Co-authored-by: Arun Joseph <arun.aj.joseph@oracle.com>
Co-authored-by: Kevin Rushforth <kevin.rushforth@oracle.com>
Reviewed-by: kcr, jvos, ajoseph

8236753: Animations do not play backwards after being stopped

Reviewed-by: kcr, arapte

8237823: Mark TextTest.testTabSize as unstable

Reviewed-by: prr

8236912: NullPointerException when clicking in WebView with Button 4 or Button 5

Reviewed-by: ghb, kcr

8232824: Removing TabPane with strong referenced content causes memory leak from weak one

Reviewed-by: kcr, aghaisas

8237372: NullPointerException in TabPaneSkin.stopDrag

Reviewed-by: arapte

8237003: Remove hardcoded WebAnimationsCSSIntegrationEnabled flag in DumpRenderTree

Reviewed-by: kcr

8238249: GetPrimitiveArrayCritical passed with hardcoded FALSE value

Reviewed-by: kcr

8088198: Exception thrown from snapshot if dimensions are larger than max texture size

Reviewed-by: arapte, kcr

8237833: Check glyph size before adding to glyph texture cache

Reviewed-by: kcr

8237782: Only read advances up to the minimum of the numHorMetrics or the available font data.

Reviewed-by: kcr

8237770: Error creating fragment phong shader on iOS

Reviewed-by: kcr

8237944: webview native cl "-m32" unknown option for windows 32-bit build

Reviewed-by: kcr

8231513: JavaFX cause Keystroke Receiving prompt on MacOS 10.15 (Catalina)

Reviewed-by: prr, jvos

8237975: Non-embedded Animations do not play backwards after being paused

Reviewed-by: kcr, arapte

8237503: Update copyright header for files modified in 2020

Reviewed-by: arapte

Revert back focus mechanism

Fix seat_grab param

Fix POPUP window positioning

Fix bug on extents calculation

Ajustments

Fix pointer grab bug

Remove unused var

8237469: Inherited styles don't update when node is moved

Reviewed-by: dgrieve, aghaisas, kcr

8238526: Cherry pick GTK WebKit 2.26.3 changes

Reviewed-by: kcr, jvos

8237453: [TabPane] Incorrect arrow key traversal through tabs after reordering

Reviewed-by: kcr, aghaisas

8236839: System menubar removed when other menubars are created or modified

Reviewed-by: kcr, aghaisas

8227619: Potential memory leak in javafx.scene.control.ListView

Reviewed-by: kcr, aghaisas

Adjust comment

Adjust comment

Fix compile error on implicit function declaration on updated g++

fix compilation on ubuntu 16.04

calculate less if _NET_FRAME_EXTENTS is available

Fixes for WM that do not support frame extents

Mouse grab fixes on Ubuntu 20.04 Gtk+3.20+

Better comment

Fix Tab

Prefer content size over window size.

Fixes for ubuntu 16.04 (which delays frame extents)

Just comment fixing

More fixes for 16.04 (i mean gtk+ version that ships on 16.04, plus the different window manager - Unity).

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Only work-around Unity bug if Unity is the Window Manager (Ubuntu 16.04).

Separate the new gtk glass impl

Make gtk3 compile without deprecations

Make gtk3 compile without deprecations

Make gtk3 compile without deprecations

Smooth scrolling only possible with impl on java side

Restore deleted idea file

Restore comment position

Rename flag to javafx.gtk.experimental

Rename flag to javafx.gtk.experimental

Fix window position bug

Fix build with merged linux.gradle

Forgot a g_print

Limit GTK on 3.18 (Ubuntu 16.04)

Limit GTK on 3.8

Fix compilation on 18.04

Small Adjustments

Revert to all events mask

Fix mouse click event

JDK-8236651 Simplify and update glass gtk backend

Cleaning

Cleaning + change year to 2020

Fix crash

Fix crash

Fix crash

Revert idea files

Fix flickering and sizing issues

Pass more tests

Small fixes

Use gtk_window_set_default_size for before-map sizing which is the appropriate function

Better alternative calculation for no _NET_FRAME_EXTENTS WM extension

Fix dialog with owner sizing

Maybe fix background

Big cleanup

Allow undecorated windows to be maximized.

Mouse pointer grab

Work on mouse grab

8233747: JVM crash in com.sun.webkit.dom.DocumentImpl.createAttribute

Reviewed-by: kcr, ghb

8234474: [macos 10.15] Crash in file dialog in sandbox mode

Reviewed-by: arapte, prr

8236648: javadoc warning on Text::tabSizeProperty method

Reviewed-by: kcr

8233798: Ctrl-L character mistakenly removed from gstreamer.md

Reviewed-by: almatvee

8232589: Remove CoreAudio Utility Classes

Reviewed-by: kcr, jvos

8236448: Remove unused and repair broken Android/Dalvik code

Reviewed-by: kcr

8236808: javafx_iio can not be used in static environment

Reviewed-by: kcr

8236733: Change JavaFX release version to 15

Reviewed-by: arapte

8232128: Better formatting for numbers

Reviewed-by: rhalade, ghb

8232214: Improved internal validations

Reviewed-by: ghb, rhalade

8237078: [macOS] Media build broken on XCode 11

Reviewed-by: kcr, almatvee

JDK-8236651 Simplify and update glass gtk backend

Cleaning

Cleaning + change year to 2020

Fix crash

Fix crash

Fix crash

Revert idea files

Fix flickering and sizing issues

Pass more tests

Small fixes

Use gtk_window_set_default_size for before-map sizing which is the appropriate function

Better alternative calculation for no _NET_FRAME_EXTENTS WM extension

Fix dialog with owner sizing

Maybe fix background

Big cleanup

Allow undecorated windows to be maximized.

Mouse pointer grab

Work on mouse grab

Fix Initial Size

Revert "Fix Initial Size"

This reverts commit 0c982d6

Better fix for initial size

8157224: isNPOTSupported check is too strict

Reviewed-by: kcr

8233942: Update to 609.1 version of WebKit

Co-authored-by: Guru HB <guru.hb@oracle.com>
Co-authored-by: Arun Joseph <arun.aj.joseph@oracle.com>
Co-authored-by: Kevin Rushforth <kevin.rushforth@oracle.com>
Reviewed-by: kcr, jvos, ajoseph

8236753: Animations do not play backwards after being stopped

Reviewed-by: kcr, arapte

8237823: Mark TextTest.testTabSize as unstable

Reviewed-by: prr

8236912: NullPointerException when clicking in WebView with Button 4 or Button 5

Reviewed-by: ghb, kcr

8232824: Removing TabPane with strong referenced content causes memory leak from weak one

Reviewed-by: kcr, aghaisas

8237372: NullPointerException in TabPaneSkin.stopDrag

Reviewed-by: arapte

8237003: Remove hardcoded WebAnimationsCSSIntegrationEnabled flag in DumpRenderTree

Reviewed-by: kcr

8238249: GetPrimitiveArrayCritical passed with hardcoded FALSE value

Reviewed-by: kcr

8088198: Exception thrown from snapshot if dimensions are larger than max texture size

Reviewed-by: arapte, kcr

8237833: Check glyph size before adding to glyph texture cache

Reviewed-by: kcr

8237782: Only read advances up to the minimum of the numHorMetrics or the available font data.

Reviewed-by: kcr

8237770: Error creating fragment phong shader on iOS

Reviewed-by: kcr

8237944: webview native cl "-m32" unknown option for windows 32-bit build

Reviewed-by: kcr

8231513: JavaFX cause Keystroke Receiving prompt on MacOS 10.15 (Catalina)

Reviewed-by: prr, jvos

8237975: Non-embedded Animations do not play backwards after being paused

Reviewed-by: kcr, arapte

8237503: Update copyright header for files modified in 2020

Reviewed-by: arapte

Revert back focus mechanism

Fix seat_grab param

Fix POPUP window positioning

Fix bug on extents calculation

Ajustments

Fix pointer grab bug

Remove unused var

8237469: Inherited styles don't update when node is moved

Reviewed-by: dgrieve, aghaisas, kcr

8238526: Cherry pick GTK WebKit 2.26.3 changes

Reviewed-by: kcr, jvos

8237453: [TabPane] Incorrect arrow key traversal through tabs after reordering

Reviewed-by: kcr, aghaisas

8236839: System menubar removed when other menubars are created or modified

Reviewed-by: kcr, aghaisas

8227619: Potential memory leak in javafx.scene.control.ListView

Reviewed-by: kcr, aghaisas

Adjust comment

Adjust comment

Fix compile error on implicit function declaration on updated g++

fix compilation on ubuntu 16.04

calculate less if _NET_FRAME_EXTENTS is available

Fixes for WM that do not support frame extents

Mouse grab fixes on Ubuntu 20.04 Gtk+3.20+

Better comment

Fix Tab

Prefer content size over window size.

Fixes for ubuntu 16.04 (which delays frame extents)

Just comment fixing

More fixes for 16.04 (i mean gtk+ version that ships on 16.04, plus the different window manager - Unity).

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Fix unfullscreen bug on older gtk+

Only work-around Unity bug if Unity is the Window Manager (Ubuntu 16.04).

Separate the new gtk glass impl

Make gtk3 compile without deprecations

Make gtk3 compile without deprecations

Make gtk3 compile without deprecations

Smooth scrolling only possible with impl on java side

Restore deleted idea file

Restore comment position

Rename flag to javafx.gtk.experimental

Fix build with merged linux.gradle

Fix compilation on 18.04

Revert to all events mask

Fix mouse click event
@tsayao tsayao force-pushed the tsayao:jdk_8236651 branch from a8e1e18 to 97c6741 Sep 21, 2020
@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Sep 21, 2020

Rebased onto "master" and squashed commits.

@tsayao
Copy link
Collaborator Author

@tsayao tsayao commented Sep 22, 2020

Tested on Ubuntu 20.04

756 tests completed, 6 failed, 110 skipped

Failed:

test.robot.javafx.scene.ColorPickerTest > testColorPickerSceneChange FAILED
    java.lang.AssertionError: Timeout: Failed to receive onAction callback.
        at org.junit.Assert.fail(Assert.java:91)
        at org.junit.Assert.assertTrue(Assert.java:43)
        at test.robot.javafx.scene.ColorPickerTest.waitForLatch(ColorPickerTest.java:203)
        at test.robot.javafx.scene.ColorPickerTest.clickColorPickerPalette(ColorPickerTest.java:88)
        at test.robot.javafx.scene.ColorPickerTest.testColorPickerSceneChange(ColorPickerTest.java:119)

test.robot.javafx.scene.RobotTest > testKeyPress FAILED
    org.junit.ComparisonFailure: letter 'a' should be pressed by Robot expected:<[a]> but was:<[]>
        at org.junit.Assert.assertEquals(Assert.java:123)
        at test.robot.javafx.scene.RobotTest.testKeyboard(RobotTest.java:193)
        at test.robot.javafx.scene.RobotTest.testKeyPress(RobotTest.java:144)

test.robot.javafx.scene.tableview.TableViewResizeColumnToFitContentTest > resizeColumnToFitContentTest FAILED
    java.lang.AssertionError: resizeColumnToFitContent failed
        at org.junit.Assert.fail(Assert.java:91)
        at org.junit.Assert.assertTrue(Assert.java:43)
        at test.robot.javafx.scene.tableview.TableViewResizeColumnToFitContentTest.resizeColumnToFitContentTest(TableViewResizeColumnToFitContentTest.java:96)

test.robot.javafx.stage.IconifyTest > canIconifyDecoratedStage FAILED
    junit.framework.AssertionFailedError: expected:rgba(255,0,0,255) but was:rgba(62,62,62,255)
        at test.robot.testharness.VisualTestBase.assertColorEquals(VisualTestBase.java:179)
        at test.robot.javafx.stage.IconifyTest.lambda$canIconifyStage$4(IconifyTest.java:97)

test.robot.javafx.stage.IconifyTest > canIconifyTransparentStage FAILED
    junit.framework.AssertionFailedError: expected:rgba(0,255,0,255) but was:rgba(88,88,88,255)
        at test.robot.testharness.VisualTestBase.assertColorEquals(VisualTestBase.java:179)
        at test.robot.javafx.stage.IconifyTest.lambda$canIconifyStage$6(IconifyTest.java:108)

test.robot.javafx.stage.IconifyTest > canIconifyNonResizableStage FAILED
    junit.framework.AssertionFailedError: expected:rgba(255,0,0,255) but was:rgba(44,44,44,255)
        at test.robot.testharness.VisualTestBase.assertColorEquals(VisualTestBase.java:179)
        at test.robot.javafx.stage.IconifyTest.lambda$canIconifyStage$4(IconifyTest.java:97)

For some reason the html report is not being generated.

Second run:
756 tests completed, 4 failed, 110 skipped


test.robot.javafx.scene.RobotTest > testKeyPress FAILED
    org.junit.ComparisonFailure: letter 'a' should be pressed by Robot expected:<[a]> but was:<[]>
        at org.junit.Assert.assertEquals(Assert.java:123)
        at test.robot.javafx.scene.RobotTest.testKeyboard(RobotTest.java:193)
        at test.robot.javafx.scene.RobotTest.testKeyPress(RobotTest.java:144)

test.robot.javafx.stage.IconifyTest > canIconifyDecoratedStage FAILED
    junit.framework.AssertionFailedError: expected:rgba(255,0,0,255) but was:rgba(44,44,44,255)
        at test.robot.testharness.VisualTestBase.assertColorEquals(VisualTestBase.java:179)
        at test.robot.javafx.stage.IconifyTest.lambda$canIconifyStage$4(IconifyTest.java:97)

test.robot.javafx.stage.IconifyTest > canIconifyTransparentStage FAILED
    junit.framework.AssertionFailedError: expected:rgba(0,255,0,255) but was:rgba(88,88,88,255)
        at test.robot.testharness.VisualTestBase.assertColorEquals(VisualTestBase.java:179)
        at test.robot.javafx.stage.IconifyTest.lambda$canIconifyStage$6(IconifyTest.java:108)

test.robot.javafx.stage.IconifyTest > canIconifyNonResizableStage FAILED
    junit.framework.AssertionFailedError: expected:rgba(255,0,0,255) but was:rgba(44,44,44,255)
        at test.robot.testharness.VisualTestBase.assertColorEquals(VisualTestBase.java:179)
        at test.robot.javafx.stage.IconifyTest.lambda$canIconifyStage$4(IconifyTest.java:97)


tsayao added 3 commits Nov 2, 2020
Merge master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Linked issues

Successfully merging this pull request may close these issues.

None yet

4 participants
You can’t perform that action at this time.