On Thu, 24 Apr 2025 08:12:57 GMT, Markus Mack <mm...@openjdk.org> wrote:
>> Michael Strauß has updated the pull request incrementally with one >> additional commit since the last revision: >> >> documentation > > modules/javafx.graphics/src/main/java/com/sun/javafx/tk/TKScene.java line 89: > >> 87: public TKClipboard createDragboard(boolean isDragSource); >> 88: >> 89: default void processOverlayCSS() {} > > This seems to be almost the only place where the quantum toolkit is made > aware of CSS and layout. Could the ViewSceneOverlay have been directly added > to the javafx.scene.Scene instead of the toolkit scene? Yes, possibly. The reason why it's done like this is because the implementation is partially lifted from the existing full-screen overlay to minimize total changes. Maybe this would be a good candidate for a future refactor? > modules/javafx.graphics/src/main/java/javafx/stage/StageStyle.java line 84: > >> 82: * bar area of the stage. >> 83: * <p> >> 84: * This is a conditional feature, to check if it is supported see >> {@link Platform#isSupported(ConditionalFeature)}. > > When someone who's planning on adopting the new title bar feature reads this, > they might ask themselves which platforms are the supported ones, and if > there are plans to support missing ones. Is there any place outside the > codebase where this is actually explained? Can we link to it? It is actually documented in `ConditionalFeature.EXTENDED_WINDOW`. > modules/javafx.graphics/src/main/java/javafx/stage/StageStyle.java line 113: > >> 111: * of the {@code Scene} to remain easily recognizable. Applications >> should set the scene fill to a color >> 112: * that matches the brightness of the user interface, even if the >> scene fill is not visible because it >> 113: * is obscured by other controls. > > Can we add the reasoning for this? When deciding on the actual color, it > would be useful to know when exactly it may be shown. How a scene background is shown is already described in `Scene.fill`. Note that if we get #1655, we might want to change this part of the specification such that the color scheme of the buttons adjusts to the color scheme of the scene (i.e. `Scene.Preferences.colorScheme`) and not to its background fill. > modules/javafx.graphics/src/main/java/javafx/stage/StageStyle.java line 117: > >> 115: * <h4>Custom header buttons</h4> >> 116: * If more control over the header buttons is desired, applications >> can opt out of the default header buttons >> 117: * by setting {@link HeaderBar#setPrefButtonHeight(Stage, double)} >> to zero and providing custom header buttons > > Setting height to zero to disable something is unfortunately often misused > without actually disabling anything. Even though implemented correctly here, > I'd prefer a more semantic way of doing this, e.g. by adding a > "showHeaderButtons" property. I agree when it actually makes a semantic difference. For example, there's a difference between setting `Node.opacity` to zero, and setting `Node.visible` to `false`. In the first case, the node will still receive events, while in the second case it won't. But what's the semantic difference between non-existing header buttons, and header buttons with zero height? One argument against setting `prefButtonHeight` to zero could be that it special-cases one specific value (or two, because there's also the special value `USE_DEFAULT_SIZE`). In general, the property only describes a _preferred_ height, which the toolkit is free to honor (in any way it sees fit) or to ignore entirely. However, the two special values 0 and `USE_DEFAULT_SIZE` are specified to be honored by all toolkits in all cases. > modules/javafx.graphics/src/main/native-glass/mac/GlassWindow.h line 53: > >> 51: BOOL isDecorated; >> 52: BOOL isResizable; >> 53: BOOL isStandardButtonsVisible; > > showStandardButtons? The surrounding code does not seem to follow a strict > "isXyz" naming convention for bools, so we could improve grammar here. Except for `suppressWindowMoveEvent` and `suppressWindowResizeEvent`, the code does seem to follow the "isFoo" convention... > modules/javafx.graphics/src/main/native-glass/win/GlassWindow.cpp line 617: > >> 615: // Since DefWindowProc() is not called, call the mouse menu >> handler directly >> 616: HandleViewMenuEvent(GetHWND(), WM_CONTEXTMENU, (WPARAM) >> GetHWND(), ::GetMessagePos ()); >> 617: //::DefWindowProc(GetHWND(), msg, wParam, lParam); > > Space after GetMessagePos, leftover code comment? I think the comment is there to drive the point home that `DefWindowProc` is not called? It's pre-existing code that I've just moved around. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r2058604759 PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r2058604353 PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r2058604510 PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r2058604597 PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r2058605178 PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r2058604780