From hang.vo at oracle.com Fri Nov 1 01:47:43 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Fri, 01 Nov 2013 08:47:43 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33387 WebView NPE Message-ID: <20131101084836.34125628D8@hg.openjdk.java.net> Changeset: b28bd41e9b56 Author: peterz Date: 2013-11-01 12:44 +0400 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/b28bd41e9b56 RT-33387 WebView NPE ! modules/web/src/main/java/com/sun/javafx/webkit/prism/RTImage.java ! modules/web/src/main/java/com/sun/javafx/webkit/prism/WCGraphicsPrismContext.java ! modules/web/src/main/java/com/sun/webkit/graphics/WCRenderQueue.java From hang.vo at oracle.com Fri Nov 1 02:32:52 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Fri, 01 Nov 2013 09:32:52 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33028: Scene not fully repainted when surface is lost and dirtyopts are enabled Message-ID: <20131101093313.58D48628DA@hg.openjdk.java.net> Changeset: 6af0f4099136 Author: vadim Date: 2013-11-01 13:20 +0400 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/6af0f4099136 RT-33028: Scene not fully repainted when surface is lost and dirtyopts are enabled Reviewed-by: kcr, ckyang ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/PresentingPainter.java From hang.vo at oracle.com Fri Nov 1 05:03:37 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Fri, 01 Nov 2013 12:03:37 +0000 Subject: hg: openjfx/8/graphics/rt: iOS: FIX for https://javafx-jira.kenai.com/browse/RT-34010 Message-ID: <20131101120444.8BE93628DB@hg.openjdk.java.net> Changeset: b4c9d8ff1ce0 Author: Oldrich Maticka Date: 2013-11-01 13:00 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/b4c9d8ff1ce0 iOS: FIX for https://javafx-jira.kenai.com/browse/RT-34010 ! modules/web/src/ios/java/javafx/scene/web/JS2JavaBridge.java From artem.ananiev at oracle.com Fri Nov 1 08:37:10 2013 From: artem.ananiev at oracle.com (Artem Ananiev) Date: Fri, 01 Nov 2013 19:37:10 +0400 Subject: Request for review: RT-28347 - DnD between two JFXPanels Message-ID: <5273CAA6.1050500@oracle.com> Hi, could you take a look at the following fix, please: http://cr.openjdk.java.net/~art/javafx/RT-28347/ Some information about the changes is available in bug comments: https://javafx-jira.kenai.com/browse/RT-28347 Thanks, Artem From hang.vo at oracle.com Fri Nov 1 12:48:13 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Fri, 01 Nov 2013 19:48:13 +0000 Subject: hg: openjfx/8/graphics/rt: [TEST-ONLY] Add timeout to AWT Robot test which was hanging due to RT-34002 Message-ID: <20131101194833.C4394628EE@hg.openjdk.java.net> Changeset: f3bf3ded31a0 Author: kcr Date: 2013-11-01 12:41 -0700 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/f3bf3ded31a0 [TEST-ONLY] Add timeout to AWT Robot test which was hanging due to RT-34002 ! tests/system/src/test/java/javafx/embed/swing/RT30650Test.java From hang.vo at oracle.com Fri Nov 1 13:33:00 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Fri, 01 Nov 2013 20:33:00 +0000 Subject: hg: openjfx/8/graphics/rt: RT-32320: On Windows, Arabic with Lucida Sans font are not rendering as typographic ligature. Message-ID: <20131101203340.507AE628F0@hg.openjdk.java.net> Changeset: 5d10e06e8327 Author: Felipe Heidrich Date: 2013-11-01 13:25 -0700 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/5d10e06e8327 RT-32320: On Windows, Arabic with Lucida Sans font are not rendering as typographic ligature. Reviewed-by: Steve Nortovher ! modules/graphics/src/main/java/com/sun/javafx/font/PrismFontFactory.java ! modules/graphics/src/main/java/com/sun/javafx/font/coretext/CTGlyphLayout.java ! modules/graphics/src/main/java/com/sun/javafx/font/directwrite/DWGlyphLayout.java ! modules/graphics/src/main/java/com/sun/javafx/text/GlyphLayout.java From snfuchs at gmx.de Fri Nov 1 17:03:21 2013 From: snfuchs at gmx.de (Stefan Fuchs) Date: Sat, 02 Nov 2013 01:03:21 +0100 Subject: Reenable webkit on jfx78? In-Reply-To: References: <52718314.4040903@gmx.de> <52718836.4010103@oracle.com> Message-ID: <52744149.3060300@gmx.de> Ok, webkit is in and latest openjdk updates are merged. Have fun, Stefan Danno Ferrin wrote: > For a historical perspective my principal reason for disabling was > that it wasn't compiling. So if it is now compiling, I have no > problem with it. > > > On Wed, Oct 30, 2013 at 4:29 PM, Stephen F Northover > > > wrote: > > My vote: enable it. > > Steve > > > On 2013-10-30 6:07 PM, Stefan Fuchs wrote: > > Hi, > > Currently the web-module (aka webkit) is not included in the > jfx78 backport. > > I have done some tests after enabling it in jfx78. At least on > linux it works fine. > However it increases the compile time and memory usage during > compilation considerably (if you choose to build the native > part of webkit). > So the pros are: > - backport is more complete > - backport should be easier maintain (less changes) > > The cons are: > - compile time > > Are there any opinions, whether i should enable the web-module > on future releases of jfx78 or not? > > Stefan > > > From hang.vo at oracle.com Fri Nov 1 17:04:12 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Sat, 02 Nov 2013 00:04:12 +0000 Subject: hg: openjfx/8/graphics/rt: Ensemble 8: restyle and clean up Message-ID: <20131102000443.D4E9B62911@hg.openjdk.java.net> Changeset: 94ba02ca4154 Author: "Jasper Potts" Date: 2013-11-01 16:47 -0700 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/94ba02ca4154 Ensemble 8: restyle and clean up ! apps/samples/Ensemble8/src/app/java/ensemble/EnsembleApp.java ! apps/samples/Ensemble8/src/app/java/ensemble/HomePage.java ! apps/samples/Ensemble8/src/app/java/ensemble/PageBrowser.java ! apps/samples/Ensemble8/src/app/java/ensemble/SampleInfo.java ! apps/samples/Ensemble8/src/app/java/ensemble/control/Popover.java ! apps/samples/Ensemble8/src/app/java/ensemble/control/SearchBox.java ! apps/samples/Ensemble8/src/app/java/ensemble/control/TitledToolBar.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/BackPage.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/Description.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/FrontPage.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/IPhoneLayout.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/PlaygroundNode.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SampleContainer.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SamplePage.java + apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SamplePageContent.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SlidingPages.java + apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SourcePage.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SourceTab.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/Sources.java - apps/samples/Ensemble8/src/app/java/ensemble/sampleproject/SampleProjectBuilder.java - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCaspian.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCaspianDesktop.css ! apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCommon.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCommonDesktop.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesHelvetica.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesIOS.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesIOSDesktop.css - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/back-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/back-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/forward-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/forward-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/home-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/home-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/list-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/list-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-blue-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-blue-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-empty.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-empty at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-light-blue-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-light-blue-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/toolbar.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/toolbar at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/Duke-Lego3.jpg - apps/samples/Ensemble8/src/app/resources/ensemble/images/corner-bottom.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/corner-top.png ! apps/samples/Ensemble8/src/app/resources/ensemble/images/highlights-ribbon.png ! apps/samples/Ensemble8/src/app/resources/ensemble/images/highlights-ribbon at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/home-background.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/home-background at 2x.png + apps/samples/Ensemble8/src/app/resources/ensemble/images/orange-arrrow.png + apps/samples/Ensemble8/src/app/resources/ensemble/images/orange-arrrow at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot-selected.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot-selected at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot at 2x.png ! apps/samples/Ensemble8/src/app/resources/ensemble/images/popover-empty.png ! apps/samples/Ensemble8/src/app/resources/ensemble/images/popover-empty at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-back-page-background.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-box.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-box at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-page-background-shadow.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-page-background.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-paper-border.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-paper-lines.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-paper.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-source-text.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-source-text at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/section-ribbon.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/section-ribbon at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/tile-border.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/tile-border at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/sampleproject/SampleProject.zip ! apps/samples/Ensemble8/src/app/resources/ensemble/syntaxhighlighter/shCoreDefault.css ! apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/custom/candlestick/CandleStickChartApp.java ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/interpolator/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/interpolator/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/timeline/timeline/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/timeline/timeline/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/timeline/timelineevents/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/timeline/timelineevents/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/fadetransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/fadetransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/filltransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/filltransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/paralleltransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/paralleltransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/pathtransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/pathtransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/pausetransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/pausetransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/rotatetransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/rotatetransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/scaletransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/scaletransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/sequentialtransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/sequentialtransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/stroketransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/stroketransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/translatetransition/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/animation/transitions/translatetransition/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/canvas/fireworks/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/canvas/fireworks/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/audio/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/audio/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/chart/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/chart/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/curvefitted/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/curvefitted/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/stacked/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/area/stacked/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/audio/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/audio/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/chart/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/chart/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/horizontal/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/horizontal/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/image/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/image/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/stacked/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bar/stacked/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bubble/chart/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/bubble/chart/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/custom/candlestick/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/custom/candlestick/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/line/category/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/line/category/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/line/chart/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/line/chart/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/line/stock/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/line/stock/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/pie/chart/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/pie/chart/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/pie/drilldown/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/pie/drilldown/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/scatter/animated/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/scatter/animated/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/scatter/chart/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/charts/scatter/chart/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/concurrency/service/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/concurrency/service/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/concurrency/task/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/concurrency/task/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/accordion/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/accordion/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/button/colorbutton/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/button/colorbutton/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/button/graphicbutton/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/button/graphicbutton/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/button/pillbutton/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/button/pillbutton/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/checkbox/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/checkbox/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/choicebox/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/choicebox/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/colorpicker/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/colorpicker/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/datepicker/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/datepicker/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/hyperlink/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/hyperlink/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/listview/horizontallistview/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/listview/horizontallistview/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/listview/listviewcellfactory/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/listview/listviewcellfactory/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/listview/simplelistview/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/listview/simplelistview/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/menu/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/menu/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/pagination/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/pagination/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/progressbar/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/progressbar/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/progressindicator/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/progressindicator/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/radiobutton/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/radiobutton/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/scrollbar/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/scrollbar/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/splitpane/hiddensplitpane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/splitpane/hiddensplitpane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/tab/tabpane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/tab/tabpane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/table/tablecellfactory/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/table/tablecellfactory/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/table/tableview/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/table/tableview/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/advancedlabel/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/advancedlabel/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/insettext/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/insettext/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/searchbox/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/searchbox/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/simplelabel/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/simplelabel/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/textfield/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/textfield/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/textvalidator/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/text/textvalidator/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/togglebutton/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/togglebutton/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/toolbar/styledtoolbar/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/toolbar/styledtoolbar/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/toolbar/toolbar/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/toolbar/toolbar/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/treetableview/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/treetableview/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/treeview/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/controls/treeview/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/fxml/fxmldemo/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/fxml/fxmldemo/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/bouncingballs/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/bouncingballs/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/brickbreaker/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/brickbreaker/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/calc/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/calc/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/colorfulcircles/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/colorfulcircles/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/digitalclock/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/digitalclock/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/displayshelf/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/displayshelf/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/dropshadow/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/dropshadow/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/gaussianblur/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/gaussianblur/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/innershadow/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/innershadow/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/reflection/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/reflection/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/sepiatone/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/effects/sepiatone/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/images/imagecreation/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/images/imagecreation/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/images/imageoperator/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/images/imageoperator/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/images/imageproperties/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/images/imageproperties/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/paints/color/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/paints/color/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/paints/lineargradient/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/paints/lineargradient/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/paints/radialgradient/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/paints/radialgradient/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/puzzle/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/puzzle/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/arc/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/arc/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/circle/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/circle/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/cubiccurve/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/cubiccurve/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/ellipse/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/ellipse/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/line/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/line/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/path/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/path/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/polygon/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/polygon/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/polyline/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/polyline/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/quadcurve/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/quadcurve/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/rectangle/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/shapes/rectangle/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/stopwatch/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics/stopwatch/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/cube/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/cube/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/cubesystem/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/cubesystem/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/simple3dbox/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/simple3dbox/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/xylophone/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/graphics3d/xylophone/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/language/beans/changelistener/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/language/beans/changelistener/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/language/beans/stringbinding/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/language/beans/stringbinding/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/language/collections/observablelist/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/language/collections/observablelist/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/anchorpane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/anchorpane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/borderpane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/borderpane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/flowpane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/flowpane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/gridpane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/gridpane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/hbox/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/hbox/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/stackpane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/stackpane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/tilepane/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/tilepane/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/vbox/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/layout/vbox/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/advancedmedia/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/advancedmedia/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/alphamediaplayer/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/alphamediaplayer/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/audioclip/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/audioclip/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/overlaymediaplayer/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/overlaymediaplayer/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/streamingmediaplayer/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/media/streamingmediaplayer/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/cursor/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/cursor/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/gestureevent/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/gestureevent/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/keyevent/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/keyevent/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/keystrokemotion/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/keystrokemotion/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/mouseevent/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/mouseevent/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/multitouch/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/events/multitouch/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/node/customnode/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/node/customnode/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/node/nodeproperties/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/node/nodeproperties/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/stage/advancedstage/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/stage/advancedstage/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/stage/stage/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/scenegraph/stage/stage/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/swing/swinginterop/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/swing/swinginterop/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/text/bidi/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/text/bidi/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/text/textflow/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/text/textflow/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/web/htmleditor/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/web/htmleditor/preview at 2x.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/web/webview/preview.png ! apps/samples/Ensemble8/src/samples/resources/ensemble/samples/web/webview/preview at 2x.png From hang.vo at oracle.com Fri Nov 1 17:17:35 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Sat, 02 Nov 2013 00:17:35 +0000 Subject: hg: openjfx/8/graphics/rt: RT-16711: TextField/TextArea, need to type "Backspace" key twice to delete the last character of the composing text. Message-ID: <20131102001808.BBB0C62912@hg.openjdk.java.net> Changeset: 5e8a8d2136eb Author: leifs Date: 2013-11-01 17:15 -0700 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/5e8a8d2136eb RT-16711: TextField/TextArea, need to type "Backspace" key twice to delete the last character of the composing text. Reviewed-by: naoto ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextInputControlSkin.java From hang.vo at oracle.com Sat Nov 2 07:05:11 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Sat, 02 Nov 2013 14:05:11 +0000 Subject: hg: openjfx/8/graphics/rt: 3 new changesets Message-ID: <20131102140658.9716762931@hg.openjdk.java.net> Changeset: 28bf7e8c3457 Author: hudson Date: 2013-10-31 08:21 -0700 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/28bf7e8c3457 Added tag 8.0-b114 for changeset bb60b5a3afdc ! .hgtags Changeset: 13131fdaa7df Author: mv157916 Date: 2013-10-31 17:45 -0700 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/13131fdaa7df RT-34000: Update the JDK 8 build number to b114 in rt/build.properties file in the JavaFX 8 Master forest. ! build.properties Changeset: 3772b13b9c98 Author: kcr Date: 2013-11-02 06:58 -0700 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/3772b13b9c98 Automated merge with ssh://jfxsrc.us.oracle.com//javafx/8.0/MASTER/jfx/rt - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/BackPage.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/FrontPage.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/IPhoneLayout.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SlidingPages.java - apps/samples/Ensemble8/src/app/java/ensemble/samplepage/Sources.java - apps/samples/Ensemble8/src/app/java/ensemble/sampleproject/SampleProjectBuilder.java - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCaspian.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCaspianDesktop.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCommonDesktop.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesHelvetica.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesIOS.css - apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesIOSDesktop.css - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/back-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/back-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/forward-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/forward-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/home-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/home-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/list-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/list-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-blue-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-blue-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-empty.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-empty at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-light-blue-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/popover-light-blue-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search-btn.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search-btn at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/search at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/toolbar.png - apps/samples/Ensemble8/src/app/resources/ensemble/images-ios/toolbar at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/Duke-Lego3.jpg - apps/samples/Ensemble8/src/app/resources/ensemble/images/corner-bottom.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/corner-top.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/home-background.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/home-background at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot-selected.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot-selected at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/pagination-dot at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-back-page-background.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-box.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-box at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-page-background-shadow.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-page-background.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-paper-border.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-paper-lines.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-paper.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-source-text.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/sample-source-text at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/section-ribbon.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/section-ribbon at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/tile-border.png - apps/samples/Ensemble8/src/app/resources/ensemble/images/tile-border at 2x.png - apps/samples/Ensemble8/src/app/resources/ensemble/sampleproject/SampleProject.zip ! build.properties From hang.vo at oracle.com Sun Nov 3 05:48:33 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Sun, 03 Nov 2013 13:48:33 +0000 Subject: hg: openjfx/8/graphics/rt: [RT-33771] Lens:FXML-LoginDemo throws java.lang.RuntimeException: Platform reported wrong touch point ID Message-ID: <20131103135005.E136F62954@hg.openjdk.java.net> Changeset: fbb8a4ffac02 Author: Assaf Yavani Date: 2013-11-03 15:41 +0200 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/fbb8a4ffac02 [RT-33771] Lens:FXML-LoginDemo throws java.lang.RuntimeException: Platform reported wrong touch point ID Summary: This was caused when touch sequence was started outside a window, the press notifications are lost, as there is no window to sent the notifications to, and when the touch event go over a window the first touch event its get is MOVE|STILL|RELEASE without a press, resulting in the exception been thrown Fixed by adding the following roles when a touch event is first needed to be sent to a window: 1)convert MOVE | STILL > PRESSED 2)RELEASE -> discard 3)PRESSED -> do nothing Tested-by: Tested with: HelloSanity, HelloDragAndDrop, LinuxInputTests (added new test - DragTouchInAndOutAwindow) Reviewed-by: dblaukop ddhill ! modules/graphics/src/main/native-glass/lens/input/udev/udevInput.c ! modules/graphics/src/main/native-glass/lens/wm/LensWindowManager.c From sven.reimers at gmail.com Sun Nov 3 12:55:57 2013 From: sven.reimers at gmail.com (Sven Reimers) Date: Sun, 3 Nov 2013 21:55:57 +0100 Subject: SceneBuilder 2 and OS X Message-ID: Why is not available at the moment? Thanks for clarification.. -Sven -- Sven Reimers * Senior Expert Software Architect * NetBeans Dream Team Member: http://dreamteam.netbeans.org * Community Leader NetBeans: http://community.java.net/netbeans Desktop Java: http://community.java.net/javadesktop * Leader JUG Bodensee: http://www.jug-bodensee.de * Duke's Choice Award Winner 2009 * XING: https://www.xing.com/profile/Sven_Reimers8 * LinkedIn: http://www.linkedin.com/in/svenreimers Join the NetBeans Groups: * XING: http://www.xing.com/group-20148.82db20 * NUGM: http://haug-server.dyndns.org/display/NUGM/Home * LinkedIn: http://www.linkedin.com/groups?gid=1860468 http://www.linkedin.com/groups?gid=107402 http://www.linkedin.com/groups?gid=1684717 * Oracle: https://mix.oracle.com/groups/18497 From jonathan.giles at oracle.com Sun Nov 3 13:01:48 2013 From: jonathan.giles at oracle.com (Jonathan Giles) Date: Mon, 04 Nov 2013 10:01:48 +1300 Subject: SceneBuilder 2 and OS X In-Reply-To: References: Message-ID: <5276B9BC.30604@oracle.com> >From what I read online there were build issues with the Mac build. Rather than delay all releases until the mac build was resolved, just the Mac release was delayed until it could have its build problems resolved. I'm sure the Mac build will come out asap. -- Jonathan On 4/11/2013 9:55 a.m., Sven Reimers wrote: > Why is not available at the moment? > > Thanks for clarification.. > > -Sven > From sven.reimers at gmail.com Sun Nov 3 13:06:28 2013 From: sven.reimers at gmail.com (Sven Reimers) Date: Sun, 3 Nov 2013 22:06:28 +0100 Subject: SceneBuilder 2 and OS X In-Reply-To: <5276B9BC.30604@oracle.com> References: <5276B9BC.30604@oracle.com> Message-ID: I just read the release notes as well and was not sure if this was the reason - if it is - fine with me.... -Sven On Sun, Nov 3, 2013 at 10:01 PM, Jonathan Giles wrote: > >From what I read online there were build issues with the Mac build. > Rather than delay all releases until the mac build was resolved, just > the Mac release was delayed until it could have its build problems > resolved. I'm sure the Mac build will come out asap. > > -- Jonathan > > On 4/11/2013 9:55 a.m., Sven Reimers wrote: > > Why is not available at the moment? > > > > Thanks for clarification.. > > > > -Sven > > > > -- Sven Reimers * Senior Expert Software Architect * NetBeans Dream Team Member: http://dreamteam.netbeans.org * Community Leader NetBeans: http://community.java.net/netbeans Desktop Java: http://community.java.net/javadesktop * Duke's Choice Award Winner 2009 * Blog: http://nbguru.blogspot.com * XING: https://www.xing.com/profile/Sven_Reimers8 * LinkedIn: http://www.linkedin.com/in/svenreimers Join the NetBeans Groups: * XING: http://www.xing.com/group-20148.82db20 * NUGM: http://haug-server.dyndns.org/display/NUGM/Home * LinkedIn: http://www.linkedin.com/groups?gid=1860468 http://www.linkedin.com/groups?gid=107402 http://www.linkedin.com/groups?gid=1684717 * Oracle: https://mix.oracle.com/groups/18497 From hang.vo at oracle.com Sun Nov 3 23:32:50 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 07:32:50 +0000 Subject: hg: openjfx/8/graphics/rt: 2 new changesets Message-ID: <20131104073355.C39636295F@hg.openjdk.java.net> Changeset: 853673edfc9f Author: Martin Sladecek Date: 2013-11-04 08:16 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/853673edfc9f RT-33949 Scroll bar thumb doesn't work on touch interface Reviewed-by: jgiles ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/VirtualFlow.java Changeset: 4a8fba6d5627 Author: Martin Sladecek Date: 2013-11-04 08:17 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/4a8fba6d5627 RT-28423 com.sun.javafx.charts.Legend fails to layout properly for small layout areas Reviewed-by: jgiles, psomashe ! modules/controls/src/main/java/com/sun/javafx/charts/Legend.java From hang.vo at oracle.com Mon Nov 4 00:46:31 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 08:46:31 +0000 Subject: hg: openjfx/8/graphics/rt: RT-31123: Fixed TreeTableView cells position after expanding an item while scrolled to bottom. Message-ID: <20131104084646.E06C862962@hg.openjdk.java.net> Changeset: 6054bd8a3a5a Author: Pavel Safrata Date: 2013-11-04 08:38 +0000 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/6054bd8a3a5a RT-31123: Fixed TreeTableView cells position after expanding an item while scrolled to bottom. Reviewed-by: Jonathan ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/VirtualFlow.java From hang.vo at oracle.com Mon Nov 4 01:32:07 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 09:32:07 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33539 : Lens: Cannot click on bottom right of the screen with mouse on Freescale Message-ID: <20131104093222.3B76862963@hg.openjdk.java.net> Changeset: bf5672724141 Author: Rafi Tayar Date: 2013-11-04 11:25 +0200 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/bf5672724141 RT-33539 : Lens: Cannot click on bottom right of the screen with mouse on Freescale Reviewed-by : Daniel Blaukopf ! modules/graphics/src/main/native-glass/lens/lensport/imx6Cursor.c From hang.vo at oracle.com Mon Nov 4 05:47:06 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 13:47:06 +0000 Subject: hg: openjfx/8/graphics/rt: RT-31816 Lens: Changing cursor to None to hide mouse over imageview/stack pane does not work Message-ID: <20131104134741.167DC62970@hg.openjdk.java.net> Changeset: dba72896ae67 Author: Daniel Blaukopf Date: 2013-11-04 15:44 +0200 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/dba72896ae67 RT-31816 Lens: Changing cursor to None to hide mouse over imageview/stack pane does not work Reviewed-by: Lisa Selle ! modules/graphics/src/main/java/com/sun/glass/ui/lens/LensCursor.java From hang.vo at oracle.com Mon Nov 4 06:02:47 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 14:02:47 +0000 Subject: hg: openjfx/8/graphics/rt: RT-32704 - Mixed HORIZONTAL and VERTICAL bias didn't work correctly Message-ID: <20131104140302.D1C3462971@hg.openjdk.java.net> Changeset: 76c7f1bbfbd3 Author: Martin Soch Date: 2013-11-04 14:56 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/76c7f1bbfbd3 RT-32704 - Mixed HORIZONTAL and VERTICAL bias didn't work correctly ! modules/graphics/src/main/java/javafx/scene/layout/GridPane.java ! modules/graphics/src/main/java/javafx/scene/layout/HBox.java ! modules/graphics/src/main/java/javafx/scene/layout/StackPane.java ! modules/graphics/src/main/java/javafx/scene/layout/VBox.java From hang.vo at oracle.com Mon Nov 4 10:02:39 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 18:02:39 +0000 Subject: hg: openjfx/8/graphics/rt: RT-32275: Using '-fx-border-image-repeat: repeat' with '-fx-border-image-slice: 100% fill; ' produces a chain of exceptions Message-ID: <20131104180308.3ADED6297A@hg.openjdk.java.net> Changeset: 939e768ae868 Author: Felipe Heidrich Date: 2013-11-04 09:51 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/939e768ae868 RT-32275: Using '-fx-border-image-repeat: repeat' with '-fx-border-image-slice: 100% fill;' produces a chain of exceptions Reviewed-by: Jim Graham ! modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGRegion.java From attila.kelemen85 at gmail.com Mon Nov 4 11:10:16 2013 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Mon, 4 Nov 2013 20:10:16 +0100 Subject: OpenJFX in NetBeans Message-ID: Hi all, Richard Bair asked me to send my need for assitance to this list. I have successfully adjusted my Gradle plugin for NetBeans, so now it seems to be able to open OpenJFX (graphics/rt) after some adjustement without problems. My request is that, can someone verify if the plugin works as it really should for OpenJFX? Because I have but limit knowledge about how things should behave (red curly is bad :)). The adjustments needed are the following: - You have to use Gradle 1.9 (currently 1.9-rc-2). So for now, you can write "?VER=1.9-rc-2" in the Gradle home text field of the project properties. - Add "-J-DCachingArchiveProvider.disableCtSym=true" to the "netbeans_default_options" key in "NETBEANS_HOME/etc/netbeans.conf". This is needed because otherwise NetBeans won't recognize some classes (like `PlatformLogger`). - Create a build.gradle (an empty one is good) for each subproject of OpenJFX. - Install the snapshot build of my plugin: http://dl.bintray.com/kelemen/generic/netbeans-gradle-plugin-1.2.7.1-SNAPSHOT.nbm Thank you for your help. If there is something more you need, I'm happy to provide more info. bye, Attila Kelemen From david.grieve at oracle.com Mon Nov 4 11:22:21 2013 From: david.grieve at oracle.com (David Grieve) Date: Mon, 4 Nov 2013 14:22:21 -0500 Subject: [API REVIEW] Add javafx.scene.layout.BackgroundInsets (RT-26277) Message-ID: <41EE214D-8EE4-46CE-A3B9-4DBE500DBE30@oracle.com> https://javafx-jira.kenai.com/browse/RT-26277 relates to the use of percentage values in -fx-background-insets. BackgroundFill (in javafx.scene.layout) uses Insets, which does not allow for a percentage value. My proposal here is to simply copy the BorderWidths implementation to a BackgroundInsets class, with appropriate renaming along the way, and use it in place of Insets in BackgroundFill. The impact on the BackgroundFill API is: - public final Insets getInsets() + public final BackgroundInsets getBackgroundInsets() Since BackgroundFill is new in 8.0, backward compatibility is not a concern. From steve.x.northover at oracle.com Mon Nov 4 11:40:27 2013 From: steve.x.northover at oracle.com (Stephen F Northover) Date: Mon, 04 Nov 2013 14:40:27 -0500 Subject: [API REVIEW] Add javafx.scene.layout.BackgroundInsets (RT-26277) In-Reply-To: <41EE214D-8EE4-46CE-A3B9-4DBE500DBE30@oracle.com> References: <41EE214D-8EE4-46CE-A3B9-4DBE500DBE30@oracle.com> Message-ID: <5277F82B.1080207@oracle.com> Hi David, Looks good. Please update the JIRA with what you intend to do. People are welcome to follow along there if they have any ideas for a different API / approach. Steve On 2013-11-04 2:22 PM, David Grieve wrote: > https://javafx-jira.kenai.com/browse/RT-26277 relates to the use of percentage values in -fx-background-insets. BackgroundFill (in javafx.scene.layout) uses Insets, which does not allow for a percentage value. > > My proposal here is to simply copy the BorderWidths implementation to a BackgroundInsets class, with appropriate renaming along the way, and use it in place of Insets in BackgroundFill. The impact on the BackgroundFill API is: > > - public final Insets getInsets() > + public final BackgroundInsets getBackgroundInsets() > > Since BackgroundFill is new in 8.0, backward compatibility is not a concern. > > > > > From pfurbacher at mac.com Mon Nov 4 12:29:32 2013 From: pfurbacher at mac.com (Paul Furbacher) Date: Mon, 04 Nov 2013 15:29:32 -0500 Subject: SceneBuilder 2 and OS X Message-ID: Just couldn?t wait, so I cobbled a working solution together. Essentially, you need to 1. download the Linux-64 distribution: http://download.oracle.com/otn-pub/java/javafx_scenebuilder/2.0-ea-b05/javafx_scenebuilder-2_0-ea-b05-linux-x64-24_oct_2013.tar.gz (See https://javafx-jira.kenai.com/browse/DTL-5927 for explanation.) 2. download and install a very recent Java 8 EA release (I have b_112 installed, perhaps there?s something more recent) 3. copy /Applications/Scene Builder 1.1.app, rename the copy Scene Builder 2.0.app 4. Delete the contents of the ?Contents/Java? of this new copy. 5. Copy the contents of the ?App? folder in the Linux distribution into ?Contents/Java?. 6. Replace the ?Plugins/jdk1.7.0_40.jdk? with a copy of ?jdk1.8.0.jdk? from your /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk. 7. Launch use ?Jar Launcher (14.9.0)? the file ?SceneBuilderApp.jar? in ?Contents/Java?. It works for me, and looks pretty darned good. Can?t wait for the real thing. (I posted essentially the same thing on the JFXexperience page, and made a good hash of it. @Jonathan Giles: you can clean my comments up if you want to.) Paul Furbacher From david.grieve at oracle.com Mon Nov 4 13:42:18 2013 From: david.grieve at oracle.com (David Grieve) Date: Mon, 4 Nov 2013 16:42:18 -0500 Subject: [API REVIEW] Add javafx.scene.layout.BackgroundInsets (RT-26277) In-Reply-To: <5277F82B.1080207@oracle.com> References: <41EE214D-8EE4-46CE-A3B9-4DBE500DBE30@oracle.com> <5277F82B.1080207@oracle.com> Message-ID: <61C34C45-C32E-48CC-B2A1-89687CC17532@oracle.com> To be consistent, the same thing needs to be done with BorderImage and Border. So rather than BackgroundInsets, I will move Margins from com.sun.javafx.scene.layout to javafx.scene.layout, tweak the API to be like that of BorderWidths and use Margins instead of insets. On Nov 4, 2013, at 2:40 PM, Stephen F Northover wrote: > Hi David, > > Looks good. Please update the JIRA with what you intend to do. People are welcome to follow along there if they have any ideas for a different API / approach. > > Steve > > On 2013-11-04 2:22 PM, David Grieve wrote: >> https://javafx-jira.kenai.com/browse/RT-26277 relates to the use of percentage values in -fx-background-insets. BackgroundFill (in javafx.scene.layout) uses Insets, which does not allow for a percentage value. >> >> My proposal here is to simply copy the BorderWidths implementation to a BackgroundInsets class, with appropriate renaming along the way, and use it in place of Insets in BackgroundFill. The impact on the BackgroundFill API is: >> >> - public final Insets getInsets() >> + public final BackgroundInsets getBackgroundInsets() >> >> Since BackgroundFill is new in 8.0, backward compatibility is not a concern. >> >> >> >> >> > From hang.vo at oracle.com Mon Nov 4 14:02:39 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 22:02:39 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33549: Clip applied on 3D object causes VM crash Message-ID: <20131104220320.8984462A2E@hg.openjdk.java.net> Changeset: 1194b215f671 Author: Yao Wang Date: 2013-11-04 13:59 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/1194b215f671 RT-33549: Clip applied on 3D object causes VM crash Summary: Resolve d3d crash when apply 2D operation on 3D object Reviewed-by: kcr, ckyang ! modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGNode.java ! modules/graphics/src/main/native-prism-d3d/D3DMeshView.cc From hang.vo at oracle.com Mon Nov 4 15:02:44 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Mon, 04 Nov 2013 23:02:44 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33556: Implement styling for 2-level UI Controls Message-ID: <20131104230300.C521E62A30@hg.openjdk.java.net> Changeset: b937270b6da0 Author: jgiles Date: 2013-11-05 07:57 +1300 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/b937270b6da0 RT-33556: Implement styling for 2-level UI Controls RT-32835: Styles for 2-Level UI Controls are not loaded with -Dcom.sun.javafx.twoLevelFocus=true + modules/controls/src/main/resources/com/sun/javafx/scene/control/skin/caspian/two-level-focus.css + modules/controls/src/main/resources/com/sun/javafx/scene/control/skin/modena/two-level-focus.css ! modules/graphics/src/main/java/com/sun/javafx/application/PlatformImpl.java From felipe.heidrich at oracle.com Mon Nov 4 16:55:17 2013 From: felipe.heidrich at oracle.com (Felipe Heidrich) Date: Mon, 4 Nov 2013 16:55:17 -0800 Subject: review request: RT-32837: Ensemble8 left arrow has line artifact Message-ID: <1D6630DE-8532-408F-A3B3-2FF4AA8174C5@oracle.com> Hi Jim Please review https://javafx-jira.kenai.com/browse/RT-32837 You will find the webrev at the end: http://cr.openjdk.java.net/~fheidric/RT32837-2/webrev/ Thank you Felipe From hang.vo at oracle.com Mon Nov 4 18:02:41 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 02:02:41 +0000 Subject: hg: openjfx/8/graphics/rt: RT-28692: implement curve radii syntax from CSS background and borders module level 3 for -fx-background-radius and -fx-border-radius. Message-ID: <20131105020317.6315B62A46@hg.openjdk.java.net> Changeset: ed14640dd11c Author: David Grieve Date: 2013-11-04 20:57 -0500 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/ed14640dd11c RT-28692: implement curve radii syntax from CSS background and borders module level 3 for -fx-background-radius and -fx-border-radius. Reviewed by: Jonathan ! modules/graphics/src/main/docs/javafx/scene/doc-files/cssref.html ! modules/graphics/src/main/java/com/sun/javafx/css/Size.java ! modules/graphics/src/main/java/com/sun/javafx/css/StyleConverterImpl.java ! modules/graphics/src/main/java/com/sun/javafx/css/parser/CSSParser.java ! modules/graphics/src/main/java/javafx/scene/layout/Background.java ! modules/graphics/src/main/java/javafx/scene/layout/BackgroundConverter.java ! modules/graphics/src/main/java/javafx/scene/layout/Border.java ! modules/graphics/src/main/java/javafx/scene/layout/BorderConverter.java + modules/graphics/src/main/java/javafx/scene/layout/CornerRadiiConverter.java ! modules/graphics/src/test/java/javafx/scene/layout/RegionCSSTest.java From hang.vo at oracle.com Mon Nov 4 18:17:38 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 02:17:38 +0000 Subject: hg: openjfx/8/graphics/rt: RT-34054: Need option to disable system tests that use AWT Message-ID: <20131105021755.D5EA562A48@hg.openjdk.java.net> Changeset: 92bc2b511939 Author: kcr Date: 2013-11-04 18:06 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/92bc2b511939 RT-34054: Need option to disable system tests that use AWT Reviewed-by: mtvo ! build.gradle ! gradle.properties.template From hang.vo at oracle.com Mon Nov 4 18:32:16 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 02:32:16 +0000 Subject: hg: openjfx/8/graphics/rt: Fix RT-33632: NPE due to allocation failures using Canvas in ListView Message-ID: <20131105023233.1D24262A4B@hg.openjdk.java.net> Changeset: a62e639df566 Author: flar Date: 2013-11-04 18:19 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/a62e639df566 Fix RT-33632: NPE due to allocation failures using Canvas in ListView Reviewed by: kcr Also fixes RT-29795, RT-29530 (Managed Resource cleanup issues) ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/PresentingPainter.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/UploadingPainter.java ! modules/graphics/src/main/java/com/sun/prism/d3d/D3DTextureData.java ! modules/graphics/src/main/java/com/sun/prism/es2/ES2RTTexture.java ! modules/graphics/src/main/java/com/sun/prism/es2/ES2RTTextureData.java ! modules/graphics/src/main/java/com/sun/prism/es2/ES2Texture.java ! modules/graphics/src/main/java/com/sun/prism/es2/ES2TextureData.java ! modules/graphics/src/main/java/com/sun/prism/impl/BaseResourcePool.java ! modules/graphics/src/main/java/com/sun/prism/impl/ManagedResource.java ! modules/graphics/src/main/java/com/sun/prism/impl/PrismTrace.java From hang.vo at oracle.com Mon Nov 4 21:17:13 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 05:17:13 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33590 Simplify Ensemble8 styling. pushing changes for Jasper Message-ID: <20131105051730.711C662A50@hg.openjdk.java.net> Changeset: 3d78391f8a73 Author: dmasada Date: 2013-11-04 21:13 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/3d78391f8a73 RT-33590 Simplify Ensemble8 styling. pushing changes for Jasper ! apps/samples/Ensemble8/nbproject/build-impl.xml ! apps/samples/Ensemble8/nbproject/genfiles.properties ! apps/samples/Ensemble8/nbproject/project.properties ! apps/samples/Ensemble8/src/app/java/ensemble/SamplePopoverTreeList.java ! apps/samples/Ensemble8/src/app/java/ensemble/control/Popover.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/Description.java ! apps/samples/Ensemble8/src/app/resources/ensemble/EnsembleStylesCommon.css ! apps/samples/Ensemble8/src/app/resources/ensemble/images/orange-arrrow.png ! apps/samples/Ensemble8/src/app/resources/ensemble/images/orange-arrrow at 2x.png From hang.vo at oracle.com Mon Nov 4 22:33:39 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 06:33:39 +0000 Subject: hg: openjfx/8/graphics/rt: RT-34057 Modena: align table in floating tab pane Message-ID: <20131105063356.29DAD62A54@hg.openjdk.java.net> Changeset: bbed405cc8bd Author: dmasada Date: 2013-11-04 22:25 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/bbed405cc8bd RT-34057 Modena: align table in floating tab pane ! apps/experiments/Modena/src/main/resources/modena/CombinationTest.fxml ! modules/controls/src/main/resources/com/sun/javafx/scene/control/skin/modena/modena.css From hang.vo at oracle.com Tue Nov 5 00:32:15 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 08:32:15 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33969: Mac: Input method composition does not suppress KeyTyped events Message-ID: <20131105083231.F073462A57@hg.openjdk.java.net> Changeset: 15f5f2930c25 Author: Petr Pchelko Date: 2013-11-05 12:30 +0400 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/15f5f2930c25 RT-33969: Mac: Input method composition does not suppress KeyTyped events Reviewed-by anthony, zvegintsev ! modules/graphics/src/main/native-glass/mac/GlassView3D.m From hang.vo at oracle.com Tue Nov 5 02:17:24 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 10:17:24 +0000 Subject: hg: openjfx/8/graphics/rt: RT-34028 TableView selection sometimes gives null items in change events Message-ID: <20131105101744.8EA9162A59@hg.openjdk.java.net> Changeset: a562ec0058ee Author: Martin Sladecek Date: 2013-11-05 11:10 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/a562ec0058ee RT-34028 TableView selection sometimes gives null items in change events Reviewed-by: jgiles ! modules/controls/src/main/java/javafx/scene/control/TableView.java From hang.vo at oracle.com Tue Nov 5 03:17:23 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 11:17:23 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33596 TableHeaders behave badly when horizontal scrollbar is visible Message-ID: <20131105111831.B486262A5E@hg.openjdk.java.net> Changeset: 1c3b39a00d7e Author: Martin Sladecek Date: 2013-11-05 12:00 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/1c3b39a00d7e RT-33596 TableHeaders behave badly when horizontal scrollbar is visible Reviewed by: jgiles ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java From hang.vo at oracle.com Tue Nov 5 04:32:25 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 12:32:25 +0000 Subject: hg: openjfx/8/graphics/rt: Tools for launcher, Maven part Message-ID: <20131105123243.ADB9962A61@hg.openjdk.java.net> Changeset: 89b46b3257cb Author: Milan Kubec Date: 2013-11-05 13:27 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/89b46b3257cb Tools for launcher, Maven part + tools/ios/Maven/NetBeansMobileCenter/pom.xml + tools/ios/Maven/NetBeansMobileCenter/src/main/java/com/sun/javafx/appmanager/BootstrapApplication.java + tools/ios/Maven/NetBeansMobileCenter/src/main/java/com/sun/javafx/appmanager/FxApplicationInstance.java + tools/ios/Maven/NetBeansMobileCenter/src/main/java/com/sun/javafx/appmanager/FxApplicationManager.java + tools/ios/Maven/NetBeansMobileCenter/src/main/java/com/sun/javafx/stage/WindowManager.java + tools/ios/Maven/NetBeansMobileCenter/src/main/java/org/netbeans/mobilecenter/BackgroundService.java + tools/ios/Maven/NetBeansMobileCenter/src/main/java/org/netbeans/mobilecenter/MobileCenter.java + tools/ios/Maven/NetBeansMobileCenter/src/main/java/org/netbeans/mobilecenter/Redeploy.java + tools/ios/Maven/ios-maven-plugin/pom.xml + tools/ios/Maven/ios-maven-plugin/src/main/java/org/netbeans/ibrwsr/maven/plugin/IPAddressMojo.java + tools/ios/Maven/ios-maven-plugin/src/main/scripts/ios.maven.plugin.build.xml + tools/ios/Maven/ios-maven-plugin/src/main/scripts/ios.maven.plugin.mojos.xml + tools/ios/Maven/ipack/pom.xml + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/blobs/Blob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/blobs/SuperBlob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/blobs/VirtualBlob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/blobs/WrapperBlob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/macho/CodeSignatureCommand.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/macho/LinkeditDataCommand.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/macho/MachoCommand.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/macho/MachoHeader.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/macho/SegmentCommand.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/macho/UnknownCommand.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/main/Main.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/packer/ExecutablePacker.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/packer/Packer.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/packer/ResourcePacker.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/resources/CodeResources.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/resources/ResourceRules.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/signature/CodeDirectoryBlob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/signature/EmbeddedSignatureBlob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/signature/Requirement.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/signature/RequirementBlob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/signature/RequirementsBlob.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/signature/SpecialSlotConstants.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/signer/Signer.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/Base64.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/DataCopier.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/HashingOutputStream.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/LsbDataInputStream.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/LsbDataOutputStream.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/NullOutputStream.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/PageHashingOutputStream.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/ResourceDescriptor.java + tools/ios/Maven/ipack/src/main/java/com/oracle/ipack/util/Util.java + tools/ios/Maven/pom.xml + tools/ios/Maven/test-simple-ipa/pom.xml + tools/ios/Maven/test-simple-ipa/src/main/java/org/netbeans/ios/test/simple/ipa/Main.java + tools/ios/Maven/test-simple-ipa/src/test/java/org/netbeans/ios/test/simple/ipa/VerifyIPATest.java From hang.vo at oracle.com Tue Nov 5 05:02:29 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 13:02:29 +0000 Subject: hg: openjfx/8/graphics/rt: RT-14647: Incorrect display of JPEG images Message-ID: <20131105130246.7193F62A63@hg.openjdk.java.net> Changeset: 270d5f4e10b2 Author: bae Date: 2013-11-05 12:54 +0000 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/270d5f4e10b2 RT-14647: Incorrect display of JPEG images Reviewed-by: kcr, prr ! modules/graphics/src/main/native-iio/jpegloader.c From hjohn at xs4all.nl Tue Nov 5 06:58:32 2013 From: hjohn at xs4all.nl (John Hendrikx) Date: Tue, 05 Nov 2013 15:58:32 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? Message-ID: <52790798.3030904@xs4all.nl> Hi List, I'm considering using a ScenePulseListener to avoid expensive recalculations when multiple bindings trigger an action. My problem is this: I like to build Views (Controls) that are dumb and expose properties that can be manipulated by whatever is using the View. The View listens to its own Properties and adjusts its state accordingly. Some of these adjustments are related (like width + height) and can be expensive when calculated immediately. So I would like to mark the View as "invalid" and recalculate its state (if invalid) on the next Pulse. My current use case I'm looking at is a View that wraps (amongst others) a TreeView. The View exposes an ObservableList and a BooleanProperty that decides whether the first level of the Tree should be displayed as Tabs or as Nodes (which has an impact on what Nodes actually are added to the TreeView, and which are added as Tabs). User code will thus often set a new list of nodes + change the boolean to show tabs or nodes. The View currently naively has InvalidationListeners on both of these properties which cause TreeNodes to be created after the first change... then discarded and recreated after the second change by the user code, ie: view.nodesProperty().setAll(nodes); // Recreates all Tabs/TreeNodes with the current value of expand top level, as we donot know another change might be incoming... view.expandTopLevelProperty().set(false); // Recreates all Tabs/TreeNodes again if expand top level was changed... This specific problem might be done in a better way, but the point remains, how do I avoid expensive calculations when multiple properties get changed one after the other by the user code? I'm assuming that JavaFX controls already avoid these kinds of things, and I'd like to know whether using a ScenePulseListener is the way to go, or that it can/should be done in a different way -- examining the code for TreeView (and its superclasses), I couldn't find uses of ScenePulseListener... --John From hang.vo at oracle.com Tue Nov 5 06:17:22 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 14:17:22 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33853/RT-33767 correct Lens creation of a second input event thread when nesting run loops Message-ID: <20131105141739.A84B662A65@hg.openjdk.java.net> Changeset: 19f0180c475e Author: ddhill Date: 2013-11-05 08:41 -0500 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/19f0180c475e RT-33853/RT-33767 correct Lens creation of a second input event thread when nesting run loops Reviewed-by: dblaukopf, kselle, ayavnai ! modules/graphics/src/main/java/com/sun/glass/ui/lens/LensApplication.java From anthony.petrov at oracle.com Tue Nov 5 07:19:34 2013 From: anthony.petrov at oracle.com (Anthony Petrov) Date: Tue, 05 Nov 2013 19:19:34 +0400 Subject: Request for review: RT-28347 - DnD between two JFXPanels In-Reply-To: <5273CAA6.1050500@oracle.com> References: <5273CAA6.1050500@oracle.com> Message-ID: <52790C86.30701@oracle.com> Hi Artem, There's a lot of code changes and I'm not sure if I see the complete picture of how DnD works with embedded scenes (and not that I'm a great expert in DnD anyway.) It would be nice to have a short overview of the embedded DnD architecture (put in a class javadoc for, say, the EmbeddedSceneDnD class.) However, generally all the changes look good. I have a few questions: 1. src/main/java/com/sun/javafx/tk/quantum/EmbeddedSceneDnD.java > 67 dragStartListener.dragStarted(fxDragSource, TransferMode.COPY); Why do we hard-code the transfer mode? 2. > 94 // can be implemented using AWT nested event loop, however it just > 95 // blocks the current thread. This is done by intention, because > 99 T executeOnFXThread(final Callable r) { I'm not sure I'm happy with this method. Could you provide more details on where and how exactly it is used? Also, could you please convert this comment into a javadoc? 3. src/main/java/javafx/embed/swing/JFXPanel.java > 799 public void setEmbeddedScene(EmbeddedSceneInterface embeddedScene) { > 804 if (scenePeer == null) { > 805 dnd.removeNotify(); > 806 dnd = null; Above we manipulate the dnd object directly on the current thread, while at lines 817-818: > 814 SwingUtilities.invokeLater(new Runnable() { > 817 dnd = new SwingDnD(JFXPanel.this, scenePeer); > 818 dnd.addNotify(); ... we do this on the EDT. This asymmetry looks a bit suspicious. Could you elaborate on that? 4. src/main/java/javafx/embed/swing/SwingDnD.java > 183 // Don't call updateContents() from drop(). In AWT, it is possible to > 184 // get data from the Transferable object in drop() only after the drop > 185 // has been accepted. Here we first let FX handle drop(), then accep This looks like not the best solution from performance perspective. Also, I still don't understand why exactly we can't get the data when drop() occurs. Could you please explain this? -- best regards, Anthony On 11/01/2013 07:37 PM, Artem Ananiev wrote: > Hi, > > could you take a look at the following fix, please: > > http://cr.openjdk.java.net/~art/javafx/RT-28347/ > > Some information about the changes is available in bug comments: > > https://javafx-jira.kenai.com/browse/RT-28347 > > Thanks, > > Artem From David.Hill at Oracle.com Tue Nov 5 07:21:22 2013 From: David.Hill at Oracle.com (David Hill) Date: Tue, 05 Nov 2013 10:21:22 -0500 Subject: CFV: New OpenJFX Committer: Assaf Yavani Message-ID: <52790CF2.2040404@Oracle.com> I hereby nominate Rafi Tayar to OpenJFX Committer. Rafi is a member of JavaFX Embedded team at Oracle. Rafi's changes are in Glass/Lens support code: hg log -M -u "Rafi Tayar" An incomplete list of Rafi's commits and reviews is also available by the following link: http://hg.openjdk.java.net/openjfx/8/master/rt/log?rev=tayar Votes are due by Nov 19, 2013. Only current OpenJFX Committers [1] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. For Lazy Consensus voting instructions, see [2]. Nomination to a project Committer is described in [3]. [1] http://openjdk.java.net/census#openjfx [2] http://openjdk.java.net/bylaws#lazy-consensus [3] http://openjdk.java.net/projects#project-committer Thanks, Dave From David.Hill at Oracle.com Tue Nov 5 07:59:23 2013 From: David.Hill at Oracle.com (David Hill) Date: Tue, 05 Nov 2013 10:59:23 -0500 Subject: Fwd: CFV: New OpenJFX Committer: Rafi Tayar In-Reply-To: <52790CF2.2040404@Oracle.com> References: <52790CF2.2040404@Oracle.com> Message-ID: <527915DB.7030008@Oracle.com> [ resending it with a corrected subject line. The dangers of reusing a form....] I hereby nominate Rafi Tayar to OpenJFX Committer. Rafi is a member of JavaFX Embedded team at Oracle. Rafi's changes are in Glass/Lens support code: hg log -M -u "Rafi Tayar" An incomplete list of Rafi's commits and reviews is also available by the following link: http://hg.openjdk.java.net/openjfx/8/master/rt/log?rev=tayar Votes are due by Nov 19, 2013. Only current OpenJFX Committers [1] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. For Lazy Consensus voting instructions, see [2]. Nomination to a project Committer is described in [3]. [1] http://openjdk.java.net/census#openjfx [2] http://openjdk.java.net/bylaws#lazy-consensus [3] http://openjdk.java.net/projects#project-committer Thanks, Dave From anthony.petrov at oracle.com Tue Nov 5 08:27:42 2013 From: anthony.petrov at oracle.com (Anthony Petrov) Date: Tue, 05 Nov 2013 20:27:42 +0400 Subject: Fwd: CFV: New OpenJFX Committer: Rafi Tayar In-Reply-To: <527915DB.7030008@Oracle.com> References: <52790CF2.2040404@Oracle.com> <527915DB.7030008@Oracle.com> Message-ID: <52791C7E.2030601@oracle.com> Vote: YES -- best regards, Anthony On 11/05/2013 07:59 PM, David Hill wrote: > > [ resending it with a corrected subject line. The dangers of reusing a > form....] > > I hereby nominate Rafi Tayar to OpenJFX Committer. > > Rafi is a member of JavaFX Embedded team at Oracle. Rafi's changes are > in Glass/Lens support code: > > hg log -M -u "Rafi Tayar" > > An incomplete list of Rafi's commits and reviews is also available by > the following link: > > http://hg.openjdk.java.net/openjfx/8/master/rt/log?rev=tayar > > Votes are due by Nov 19, 2013. > > Only current OpenJFX Committers [1] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [2]. Nomination to a project > Committer is described in [3]. > > [1] http://openjdk.java.net/census#openjfx > > [2] http://openjdk.java.net/bylaws#lazy-consensus > > [3] http://openjdk.java.net/projects#project-committer > > Thanks, > > Dave > > > From hang.vo at oracle.com Tue Nov 5 08:32:19 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 16:32:19 +0000 Subject: hg: openjfx/8/graphics/rt: RT-33732 Lens:omap cursor report error when touch screen is conneced Message-ID: <20131105163236.DDFBA62A69@hg.openjdk.java.net> Changeset: ac9c1d089a27 Author: Rafi Tayar Date: 2013-11-05 18:19 +0200 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/ac9c1d089a27 RT-33732 Lens:omap cursor report error when touch screen is conneced Reviewed-by : dblaukop ! modules/graphics/src/main/native-glass/lens/lensport/omapCursor.c From daniel.blaukopf at oracle.com Tue Nov 5 08:35:40 2013 From: daniel.blaukopf at oracle.com (Daniel Blaukopf) Date: Tue, 5 Nov 2013 18:35:40 +0200 Subject: CFV: New OpenJFX Committer: Rafi Tayar In-Reply-To: <527915DB.7030008@Oracle.com> References: <52790CF2.2040404@Oracle.com> <527915DB.7030008@Oracle.com> Message-ID: <51483DAB-B898-4531-AFCB-FE4B2B07D4F9@oracle.com> Vote: Yes Daniel On Nov 5, 2013, at 5:59 PM, David Hill wrote: > > [ resending it with a corrected subject line. The dangers of reusing a form....] > > I hereby nominate Rafi Tayar to OpenJFX Committer. > > Rafi is a member of JavaFX Embedded team at Oracle. Rafi's changes are in Glass/Lens support code: > > hg log -M -u "Rafi Tayar" > > An incomplete list of Rafi's commits and reviews is also available by the following link: > > http://hg.openjdk.java.net/openjfx/8/master/rt/log?rev=tayar > > Votes are due by Nov 19, 2013. > > Only current OpenJFX Committers [1] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. > > For Lazy Consensus voting instructions, see [2]. Nomination to a project Committer is described in [3]. > > [1] http://openjdk.java.net/census#openjfx > > [2] http://openjdk.java.net/bylaws#lazy-consensus > > [3] http://openjdk.java.net/projects#project-committer > > Thanks, > > Dave > > > From malcolm.lidierth at kcl.ac.uk Tue Nov 5 09:14:23 2013 From: malcolm.lidierth at kcl.ac.uk (Lidierth Malcolm) Date: Tue, 5 Nov 2013 17:14:23 +0000 Subject: Serializing JFXPanel with java.beans.XMLEncoder Message-ID: <5279276F.4090302@kcl.ac.uk> When I add a JFXPanel to a Swing hierarchy that is then written to XML using java.beans.XMLEncoder, all is well as long as the JFXPanel is empty. When it has content, I see a NullPointerException. Before I dig into the origins, am I being over-optimistic? : should I expect java.beans.XMLEncoder to cope here? ML From lisa.selle at oracle.com Tue Nov 5 09:18:30 2013 From: lisa.selle at oracle.com (Lisa Selle) Date: Tue, 05 Nov 2013 12:18:30 -0500 Subject: Fwd: CFV: New OpenJFX Committer: Rafi Tayar In-Reply-To: <527915DB.7030008@Oracle.com> References: <52790CF2.2040404@Oracle.com> <527915DB.7030008@Oracle.com> Message-ID: <52792866.4010705@oracle.com> Vote: YES On 11/5/2013 10:59 AM, David Hill wrote: > > [ resending it with a corrected subject line. The dangers of reusing a > form....] > > I hereby nominate Rafi Tayar to OpenJFX Committer. > > Rafi is a member of JavaFX Embedded team at Oracle. Rafi's changes are > in Glass/Lens support code: > > hg log -M -u "Rafi Tayar" > > An incomplete list of Rafi's commits and reviews is also available by > the following link: > > http://hg.openjdk.java.net/openjfx/8/master/rt/log?rev=tayar > > Votes are due by Nov 19, 2013. > > Only current OpenJFX Committers [1] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [2]. Nomination to a > project Committer is described in [3]. > > [1] http://openjdk.java.net/census#openjfx > > [2] http://openjdk.java.net/bylaws#lazy-consensus > > [3] http://openjdk.java.net/projects#project-committer > > Thanks, > > Dave > > > From artem.ananiev at oracle.com Tue Nov 5 09:21:58 2013 From: artem.ananiev at oracle.com (Artem Ananiev) Date: Tue, 05 Nov 2013 21:21:58 +0400 Subject: Serializing JFXPanel with java.beans.XMLEncoder In-Reply-To: <5279276F.4090302@kcl.ac.uk> References: <5279276F.4090302@kcl.ac.uk> Message-ID: <52792936.2010601@oracle.com> Hi, Lidierth, could you provide the exception stack trace, please? It would help to understand whether you're over-optimistic or not :) Thanks, Artem On 11/5/2013 9:14 PM, Lidierth Malcolm wrote: > When I add a JFXPanel to a Swing hierarchy that is then written to XML > using java.beans.XMLEncoder, all is well as long as the JFXPanel is empty. > When it has content, I see a NullPointerException. > > Before I dig into the origins, am I being over-optimistic? : should I > expect java.beans.XMLEncoder to cope here? > > ML > From kevin.rushforth at oracle.com Tue Nov 5 09:45:34 2013 From: kevin.rushforth at oracle.com (Kevin Rushforth) Date: Tue, 05 Nov 2013 09:45:34 -0800 Subject: CFV: New OpenJFX Committer: Rafi Tayar In-Reply-To: <527915DB.7030008@Oracle.com> References: <52790CF2.2040404@Oracle.com> <527915DB.7030008@Oracle.com> Message-ID: <52792EBE.8030801@oracle.com> Vote: Yes David Hill wrote: > > [ resending it with a corrected subject line. The dangers of reusing a > form....] > > I hereby nominate Rafi Tayar to OpenJFX Committer. > > Rafi is a member of JavaFX Embedded team at Oracle. Rafi's changes are > in Glass/Lens support code: > > hg log -M -u "Rafi Tayar" > > An incomplete list of Rafi's commits and reviews is also available by > the following link: > > http://hg.openjdk.java.net/openjfx/8/master/rt/log?rev=tayar > > Votes are due by Nov 19, 2013. > > Only current OpenJFX Committers [1] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [2]. Nomination to a > project Committer is described in [3]. > > [1] http://openjdk.java.net/census#openjfx > > [2] http://openjdk.java.net/bylaws#lazy-consensus > > [3] http://openjdk.java.net/projects#project-committer > > Thanks, > > Dave > > > From jonathan.giles at oracle.com Tue Nov 5 11:10:07 2013 From: jonathan.giles at oracle.com (Jonathan Giles) Date: Wed, 06 Nov 2013 08:10:07 +1300 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <52790798.3030904@xs4all.nl> References: <52790798.3030904@xs4all.nl> Message-ID: <5279428F.2050002@oracle.com> You're right in that controls don't tend to use ScenePulseListener. This may be due to an oversight on our part, or just that our requirements differ (I don't honestly know). You're also right that it is important to batch up property changes and do them once per pulse, rather than as they come in. If this is not done you do indeed get a severe performance hit (I remember back in the day before I optimised many of the controls in this way, the performance impact of not doing this was staggering). The way I do it is simple: in places where I receive events from properties / bindings / listeners, where I know that there is potentially a lot of changes coming through, I create a boolean (e.g. 'refreshView' or somesuch). I then set this boolean to true, and in the appropriate place in the code (most commonly layoutChildren(), but sometimes in the computePref*() methods), I start the method with code like this: if (refreshView) { doExpensiveOperationThatShouldHappenOnlyOncePerPulse(); refreshView = false; } The reason why I sometimes use layoutChildren() and sometimes the computePref*() methods comes down to the (new) rule in JavaFX 8.0 that you can not change the children list of a node within the layoutChildren() method. Because of this, if I need to modify the children list, I put the above code in the computePref*() method. I hope that helps. -- Jonathan On 6/11/2013 3:58 a.m., John Hendrikx wrote: > Hi List, > > I'm considering using a ScenePulseListener to avoid expensive > recalculations when multiple bindings trigger an action. > > My problem is this: > > I like to build Views (Controls) that are dumb and expose properties > that can be manipulated by whatever is using the View. The View > listens to its own Properties and adjusts its state accordingly. Some > of these adjustments are related (like width + height) and can be > expensive when calculated immediately. So I would like to mark the > View as "invalid" and recalculate its state (if invalid) on the next > Pulse. > > My current use case I'm looking at is a View that wraps (amongst > others) a TreeView. The View exposes an ObservableList and a > BooleanProperty that decides whether the first level of the Tree > should be displayed as Tabs or as Nodes (which has an impact on what > Nodes actually are added to the TreeView, and which are added as > Tabs). User code will thus often set a new list of nodes + change the > boolean to show tabs or nodes. The View currently naively has > InvalidationListeners on both of these properties which cause > TreeNodes to be created after the first change... then discarded and > recreated after the second change by the user code, ie: > > view.nodesProperty().setAll(nodes); // Recreates all > Tabs/TreeNodes with the current value of expand top level, as we donot > know another change might be incoming... > view.expandTopLevelProperty().set(false); // Recreates all > Tabs/TreeNodes again if expand top level was changed... > > This specific problem might be done in a better way, but the point > remains, how do I avoid expensive calculations when multiple > properties get changed one after the other by the user code? I'm > assuming that JavaFX controls already avoid these kinds of things, and > I'd like to know whether using a ScenePulseListener is the way to go, > or that it can/should be done in a different way -- examining the code > for TreeView (and its superclasses), I couldn't find uses of > ScenePulseListener... > > --John > > > > From malcolm.lidierth at kcl.ac.uk Tue Nov 5 11:37:19 2013 From: malcolm.lidierth at kcl.ac.uk (Lidierth Malcolm) Date: Tue, 5 Nov 2013 19:37:19 +0000 Subject: JFXPanel with WebView in JDK8 Message-ID: <527948EF.5080702@kcl.ac.uk> NOTE: THIS EXCEPTION OCCURS WITH JDK8, BUT NOT WITH JDK7 public class NewFXMain1 { public static void main(String[] args) throws InterruptedException, InvocationTargetException { EventQueue.invokeAndWait(new Runnable() { // Create the Swing components on the EDT @Override public void run() { JFrame f = new JFrame(); f.getContentPane().setPreferredSize(new Dimension(500, 500)); f.pack(); f.setVisible(true); final JFXPanel jfx = new JFXPanel(); f.getContentPane().add(jfx); // FX Thread Platform.runLater(new Runnable() { @Override public void run() { WebView browser = new WebView(); WebEngine webEngine = browser.getEngine(); // This is a reference to a web page on the Waterloo web site webEngine.load("http://waterloo.sourceforge.net/devwebpage/MathJax/mathjax.html"); Scene s = new Scene(browser); jfx.setScene(s); } }); } }); } } This gives (Note: using JDK8 and Running from NetBeans 7.4): Executing C:\Users\malcolm\Documents\waterloo\Sources\Java\kcl-waterloo-jfx\dist\run1852659813\kcl-waterloo-jfx.jar using platform C:\Program Files\Java\jdk1.8.0/bin/java Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javafx.embed.swing.JFXPanel.getInputMethodRequests(JFXPanel.java:744) at sun.awt.im.InputMethodAdapter.haveActiveClient(InputMethodAdapter.java:61) at sun.awt.windows.WInputMethod.activate(WInputMethod.java:285) at sun.awt.im.InputContext.activateInputMethod(InputContext.java:396) at sun.awt.im.InputContext.focusGained(InputContext.java:338) at sun.awt.im.InputContext.dispatchEvent(InputContext.java:245) at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:196) at java.awt.Component.dispatchEventImpl(Component.java:4817) at java.awt.Container.dispatchEventImpl(Container.java:2293) at java.awt.Component.dispatchEvent(Component.java:4707) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:986) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:610) at java.awt.Component.dispatchEventImpl(Component.java:4756) at java.awt.Container.dispatchEventImpl(Container.java:2293) at java.awt.Component.dispatchEvent(Component.java:4707) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) at java.awt.EventQueue.access$400(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:697) at java.awt.EventQueue$3.run(EventQueue.java:691) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:719) at java.awt.EventQueue$4.run(EventQueue.java:717) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111) at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) From steve.x.northover at oracle.com Tue Nov 5 11:42:36 2013 From: steve.x.northover at oracle.com (Stephen F Northover) Date: Tue, 05 Nov 2013 14:42:36 -0500 Subject: JFXPanel with WebView in JDK8 In-Reply-To: <527948EF.5080702@kcl.ac.uk> References: <527948EF.5080702@kcl.ac.uk> Message-ID: <52794A2C.2000008@oracle.com> Please enter a JIRA with your test code in it and add me as a watcher. Thanks. Steve On 2013-11-05 2:37 PM, Lidierth Malcolm wrote: > > NOTE: THIS EXCEPTION OCCURS WITH JDK8, BUT NOT WITH JDK7 > > public class NewFXMain1 { > > public static void main(String[] args) throws > InterruptedException, InvocationTargetException { > > EventQueue.invokeAndWait(new Runnable() { > > // Create the Swing components on the EDT > @Override > public void run() { > JFrame f = new JFrame(); > f.getContentPane().setPreferredSize(new Dimension(500, > 500)); > f.pack(); > f.setVisible(true); > final JFXPanel jfx = new JFXPanel(); > f.getContentPane().add(jfx); > > // FX Thread > Platform.runLater(new Runnable() { > @Override > public void run() { > WebView browser = new WebView(); > WebEngine webEngine = browser.getEngine(); > // This is a reference to a web page on the > Waterloo web site > webEngine.load("http://waterloo.sourceforge.net/devwebpage/MathJax/mathjax.html"); > > Scene s = new Scene(browser); > jfx.setScene(s); > } > }); > > } > }); > } > } > > > This gives (Note: using JDK8 and Running from NetBeans 7.4): > > Executing > C:\Users\malcolm\Documents\waterloo\Sources\Java\kcl-waterloo-jfx\dist\run1852659813\kcl-waterloo-jfx.jar > using platform C:\Program Files\Java\jdk1.8.0/bin/java > Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException > at > javafx.embed.swing.JFXPanel.getInputMethodRequests(JFXPanel.java:744) > at > sun.awt.im.InputMethodAdapter.haveActiveClient(InputMethodAdapter.java:61) > at sun.awt.windows.WInputMethod.activate(WInputMethod.java:285) > at sun.awt.im.InputContext.activateInputMethod(InputContext.java:396) > at sun.awt.im.InputContext.focusGained(InputContext.java:338) > at sun.awt.im.InputContext.dispatchEvent(InputContext.java:245) > at > sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:196) > at java.awt.Component.dispatchEventImpl(Component.java:4817) > at java.awt.Container.dispatchEventImpl(Container.java:2293) > at java.awt.Component.dispatchEvent(Component.java:4707) > at > java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) > at > java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:986) > at > java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:610) > at java.awt.Component.dispatchEventImpl(Component.java:4756) > at java.awt.Container.dispatchEventImpl(Container.java:2293) > at java.awt.Component.dispatchEvent(Component.java:4707) > at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) > at java.awt.EventQueue.access$400(EventQueue.java:97) > at java.awt.EventQueue$3.run(EventQueue.java:697) > at java.awt.EventQueue$3.run(EventQueue.java:691) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) > at java.awt.EventQueue$4.run(EventQueue.java:719) > at java.awt.EventQueue$4.run(EventQueue.java:717) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) > at > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220) > at > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135) > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) > From kevin.rushforth at oracle.com Tue Nov 5 11:43:01 2013 From: kevin.rushforth at oracle.com (Kevin Rushforth) Date: Tue, 05 Nov 2013 11:43:01 -0800 Subject: JFXPanel with WebView in JDK8 In-Reply-To: <527948EF.5080702@kcl.ac.uk> References: <527948EF.5080702@kcl.ac.uk> Message-ID: <52794A45.2040507@oracle.com> Please file a JIRA at: https://javafx-jira.kenai.com/ Thanks. -- Kevin Lidierth Malcolm wrote: > > NOTE: THIS EXCEPTION OCCURS WITH JDK8, BUT NOT WITH JDK7 > > public class NewFXMain1 { > > public static void main(String[] args) throws > InterruptedException, InvocationTargetException { > > EventQueue.invokeAndWait(new Runnable() { > > // Create the Swing components on the EDT > @Override > public void run() { > JFrame f = new JFrame(); > f.getContentPane().setPreferredSize(new Dimension(500, > 500)); > f.pack(); > f.setVisible(true); > final JFXPanel jfx = new JFXPanel(); > f.getContentPane().add(jfx); > > // FX Thread > Platform.runLater(new Runnable() { > @Override > public void run() { > WebView browser = new WebView(); > WebEngine webEngine = browser.getEngine(); > // This is a reference to a web page on the > Waterloo web site > webEngine.load("http://waterloo.sourceforge.net/devwebpage/MathJax/mathjax.html"); > > Scene s = new Scene(browser); > jfx.setScene(s); > } > }); > > } > }); > } > } > > > This gives (Note: using JDK8 and Running from NetBeans 7.4): > > Executing > C:\Users\malcolm\Documents\waterloo\Sources\Java\kcl-waterloo-jfx\dist\run1852659813\kcl-waterloo-jfx.jar > using platform C:\Program Files\Java\jdk1.8.0/bin/java > Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException > at > javafx.embed.swing.JFXPanel.getInputMethodRequests(JFXPanel.java:744) > at > sun.awt.im.InputMethodAdapter.haveActiveClient(InputMethodAdapter.java:61) > > at sun.awt.windows.WInputMethod.activate(WInputMethod.java:285) > at sun.awt.im.InputContext.activateInputMethod(InputContext.java:396) > at sun.awt.im.InputContext.focusGained(InputContext.java:338) > at sun.awt.im.InputContext.dispatchEvent(InputContext.java:245) > at > sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:196) > at java.awt.Component.dispatchEventImpl(Component.java:4817) > at java.awt.Container.dispatchEventImpl(Container.java:2293) > at java.awt.Component.dispatchEvent(Component.java:4707) > at > java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) > > at > java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:986) > > at > java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:610) > > at java.awt.Component.dispatchEventImpl(Component.java:4756) > at java.awt.Container.dispatchEventImpl(Container.java:2293) > at java.awt.Component.dispatchEvent(Component.java:4707) > at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) > at java.awt.EventQueue.access$400(EventQueue.java:97) > at java.awt.EventQueue$3.run(EventQueue.java:697) > at java.awt.EventQueue$3.run(EventQueue.java:691) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) > > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) > > at java.awt.EventQueue$4.run(EventQueue.java:719) > at java.awt.EventQueue$4.run(EventQueue.java:717) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) > > at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) > at > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220) > > at > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135) > > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123) > > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) > From malcolm.lidierth at kcl.ac.uk Tue Nov 5 12:05:17 2013 From: malcolm.lidierth at kcl.ac.uk (Lidierth Malcolm) Date: Tue, 5 Nov 2013 20:05:17 +0000 Subject: openjfx-dev Digest, Vol 24, Issue 9 In-Reply-To: References: Message-ID: <52794F7D.8040606@kcl.ac.uk> @Steve Not sure how to add a watcher now, as already posted to https://javafx-jira.kenai.com/browse/RT-34077 Regards ML On 05/11/2013 20:00, openjfx-dev-request at openjdk.java.net wrote: > Send openjfx-dev mailing list submissions to > openjfx-dev at openjdk.java.net > > To subscribe or unsubscribe via the World Wide Web, visit > http://mail.openjdk.java.net/mailman/listinfo/openjfx-dev > or, via email, send a message with subject or body 'help' to > openjfx-dev-request at openjdk.java.net > > You can reach the person managing the list at > openjfx-dev-owner at openjdk.java.net > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of openjfx-dev digest..." > > > Today's Topics: > > 1. Re: JFXPanel with WebView in JDK8 (Stephen F Northover) > 2. Re: JFXPanel with WebView in JDK8 (Kevin Rushforth) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Tue, 05 Nov 2013 14:42:36 -0500 > From: Stephen F Northover > Subject: Re: JFXPanel with WebView in JDK8 > To: openjfx-dev at openjdk.java.net > Message-ID: <52794A2C.2000008 at oracle.com> > Content-Type: text/plain; charset=ISO-8859-1; format=flowed > > Please enter a JIRA with your test code in it and add me as a watcher. > Thanks. > > Steve > > On 2013-11-05 2:37 PM, Lidierth Malcolm wrote: >> NOTE: THIS EXCEPTION OCCURS WITH JDK8, BUT NOT WITH JDK7 >> >> public class NewFXMain1 { >> >> public static void main(String[] args) throws >> InterruptedException, InvocationTargetException { >> >> EventQueue.invokeAndWait(new Runnable() { >> >> // Create the Swing components on the EDT >> @Override >> public void run() { >> JFrame f = new JFrame(); >> f.getContentPane().setPreferredSize(new Dimension(500, >> 500)); >> f.pack(); >> f.setVisible(true); >> final JFXPanel jfx = new JFXPanel(); >> f.getContentPane().add(jfx); >> >> // FX Thread >> Platform.runLater(new Runnable() { >> @Override >> public void run() { >> WebView browser = new WebView(); >> WebEngine webEngine = browser.getEngine(); >> // This is a reference to a web page on the >> Waterloo web site >> webEngine.load("http://waterloo.sourceforge.net/devwebpage/MathJax/mathjax.html"); >> >> Scene s = new Scene(browser); >> jfx.setScene(s); >> } >> }); >> >> } >> }); >> } >> } >> >> >> This gives (Note: using JDK8 and Running from NetBeans 7.4): >> >> Executing >> C:\Users\malcolm\Documents\waterloo\Sources\Java\kcl-waterloo-jfx\dist\run1852659813\kcl-waterloo-jfx.jar >> using platform C:\Program Files\Java\jdk1.8.0/bin/java >> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException >> at >> javafx.embed.swing.JFXPanel.getInputMethodRequests(JFXPanel.java:744) >> at >> sun.awt.im.InputMethodAdapter.haveActiveClient(InputMethodAdapter.java:61) >> at sun.awt.windows.WInputMethod.activate(WInputMethod.java:285) >> at sun.awt.im.InputContext.activateInputMethod(InputContext.java:396) >> at sun.awt.im.InputContext.focusGained(InputContext.java:338) >> at sun.awt.im.InputContext.dispatchEvent(InputContext.java:245) >> at >> sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:196) >> at java.awt.Component.dispatchEventImpl(Component.java:4817) >> at java.awt.Container.dispatchEventImpl(Container.java:2293) >> at java.awt.Component.dispatchEvent(Component.java:4707) >> at >> java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) >> at >> java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:986) >> at >> java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:610) >> at java.awt.Component.dispatchEventImpl(Component.java:4756) >> at java.awt.Container.dispatchEventImpl(Container.java:2293) >> at java.awt.Component.dispatchEvent(Component.java:4707) >> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) >> at java.awt.EventQueue.access$400(EventQueue.java:97) >> at java.awt.EventQueue$3.run(EventQueue.java:697) >> at java.awt.EventQueue$3.run(EventQueue.java:691) >> at java.security.AccessController.doPrivileged(Native Method) >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) >> at java.awt.EventQueue$4.run(EventQueue.java:719) >> at java.awt.EventQueue$4.run(EventQueue.java:717) >> at java.security.AccessController.doPrivileged(Native Method) >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) >> at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) >> at >> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220) >> at >> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135) >> at >> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111) >> at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) >> > > > ------------------------------ > > Message: 2 > Date: Tue, 05 Nov 2013 11:43:01 -0800 > From: Kevin Rushforth > Subject: Re: JFXPanel with WebView in JDK8 > To: Lidierth Malcolm > Cc: openjfx-dev at openjdk.java.net > Message-ID: <52794A45.2040507 at oracle.com> > Content-Type: text/plain; charset=ISO-8859-1; format=flowed > > Please file a JIRA at: https://javafx-jira.kenai.com/ > > Thanks. > > -- Kevin > > > Lidierth Malcolm wrote: >> NOTE: THIS EXCEPTION OCCURS WITH JDK8, BUT NOT WITH JDK7 >> >> public class NewFXMain1 { >> >> public static void main(String[] args) throws >> InterruptedException, InvocationTargetException { >> >> EventQueue.invokeAndWait(new Runnable() { >> >> // Create the Swing components on the EDT >> @Override >> public void run() { >> JFrame f = new JFrame(); >> f.getContentPane().setPreferredSize(new Dimension(500, >> 500)); >> f.pack(); >> f.setVisible(true); >> final JFXPanel jfx = new JFXPanel(); >> f.getContentPane().add(jfx); >> >> // FX Thread >> Platform.runLater(new Runnable() { >> @Override >> public void run() { >> WebView browser = new WebView(); >> WebEngine webEngine = browser.getEngine(); >> // This is a reference to a web page on the >> Waterloo web site >> webEngine.load("http://waterloo.sourceforge.net/devwebpage/MathJax/mathjax.html"); >> >> Scene s = new Scene(browser); >> jfx.setScene(s); >> } >> }); >> >> } >> }); >> } >> } >> >> >> This gives (Note: using JDK8 and Running from NetBeans 7.4): >> >> Executing >> C:\Users\malcolm\Documents\waterloo\Sources\Java\kcl-waterloo-jfx\dist\run1852659813\kcl-waterloo-jfx.jar >> using platform C:\Program Files\Java\jdk1.8.0/bin/java >> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException >> at >> javafx.embed.swing.JFXPanel.getInputMethodRequests(JFXPanel.java:744) >> at >> sun.awt.im.InputMethodAdapter.haveActiveClient(InputMethodAdapter.java:61) >> >> at sun.awt.windows.WInputMethod.activate(WInputMethod.java:285) >> at sun.awt.im.InputContext.activateInputMethod(InputContext.java:396) >> at sun.awt.im.InputContext.focusGained(InputContext.java:338) >> at sun.awt.im.InputContext.dispatchEvent(InputContext.java:245) >> at >> sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:196) >> at java.awt.Component.dispatchEventImpl(Component.java:4817) >> at java.awt.Container.dispatchEventImpl(Container.java:2293) >> at java.awt.Component.dispatchEvent(Component.java:4707) >> at >> java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) >> >> at >> java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:986) >> >> at >> java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:610) >> >> at java.awt.Component.dispatchEventImpl(Component.java:4756) >> at java.awt.Container.dispatchEventImpl(Container.java:2293) >> at java.awt.Component.dispatchEvent(Component.java:4707) >> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) >> at java.awt.EventQueue.access$400(EventQueue.java:97) >> at java.awt.EventQueue$3.run(EventQueue.java:697) >> at java.awt.EventQueue$3.run(EventQueue.java:691) >> at java.security.AccessController.doPrivileged(Native Method) >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) >> >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) >> >> at java.awt.EventQueue$4.run(EventQueue.java:719) >> at java.awt.EventQueue$4.run(EventQueue.java:717) >> at java.security.AccessController.doPrivileged(Native Method) >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) >> >> at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) >> at >> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220) >> >> at >> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135) >> >> at >> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123) >> >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111) >> at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) >> > > End of openjfx-dev Digest, Vol 24, Issue 9 > ****************************************** -- Dr Malcolm Lidierth Senior Lecturer in Physiology Wolfson Centre for Age-Related Diseases Hodgkin Building Guy' Hospital Campus King's College London LONDON UK SE1 7EH Ph: +44(0) 20 78486175 (Direct Line) From anthony.petrov at oracle.com Tue Nov 5 12:06:34 2013 From: anthony.petrov at oracle.com (Anthony Petrov) Date: Wed, 06 Nov 2013 00:06:34 +0400 Subject: [8] Review request for RT-33352: Win: Image and html cannot be dnd or clipboarded at the same time. Message-ID: <52794FCA.1040903@oracle.com> Hi Steve, Please review a fix for https://javafx-jira.kenai.com/browse/RT-33352 at http://cr.openjdk.java.net/~anthony/g-4-imageHtmlDnD-RT-33352.0/ The fix is trivial and allows one to pass both an image and an html content via clipboard whereas previously the code could ignore the image, try to convert the html to an image, fail, and report as if there's no images present at all. -- best regards, Anthony From steve.x.northover at oracle.com Tue Nov 5 12:17:25 2013 From: steve.x.northover at oracle.com (Stephen F Northover) Date: Tue, 05 Nov 2013 15:17:25 -0500 Subject: [8] Review request for RT-33352: Win: Image and html cannot be dnd or clipboarded at the same time. In-Reply-To: <52794FCA.1040903@oracle.com> References: <52794FCA.1040903@oracle.com> Message-ID: <52795255.9020904@oracle.com> I will. n future, please add me to the JIRA and attach the review request there. I see the webrev is there but the information about what you did to fix the bug (the contents of this email) should be there too. That way all the information about the bug and what you did is in the JIRA. Other people may be interested in the review and that is great information contacting the list is a great thing to do. You could email me and CC the list as follows (or just email the list). Subject: [] Review request for : To: CC: Body: The body can be really short but must contain the link. The main purpose of emailing the list is to inform people that a review is taking place and an interesting bug is close to being fixed. If the body simply had the JIRA link and the title, that is good enough. People are invited to follow along in the JIRA. ... and thanks for fixing the bug! (and sorry for this big long email) Steve On 2013-11-05 3:06 PM, Anthony Petrov wrote: > Hi Steve, > > Please review a fix for https://javafx-jira.kenai.com/browse/RT-33352 at > > http://cr.openjdk.java.net/~anthony/g-4-imageHtmlDnD-RT-33352.0/ > > The fix is trivial and allows one to pass both an image and an html > content via clipboard whereas previously the code could ignore the > image, try to convert the html to an image, fail, and report as if > there's no images present at all. > > -- > best regards, > Anthony From steve.x.northover at oracle.com Tue Nov 5 12:33:34 2013 From: steve.x.northover at oracle.com (Stephen F Northover) Date: Tue, 05 Nov 2013 15:33:34 -0500 Subject: [8] Review request for RT-33352: Win: Image and html cannot be dnd or clipboarded at the same time. In-Reply-To: <52795255.9020904@oracle.com> References: <52794FCA.1040903@oracle.com> <52795255.9020904@oracle.com> Message-ID: <5279561E.1070604@oracle.com> .. and of course, I looked at the JIRA too quickly and just saw the link and didn't notice that the text above was the explanation of the fix. My bad. Would be good to follow the same format that was sent to the list and include the link along with the comment (or send a really short description to the list). Then guys who pattern match instead of reading won't get tripped up. Steve On 2013-11-05 3:17 PM, Stephen F Northover wrote: > I will. > > n future, please add me to the JIRA and attach the review request > there. I see the webrev is there but the information about what you > did to fix the bug (the contents of this email) should be there too. > That way all the information about the bug and what you did is in the > JIRA. > > Other people may be interested in the review and that is great > information contacting the list is a great thing to do. You could > email me and CC the list as follows (or just email the list). > > Subject: [] Review request for : > To: > CC: > Body: > > The body can be really short but must contain the link. The main > purpose of emailing the list is to inform people that a review is > taking place and an interesting bug is close to being fixed. If the > body simply had the JIRA link and the title, that is good enough. > People are invited to follow along in the JIRA. > > ... and thanks for fixing the bug! (and sorry for this big long email) > > Steve > > On 2013-11-05 3:06 PM, Anthony Petrov wrote: >> Hi Steve, >> >> Please review a fix for https://javafx-jira.kenai.com/browse/RT-33352 at >> >> http://cr.openjdk.java.net/~anthony/g-4-imageHtmlDnD-RT-33352.0/ >> >> The fix is trivial and allows one to pass both an image and an html >> content via clipboard whereas previously the code could ignore the >> image, try to convert the html to an image, fail, and report as if >> there's no images present at all. >> >> -- >> best regards, >> Anthony > From hang.vo at oracle.com Tue Nov 5 14:17:11 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 22:17:11 +0000 Subject: hg: openjfx/8/graphics/rt: RT-32838 Bug in LineChart animation Message-ID: <20131105221756.3C04062A81@hg.openjdk.java.net> Changeset: c9f00f34c3e1 Author: psomashe Date: 2013-11-05 14:07 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/c9f00f34c3e1 RT-32838 Bug in LineChart animation reviewed by Jonathan. ! modules/controls/src/main/java/javafx/scene/chart/LineChart.java From hang.vo at oracle.com Tue Nov 5 15:03:11 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Tue, 05 Nov 2013 23:03:11 +0000 Subject: hg: openjfx/8/graphics/rt: RT-28393: Left / Right key navigation for Menu dropdowns don't work. Message-ID: <20131105230330.E15A362A87@hg.openjdk.java.net> Changeset: 85de716883ff Author: leifs Date: 2013-11-05 14:46 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/85de716883ff RT-28393: Left / Right key navigation for Menu dropdowns don't work. Reviewed-by: jgiles ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ContextMenuContent.java ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/MenuBarSkin.java From hang.vo at oracle.com Tue Nov 5 16:47:15 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Wed, 06 Nov 2013 00:47:15 +0000 Subject: hg: openjfx/8/graphics/rt: 4 new changesets Message-ID: <20131106004819.4BAB662A88@hg.openjdk.java.net> Changeset: 3828bec01c12 Author: mhowe Date: 2013-11-05 13:07 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/3828bec01c12 RT-34079: Backout Service Loader change - cause issue with SceneBuilder [mhowe] ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/Bundler.java - modules/fxpackager/src/main/resources/META-INF/services/com.sun.javafx.tools.packager.bundlers.Bundler Changeset: 58064c5894fa Author: mhowe Date: 2013-11-05 13:09 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/58064c5894fa RT-34080: Backout Multiple package types - cause issue with SceneBuilder [mhowe] ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/BundleParams.java ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/Bundler.java ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/LinuxDebBundler.java ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/LinuxRPMBundler.java ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/MacDMGBundler.java ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/WinExeBundler.java ! modules/fxpackager/src/main/java/com/sun/javafx/tools/packager/bundlers/WinMsiBundler.java Changeset: 170a4c3af374 Author: mhowe Date: 2013-11-05 14:07 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/170a4c3af374 Automated merge with ssh://jfxsrc.us.oracle.com//javafx/8.0/MASTER/jfx/rt - modules/fxpackager/src/main/resources/META-INF/services/com.sun.javafx.tools.packager.bundlers.Bundler Changeset: b49810ea616a Author: kcr Date: 2013-11-05 16:32 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/b49810ea616a Automated merge with ssh://jfxsrc.us.oracle.com//javafx/8.0/MASTER/jfx/rt From kevin.rushforth at oracle.com Tue Nov 5 16:53:49 2013 From: kevin.rushforth at oracle.com (Kevin Rushforth) Date: Tue, 05 Nov 2013 16:53:49 -0800 Subject: Heads-up: Bumping minimum build number to b113 Message-ID: <5279931D.4080504@oracle.com> As a heads-up, I need to bump the minimum JDK 8 version number required for building FX to b113 (is currently b112) to fix a problem building one of our closed files that uses a java.net class in the JDK which has changed. FX JIRA: https://javafx-jira.kenai.com/browse/RT-34085 JDK issue which broke us: https://bugs.openjdk.java.net/browse/JDK-8014719 I will push this change shortly. -- Kevin From hang.vo at oracle.com Tue Nov 5 17:47:36 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Wed, 06 Nov 2013 01:47:36 +0000 Subject: hg: openjfx/8/graphics/rt: RT-34085: Build failure in closed test due to JDK-8014719 Message-ID: <20131106014753.1E89162A8A@hg.openjdk.java.net> Changeset: 53d80a9e7404 Author: kcr Date: 2013-11-05 16:55 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/53d80a9e7404 RT-34085: Build failure in closed test due to JDK-8014719 ! build.properties From hang.vo at oracle.com Wed Nov 6 08:33:17 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Wed, 06 Nov 2013 16:33:17 +0000 Subject: hg: openjfx/8/graphics/rt: 7 new changesets Message-ID: <20131106163533.BAB08623C4@hg.openjdk.java.net> Changeset: 03dffb2bdc75 Author: Martin Sladecek Date: 2013-11-06 09:16 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/03dffb2bdc75 RT-34091 Multiple properties in Controls override set() instead of invalidated() Reviewed-by: jgiles, dgrieve ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/AccordionSkin.java ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/InputField.java ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ProgressIndicatorSkin.java ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableColumnHeader.java ! modules/controls/src/main/java/javafx/scene/control/Accordion.java ! modules/controls/src/main/java/javafx/scene/control/Control.java ! modules/controls/src/main/java/javafx/scene/control/ListView.java ! modules/controls/src/main/java/javafx/scene/control/PopupControl.java ! modules/controls/src/main/java/javafx/scene/control/TextArea.java ! modules/controls/src/main/java/javafx/scene/control/TextField.java Changeset: d408298723b6 Author: bae Date: 2013-11-06 08:37 +0000 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/d408298723b6 RT-17000: Some jpeg files are rendered incorrectly Reviewed-by: kcr, prr ! modules/graphics/src/main/java/com/sun/javafx/iio/jpeg/JPEGImageLoader.java ! modules/graphics/src/main/native-iio/jpegloader.c ! modules/graphics/src/main/native-iio/libjpeg7/jdcolor.c Changeset: 7b1fbb71071b Author: Assaf Yavani Date: 2013-11-06 13:24 +0200 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/7b1fbb71071b [RT-34045] EGLFB: No move or drag events on simple touch screen Summary: There were 2 issues: 1) bug in udevInput - wrong if statement that cause a fault parsing of events 2) unit tests errors Tested-by: updated LinuxInputTest Reviewed-by: ddhill ! modules/graphics/src/main/native-glass/lens/input/udev/udevInput.c Changeset: 143bcf17d534 Author: Martin Sladecek Date: 2013-11-06 12:41 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/143bcf17d534 RT-34088: SortedList broken when adding new elements to underlying list ! modules/base/src/main/java/javafx/collections/transformation/SortedList.java ! modules/base/src/test/java/javafx/collections/SortedListTest.java Changeset: 22f48880a877 Author: Assaf Yavani Date: 2013-11-06 13:50 +0200 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/22f48880a877 [MINOR] RT-33614 Lens:HelloSanity:Controls::ScrollPane jitter when holding the finger on the pane Summary: touch events threshold was to small and caused to many events to be send when finger was touching the screen without moving Tested-by: LinuxInputTest Reviewed-by: dblaukop ddhill ! modules/graphics/src/main/java/com/sun/glass/ui/lens/LensTouchInputSupport.java ! modules/graphics/src/main/native-glass/lens/input/udev/udevInput.c Changeset: f4081e2d5c83 Author: Anthony Petrov Date: 2013-11-06 17:18 +0400 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/f4081e2d5c83 RT-33352: Win: Image and html cannot be dnd or clipboarded at the same time. Reviewed-by: snorthov ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumClipboard.java Changeset: 6f4354f6bd7d Author: Felipe Heidrich Date: 2013-11-06 08:26 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/6f4354f6bd7d RT-33971: [Graphics, Text] Alignment not work in win7 Reviewed-by: Kevin Rushforth ! modules/graphics/src/main/java/com/sun/javafx/text/GlyphLayout.java From malcolm.lidierth at kcl.ac.uk Wed Nov 6 08:45:03 2013 From: malcolm.lidierth at kcl.ac.uk (Lidierth, Malcolm) Date: Wed, 6 Nov 2013 16:45:03 +0000 Subject: Serializing JFXPanel with java.beans.XMLEncoder In-Reply-To: <52792936.2010601@oracle.com> References: <5279276F.4090302@kcl.ac.uk>,<52792936.2010601@oracle.com> Message-ID: <3a3533fb83f5402f9b5eae1ecdc6ac3d@AMXPR03MB247.eurprd03.prod.outlook.com> OK - the original null pointer exception was because of the issue with WebView that is now on JIRA. I now get a more easily understood exception: java.lang.NoSuchMethodException: javafx.scene.Scene.()javafx.scene.Scene as Scene has no null constructor. So I guess my question now relates to optimism: the beans encoder handles JFXPanel fine, but am I right that I will need to populate that JFXPanel by writing my own classes/delegates to create the scene - and that standard FX components do not have ready-made delegates as do the Swing components that will be invoked through the get/set methods using a default persistence delegate? I guess that would be asking a lot. ________________________________________ From: Artem Ananiev Sent: Tuesday, November 05, 2013 5:21 PM To: Lidierth, Malcolm Cc: openjfx-dev at openjdk.java.net Subject: Re: Serializing JFXPanel with java.beans.XMLEncoder Hi, Lidierth, could you provide the exception stack trace, please? It would help to understand whether you're over-optimistic or not :) Thanks, Artem On 11/5/2013 9:14 PM, Lidierth Malcolm wrote: > When I add a JFXPanel to a Swing hierarchy that is then written to XML > using java.beans.XMLEncoder, all is well as long as the JFXPanel is empty. > When it has content, I see a NullPointerException. > > Before I dig into the origins, am I being over-optimistic? : should I > expect java.beans.XMLEncoder to cope here? > > ML > From yennick.trevels at gmail.com Tue Nov 5 23:43:44 2013 From: yennick.trevels at gmail.com (Yennick Trevels) Date: Wed, 6 Nov 2013 08:43:44 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <5279428F.2050002@oracle.com> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> Message-ID: Isn't it somewhat counter-intuitive to perform such changes in one of the computePref*() methods? You're adding children in a method which is supposed to compute the preferred width/height. There should be a better way to do this. In Apache Flex for example, there's a commitProperties() and updateDisplayList() method in which you can do these things, which are called somewhat similar to a pulse in JavaFx (except that you have to invalidate them yourself). On Tue, Nov 5, 2013 at 8:10 PM, Jonathan Giles wrote: > You're right in that controls don't tend to use ScenePulseListener. This > may be due to an oversight on our part, or just that our requirements > differ (I don't honestly know). > > You're also right that it is important to batch up property changes and > do them once per pulse, rather than as they come in. If this is not done > you do indeed get a severe performance hit (I remember back in the day > before I optimised many of the controls in this way, the performance > impact of not doing this was staggering). > > The way I do it is simple: in places where I receive events from > properties / bindings / listeners, where I know that there is > potentially a lot of changes coming through, I create a boolean (e.g. > 'refreshView' or somesuch). I then set this boolean to true, and in the > appropriate place in the code (most commonly layoutChildren(), but > sometimes in the computePref*() methods), I start the method with code > like this: > > if (refreshView) { > doExpensiveOperationThatShouldHappenOnlyOncePerPulse(); > refreshView = false; > } > > The reason why I sometimes use layoutChildren() and sometimes the > computePref*() methods comes down to the (new) rule in JavaFX 8.0 that > you can not change the children list of a node within the > layoutChildren() method. Because of this, if I need to modify the > children list, I put the above code in the computePref*() method. > > I hope that helps. > > -- Jonathan > > On 6/11/2013 3:58 a.m., John Hendrikx wrote: > > Hi List, > > > > I'm considering using a ScenePulseListener to avoid expensive > > recalculations when multiple bindings trigger an action. > > > > My problem is this: > > > > I like to build Views (Controls) that are dumb and expose properties > > that can be manipulated by whatever is using the View. The View > > listens to its own Properties and adjusts its state accordingly. Some > > of these adjustments are related (like width + height) and can be > > expensive when calculated immediately. So I would like to mark the > > View as "invalid" and recalculate its state (if invalid) on the next > > Pulse. > > > > My current use case I'm looking at is a View that wraps (amongst > > others) a TreeView. The View exposes an ObservableList and a > > BooleanProperty that decides whether the first level of the Tree > > should be displayed as Tabs or as Nodes (which has an impact on what > > Nodes actually are added to the TreeView, and which are added as > > Tabs). User code will thus often set a new list of nodes + change the > > boolean to show tabs or nodes. The View currently naively has > > InvalidationListeners on both of these properties which cause > > TreeNodes to be created after the first change... then discarded and > > recreated after the second change by the user code, ie: > > > > view.nodesProperty().setAll(nodes); // Recreates all > > Tabs/TreeNodes with the current value of expand top level, as we donot > > know another change might be incoming... > > view.expandTopLevelProperty().set(false); // Recreates all > > Tabs/TreeNodes again if expand top level was changed... > > > > This specific problem might be done in a better way, but the point > > remains, how do I avoid expensive calculations when multiple > > properties get changed one after the other by the user code? I'm > > assuming that JavaFX controls already avoid these kinds of things, and > > I'd like to know whether using a ScenePulseListener is the way to go, > > or that it can/should be done in a different way -- examining the code > > for TreeView (and its superclasses), I couldn't find uses of > > ScenePulseListener... > > > > --John > > > > > > > > > > From assaf.yavnai at oracle.com Wed Nov 6 05:35:19 2013 From: assaf.yavnai at oracle.com (Assaf Yavnai) Date: Wed, 06 Nov 2013 15:35:19 +0200 Subject: did anyone encountered this? Message-ID: <527A4597.2050307@oracle.com> :apps:experiments:3DViewer:compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':apps:experiments:3DViewer:compileJava'. > java.lang.ClassFormatError: Invalid Constant Pool entry Type 18 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 39.292 secs assaf at assaf-Latitude-E6410:~/ws/udev-refactoring/rt$ java -versionjava version "1.8.0-ea" Java(TM) SE Runtime Environment (build 1.8.0-ea-b113) Java HotSpot(TM) Server VM (build 25.0-b55, mixed mode) Thanks, Assaf From artem.ananiev at oracle.com Wed Nov 6 09:20:58 2013 From: artem.ananiev at oracle.com (Artem Ananiev) Date: Wed, 06 Nov 2013 21:20:58 +0400 Subject: did anyone encountered this? In-Reply-To: <527A4597.2050307@oracle.com> References: <527A4597.2050307@oracle.com> Message-ID: <527A7A7A.9060509@oracle.com> Yes, I've seen this many times. I didn't spend much time trying to understand what is the problem, though. The workaround is simple: just delete 3DViewer "build" folder. Thanks, Artem On 11/6/2013 5:35 PM, Assaf Yavnai wrote: > :apps:experiments:3DViewer:compileJava FAILED > > FAILURE: Build failed with an exception. > > * What went wrong: > Execution failed for task ':apps:experiments:3DViewer:compileJava'. > > java.lang.ClassFormatError: Invalid Constant Pool entry Type 18 > > * Try: > Run with --stacktrace option to get the stack trace. Run with --info or > --debug option to get more log output. > > BUILD FAILED > > Total time: 39.292 secs > assaf at assaf-Latitude-E6410:~/ws/udev-refactoring/rt$ java -versionjava > version "1.8.0-ea" > Java(TM) SE Runtime Environment (build 1.8.0-ea-b113) > Java HotSpot(TM) Server VM (build 25.0-b55, mixed mode) > > Thanks, > Assaf From kevin.rushforth at oracle.com Wed Nov 6 09:27:05 2013 From: kevin.rushforth at oracle.com (Kevin Rushforth) Date: Wed, 06 Nov 2013 09:27:05 -0800 Subject: did anyone encountered this? In-Reply-To: <527A7A7A.9060509@oracle.com> References: <527A4597.2050307@oracle.com> <527A7A7A.9060509@oracle.com> Message-ID: <527A7BE9.30202@oracle.com> I see this from time to time. This is a bug in the version of ant that is used by gradle for dependencies. It has been reported that gradle 1.8 may have a newer version of ant that fixes this bug. In the mean time, a less intrusive workaround is: gradle -PUSE_DEPEND=false ... If enough people are getting bitten by this, should we consider making USE_DEPEND=false the default? -- Kevin Artem Ananiev wrote: > > Yes, I've seen this many times. I didn't spend much time trying to > understand what is the problem, though. The workaround is simple: just > delete 3DViewer "build" folder. > > Thanks, > > Artem > > On 11/6/2013 5:35 PM, Assaf Yavnai wrote: >> :apps:experiments:3DViewer:compileJava FAILED >> >> FAILURE: Build failed with an exception. >> >> * What went wrong: >> Execution failed for task ':apps:experiments:3DViewer:compileJava'. >> > java.lang.ClassFormatError: Invalid Constant Pool entry Type 18 >> >> * Try: >> Run with --stacktrace option to get the stack trace. Run with --info or >> --debug option to get more log output. >> >> BUILD FAILED >> >> Total time: 39.292 secs >> assaf at assaf-Latitude-E6410:~/ws/udev-refactoring/rt$ java -versionjava >> version "1.8.0-ea" >> Java(TM) SE Runtime Environment (build 1.8.0-ea-b113) >> Java HotSpot(TM) Server VM (build 25.0-b55, mixed mode) >> >> Thanks, >> Assaf From hang.vo at oracle.com Wed Nov 6 10:03:38 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Wed, 06 Nov 2013 18:03:38 +0000 Subject: hg: openjfx/8/graphics/rt: SW pipeline: fix for perf. regression in image rendering (RT-34076) Message-ID: <20131106180409.9A1B0623CB@hg.openjdk.java.net> Changeset: 1cbc110be452 Author: Martin Soch Date: 2013-11-06 18:51 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/1cbc110be452 SW pipeline: fix for perf. regression in image rendering (RT-34076) ! modules/graphics/src/main/native-prism-sw/PiscesPaint.c From artem.ananiev at oracle.com Tue Nov 5 23:53:02 2013 From: artem.ananiev at oracle.com (Artem Ananiev) Date: Wed, 06 Nov 2013 11:53:02 +0400 Subject: JFXPanel with WebView in JDK8 In-Reply-To: <527948EF.5080702@kcl.ac.uk> References: <527948EF.5080702@kcl.ac.uk> Message-ID: <5279F55E.4040603@oracle.com> Hi, Lidierth, what JDK8 version do you run your app? This exception is expected, when an old JDK8 build is used. Thanks, Artem On 11/5/2013 11:37 PM, Lidierth Malcolm wrote: > > NOTE: THIS EXCEPTION OCCURS WITH JDK8, BUT NOT WITH JDK7 > > public class NewFXMain1 { > > public static void main(String[] args) throws InterruptedException, > InvocationTargetException { > > EventQueue.invokeAndWait(new Runnable() { > > // Create the Swing components on the EDT > @Override > public void run() { > JFrame f = new JFrame(); > f.getContentPane().setPreferredSize(new Dimension(500, > 500)); > f.pack(); > f.setVisible(true); > final JFXPanel jfx = new JFXPanel(); > f.getContentPane().add(jfx); > > // FX Thread > Platform.runLater(new Runnable() { > @Override > public void run() { > WebView browser = new WebView(); > WebEngine webEngine = browser.getEngine(); > // This is a reference to a web page on the > Waterloo web site > webEngine.load("http://waterloo.sourceforge.net/devwebpage/MathJax/mathjax.html"); > > Scene s = new Scene(browser); > jfx.setScene(s); > } > }); > > } > }); > } > } > > > This gives (Note: using JDK8 and Running from NetBeans 7.4): > > Executing > C:\Users\malcolm\Documents\waterloo\Sources\Java\kcl-waterloo-jfx\dist\run1852659813\kcl-waterloo-jfx.jar > using platform C:\Program Files\Java\jdk1.8.0/bin/java > Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException > at > javafx.embed.swing.JFXPanel.getInputMethodRequests(JFXPanel.java:744) > at > sun.awt.im.InputMethodAdapter.haveActiveClient(InputMethodAdapter.java:61) > at sun.awt.windows.WInputMethod.activate(WInputMethod.java:285) > at sun.awt.im.InputContext.activateInputMethod(InputContext.java:396) > at sun.awt.im.InputContext.focusGained(InputContext.java:338) > at sun.awt.im.InputContext.dispatchEvent(InputContext.java:245) > at > sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:196) > at java.awt.Component.dispatchEventImpl(Component.java:4817) > at java.awt.Container.dispatchEventImpl(Container.java:2293) > at java.awt.Component.dispatchEvent(Component.java:4707) > at > java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) > > at > java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:986) > > at > java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:610) > > at java.awt.Component.dispatchEventImpl(Component.java:4756) > at java.awt.Container.dispatchEventImpl(Container.java:2293) > at java.awt.Component.dispatchEvent(Component.java:4707) > at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) > at java.awt.EventQueue.access$400(EventQueue.java:97) > at java.awt.EventQueue$3.run(EventQueue.java:697) > at java.awt.EventQueue$3.run(EventQueue.java:691) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) > > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) > > at java.awt.EventQueue$4.run(EventQueue.java:719) > at java.awt.EventQueue$4.run(EventQueue.java:717) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) > > at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) > at > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220) > > at > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135) > > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123) > > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) > From hjohn at xs4all.nl Wed Nov 6 10:31:44 2013 From: hjohn at xs4all.nl (John Hendrikx) Date: Wed, 06 Nov 2013 19:31:44 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <5279428F.2050002@oracle.com> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> Message-ID: <527A8B10.4060509@xs4all.nl> On 5/11/2013 20:10, Jonathan Giles wrote: > You're right in that controls don't tend to use ScenePulseListener. This > may be due to an oversight on our part, or just that our requirements > differ (I don't honestly know). > > You're also right that it is important to batch up property changes and > do them once per pulse, rather than as they come in. If this is not done > you do indeed get a severe performance hit (I remember back in the day > before I optimised many of the controls in this way, the performance > impact of not doing this was staggering). > > The way I do it is simple: in places where I receive events from > properties / bindings / listeners, where I know that there is > potentially a lot of changes coming through, I create a boolean (e.g. > 'refreshView' or somesuch). I then set this boolean to true, and in the > appropriate place in the code (most commonly layoutChildren(), but > sometimes in the computePref*() methods), I start the method with code > like this: > > if (refreshView) { > doExpensiveOperationThatShouldHappenOnlyOncePerPulse(); > refreshView = false; > } > > The reason why I sometimes use layoutChildren() and sometimes the > computePref*() methods comes down to the (new) rule in JavaFX 8.0 that > you can not change the children list of a node within the > layoutChildren() method. Because of this, if I need to modify the > children list, I put the above code in the computePref*() method. I'm not sure in which circumstances layoutChildren() will be called or if I can mark my control as needing layout, since the properties I want to trigger on are not directly attached to anything that JavaFX will be monitoring. The ScenePulseListener therefore seems like a good choice -- the reason I'm asking about is that I cannot find any examples and the documentation for it is also pretty lean. I'll experiment with a ScenePulseListener and see how it pans out, it looks like it would be an elegant solution. Thanks Jonathan! > > I hope that helps. > > -- Jonathan > > On 6/11/2013 3:58 a.m., John Hendrikx wrote: >> Hi List, >> >> I'm considering using a ScenePulseListener to avoid expensive >> recalculations when multiple bindings trigger an action. >> >> My problem is this: >> >> I like to build Views (Controls) that are dumb and expose properties >> that can be manipulated by whatever is using the View. The View >> listens to its own Properties and adjusts its state accordingly. Some >> of these adjustments are related (like width + height) and can be >> expensive when calculated immediately. So I would like to mark the >> View as "invalid" and recalculate its state (if invalid) on the next >> Pulse. >> >> My current use case I'm looking at is a View that wraps (amongst >> others) a TreeView. The View exposes an ObservableList and a >> BooleanProperty that decides whether the first level of the Tree >> should be displayed as Tabs or as Nodes (which has an impact on what >> Nodes actually are added to the TreeView, and which are added as >> Tabs). User code will thus often set a new list of nodes + change the >> boolean to show tabs or nodes. The View currently naively has >> InvalidationListeners on both of these properties which cause >> TreeNodes to be created after the first change... then discarded and >> recreated after the second change by the user code, ie: >> >> view.nodesProperty().setAll(nodes); // Recreates all >> Tabs/TreeNodes with the current value of expand top level, as we donot >> know another change might be incoming... >> view.expandTopLevelProperty().set(false); // Recreates all >> Tabs/TreeNodes again if expand top level was changed... >> >> This specific problem might be done in a better way, but the point >> remains, how do I avoid expensive calculations when multiple >> properties get changed one after the other by the user code? I'm >> assuming that JavaFX controls already avoid these kinds of things, and >> I'd like to know whether using a ScenePulseListener is the way to go, >> or that it can/should be done in a different way -- examining the code >> for TreeView (and its superclasses), I couldn't find uses of >> ScenePulseListener... >> >> --John >> >> >> >> From petr.pchelko at oracle.com Wed Nov 6 10:51:45 2013 From: petr.pchelko at oracle.com (Petr Pchelko) Date: Wed, 6 Nov 2013 22:51:45 +0400 Subject: JFXPanel with WebView in JDK8 In-Reply-To: <5279F55E.4040603@oracle.com> References: <527948EF.5080702@kcl.ac.uk> <5279F55E.4040603@oracle.com> Message-ID: <01895621-6038-49AA-B425-7CCCACC0ED29@oracle.com> Hello, Artem. > This exception is expected, when an old JDK8 build is used. Actually I suppose it?s a bug, here?s a JIRA for it: https://javafx-jira.kenai.com/browse/RT-34077 I?ll fix it in a couple of days probably. With best regards. Petr. On Nov 6, 2013, at 11:53 AM, Artem Ananiev wrote: > Hi, Lidierth, > > what JDK8 version do you run your app? This exception is expected, when an old JDK8 build is used. > > Thanks, > > Artem > > On 11/5/2013 11:37 PM, Lidierth Malcolm wrote: >> >> NOTE: THIS EXCEPTION OCCURS WITH JDK8, BUT NOT WITH JDK7 >> >> public class NewFXMain1 { >> >> public static void main(String[] args) throws InterruptedException, >> InvocationTargetException { >> >> EventQueue.invokeAndWait(new Runnable() { >> >> // Create the Swing components on the EDT >> @Override >> public void run() { >> JFrame f = new JFrame(); >> f.getContentPane().setPreferredSize(new Dimension(500, >> 500)); >> f.pack(); >> f.setVisible(true); >> final JFXPanel jfx = new JFXPanel(); >> f.getContentPane().add(jfx); >> >> // FX Thread >> Platform.runLater(new Runnable() { >> @Override >> public void run() { >> WebView browser = new WebView(); >> WebEngine webEngine = browser.getEngine(); >> // This is a reference to a web page on the >> Waterloo web site >> webEngine.load("http://waterloo.sourceforge.net/devwebpage/MathJax/mathjax.html"); >> >> Scene s = new Scene(browser); >> jfx.setScene(s); >> } >> }); >> >> } >> }); >> } >> } >> >> >> This gives (Note: using JDK8 and Running from NetBeans 7.4): >> >> Executing >> C:\Users\malcolm\Documents\waterloo\Sources\Java\kcl-waterloo-jfx\dist\run1852659813\kcl-waterloo-jfx.jar >> using platform C:\Program Files\Java\jdk1.8.0/bin/java >> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException >> at >> javafx.embed.swing.JFXPanel.getInputMethodRequests(JFXPanel.java:744) >> at >> sun.awt.im.InputMethodAdapter.haveActiveClient(InputMethodAdapter.java:61) >> at sun.awt.windows.WInputMethod.activate(WInputMethod.java:285) >> at sun.awt.im.InputContext.activateInputMethod(InputContext.java:396) >> at sun.awt.im.InputContext.focusGained(InputContext.java:338) >> at sun.awt.im.InputContext.dispatchEvent(InputContext.java:245) >> at >> sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:196) >> at java.awt.Component.dispatchEventImpl(Component.java:4817) >> at java.awt.Container.dispatchEventImpl(Container.java:2293) >> at java.awt.Component.dispatchEvent(Component.java:4707) >> at >> java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) >> >> at >> java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:986) >> >> at >> java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:610) >> >> at java.awt.Component.dispatchEventImpl(Component.java:4756) >> at java.awt.Container.dispatchEventImpl(Container.java:2293) >> at java.awt.Component.dispatchEvent(Component.java:4707) >> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) >> at java.awt.EventQueue.access$400(EventQueue.java:97) >> at java.awt.EventQueue$3.run(EventQueue.java:697) >> at java.awt.EventQueue$3.run(EventQueue.java:691) >> at java.security.AccessController.doPrivileged(Native Method) >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) >> >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) >> >> at java.awt.EventQueue$4.run(EventQueue.java:719) >> at java.awt.EventQueue$4.run(EventQueue.java:717) >> at java.security.AccessController.doPrivileged(Native Method) >> at >> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) >> >> at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) >> at >> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220) >> >> at >> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135) >> >> at >> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123) >> >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111) >> at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) >> From felipe.heidrich at oracle.com Wed Nov 6 14:32:15 2013 From: felipe.heidrich at oracle.com (Felipe Heidrich) Date: Wed, 6 Nov 2013 14:32:15 -0800 Subject: review request RT-34072: TextArea overlaps symbols Message-ID: Hi Steve, could you please review: https://javafx-jira.kenai.com/browse/RT-34072 http://cr.openjdk.java.net/~fheidric/RT34072/webrev/ Thanks Felipe From felipe.heidrich at oracle.com Wed Nov 6 15:06:07 2013 From: felipe.heidrich at oracle.com (Felipe Heidrich) Date: Wed, 6 Nov 2013 15:06:07 -0800 Subject: review request RT-34090: NGRegion border painting seems odd Message-ID: Hi Jim, Please review https://javafx-jira.kenai.com/browse/RT-34090 http://cr.openjdk.java.net/~fheidric/RT34090/webrev/ Thanks Felipe From hang.vo at oracle.com Wed Nov 6 16:03:36 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Thu, 07 Nov 2013 00:03:36 +0000 Subject: hg: openjfx/8/graphics/rt: [Eclipse only] use jfxrt.jar from artifacts instead of caches to avoid the need of using ant update-cache Message-ID: <20131107000355.33D13623E5@hg.openjdk.java.net> Changeset: 089c27f969c2 Author: Felipe Heidrich Date: 2013-11-06 15:57 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/089c27f969c2 [Eclipse only] use jfxrt.jar from artifacts instead of caches to avoid the need of using ant update-cache ! .classpath From felipe.heidrich at oracle.com Wed Nov 6 16:08:07 2013 From: felipe.heidrich at oracle.com (Felipe Heidrich) Date: Wed, 6 Nov 2013 16:08:07 -0800 Subject: review request RT-34093: complext text are garbled when using some fonts to render the text. Message-ID: Hi Steve, Please review http://cr.openjdk.java.net/~fheidric/RT34093/webrev/ https://javafx-jira.kenai.com/browse/RT-34093 Thank you Felipe From felix.bembrick at gmail.com Wed Nov 6 22:11:59 2013 From: felix.bembrick at gmail.com (Felix Bembrick) Date: Thu, 7 Nov 2013 17:11:59 +1100 Subject: Scene Builder performance regression between 1.1 and 2.0 Message-ID: Scene Builder 2.0 has very serious performance issues (on my machines at least). When running 1.1 & 2.0 side-by-side, 1.1 is very responsive and behaves very well. On the contrary, 2.0 is extremely sluggish with a few seconds between clicking on a control and the selection handles appearing and trying to resize the properties pane is so slow that it is not usable. I see this version of Scene Builder was built with JDK8 b112. Is anyone else experiencing this? Have I just hit on some subtle performance issue with JavaFX 8 and the GPU drivers on this machine (which is Windows 7 64-bit BTW).? Felix From martin.sladecek at oracle.com Thu Nov 7 00:10:09 2013 From: martin.sladecek at oracle.com (Martin Sladecek) Date: Thu, 07 Nov 2013 09:10:09 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> Message-ID: <527B4AE1.7020502@oracle.com> It depends on what you need to recompute. If you invalidate some properties and the internal layout depends on these properties, then also your pref/min size depends on these properties. The layout (simplified) usually works in 3 steps: 1)compute the layout using min/pref/max size of children (here the compute* methods of child will be called) 2) children are resized to their width/height depending on the layout 3) layouChildren of a child is called, where these 3 steps are done for the child, using the newly provided size from step 2 This has several consequences: As compute* methods are called before layoutChildren, you need to do recomputation there. The recomputed values can be cached and reused in layoutChildren. The other thing is that you can't rely on getting exactly pref width/height, so you can recompute only things that don't depend on actual size of the component. The exact size will be known in layoutChildren() call. It would be great to have some invalidate/recompute API that would be called automatically before compute* and layoutChildren method. I've filed a JIRA issue for that: https://javafx-jira.kenai.com/browse/RT-34118 -Martin On 11/06/2013 08:43 AM, Yennick Trevels wrote: > Isn't it somewhat counter-intuitive to perform such changes in one of the > computePref*() methods? You're adding children in a method which is > supposed to compute the preferred width/height. > > There should be a better way to do this. In Apache Flex for example, > there's a commitProperties() and updateDisplayList() method in which you > can do these things, which are called somewhat similar to a pulse in JavaFx > (except that you have to invalidate them yourself). > > > On Tue, Nov 5, 2013 at 8:10 PM, Jonathan Giles wrote: > >> You're right in that controls don't tend to use ScenePulseListener. This >> may be due to an oversight on our part, or just that our requirements >> differ (I don't honestly know). >> >> You're also right that it is important to batch up property changes and >> do them once per pulse, rather than as they come in. If this is not done >> you do indeed get a severe performance hit (I remember back in the day >> before I optimised many of the controls in this way, the performance >> impact of not doing this was staggering). >> >> The way I do it is simple: in places where I receive events from >> properties / bindings / listeners, where I know that there is >> potentially a lot of changes coming through, I create a boolean (e.g. >> 'refreshView' or somesuch). I then set this boolean to true, and in the >> appropriate place in the code (most commonly layoutChildren(), but >> sometimes in the computePref*() methods), I start the method with code >> like this: >> >> if (refreshView) { >> doExpensiveOperationThatShouldHappenOnlyOncePerPulse(); >> refreshView = false; >> } >> >> The reason why I sometimes use layoutChildren() and sometimes the >> computePref*() methods comes down to the (new) rule in JavaFX 8.0 that >> you can not change the children list of a node within the >> layoutChildren() method. Because of this, if I need to modify the >> children list, I put the above code in the computePref*() method. >> >> I hope that helps. >> >> -- Jonathan >> >> On 6/11/2013 3:58 a.m., John Hendrikx wrote: >>> Hi List, >>> >>> I'm considering using a ScenePulseListener to avoid expensive >>> recalculations when multiple bindings trigger an action. >>> >>> My problem is this: >>> >>> I like to build Views (Controls) that are dumb and expose properties >>> that can be manipulated by whatever is using the View. The View >>> listens to its own Properties and adjusts its state accordingly. Some >>> of these adjustments are related (like width + height) and can be >>> expensive when calculated immediately. So I would like to mark the >>> View as "invalid" and recalculate its state (if invalid) on the next >>> Pulse. >>> >>> My current use case I'm looking at is a View that wraps (amongst >>> others) a TreeView. The View exposes an ObservableList and a >>> BooleanProperty that decides whether the first level of the Tree >>> should be displayed as Tabs or as Nodes (which has an impact on what >>> Nodes actually are added to the TreeView, and which are added as >>> Tabs). User code will thus often set a new list of nodes + change the >>> boolean to show tabs or nodes. The View currently naively has >>> InvalidationListeners on both of these properties which cause >>> TreeNodes to be created after the first change... then discarded and >>> recreated after the second change by the user code, ie: >>> >>> view.nodesProperty().setAll(nodes); // Recreates all >>> Tabs/TreeNodes with the current value of expand top level, as we donot >>> know another change might be incoming... >>> view.expandTopLevelProperty().set(false); // Recreates all >>> Tabs/TreeNodes again if expand top level was changed... >>> >>> This specific problem might be done in a better way, but the point >>> remains, how do I avoid expensive calculations when multiple >>> properties get changed one after the other by the user code? I'm >>> assuming that JavaFX controls already avoid these kinds of things, and >>> I'd like to know whether using a ScenePulseListener is the way to go, >>> or that it can/should be done in a different way -- examining the code >>> for TreeView (and its superclasses), I couldn't find uses of >>> ScenePulseListener... >>> >>> --John >>> >>> >>> >>> >> From martin.sladecek at oracle.com Thu Nov 7 00:20:07 2013 From: martin.sladecek at oracle.com (Martin Sladecek) Date: Thu, 07 Nov 2013 09:20:07 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <527A8B10.4060509@xs4all.nl> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> Message-ID: <527B4D37.7020008@oracle.com> On 11/06/2013 07:31 PM, John Hendrikx wrote: > On 5/11/2013 20:10, Jonathan Giles wrote: >> You're right in that controls don't tend to use ScenePulseListener. This >> may be due to an oversight on our part, or just that our requirements >> differ (I don't honestly know). >> >> You're also right that it is important to batch up property changes and >> do them once per pulse, rather than as they come in. If this is not done >> you do indeed get a severe performance hit (I remember back in the day >> before I optimised many of the controls in this way, the performance >> impact of not doing this was staggering). >> >> The way I do it is simple: in places where I receive events from >> properties / bindings / listeners, where I know that there is >> potentially a lot of changes coming through, I create a boolean (e.g. >> 'refreshView' or somesuch). I then set this boolean to true, and in the >> appropriate place in the code (most commonly layoutChildren(), but >> sometimes in the computePref*() methods), I start the method with code >> like this: >> >> if (refreshView) { >> doExpensiveOperationThatShouldHappenOnlyOncePerPulse(); >> refreshView = false; >> } >> >> The reason why I sometimes use layoutChildren() and sometimes the >> computePref*() methods comes down to the (new) rule in JavaFX 8.0 that >> you can not change the children list of a node within the >> layoutChildren() method. Because of this, if I need to modify the >> children list, I put the above code in the computePref*() method. > > I'm not sure in which circumstances layoutChildren() will be called or > if I can mark my control as needing layout, since the properties I > want to trigger on are not directly attached to anything that JavaFX > will be monitoring. The ScenePulseListener therefore seems like a > good choice -- the reason I'm asking about is that I cannot find any > examples and the documentation for it is also pretty lean. If you call requestLayout(), the layoutChildren() will be called on the next pulse. The ScenePulseListener is not a public API and the layout is the only way how Controls can react on pulse. Can you be more specific on what you need to do on pulse? If it's not related to the layout, maybe it would be reasonable to introduce some API that would allow you to execute code on each pulse. -Martin > > I'll experiment with a ScenePulseListener and see how it pans out, it > looks like it would be an elegant solution. > > Thanks Jonathan! > > >> >> I hope that helps. >> >> -- Jonathan >> >> On 6/11/2013 3:58 a.m., John Hendrikx wrote: >>> Hi List, >>> >>> I'm considering using a ScenePulseListener to avoid expensive >>> recalculations when multiple bindings trigger an action. >>> >>> My problem is this: >>> >>> I like to build Views (Controls) that are dumb and expose properties >>> that can be manipulated by whatever is using the View. The View >>> listens to its own Properties and adjusts its state accordingly. Some >>> of these adjustments are related (like width + height) and can be >>> expensive when calculated immediately. So I would like to mark the >>> View as "invalid" and recalculate its state (if invalid) on the next >>> Pulse. >>> >>> My current use case I'm looking at is a View that wraps (amongst >>> others) a TreeView. The View exposes an ObservableList and a >>> BooleanProperty that decides whether the first level of the Tree >>> should be displayed as Tabs or as Nodes (which has an impact on what >>> Nodes actually are added to the TreeView, and which are added as >>> Tabs). User code will thus often set a new list of nodes + change the >>> boolean to show tabs or nodes. The View currently naively has >>> InvalidationListeners on both of these properties which cause >>> TreeNodes to be created after the first change... then discarded and >>> recreated after the second change by the user code, ie: >>> >>> view.nodesProperty().setAll(nodes); // Recreates all >>> Tabs/TreeNodes with the current value of expand top level, as we donot >>> know another change might be incoming... >>> view.expandTopLevelProperty().set(false); // Recreates all >>> Tabs/TreeNodes again if expand top level was changed... >>> >>> This specific problem might be done in a better way, but the point >>> remains, how do I avoid expensive calculations when multiple >>> properties get changed one after the other by the user code? I'm >>> assuming that JavaFX controls already avoid these kinds of things, and >>> I'd like to know whether using a ScenePulseListener is the way to go, >>> or that it can/should be done in a different way -- examining the code >>> for TreeView (and its superclasses), I couldn't find uses of >>> ScenePulseListener... >>> >>> --John >>> >>> >>> >>> > From yves.joan at oracle.com Thu Nov 7 01:23:09 2013 From: yves.joan at oracle.com (Yves JOAN) Date: Thu, 07 Nov 2013 10:23:09 +0100 Subject: Scene Builder performance regression between 1.1 and 2.0 In-Reply-To: References: Message-ID: <527B5BFD.8080007@oracle.com> Hi Felix, I didn't notice such an issue. Can you please log a JIRA so that we can track the details ? By the way what reads Help > About Scene Builder window, especially for JavaFX section, in the two cases (Toolkit, Pipeline, Hardware acceleration) ? Thanks Yves On 07/11/13 07:11, Felix Bembrick wrote: > Scene Builder 2.0 has very serious performance issues (on my machines at > least). > > When running 1.1 & 2.0 side-by-side, 1.1 is very responsive and behaves > very well. On the contrary, 2.0 is extremely sluggish with a few seconds > between clicking on a control and the selection handles appearing and > trying to resize the properties pane is so slow that it is not usable. > > I see this version of Scene Builder was built with JDK8 b112. > > Is anyone else experiencing this? Have I just hit on some subtle > performance issue with JavaFX 8 and the GPU drivers on this machine (which > is Windows 7 64-bit BTW).? > > Felix From hang.vo at oracle.com Thu Nov 7 01:17:49 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Thu, 07 Nov 2013 09:17:49 +0000 Subject: hg: openjfx/8/graphics/rt: iOS build system: updated iOS version to 7.0, fixed media package for javah. Reviewed by omaticka Message-ID: <20131107091805.3FADA623ED@hg.openjdk.java.net> Changeset: 92583d8664ef Author: dpulkrab Date: 2013-11-07 10:14 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/92583d8664ef iOS build system: updated iOS version to 7.0, fixed media package for javah. Reviewed by omaticka ! buildSrc/ios.gradle From felix.bembrick at gmail.com Thu Nov 7 01:36:30 2013 From: felix.bembrick at gmail.com (Felix Bembrick) Date: Thu, 7 Nov 2013 20:36:30 +1100 Subject: Scene Builder performance regression between 1.1 and 2.0 In-Reply-To: <527B5BFD.8080007@oracle.com> References: <527B5BFD.8080007@oracle.com> Message-ID: Hi Yves, Here are the details from About: It really performs much, much worse than 1.1 Felix *Product Version* *JavaFX Scene Builder 2.0 (Developer Preview)* *Build Information* *Version: 2.0-b05, Changeset: ae16937fb015* *Date: 2013-10-24 10:43* *JavaFX* *Toolkit = QuantumToolkit* *Pipeline = D3DPipeline* *Hardware acceleration ENABLED* *Java* *1.8.0-ea-b112, Oracle Corporation* *Operating System* *Windows 7, x86, 6.1* *Copyright ? 2012, 2013, Oracle and/or its affiliates. All rights reserved.* On 7 November 2013 20:23, Yves JOAN wrote: > Hi Felix, > > I didn't notice such an issue. Can you please log a JIRAso that we can track the details ? > By the way what reads Help > About Scene Builder window, especially for > JavaFX section, in the two cases (Toolkit, Pipeline, Hardware > acceleration) ? > > Thanks > Yves > > > On 07/11/13 07:11, Felix Bembrick wrote: > > Scene Builder 2.0 has very serious performance issues (on my machines at > least). > > When running 1.1 & 2.0 side-by-side, 1.1 is very responsive and behaves > very well. On the contrary, 2.0 is extremely sluggish with a few seconds > between clicking on a control and the selection handles appearing and > trying to resize the properties pane is so slow that it is not usable. > > I see this version of Scene Builder was built with JDK8 b112. > > Is anyone else experiencing this? Have I just hit on some subtle > performance issue with JavaFX 8 and the GPU drivers on this machine (which > is Windows 7 64-bit BTW).? > > Felix > > > From hang.vo at oracle.com Thu Nov 7 01:47:50 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Thu, 07 Nov 2013 09:47:50 +0000 Subject: hg: openjfx/8/graphics/rt: Android: Fixed failing build caused by changes in 4709. GLASS_IF_LOG macros weren't defined in Android build. Reviewed by: oldrich.maticka@oracle.com Message-ID: <20131107094806.D7B07623F0@hg.openjdk.java.net> Changeset: a54f8b28d1e9 Author: tb115823 Date: 2013-11-07 10:43 +0100 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/a54f8b28d1e9 Android: Fixed failing build caused by changes in 4709. GLASS_IF_LOG macros weren't defined in Android build. Reviewed by: oldrich.maticka at oracle.com ! modules/graphics/src/main/native-glass/lens/LensLogger.h From mario at datenwort.at Thu Nov 7 02:48:12 2013 From: mario at datenwort.at (Mario Ivankovits) Date: Thu, 7 Nov 2013 10:48:12 +0000 Subject: GridPane prevents layouting Message-ID: Hi JavaFX-Devs! I do have a situation where the GridPane prevents the refreshing of parts of a scene. Unhappily I am not yet able to reconstruct this case in an simple test, but what I have found ist hat GridPane.requestLayout sometimes prevents bubbling up the request and thus never reaches the point where the Toolkit.requestNextPulse() will be called. The problematic frame in GridPane: @Override public void requestLayout() { // RT-18878: Do not update metrics dirty if we are performing layout. // If metricsDirty is set true during a layout pass the next call to computeGridMetrics() // will clear all the cell bounds resulting in out of date info until the // next layout pass. if (performingLayout || metricsDirty) { return; } As far as I can see, at least super.requestLayout() should be called in the "if" case so the request can bubble further up. Otherwise, the components within the GridPane "cell" are marked with "needsLayout", but they never get layouted until you e.g. resize the window. Best regards, Mario From hjohn at xs4all.nl Thu Nov 7 02:58:38 2013 From: hjohn at xs4all.nl (John Hendrikx) Date: Thu, 07 Nov 2013 11:58:38 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <527B4D37.7020008@oracle.com> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> Message-ID: <527B725E.6070407@xs4all.nl> On 7/11/2013 09:20, Martin Sladecek wrote: > On 11/06/2013 07:31 PM, John Hendrikx wrote: >> On 5/11/2013 20:10, Jonathan Giles wrote: >>> You're right in that controls don't tend to use ScenePulseListener. >>> This >>> may be due to an oversight on our part, or just that our requirements >>> differ (I don't honestly know). >>> >>> You're also right that it is important to batch up property changes and >>> do them once per pulse, rather than as they come in. If this is not >>> done >>> you do indeed get a severe performance hit (I remember back in the day >>> before I optimised many of the controls in this way, the performance >>> impact of not doing this was staggering). >>> >>> The way I do it is simple: in places where I receive events from >>> properties / bindings / listeners, where I know that there is >>> potentially a lot of changes coming through, I create a boolean (e.g. >>> 'refreshView' or somesuch). I then set this boolean to true, and in the >>> appropriate place in the code (most commonly layoutChildren(), but >>> sometimes in the computePref*() methods), I start the method with code >>> like this: >>> >>> if (refreshView) { >>> doExpensiveOperationThatShouldHappenOnlyOncePerPulse(); >>> refreshView = false; >>> } >>> >>> The reason why I sometimes use layoutChildren() and sometimes the >>> computePref*() methods comes down to the (new) rule in JavaFX 8.0 that >>> you can not change the children list of a node within the >>> layoutChildren() method. Because of this, if I need to modify the >>> children list, I put the above code in the computePref*() method. >> >> I'm not sure in which circumstances layoutChildren() will be called >> or if I can mark my control as needing layout, since the properties I >> want to trigger on are not directly attached to anything that JavaFX >> will be monitoring. The ScenePulseListener therefore seems like a >> good choice -- the reason I'm asking about is that I cannot find any >> examples and the documentation for it is also pretty lean. > If you call requestLayout(), the layoutChildren() will be called on > the next pulse. The ScenePulseListener is not a public API and the > layout is the only way how Controls can react on pulse. Can you be > more specific on what you need to do on pulse? If it's not related to > the layout, maybe it would be reasonable to introduce some API that > would allow you to execute code on each pulse. > Hm, I found it googling, and since it showed up here: http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html I figured it was public, but I just noticed the class is defined package private. Anyway, what I need to do: 1) I have two listeners that keep an eye on two properties, expandTopLevel and nodes: expandTopLevel.addListener(new InvalidationListener() { @Override public void invalidated(Observable observable) { buildTree(); } }); mediaNodes.addListener(new ListChangeListener() { @Override public void onChanged(ListChangeListener.Change change) { buildTree(); } }); 2) buildTree() will call TreeView#setRoot() directly/indirectly in both cases, either with the full list of nodes or a subtree, depending on expandTopLevel state. The other possible subtree choices are moved into a tab-like control, which will have either 1 tab (if not expandTopLevel) or multiple tabs (one for each top level node). Now, TreeView itself might be smart enough now to actually draw the sets of Nodes twice when both properties change, however buildTree will still get called twice, which itself is doing quite some work (although not enough to move it off the event thread), but also can cause things like selection to change. None of this will affect the size of these controls, which I assumed would mean layoutChildren() does not get called (definitely not on the Pane containing both the tab-like control and the TreeView control). Also, if I donot call buildTree, but "wait", I'd at the very least would need to change something to trigger a layout -- requestLayout() would work me there. --John > -Martin > >> >> I'll experiment with a ScenePulseListener and see how it pans out, it >> looks like it would be an elegant solution. >> >> Thanks Jonathan! >> >> >>> >>> I hope that helps. >>> >>> -- Jonathan >>> >>> On 6/11/2013 3:58 a.m., John Hendrikx wrote: >>>> Hi List, >>>> >>>> I'm considering using a ScenePulseListener to avoid expensive >>>> recalculations when multiple bindings trigger an action. >>>> >>>> My problem is this: >>>> >>>> I like to build Views (Controls) that are dumb and expose properties >>>> that can be manipulated by whatever is using the View. The View >>>> listens to its own Properties and adjusts its state accordingly. Some >>>> of these adjustments are related (like width + height) and can be >>>> expensive when calculated immediately. So I would like to mark the >>>> View as "invalid" and recalculate its state (if invalid) on the next >>>> Pulse. >>>> >>>> My current use case I'm looking at is a View that wraps (amongst >>>> others) a TreeView. The View exposes an ObservableList and a >>>> BooleanProperty that decides whether the first level of the Tree >>>> should be displayed as Tabs or as Nodes (which has an impact on what >>>> Nodes actually are added to the TreeView, and which are added as >>>> Tabs). User code will thus often set a new list of nodes + change the >>>> boolean to show tabs or nodes. The View currently naively has >>>> InvalidationListeners on both of these properties which cause >>>> TreeNodes to be created after the first change... then discarded and >>>> recreated after the second change by the user code, ie: >>>> >>>> view.nodesProperty().setAll(nodes); // Recreates all >>>> Tabs/TreeNodes with the current value of expand top level, as we donot >>>> know another change might be incoming... >>>> view.expandTopLevelProperty().set(false); // Recreates all >>>> Tabs/TreeNodes again if expand top level was changed... >>>> >>>> This specific problem might be done in a better way, but the point >>>> remains, how do I avoid expensive calculations when multiple >>>> properties get changed one after the other by the user code? I'm >>>> assuming that JavaFX controls already avoid these kinds of things, and >>>> I'd like to know whether using a ScenePulseListener is the way to go, >>>> or that it can/should be done in a different way -- examining the code >>>> for TreeView (and its superclasses), I couldn't find uses of >>>> ScenePulseListener... >>>> >>>> --John >>>> >>>> >>>> >>>> >> > From felix.bembrick at gmail.com Thu Nov 7 03:17:23 2013 From: felix.bembrick at gmail.com (Felix Bembrick) Date: Thu, 7 Nov 2013 22:17:23 +1100 Subject: Minor issue with ColorPicker Message-ID: Why does the text "Custom Color.." that appears when the colour selections appear in the drop-down section of ColorPicker use two dots (i.e. "..") instead of an ellipsis or three dots (i.e. "...") at the end of the text? The ellipsis is a standard scientific and mathematical symbol and is of course used throughout Swing and JavaFX when text cannot fit into a clipped region so would seem far more appropriate to use in this context than a double-dot which has no mathematical or UI precedence that I am aware of. Felix From jerome.cambon at oracle.com Thu Nov 7 02:56:54 2013 From: jerome.cambon at oracle.com (Jerome Cambon) Date: Thu, 7 Nov 2013 02:56:54 -0800 (PST) Subject: Scene Builder performance regression between 1.1 and 2.0 In-Reply-To: References: Message-ID: <527B71F6.80607@oracle.com> Hi, No performance issue for me, I'm also using Win7 64bits. I have similar (good) performance than SB 1.1. I had an issue on Ubuntu, and had to upgrade my Nvidia driver. Could you try to run SB 2 on a different machine ? Jerome On 11/7/13 7:11 AM, Felix Bembrick wrote: > Scene Builder 2.0 has very serious performance issues (on my machines at > least). > > When running 1.1 & 2.0 side-by-side, 1.1 is very responsive and behaves > very well. On the contrary, 2.0 is extremely sluggish with a few seconds > between clicking on a control and the selection handles appearing and > trying to resize the properties pane is so slow that it is not usable. > > I see this version of Scene Builder was built with JDK8 b112. > > Is anyone else experiencing this? Have I just hit on some subtle > performance issue with JavaFX 8 and the GPU drivers on this machine (which > is Windows 7 64-bit BTW).? > > Felix From artem.ananiev at oracle.com Thu Nov 7 03:47:35 2013 From: artem.ananiev at oracle.com (Artem Ananiev) Date: Thu, 07 Nov 2013 15:47:35 +0400 Subject: Scene Builder performance regression between 1.1 and 2.0 In-Reply-To: References: Message-ID: <527B7DD7.7020503@oracle.com> On 11/7/2013 10:11 AM, Felix Bembrick wrote: > Scene Builder 2.0 has very serious performance issues (on my machines at > least). > > When running 1.1 & 2.0 side-by-side, 1.1 is very responsive and behaves > very well. On the contrary, 2.0 is extremely sluggish with a few seconds > between clicking on a control and the selection handles appearing and > trying to resize the properties pane is so slow that it is not usable. It may be caused by exceptions or logging output to stdout/err... Thanks, Artem > I see this version of Scene Builder was built with JDK8 b112. > > Is anyone else experiencing this? Have I just hit on some subtle > performance issue with JavaFX 8 and the GPU drivers on this machine (which > is Windows 7 64-bit BTW).? > > Felix > From martin.sladecek at oracle.com Thu Nov 7 04:20:39 2013 From: martin.sladecek at oracle.com (Martin Sladecek) Date: Thu, 07 Nov 2013 13:20:39 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <527B725E.6070407@xs4all.nl> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> <527B725E.6070407@xs4all.nl> Message-ID: <527B8597.90501@oracle.com> On 11/07/2013 11:58 AM, John Hendrikx wrote: > On 7/11/2013 09:20, Martin Sladecek wrote: >> On 11/06/2013 07:31 PM, John Hendrikx wrote: >>> On 5/11/2013 20:10, Jonathan Giles wrote: >>>> You're right in that controls don't tend to use ScenePulseListener. >>>> This >>>> may be due to an oversight on our part, or just that our requirements >>>> differ (I don't honestly know). >>>> >>>> You're also right that it is important to batch up property changes >>>> and >>>> do them once per pulse, rather than as they come in. If this is not >>>> done >>>> you do indeed get a severe performance hit (I remember back in the day >>>> before I optimised many of the controls in this way, the performance >>>> impact of not doing this was staggering). >>>> >>>> The way I do it is simple: in places where I receive events from >>>> properties / bindings / listeners, where I know that there is >>>> potentially a lot of changes coming through, I create a boolean (e.g. >>>> 'refreshView' or somesuch). I then set this boolean to true, and in >>>> the >>>> appropriate place in the code (most commonly layoutChildren(), but >>>> sometimes in the computePref*() methods), I start the method with code >>>> like this: >>>> >>>> if (refreshView) { >>>> doExpensiveOperationThatShouldHappenOnlyOncePerPulse(); >>>> refreshView = false; >>>> } >>>> >>>> The reason why I sometimes use layoutChildren() and sometimes the >>>> computePref*() methods comes down to the (new) rule in JavaFX 8.0 that >>>> you can not change the children list of a node within the >>>> layoutChildren() method. Because of this, if I need to modify the >>>> children list, I put the above code in the computePref*() method. >>> >>> I'm not sure in which circumstances layoutChildren() will be called >>> or if I can mark my control as needing layout, since the properties >>> I want to trigger on are not directly attached to anything that >>> JavaFX will be monitoring. The ScenePulseListener therefore seems >>> like a good choice -- the reason I'm asking about is that I cannot >>> find any examples and the documentation for it is also pretty lean. >> If you call requestLayout(), the layoutChildren() will be called on >> the next pulse. The ScenePulseListener is not a public API and the >> layout is the only way how Controls can react on pulse. Can you be >> more specific on what you need to do on pulse? If it's not related to >> the layout, maybe it would be reasonable to introduce some API that >> would allow you to execute code on each pulse. >> > Hm, I found it googling, and since it showed up here: > > http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html > > > I figured it was public, but I just noticed the class is defined > package private. > > Anyway, what I need to do: > > 1) I have two listeners that keep an eye on two properties, > expandTopLevel and nodes: > > expandTopLevel.addListener(new InvalidationListener() { > @Override > public void invalidated(Observable observable) { > buildTree(); > } > }); > > mediaNodes.addListener(new ListChangeListener() { > @Override > public void onChanged(ListChangeListener.Change MediaNode> change) { > buildTree(); > } > }); > > 2) buildTree() will call TreeView#setRoot() directly/indirectly in > both cases, either with the full list of nodes or a subtree, depending > on expandTopLevel state. The other possible subtree choices are moved > into a tab-like control, which will have either 1 tab (if not > expandTopLevel) or multiple tabs (one for each top level node). > > Now, TreeView itself might be smart enough now to actually draw the > sets of Nodes twice when both properties change, however buildTree > will still get called twice, which itself is doing quite some work > (although not enough to move it off the event thread), but also can > cause things like selection to change. > > None of this will affect the size of these controls, which I assumed > would mean layoutChildren() does not get called (definitely not on the > Pane containing both the tab-like control and the TreeView control). > Also, if I donot call buildTree, but "wait", I'd at the very least > would need to change something to trigger a layout -- requestLayout() > would work me there. The layout is not only about different preferred size. In your custom Control, stable preferred size just means, the parent of this control doesn't need to relayout. But internally, I would recommend you to modify the properties of children in layoutChildren() method. This means, instead of buildTree, call requestLayout() and call buildTree() inside of layoutChildren(). Since, as you say, no changes to preferred size will happen, you don't need to do any special computation in compute* methods. -Martin > > --John > >> -Martin >> >>> >>> I'll experiment with a ScenePulseListener and see how it pans out, >>> it looks like it would be an elegant solution. >>> >>> Thanks Jonathan! >>> >>> >>>> >>>> I hope that helps. >>>> >>>> -- Jonathan >>>> >>>> On 6/11/2013 3:58 a.m., John Hendrikx wrote: >>>>> Hi List, >>>>> >>>>> I'm considering using a ScenePulseListener to avoid expensive >>>>> recalculations when multiple bindings trigger an action. >>>>> >>>>> My problem is this: >>>>> >>>>> I like to build Views (Controls) that are dumb and expose properties >>>>> that can be manipulated by whatever is using the View. The View >>>>> listens to its own Properties and adjusts its state accordingly. >>>>> Some >>>>> of these adjustments are related (like width + height) and can be >>>>> expensive when calculated immediately. So I would like to mark the >>>>> View as "invalid" and recalculate its state (if invalid) on the next >>>>> Pulse. >>>>> >>>>> My current use case I'm looking at is a View that wraps (amongst >>>>> others) a TreeView. The View exposes an ObservableList and a >>>>> BooleanProperty that decides whether the first level of the Tree >>>>> should be displayed as Tabs or as Nodes (which has an impact on what >>>>> Nodes actually are added to the TreeView, and which are added as >>>>> Tabs). User code will thus often set a new list of nodes + change >>>>> the >>>>> boolean to show tabs or nodes. The View currently naively has >>>>> InvalidationListeners on both of these properties which cause >>>>> TreeNodes to be created after the first change... then discarded and >>>>> recreated after the second change by the user code, ie: >>>>> >>>>> view.nodesProperty().setAll(nodes); // Recreates all >>>>> Tabs/TreeNodes with the current value of expand top level, as we >>>>> donot >>>>> know another change might be incoming... >>>>> view.expandTopLevelProperty().set(false); // Recreates all >>>>> Tabs/TreeNodes again if expand top level was changed... >>>>> >>>>> This specific problem might be done in a better way, but the point >>>>> remains, how do I avoid expensive calculations when multiple >>>>> properties get changed one after the other by the user code? I'm >>>>> assuming that JavaFX controls already avoid these kinds of things, >>>>> and >>>>> I'd like to know whether using a ScenePulseListener is the way to go, >>>>> or that it can/should be done in a different way -- examining the >>>>> code >>>>> for TreeView (and its superclasses), I couldn't find uses of >>>>> ScenePulseListener... >>>>> >>>>> --John >>>>> >>>>> >>>>> >>>>> >>> >> > From martin.sladecek at oracle.com Thu Nov 7 04:22:08 2013 From: martin.sladecek at oracle.com (Martin Sladecek) Date: Thu, 07 Nov 2013 13:22:08 +0100 Subject: GridPane prevents layouting In-Reply-To: References: Message-ID: <527B85F0.6050007@oracle.com> Hi Mario, this is definitely a bug. Can you file this to JIRA, preferably with some test case that fails for you? Thanks, -Martin On 11/07/2013 11:48 AM, Mario Ivankovits wrote: > Hi JavaFX-Devs! > > I do have a situation where the GridPane prevents the refreshing of parts of a scene. > Unhappily I am not yet able to reconstruct this case in an simple test, but what I have found ist hat GridPane.requestLayout sometimes prevents bubbling up the request and thus never reaches the point where the Toolkit.requestNextPulse() will be called. > > The problematic frame in GridPane: > > @Override public void requestLayout() { > // RT-18878: Do not update metrics dirty if we are performing layout. > // If metricsDirty is set true during a layout pass the next call to computeGridMetrics() > // will clear all the cell bounds resulting in out of date info until the > // next layout pass. > if (performingLayout || metricsDirty) { > return; > } > > > As far as I can see, at least super.requestLayout() should be called in the "if" case so the request can bubble further up. > Otherwise, the components within the GridPane "cell" are marked with "needsLayout", but they never get layouted until you e.g. resize the window. > > > Best regards, > Mario From petr.pchelko at oracle.com Thu Nov 7 04:48:34 2013 From: petr.pchelko at oracle.com (Petr Pchelko) Date: Thu, 7 Nov 2013 16:48:34 +0400 Subject: Review Request: RT-34077 [Graphics, Swing] JFXPanel with WebView in JDK Message-ID: Hello, OpenJFX community. Please review the fix for the issue: https://javafx-jira.kenai.com/browse/RT-34077 The webrev is available at: http://cr.openjdk.java.net/~pchelko/fx/34077/webrev/ Thank you. With best regards. Petr. From tomas.mikula at gmail.com Thu Nov 7 05:08:25 2013 From: tomas.mikula at gmail.com (Tomas Mikula) Date: Thu, 7 Nov 2013 14:08:25 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <527B725E.6070407@xs4all.nl> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> <527B725E.6070407@xs4all.nl> Message-ID: On Thu, Nov 7, 2013 at 11:58 AM, John Hendrikx wrote: > Hm, I found it googling, and since it showed up here: > > http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html > > I figured it was public, but I just noticed the class is defined package > private. Although not part of the public API, you can use import com.sun.javafx.tk.TKPulseListener; import com.sun.javafx.tk.Toolkit; Toolkit.getToolkit().addSceneTkPulseListener(new TKPulseListener(){...}) Anyway, I don't think deferring property invalidation until the next pulse is very useful in general, for the following reasons: 1) It can lead to inconsistent observable state of your objects. Consider an object with properties p, q, where the value of q depends on the value of p, and consider changing the value of p. Now, right after p.set(x); returns, the state of the object is inconsistent until the next pulse, and this inconsistency is observable to the outside world. 2) It doesn't (in general) avoid recalculations. Consider properties p, q, r, s, whose invalidation listeners are deferred until the next pulse, with bindings p <- q <- r <- s p <- s and consider changing the value of p in pulse 0. The invalidation listeners will fire as follows: pulse 1: p pulse 2: q, s pulse 3: r pulse 4: s As you see, the listeners of s are called twice, causing potentially expensive recalculation. For these reasons, I'm in favor of the approach suggested by Yennick, where you "commit" the properties yourself. Regards, Tomas From martin.sladecek at oracle.com Thu Nov 7 05:32:30 2013 From: martin.sladecek at oracle.com (Martin Sladecek) Date: Thu, 07 Nov 2013 14:32:30 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> <527B725E.6070407@xs4all.nl> Message-ID: <527B966E.2060601@oracle.com> This is something different. When properties depends on each other (using bindings), the binding computation is deferred to the first query (get() call) of the dependant. That means, if q depends on p, you can call p.set() as many times you want, but the recomputation will be triggered just before first q.get() call. Also in your second example, the second invalidation of s would be practically a no-op. Of course, this doesn't work if you have a ChangeListener on q, because the ChangeListener basically need to do get() in order to compute the new property value (which is passed as an argument to it's method). When it's not a property you want to recompute, but an internal state (you use to setup the children), layoutChildren() should be the method for you. -Martin On 11/07/2013 02:08 PM, Tomas Mikula wrote: > On Thu, Nov 7, 2013 at 11:58 AM, John Hendrikx wrote: >> Hm, I found it googling, and since it showed up here: >> >> http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html >> >> I figured it was public, but I just noticed the class is defined package >> private. > Although not part of the public API, you can use > > import com.sun.javafx.tk.TKPulseListener; > import com.sun.javafx.tk.Toolkit; > > Toolkit.getToolkit().addSceneTkPulseListener(new TKPulseListener(){...}) > > > Anyway, I don't think deferring property invalidation until the next > pulse is very useful in general, for the following reasons: > > 1) It can lead to inconsistent observable state of your objects. > Consider an object with properties p, q, where the value of q depends > on the value of p, and consider changing the value of p. Now, right > after > p.set(x); > returns, the state of the object is inconsistent until the next pulse, > and this inconsistency is observable to the outside world. > > 2) It doesn't (in general) avoid recalculations. Consider properties > p, q, r, s, whose invalidation listeners are deferred until the next > pulse, with bindings > p <- q <- r <- s > p <- s > and consider changing the value of p in pulse 0. The invalidation > listeners will fire as follows: > pulse 1: p > pulse 2: q, s > pulse 3: r > pulse 4: s > As you see, the listeners of s are called twice, causing potentially > expensive recalculation. > > For these reasons, I'm in favor of the approach suggested by Yennick, > where you "commit" the properties yourself. > > Regards, > Tomas From tomas.mikula at gmail.com Thu Nov 7 06:18:30 2013 From: tomas.mikula at gmail.com (Tomas Mikula) Date: Thu, 7 Nov 2013 15:18:30 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <527B966E.2060601@oracle.com> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> <527B725E.6070407@xs4all.nl> <527B966E.2060601@oracle.com> Message-ID: Hi Martin, On Thu, Nov 7, 2013 at 2:32 PM, Martin Sladecek wrote: > This is something different. When properties depends on each other (using > bindings), the binding computation is deferred to the first query (get() > call) of the dependant. That means, if q depends on p, you can call p.set() > as many times you want, but the recomputation will be triggered just before > first q.get() call. The point of my first example was inconsistency. Suppose this scenario (remember, the invalidation listeners of p are deferred until the next pulse): [pulse] ... p.set() ... q.get() // returned value not consistent with the value of p ... [pulse] I like my objects to appear consistent to the outside world at all times, so that the client code doesn't have to deal with the inconsistencies. > Also in your second example, the second invalidation of > s would be practically a no-op. It is not if you have an invalidation (or change) listener registered on s. Tomas > > Of course, this doesn't work if you have a ChangeListener on q, because the > ChangeListener basically need to do get() in order to compute the new > property value (which is passed as an argument to it's method). > > When it's not a property you want to recompute, but an internal state (you > use to setup the children), layoutChildren() should be the method for you. > > -Martin > > > On 11/07/2013 02:08 PM, Tomas Mikula wrote: >> >> On Thu, Nov 7, 2013 at 11:58 AM, John Hendrikx wrote: >>> >>> Hm, I found it googling, and since it showed up here: >>> >>> >>> http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html >>> >>> I figured it was public, but I just noticed the class is defined package >>> private. >> >> Although not part of the public API, you can use >> >> import com.sun.javafx.tk.TKPulseListener; >> import com.sun.javafx.tk.Toolkit; >> >> Toolkit.getToolkit().addSceneTkPulseListener(new >> TKPulseListener(){...}) >> >> >> Anyway, I don't think deferring property invalidation until the next >> pulse is very useful in general, for the following reasons: >> >> 1) It can lead to inconsistent observable state of your objects. >> Consider an object with properties p, q, where the value of q depends >> on the value of p, and consider changing the value of p. Now, right >> after >> p.set(x); >> returns, the state of the object is inconsistent until the next pulse, >> and this inconsistency is observable to the outside world. >> >> 2) It doesn't (in general) avoid recalculations. Consider properties >> p, q, r, s, whose invalidation listeners are deferred until the next >> pulse, with bindings >> p <- q <- r <- s >> p <- s >> and consider changing the value of p in pulse 0. The invalidation >> listeners will fire as follows: >> pulse 1: p >> pulse 2: q, s >> pulse 3: r >> pulse 4: s >> As you see, the listeners of s are called twice, causing potentially >> expensive recalculation. >> >> For these reasons, I'm in favor of the approach suggested by Yennick, >> where you "commit" the properties yourself. >> >> Regards, >> Tomas > > From martin.sladecek at oracle.com Thu Nov 7 06:34:51 2013 From: martin.sladecek at oracle.com (Martin Sladecek) Date: Thu, 07 Nov 2013 15:34:51 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> <527B725E.6070407@xs4all.nl> <527B966E.2060601@oracle.com> Message-ID: <527BA50B.4060407@oracle.com> On 11/07/2013 03:18 PM, Tomas Mikula wrote: > Hi Martin, > > On Thu, Nov 7, 2013 at 2:32 PM, Martin Sladecek > wrote: >> This is something different. When properties depends on each other (using >> bindings), the binding computation is deferred to the first query (get() >> call) of the dependant. That means, if q depends on p, you can call p.set() >> as many times you want, but the recomputation will be triggered just before >> first q.get() call. > The point of my first example was inconsistency. > Suppose this scenario (remember, the invalidation listeners of p are > deferred until the next pulse): > > [pulse] > ... > p.set() > ... > q.get() // returned value not consistent with the value of p > ... > [pulse] It is consistent, providing that you use binding API for the computation. > I like my objects to appear consistent to the outside world at all > times, so that the client code doesn't have to deal with the > inconsistencies. > >> Also in your second example, the second invalidation of >> s would be practically a no-op. > It is not if you have an invalidation (or change) listener registered on s. Only in case of change listener. Invalidation listener would not validate/recompute s. -Martin > > Tomas > >> Of course, this doesn't work if you have a ChangeListener on q, because the >> ChangeListener basically need to do get() in order to compute the new >> property value (which is passed as an argument to it's method). >> >> When it's not a property you want to recompute, but an internal state (you >> use to setup the children), layoutChildren() should be the method for you. >> >> -Martin >> >> >> On 11/07/2013 02:08 PM, Tomas Mikula wrote: >>> On Thu, Nov 7, 2013 at 11:58 AM, John Hendrikx wrote: >>>> Hm, I found it googling, and since it showed up here: >>>> >>>> >>>> http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html >>>> >>>> I figured it was public, but I just noticed the class is defined package >>>> private. >>> Although not part of the public API, you can use >>> >>> import com.sun.javafx.tk.TKPulseListener; >>> import com.sun.javafx.tk.Toolkit; >>> >>> Toolkit.getToolkit().addSceneTkPulseListener(new >>> TKPulseListener(){...}) >>> >>> >>> Anyway, I don't think deferring property invalidation until the next >>> pulse is very useful in general, for the following reasons: >>> >>> 1) It can lead to inconsistent observable state of your objects. >>> Consider an object with properties p, q, where the value of q depends >>> on the value of p, and consider changing the value of p. Now, right >>> after >>> p.set(x); >>> returns, the state of the object is inconsistent until the next pulse, >>> and this inconsistency is observable to the outside world. >>> >>> 2) It doesn't (in general) avoid recalculations. Consider properties >>> p, q, r, s, whose invalidation listeners are deferred until the next >>> pulse, with bindings >>> p <- q <- r <- s >>> p <- s >>> and consider changing the value of p in pulse 0. The invalidation >>> listeners will fire as follows: >>> pulse 1: p >>> pulse 2: q, s >>> pulse 3: r >>> pulse 4: s >>> As you see, the listeners of s are called twice, causing potentially >>> expensive recalculation. >>> >>> For these reasons, I'm in favor of the approach suggested by Yennick, >>> where you "commit" the properties yourself. >>> >>> Regards, >>> Tomas >> From steve.x.northover at oracle.com Thu Nov 7 06:36:48 2013 From: steve.x.northover at oracle.com (Stephen F Northover) Date: Thu, 07 Nov 2013 09:36:48 -0500 Subject: Code Review Policies Message-ID: <527BA580.1020001@oracle.com> Hello Committers, Let me summarize how to initiate a code review, since this changed recently. All information about how a bug was fixed needs to be in the JIRA. This means that all patches, webrevs, discussions and who is doing the review needs to be captured there. The email to openjfx-dev is intended to inform the community that a review is happening so others can join in, but it doesn't need to contain detailed information about the fix. People can get all that from the JIRA. This about it this way: What we are trying to avoid is having any interesting information about the fix appear only in the mailing list. The bottom line is that the comment section of JIRA should contains the contents of the email that previously you would have sent to the list. If you want the information to be in two places, that is fine, but it must be in the JIRA. However, the discussion and any subsequent action is in the JIRA. https://wiki.openjdk.java.net/display/OpenJFX/Code+Reviews Thanks, Steve and Daniel From tomas.mikula at gmail.com Thu Nov 7 07:03:36 2013 From: tomas.mikula at gmail.com (Tomas Mikula) Date: Thu, 7 Nov 2013 16:03:36 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: <527BA50B.4060407@oracle.com> References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> <527B725E.6070407@xs4all.nl> <527B966E.2060601@oracle.com> <527BA50B.4060407@oracle.com> Message-ID: On Thu, Nov 7, 2013 at 3:34 PM, Martin Sladecek wrote: > On 11/07/2013 03:18 PM, Tomas Mikula wrote: >> >> Hi Martin, >> >> On Thu, Nov 7, 2013 at 2:32 PM, Martin Sladecek >> wrote: >>> >>> This is something different. When properties depends on each other (using >>> bindings), the binding computation is deferred to the first query (get() >>> call) of the dependant. That means, if q depends on p, you can call >>> p.set() >>> as many times you want, but the recomputation will be triggered just >>> before >>> first q.get() call. >> >> The point of my first example was inconsistency. >> Suppose this scenario (remember, the invalidation listeners of p are >> deferred until the next pulse): >> >> [pulse] >> ... >> p.set() >> ... >> q.get() // returned value not consistent with the value of p >> ... >> [pulse] > > It is consistent, providing that you use binding API for the computation. I probably forgot to state it explicitly that I'm considering an implementation of properties/bindings that don't trigger the listeners (invalidation/change) right away, but defer them until the next pulse. Then again, the state of that hypothetical object above is not consistent (until the next pulse). >> I like my objects to appear consistent to the outside world at all >> times, so that the client code doesn't have to deal with the >> inconsistencies. >> >>> Also in your second example, the second invalidation of >>> s would be practically a no-op. >> >> It is not if you have an invalidation (or change) listener registered on >> s. > > Only in case of change listener. Invalidation listener would not > validate/recompute s. The invalidation listener will be executed twice. That itself is bad enough. The invalidation listener itself can trigger an expensive computation. Whether or not it (indirectly) causes the recomputation of s. Consider, for example, N such [p <- s] black boxes, where a single invalidation of p causes two invalidations of s, and chain them sequentially. Then a single invalidation of p_1 causes 2^N invalidations of s_N. That's bad enough, even though no property value is being recomputed. This is, in fact, the behavior of the bindings API you mentioned. What I'm saying is that deferring invalidation listeners until the next pulse doesn't help either (except for simple cases). Cheers, Tomas > > -Martin > >> >> Tomas >> >>> Of course, this doesn't work if you have a ChangeListener on q, because >>> the >>> ChangeListener basically need to do get() in order to compute the new >>> property value (which is passed as an argument to it's method). >>> >>> When it's not a property you want to recompute, but an internal state >>> (you >>> use to setup the children), layoutChildren() should be the method for >>> you. >>> >>> -Martin >>> >>> >>> On 11/07/2013 02:08 PM, Tomas Mikula wrote: >>>> >>>> On Thu, Nov 7, 2013 at 11:58 AM, John Hendrikx wrote: >>>>> >>>>> Hm, I found it googling, and since it showed up here: >>>>> >>>>> >>>>> >>>>> http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html >>>>> >>>>> I figured it was public, but I just noticed the class is defined >>>>> package >>>>> private. >>>> >>>> Although not part of the public API, you can use >>>> >>>> import com.sun.javafx.tk.TKPulseListener; >>>> import com.sun.javafx.tk.Toolkit; >>>> >>>> Toolkit.getToolkit().addSceneTkPulseListener(new >>>> TKPulseListener(){...}) >>>> >>>> >>>> Anyway, I don't think deferring property invalidation until the next >>>> pulse is very useful in general, for the following reasons: >>>> >>>> 1) It can lead to inconsistent observable state of your objects. >>>> Consider an object with properties p, q, where the value of q depends >>>> on the value of p, and consider changing the value of p. Now, right >>>> after >>>> p.set(x); >>>> returns, the state of the object is inconsistent until the next pulse, >>>> and this inconsistency is observable to the outside world. >>>> >>>> 2) It doesn't (in general) avoid recalculations. Consider properties >>>> p, q, r, s, whose invalidation listeners are deferred until the next >>>> pulse, with bindings >>>> p <- q <- r <- s >>>> p <- s >>>> and consider changing the value of p in pulse 0. The invalidation >>>> listeners will fire as follows: >>>> pulse 1: p >>>> pulse 2: q, s >>>> pulse 3: r >>>> pulse 4: s >>>> As you see, the listeners of s are called twice, causing potentially >>>> expensive recalculation. >>>> >>>> For these reasons, I'm in favor of the approach suggested by Yennick, >>>> where you "commit" the properties yourself. >>>> >>>> Regards, >>>> Tomas >>> >>> > From artem.ananiev at oracle.com Thu Nov 7 07:24:50 2013 From: artem.ananiev at oracle.com (Artem Ananiev) Date: Thu, 07 Nov 2013 19:24:50 +0400 Subject: Review Request: RT-34077 [Graphics, Swing] JFXPanel with WebView in JDK In-Reply-To: References: Message-ID: <527BB0C2.7050805@oracle.com> Hi, Petr, since the return value now depends on presence/absence of FX scene embedded into JFXPanel, shouldn't we also change setEmbeddedScene() in JFXPanel.HostContainer? Thanks, Artem On 11/7/2013 4:48 PM, Petr Pchelko wrote: > Hello, OpenJFX community. > > Please review the fix for the issue: https://javafx-jira.kenai.com/browse/RT-34077 > The webrev is available at: http://cr.openjdk.java.net/~pchelko/fx/34077/webrev/ > > Thank you. > With best regards. Petr. > From steve.x.northover at oracle.com Thu Nov 7 07:38:28 2013 From: steve.x.northover at oracle.com (Stephen F Northover) Date: Thu, 07 Nov 2013 10:38:28 -0500 Subject: Review Request: RT-34077 [Graphics, Swing] JFXPanel with WebView in JDK In-Reply-To: <527BB0C2.7050805@oracle.com> References: <527BB0C2.7050805@oracle.com> Message-ID: <527BB3F4.8040602@oracle.com> Artem old friend!! We are moving all sorts of comments like this over to the JIRA rather than sending them to the list. Steve On 2013-11-07 10:24 AM, Artem Ananiev wrote: > Hi, Petr, > > since the return value now depends on presence/absence of FX scene > embedded into JFXPanel, shouldn't we also change setEmbeddedScene() in > JFXPanel.HostContainer? > > Thanks, > > Artem From artem.ananiev at oracle.com Thu Nov 7 07:40:36 2013 From: artem.ananiev at oracle.com (Artem Ananiev) Date: Thu, 7 Nov 2013 07:40:36 -0800 (PST) Subject: Review Request: RT-34077 [Graphics, Swing] JFXPanel with WebView in JDK In-Reply-To: <527BB3F4.8040602@oracle.com> References: <527BB0C2.7050805@oracle.com> <527BB3F4.8040602@oracle.com> Message-ID: <527BB474.8070909@oracle.com> On 11/7/2013 7:38 PM, Stephen F Northover wrote: > Artem old friend!! > > We are moving all sorts of comments like this over to the JIRA rather > than sending them to the list. My bad. I've duplicated this question in RT-34077 comments. Thanks, Artem > Steve > > On 2013-11-07 10:24 AM, Artem Ananiev wrote: >> Hi, Petr, >> >> since the return value now depends on presence/absence of FX scene >> embedded into JFXPanel, shouldn't we also change setEmbeddedScene() in >> JFXPanel.HostContainer? >> >> Thanks, >> >> Artem > From leif.samuelsson at oracle.com Thu Nov 7 08:15:44 2013 From: leif.samuelsson at oracle.com (Leif Samuelsson) Date: Thu, 07 Nov 2013 08:15:44 -0800 Subject: Minor issue with ColorPicker In-Reply-To: References: Message-ID: <527BBCB0.8030909@oracle.com> Good point (no pun intended). I'll address this when I move the string to the resource file for https://javafx-jira.kenai.com/browse/RT-34099. Leif On 2013-11-07 03:17, Felix Bembrick wrote: > Why does the text "Custom Color.." that appears when the colour selections > appear in the drop-down section of ColorPicker use two dots (i.e. "..") > instead of an ellipsis or three dots (i.e. "...") at the end of the text? > > The ellipsis is a standard scientific and mathematical symbol and is of > course used throughout Swing and JavaFX when text cannot fit into a clipped > region so would seem far more appropriate to use in this context than a > double-dot which has no mathematical or UI precedence that I am aware of. > > Felix > From hjohn at xs4all.nl Thu Nov 7 08:28:13 2013 From: hjohn at xs4all.nl (John Hendrikx) Date: Thu, 07 Nov 2013 17:28:13 +0100 Subject: Use ScenePulseListener to avoid expensive recalculations? In-Reply-To: References: <52790798.3030904@xs4all.nl> <5279428F.2050002@oracle.com> <527A8B10.4060509@xs4all.nl> <527B4D37.7020008@oracle.com> <527B725E.6070407@xs4all.nl> Message-ID: <527BBF9D.2090602@xs4all.nl> On 7/11/2013 14:08, Tomas Mikula wrote: > On Thu, Nov 7, 2013 at 11:58 AM, John Hendrikx wrote: >> Hm, I found it googling, and since it showed up here: >> >> http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.ScenePulseListener.html >> >> I figured it was public, but I just noticed the class is defined package >> private. > Although not part of the public API, you can use > > import com.sun.javafx.tk.TKPulseListener; > import com.sun.javafx.tk.Toolkit; > > Toolkit.getToolkit().addSceneTkPulseListener(new TKPulseListener(){...}) > > > Anyway, I don't think deferring property invalidation until the next > pulse is very useful in general, for the following reasons: > > 1) It can lead to inconsistent observable state of your objects. > Consider an object with properties p, q, where the value of q depends > on the value of p, and consider changing the value of p. Now, right > after > p.set(x); > returns, the state of the object is inconsistent until the next pulse, > and this inconsistency is observable to the outside world. Well, in my case the properties being modified can immediately be queried back (so appear consistent) -- there are no "dependent" properties publically visible. What you donot see is that the underlying controls (that you cannot access directly) will only get updated on the next pulse. So my "TreePane" has two properties you can play with, and will either immediately or on the next pulse update a child control (a TreeView). Since you cannot access this TreeView directly you will not be able to see that the update was deferred. > 2) It doesn't (in general) avoid recalculations. Consider properties > p, q, r, s, whose invalidation listeners are deferred until the next > pulse, with bindings > p<- q<- r<- s > p<- s > and consider changing the value of p in pulse 0. The invalidation > listeners will fire as follows: > pulse 1: p > pulse 2: q, s > pulse 3: r > pulse 4: s > As you see, the listeners of s are called twice, causing potentially > expensive recalculation. Not in this case -- the calculation I'm trying to avoid is the updating of the internal TreeView -- modifying the externally visible properties multiple times would trigger a recalculation each time in a simplistic implementation as you have to update the underlying controls after each modification. What I want to do is to avoid this and allow these external properties to be modified as often as a user likes, but only update the hidden underlying controls on each Pulse (when needed). This reduces the number of calculations to one per pulse, instead of one per property modification. --John From hang.vo at oracle.com Thu Nov 7 09:03:28 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Thu, 07 Nov 2013 17:03:28 +0000 Subject: hg: openjfx/8/graphics/rt: 2 new changesets Message-ID: <20131107170413.18AE66240A@hg.openjdk.java.net> Changeset: 10131ecdf85a Author: Felipe Heidrich Date: 2013-11-07 08:51 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/10131ecdf85a RT-34093: complext text are garbled when using some fonts to render the text. ! modules/graphics/src/main/java/com/sun/javafx/font/coretext/CTGlyphLayout.java ! modules/graphics/src/main/java/com/sun/javafx/font/directwrite/DWGlyphLayout.java Changeset: a10660cea86f Author: Felipe Heidrich Date: 2013-11-07 08:55 -0800 URL: http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/a10660cea86f RT-34072: TextArea overlaps symbols Reviewed-by: Steve Northover ! modules/graphics/src/main/java/com/sun/javafx/text/LayoutCache.java ! modules/graphics/src/main/java/com/sun/javafx/text/PrismTextLayout.java From hang.vo at oracle.com Thu Nov 7 08:52:12 2013 From: hang.vo at oracle.com (hang.vo at oracle.com) Date: Thu, 07 Nov 2013 16:52:12 +0000 Subject: hg: openjfx/8/master/rt: 76 new changesets Message-ID: <20131107171145.80CAC6240B@hg.openjdk.java.net> Changeset: 13131fdaa7df Author: mv157916 Date: 2013-10-31 17:45 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/13131fdaa7df RT-34000: Update the JDK 8 build number to b114 in rt/build.properties file in the JavaFX 8 Master forest. ! build.properties Changeset: b2401b5285d1 Author: leifs Date: 2013-10-29 15:48 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/b2401b5285d1 RT-33895: Input method composing text is not highlighted Reviewed-by: naoto ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextInputControlSkin.java Changeset: d83cbe8507e2 Author: leifs Date: 2013-10-29 15:49 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/d83cbe8507e2 RT-33898: Input method composing panel position lags behind caret position Reviewed-by: naoto ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextInputControlSkin.java Changeset: cbcef6b84c73 Author: leifs Date: 2013-10-29 15:50 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/cbcef6b84c73 RT-33869: Controls are leaking through focus owner mechanism Reviewed-by: jgiles ! modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TextFieldBehavior.java Changeset: 6633eea3285d Author: David Grieve Date: 2013-10-29 18:58 -0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/6633eea3285d RT-33922: add null check in Labeled#applyStyle ! modules/controls/src/main/java/javafx/scene/control/Labeled.java Changeset: 2271f1e4a95c Author: David Grieve Date: 2013-10-29 19:00 -0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/2271f1e4a95c [DOCS-ONLY] RT-33917 cssref should state that Control has all the properties of Region ! modules/graphics/src/main/docs/javafx/scene/doc-files/cssref.html Changeset: ce3df4fcc903 Author: Alexander Kouznetsov Date: 2013-10-29 17:58 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/ce3df4fcc903 Ensemble8: Removed builders from SourceTab. ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SourceTab.java Changeset: 5113f2c3f1ae Author: Alexander Kouznetsov Date: 2013-10-29 18:52 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/5113f2c3f1ae Ensemble8: Partial fix for RT-33928 Ensemble8 has dependencies on WebView (Sample page only) ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SourceTab.java + apps/samples/Ensemble8/src/app/java/ensemble/util/WebViewWrapper.java Changeset: 73bb1f669a2c Author: Pavel Safrata Date: 2013-10-30 08:27 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/73bb1f669a2c RT-30371: Fixed parallel camera position. ! modules/graphics/src/main/java/com/sun/javafx/geom/PickRay.java ! modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGParallelCamera.java ! modules/graphics/src/main/java/javafx/scene/ParallelCamera.java ! modules/graphics/src/main/java/javafx/scene/Scene.java ! modules/graphics/src/test/java/javafx/scene/CameraTest.java ! modules/graphics/src/test/java/javafx/scene/Mouse3DTest.java ! modules/graphics/src/test/java/javafx/scene/NodeTest.java Changeset: 29bc314ef771 Author: Martin Sladecek Date: 2013-10-30 08:41 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/29bc314ef771 RT-25059 ListView scroll bar thumb resizes wildly (additional fix for TreeTableView) Reviewed-by: jgiles ! modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeTableViewSkin.java Changeset: 82c5dba3721a Author: Anthony Petrov Date: 2013-10-30 12:15 +0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/82c5dba3721a RT-32531: Scene Width and Height, if not specified, result in no window being shown Reviewed-by: Alexander Zvegintsev ! modules/graphics/src/main/native-glass/gtk/GlassWindow.cpp ! modules/graphics/src/main/native-glass/gtk/glass_window.cpp ! modules/graphics/src/main/native-glass/gtk/glass_window.h ! modules/graphics/src/main/native-glass/mac/GlassWindow+Java.h ! modules/graphics/src/main/native-glass/mac/GlassWindow+Java.m ! modules/graphics/src/main/native-glass/mac/GlassWindow.h ! modules/graphics/src/main/native-glass/mac/GlassWindow.m Changeset: fbf244020834 Author: Alexander Zvegintsev Date: 2013-10-30 12:51 +0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/fbf244020834 RT-33266 Gtk: stage.setIconified(true) crashes compiz in Ubuntu 13.04 (Unity) ! modules/graphics/src/main/native-glass/gtk/glass_window.cpp Changeset: 0e86f96331d5 Author: Eva Krejcirova Date: 2013-10-30 14:02 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/0e86f96331d5 RT-33944: ImageView with attached bounds listener doesn't report bounds correctly Reviewed-by: lnerad ! modules/graphics/src/main/java/javafx/scene/image/ImageView.java ! modules/graphics/src/test/java/javafx/scene/image/ImageViewTest.java Changeset: aea82d3547f2 Author: Petr Pchelko Date: 2013-10-30 17:52 +0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/aea82d3547f2 RT-33909: Need a way to cancel input method composing Reviewed-by: anthony, psafrata ! modules/graphics/src/main/java/com/sun/glass/ui/View.java ! modules/graphics/src/main/java/com/sun/glass/ui/win/WinView.java ! modules/graphics/src/main/java/com/sun/javafx/tk/TKScene.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/EmbeddedScene.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/ViewScene.java ! modules/graphics/src/main/native-glass/win/GlassView.cpp ! modules/graphics/src/main/native-glass/win/GlassView.h ! modules/graphics/src/test/java/com/sun/javafx/pgstub/StubScene.java Changeset: 4b2e1c5831e9 Author: Assaf Yavani Date: 2013-10-30 16:43 +0200 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/4b2e1c5831e9 [RT-33913] Lens:multi touch shouldn't be enabled by default Summary: Made multi touch support experimental feature. - added '-Dcom.sun.javafx.experimental.embedded.multiTouch' to turn on/off multi point notification. When false only one touch point will be reported as the screen would be single touch Tested-by: Tested with: HelloSanity, HelloDragAndDrop, LinuxInputTests Reviewed-by: Lisa Selle (lisa.selle at oracle.com) and Daniel Blaukopf (Daniel.Blaukopf at Oracle.com) ! modules/graphics/src/main/java/com/sun/glass/ui/lens/LensTouchInputSupport.java ! modules/graphics/src/main/native-glass/lens/input/udev/udevInput.c ! modules/graphics/src/main/native-glass/lens/wm/LensWindowManager.c Changeset: eb21f864f79f Author: mickf Date: 2013-10-30 15:53 +0000 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/eb21f864f79f RT-33763 : ScenePulseListener.focusCleanup() may cause extra rendering, reviewed by Pavel, David ! modules/graphics/src/main/java/javafx/scene/Scene.java Changeset: 88e06514b086 Author: kcr Date: 2013-10-30 13:48 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/88e06514b086 RT-33682: Open source JMX packages Reviewed-by: felipe, msladecek ! build.gradle + modules/jmx/src/main/java/com/oracle/javafx/jmx/MXExtensionImpl.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/SGMXBean.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/SGMXBeanImpl.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/ImmutableJSONDocument.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/JSONDocument.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/JSONException.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/JSONFactory.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/JSONReader.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/JSONWriter.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/impl/JSONMessages.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/impl/JSONScanner.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/impl/JSONStreamReaderImpl.java + modules/jmx/src/main/java/com/oracle/javafx/jmx/json/impl/JSONSymbol.java + modules/jmx/src/main/resources/com/oracle/javafx/jmx/json/impl/JSONMessagesBundle.properties + modules/jmx/src/main/resources/com/oracle/javafx/jmx/json/impl/JSONMessagesBundle_ja.properties + modules/jmx/src/main/resources/com/oracle/javafx/jmx/json/impl/JSONMessagesBundle_zh_CN.properties + modules/jmx/src/test/java/com/oracle/javafx/jmx/SGMXBean_CSS_Test.java + modules/jmx/src/test/java/com/oracle/javafx/jmx/SGMXBean_bounds_Test.java + modules/jmx/src/test/java/com/oracle/javafx/jmx/SGMXBean_sceneGraph_Test.java + modules/jmx/src/test/java/com/oracle/javafx/jmx/SGMXBean_state_Test.java + modules/jmx/src/test/java/com/oracle/javafx/jmx/SGMXBean_windows_Test.java + modules/jmx/src/test/java/com/oracle/javafx/jmx/TestUtils.java ! settings.gradle Changeset: 868a00affbfe Author: kcr Date: 2013-10-30 13:48 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/868a00affbfe [CLEANUP] Fix .hgignore to ignore netbeans build files ! .hgignore Changeset: 34d7fd1cc7c5 Author: kcr Date: 2013-10-30 13:48 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/34d7fd1cc7c5 [NETBEANS-ONLY] Add jmx project to netbeans IDE + netbeans/jmx/build.xml + netbeans/jmx/manifest.mf + netbeans/jmx/nbproject/build-impl.xml + netbeans/jmx/nbproject/genfiles.properties + netbeans/jmx/nbproject/project.properties + netbeans/jmx/nbproject/project.xml Changeset: 6cedb133f7c8 Author: Felipe Heidrich Date: 2013-10-30 15:32 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/6cedb133f7c8 RT-33914: Composite glyphs broken [again] Reviewed-by: Steve Northover ! modules/graphics/src/main/java/com/sun/prism/impl/GlyphCache.java Changeset: 29c0c0c7eed4 Author: dmasada Date: 2013-10-30 16:24 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/29c0c0c7eed4 RT-33542 Ensemble8: Image properties image overlaps description area ! apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/images/imageproperties/ImagePropertiesApp.java Changeset: ee2deaadbc15 Author: David Grieve Date: 2013-10-30 21:47 -0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/ee2deaadbc15 RT-33704: parse url( as a token, not as a function. ! modules/graphics/src/main/java/com/sun/javafx/css/FontFace.java ! modules/graphics/src/main/java/com/sun/javafx/css/ParsedValueImpl.java ! modules/graphics/src/main/java/com/sun/javafx/css/Stylesheet.java ! modules/graphics/src/main/java/com/sun/javafx/css/parser/CSSLexer.java ! modules/graphics/src/main/java/com/sun/javafx/css/parser/CSSParser.java ! modules/graphics/src/test/java/com/sun/javafx/css/ParsedValueTest.java ! modules/graphics/src/test/java/com/sun/javafx/css/StylesheetTest.java ! modules/graphics/src/test/java/com/sun/javafx/css/parser/CSSLexerTest.java ! modules/graphics/src/test/java/com/sun/javafx/css/parser/CSSParserTest.java + modules/graphics/src/test/resources/com/sun/javafx/css/RT-30953-v4.bss ! modules/graphics/src/test/resources/com/sun/javafx/css/RT-30953.css Changeset: 1021c3b800d1 Author: Alexander Kouznetsov Date: 2013-10-30 20:05 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/1021c3b800d1 Ensemble8: Introduced reset() method to BendingPages and SlidingPages in order to reuse SamplePage. ! apps/samples/Ensemble8/src/app/java/ensemble/control/BendingPages.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SlidingPages.java Changeset: 2f74b29d7627 Author: Alexander Kouznetsov Date: 2013-10-30 20:10 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/2f74b29d7627 Ensemble8: Fix for RT-33962 SamplePage object should be reused ! apps/samples/Ensemble8/src/app/java/ensemble/PageBrowser.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/Description.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/FrontPage.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/IPhoneLayout.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/PlaygroundTabs.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SamplePage.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/Sources.java Changeset: fee91394294a Author: Alexander Kouznetsov Date: 2013-10-30 20:13 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/fee91394294a Ensemble8: Fix for RT-33965 Source code is editable in Ensemble8 ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SamplePage.java ! apps/samples/Ensemble8/src/app/java/ensemble/samplepage/SourceTab.java Changeset: fb3a8f1fc155 Author: Alexander Kouznetsov Date: 2013-10-30 20:25 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/fb3a8f1fc155 Ensemble8: Fix for RT-33966 Timeline Events sample affects BendingPages effect due to animated bounds ! apps/samples/Ensemble8/src/samples/java/ensemble/samples/animation/timeline/timelineevents/TimelineEventsApp.java Changeset: c49d69f83da6 Author: Pavel Safrata Date: 2013-10-31 09:29 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/c49d69f83da6 RT-33066: near/far clip for parallel camera picking. Reviewed-by: Chien + apps/toys/FX8-3DFeatures/src/fx83dfeatures/ParallelNearAndFarClipTest.java ! modules/graphics/src/main/java/com/sun/javafx/geom/PickRay.java ! modules/graphics/src/main/java/javafx/scene/ParallelCamera.java ! modules/graphics/src/test/java/javafx/scene/Mouse3DTest.java Changeset: dba0a7b958a5 Author: Pavel Safrata Date: 2013-10-31 10:01 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/dba0a7b958a5 RT-21808: Input method composing is finished on loosing focus Reviewed-by: Lubo ! modules/graphics/src/main/java/javafx/scene/Scene.java ! modules/graphics/src/test/java/com/sun/javafx/pgstub/StubScene.java ! modules/graphics/src/test/java/javafx/scene/FocusTest.java Changeset: 004595ed0b8f Author: Martin Sladecek Date: 2013-10-31 11:01 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/004595ed0b8f RT-32009 DataApp client: layout is broken Reviewed-by: ekrejcir ! modules/graphics/src/main/java/javafx/scene/layout/GridPane.java ! modules/graphics/src/test/java/javafx/scene/layout/GridPaneTest.java Changeset: 024eca0e0e8c Author: ant Date: 2013-10-31 14:51 +0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/024eca0e0e8c RT-31361: Opacity is ignored for scene contained in a JFXPanel (Since b94) Reviewed-by: anthony, kcr ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/EmbeddedScene.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/GlassScene.java Changeset: d9ced9ad7de2 Author: tb115823 Date: 2013-10-31 12:35 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/d9ced9ad7de2 Android: RT-33855 eglGetDisplay method not found. libglesv2 must be also dlopened otherwise gl functions were not found. Reviewed: petr.vasenda at oracle.com ! modules/graphics/src/main/native-prism-es2/eglfb/wrapped_egl.c Changeset: a630648b31c2 Author: David Grieve Date: 2013-10-31 09:26 -0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/a630648b31c2 RT-33984: check if owner scene is null ! modules/graphics/src/main/java/javafx/stage/PopupWindow.java Changeset: 79894a464923 Author: ant Date: 2013-10-31 18:14 +0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/79894a464923 RT-31807: SwingInterop look blurry on hidpi display Reviewed-by: art, serb ! modules/graphics/src/main/java/com/sun/glass/ui/Pixels.java ! modules/graphics/src/main/java/com/sun/javafx/embed/EmbeddedSceneInterface.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/EmbeddedScene.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/EmbeddedState.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/UploadingPainter.java ! modules/graphics/src/main/java/com/sun/javafx/tk/quantum/ViewPainter.java ! modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java ! modules/swt/src/main/java/javafx/embed/swt/FXCanvas.java Changeset: 9d8097dbe045 Author: Petr Pchelko Date: 2013-10-31 18:51 +0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/9d8097dbe045 RT-22445: Input Method: rendering issues when composing text is wrapped. Reviewed-by: anthony ! modules/graphics/src/main/native-glass/win/ViewContainer.cpp Changeset: 62f5b6c52597 Author: kcr Date: 2013-10-31 07:54 -0700 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/62f5b6c52597 RT-32517: javadoc copyright footers are missing after the switch to gradle Reviewed-by: ckyang ! build.gradle ! build.properties Changeset: be4a92538a53 Author: Lubomir Nerad Date: 2013-10-31 16:20 +0100 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/be4a92538a53 Fix for RT-23622: JavaFX applications with FXML fail while running on browser Reviewed by: Martin Sladecek, Marc Schoenefeld ! modules/fxml/src/main/java/com/sun/javafx/fxml/BeanAdapter.java ! modules/fxml/src/main/java/javafx/fxml/FXMLLoader.java Changeset: b9b072992e27 Author: David Grieve Date: 2013-10-31 16:15 -0400 URL: http://hg.openjdk.java.net/openjfx/8/master/rt/rev/b9b072992e27 RT-33947: instead of adding styles to the observable map as you go, just add them at the point where the style is applied via CssStyleHelper getMatchingStyles. This greatly simplifies things in CssStyleHelper since a List