Resizing stage while it is maximized breaks scene size on Linux

Thiago Milczarek Sayão thiago.sayao at gmail.com
Mon Mar 17 09:53:55 UTC 2025


Hi Christopher,

It seems like a simple fix.

How does it behave on other platforms? Does it ignore the resize, restore
the window to its unmaximized state before resizing, or keep it maximized
while adjusting the unmaximized size.

-- Thiago






Em dom., 16 de mar. de 2025 às 05:25, Christopher Schnick <
crschnick at xpipe.io> escreveu:

> 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 MaximizeLinuxBug extends 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 String createCss() {
>         return """                * {                -fx-border-color: red;                -fx-border-width: 1;                }                """;
>     }
>
>     private Region createContent() {
>         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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20250317/e4110a3d/attachment-0001.htm>


More information about the openjfx-dev mailing list