substrate icon indicating copy to clipboard operation
substrate copied to clipboard

prism.allowhidpi=false doesn't work

Open anksty opened this issue 4 years ago • 2 comments

Setting prism.allowhidpi=false to ignore OS scaling doesn't work. Running a native image exe with -Dprism.allowhidpi=false doesn't ignore scaling. If it's set in code with System.setProperty("prism.allowhidpi", "false") before calling the Application class the same project will work properly without scaling when running with mvn javafx:run but will be scaled when running with mvn client:build and mvn client:run

Related stackoverflow question

Expected Behavior

Windows scaling should be ignored.

Current Behavior

The app scales with Windows scaling.

Steps to Reproduce

Build a native image of the HelloFX sample project and try to run the exe with argument -Dprism.allowhidpi=false while Windows OS scaling is 125% or higher.

Your Environment

Java 11.0.10 Windows 10

anksty avatar May 19 '21 07:05 anksty

If you set System.setProperty("prism.allowhidpi", "false") in your Launcher class, that should work with Substrate:

public class Launcher {

    public static void main(String[] args) {
         System.setProperty("prism.allowhidpi", "false");
         HelloFX.main(args);
    }
}
public class HelloFX extends Application {

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

    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(new Label("Test"), 640, 480);
        stage.setScene(scene);
        stage.show();

        System.out.println("Scale: " + stage.getOutputScaleY());
    }
}

If mainClass=Launcher, then mvn clean client:build client:run should print: Scale: 1.0, regardless your HiDPI settings.

But if you don't set the system property in the Launcher, running Launcher.exe -Dprism.allowhidpi=false won't work, and it will print Scale: 1.25 (based on your settings).

Can you verify this?

jperedadnr avatar May 21 '21 19:05 jperedadnr

Sorry for the delay. Yes I can verify that. It prints Scale: 1.0 when I set the property to false although the window is actually scaled. If I don't set the property it prints Scale: 1.25.

anksty avatar Jun 01 '21 08:06 anksty