RFR: 8189282: JavaFX: Invalid position of candidate pop-up of InputMethod in Hi-DPI on Windows [v3]
Kevin Rushforth
kcr at openjdk.org
Wed Jan 3 20:30:36 UTC 2024
On Wed, 3 Jan 2024 03:33:05 GMT, Martin Fox <mfox at openjdk.org> wrote:
>> When reporting input method candidate position the code in GlassViewEventHandler is not applying the platform scale factors. This is causing incorrect IM positions to be reported to glass on hi-dpi monitors.
>>
>> This PR a no-op on Mac since the platform scale factors are always 1.0. I don't think it affects the current Linux XIM code at all but XIM is so out-of-date it has become difficult to test. PR #1080 will replace the old XIM code and needs this fix to work properly on hi-dpi screens.
>
> Martin Fox has updated the pull request incrementally with one additional commit since the last revision:
>
> Reverting file
This works fine for a single screen, but not for multiple screens. Also, it isn't sufficient to multiply the x and y by the platform scale for screens that don't touch the origin of the virtual screen space. See [this comment in PR #853](https://github.com/openjdk/jfx/pull/853#issuecomment-1206747079). I left inline comments with what I think needs to be changed.
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/GlassViewEventHandler.java line 672:
> 670: public double[] getInputMethodCandidatePos(int offset) {
> 671: Point2D p2d = scene.inputMethodRequests.getTextLocation(offset);
> 672: final Screen s = Screen.getMainScreen();
This won't work for multiple screens. You'll need something like `scene.getPlatformView().getWindow().getScreen()` (with the appropriate null checks).
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/GlassViewEventHandler.java line 677:
> 675: double[] ret = new double[2];
> 676: ret[0] = p2d.getX() * pScaleX;
> 677: ret[1] = p2d.getY() * pScaleY;
You should use `Screen::toPlatformX/Y` or it won't work for all screen arrangements.
-------------
PR Review: https://git.openjdk.org/jfx/pull/1311#pullrequestreview-1803016057
PR Review Comment: https://git.openjdk.org/jfx/pull/1311#discussion_r1440905659
PR Review Comment: https://git.openjdk.org/jfx/pull/1311#discussion_r1440906238
More information about the openjfx-dev
mailing list