MyPaint only works with pen on multiple monitors if win 10 is set for the SAME SCALING

MyPaint only works with pen on multiple monitors if win 10 is set for the SAME SCALING on both monitors (have not tested it with more than two)
Tried v1.0 64, v1.2.0 64 and v1.2.1beta1 32
It gets the pen position wrong (using the wrong scaling I assume). Mouse or finger positioning works correct.
I’m on a 14" 2560x1440 (QHD) touch and pen enabled laptop [X1 Yoga] set for 125% with an external secondary non touch 40" 3840x2160 (QFHD/UHD) display set for 100%.
If both are set to the same 100% or 125% pen positioning works just fine

Tried to install “Gimp 2.8.18”, “Pinta 1.6” and “Inkscape 0.91” that all are supposedly GTK+ based too, and they do NOT have the same issue, so does not sound like the issue is in the GTK+

ADD more details. The scaling is done from the lower left of the screen.
It does not matter which display I set for primary/secondary
if the scaling factor is the same on both displays everything is OK
If the scaling factor on my pen display is LARGER than on the secondary, then the actually point addressed is further away from the lower left by the RATIO of the two scaling factors, (both X and Y).
If the scaling factor on my pen display is SMALLER, then X only(!!!) gets closer to the left edge, I can’t figure out by what factor, but dependant on both scaling factors, but not JUST the ratio… (Y is correct though!)

I don’t know about Pinta, but Inkscape and Gimp are GTK2-based. MyPaint uses GTK3, so perhaps only it is aware of scaling.

This really does sound like a GTK bug, and I might not be able to reproduce it here with my hardware+driver combination. Please tell me exactly what tablet hardware and driver version you are using :smile_cat:

As a quick test, do you get pressure in any of {Pinta, Inkscape, GIMP} when they are properly configured?

Also, please tell us whether or not it can be reproduced in gtk3-demo. We have instructions for doing that on the wiki.

Speculation/something for developers to look at:

  • Compare how mouse (x, y) positions are translated in “case WM_MOUSEMOVE:” in gdk_event_translate() to the way they’re dealt with in gdk_input_other_event() which handles wintab events. It is possible that the former is being dealt with in a more correct manner.

  • Don’t forget that it might be the driver getting it wrong. Seems unlikely though, since other software not using GTK3

1 Like

The PC is a Lenovo X1 Yoga, type 20FQ
The external monitor is a Philips bdm4065uc

The pen driver is by Lenovo, version “ built by: WinDDk”, and is called ApsHM64.sys

Installed the demo, and it has the exact same issues. So your hunch was correct. :smile:
Both works perfectly correct with both mouse and touch
Note in both, the pen-marker it self when close to or touching the display is correct. It is the cross (and pressure marker) that are placed wrong.

I noted something REALLY strange, that might help debugging:
If I change the scaling to the same on both monitors, and test that everything works, and then change the scale on one, and hover the pen over the test-windows WITHOUT touching the display, the cross-hair is positioned correctly under the pen(!) until I touch the display, then it jumps.
So the engine CAN do it correct, and does so until first pen-touch.

So have a look on whatever happens at touch, that might mess up things…
Both pen-touch, finger-touch and mouse-click trigger the error

It seems that the mingw ONLY displays “gdk_input_other_event:” AFTER the first touch, but updates the cross-hair correctly BEFORE that.
And the event dislays physical (not logical) pixel coordinates within the test-window. e.g.:

WINTAB motion: 3154.97,1304.04
gdk_input_other_event: window=00000000006e14fc +2521+1316

so it seems that it scales things that should not be scaled. (or things are scaled more than once)
But note that the behaviour is different in X and Y when the pen display got the smallest scaling factor, here Y is correct and X is wrong.

I tried to report it here: