Hello,

we encountered an issue on Linux where resizing the stage while it is maximized breaks the size of the scene. You can see a video of this at https://github.com/xpipe-io/xpipe/issues/485 . The root cause is that the stage size is modified.

When doing this, it temporarily or permanently switches to the size the stage had prior to being maximized, leading to either a flicker or a permanently broken scene that has the wrong size. This happens on Gnome and KDE for me with the latest JavaFX ea version.

Here is a simple reproducer:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.io.IOException;
import java.util.Base64;

public class MaximizeLinuxBugextends Application {

    @Override public void start(Stage stage)throws IOException {
        Scene scene =new Scene(createContent(),640,480);
        var s ="data:text/css;base64," + 
Base64.getEncoder().encodeToString(createCss().getBytes());
        scene.getStylesheets().add(s);
        stage.setTitle("Hello!");
        stage.setScene(scene);
        stage.show();
        stage.centerOnScreen();
        stage.setMaximized(true);
    }

    private StringcreateCss() {
        return """ * { -fx-border-color: red; -fx-border-width: 1; } """;
    }

    private RegioncreateContent() {
        var button =new Button("Click me!");
        button.setOnAction(event -> {
            var w =button.getScene().getWindow();
            w.setWidth(w.getWidth() -1);
            event.consume();
        });
        var stack =new StackPane(button);
        return stack;
    }

    public static void main(String[] args) {
        launch();
    }
}


Best
Christopher Schnick

Reply via email to