On Fri, 10 Sep 2021 18:15:21 GMT, Jose Pereda <jper...@openjdk.org> wrote:
>> Currently, `WebPage` has already a public `setBackgroundColor()` method, but >> the class is not public. Therefore, public API is needed in `WebView` to >> allow developers access to it. >> >> In line with the `fontSmoothingType` property, this PR provides public >> support for setting the background color of a WebPage, by adding a >> `pageFill` property, and a CSR is required. >> >> The color for the background, that can be opaque, transparent or with any >> level of opacity, can be set via code or via CSS using `-fx-page-fill`. >> >> Unit tests and a system test are provided. > > Jose Pereda has updated the pull request incrementally with one additional > commit since the last revision: > > Fix test to pass all 3 platforms Somehow by accident I've found out that doing in `WebPage::paint2GC`: if (clip != null) { if (isBackgroundColorTransparent()) { + gc.clearRect(0, 0, 0, 0); // extra call to clear rect gc.clearRect((int) clip.getX(), (int) clip.getY(), (int) clip.getWidth(), (int) clip.getHeight()); } gc.setClip(clip); fixes the issue for the Group test (same for no container case). Ultimately, this is the same as calling twice `ES2Graphics::clearQuad`. After some testing, I modified this method to get it working with the expected single call with just this change: CompositeMode mode = getCompositeMode(); - // set the blend mode to CLEAR - context.updateCompositeMode(CompositeMode.CLEAR); Paint oldPaint = getPaint(); setPaint(Color.BLACK); // any color will do... fillQuad(x1, y1, x2, y2); + // set the blend mode to CLEAR + context.updateCompositeMode(CompositeMode.CLEAR); context.flushVertexBuffer(); which seems to indicate that `fillQuad` requires SRC_OVER and we can use the original black color, and only before flushing we set the CLEAR mode. Does this make sense? ------------- PR: https://git.openjdk.java.net/jfx/pull/563