Resizing stage while it is maximized breaks scene size on Linux

Christopher Schnick crschnick at xpipe.io
Sat Mar 29 12:52:41 UTC 2025


Thanks, yeah I did not submit an issue there because I don't like the 
bug report website form. But that is another story.

I looked at the PR, seems to be pretty straightforward. Thinking about 
this, I have not tested how it behaves with the fullscreen property 
instead of the maximized property as I rarely use that. Maybe that also 
needs to be covered.

On 29/03/2025 13:24, Thiago Milczarek Sayão wrote:
> I did not find a bug report, so I did one and provided a fix:
>
> https://github.com/openjdk/jfx/pull/1748
>
>
>
> Em sáb., 29 de mar. de 2025 às 08:26, Thiago Milczarek Sayão 
> <thiago.sayao at gmail.com> escreveu:
>
>     @Christopher Schnick <mailto:crschnick at xpipe.io>
>
>     Hi, did you open a bug? I have a fix for this.
>
>     Thanks
>
>     -- Thiago.
>
>     Em seg., 17 de mar. de 2025 às 09:49, Christopher Schnick
>     <crschnick at xpipe.io> escreveu:
>
>         So on Windows at least, it will change the width temporarily
>         and then revert back to the original width value. So you will
>         receive two width change events if you listen to the stage
>         width property. The maximized property is not changed.
>
>         I guess this also not optimal handling of this. Ideally, no
>         changes would be made in that case.
>
>         On 17/03/2025 10:53, Thiago Milczarek Sayão wrote:
>>         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 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
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20250329/aca96724/attachment.htm>


More information about the openjfx-dev mailing list