SUMMARY STEPS TO REPRODUCE 1. set scale to 125% 2. open xev, enlarge the window to be the same size as the screen. 3. try to select some text from xterm OBSERVED RESULT If you move the mouse to the right edge, you will notice that from a certain point, the mouse X coordinate doesn't go further right and stop there, while the mouse cursor can still be more "right" to the event. For example, on my screen (1920x1080), the maximum X of the mouse event reported by xev is 1279, no matter how much you move mouse beyond that point, the x is still 1279. On the scaled screen, it should be able to reach as much as 1536 (1920 / 1.25). EXPECTED RESULT The mouse event can correctly move with in the window. SOFTWARE/OS VERSIONS Linux/KDE Plasma: (available in About System) KDE Plasma Version: 5.21 KDE Frameworks Version: 5.79 Qt Version: 5.15.2 ADDITIONAL INFORMATION
This seems only happen when change the scale back and forth. It works after a clean login. I changed to 150% first, then back to 125% and noticed this issue. Looks like there's some inconsistency state with in the kwin.
Please report this issue to Xwayland developers. If I set a scale factor of 1.5 on my 1920x1080 monitor, kwin sends out a logical_size event with correct size [1159322.527] zxdg_output_v1@14.logical_size(1280, 720) [1159322.536] zxdg_output_v1@14.done() If I set a scale factor of 1.25 on my 1920x1080 monitor, kwin sends out a logical_size event with correct size as well [1219097.163] zxdg_output_v1@14.logical_size(1536, 864) [1219097.191] zxdg_output_v1@14.done() When the pointer is close to the bottom right corner of xev, the motion events carry expected position, but xev still reports that the pointer is at 1279, 719 [1265188.945] wl_pointer@25.motion(148413, 1529.000000, 853.000000) [1265189.050] wl_pointer@25.frame() [1265189.088] zwp_relative_pointer_v1@26.relative_motion(0, 148413009, 1.773438, 0.000000, 2.000000, 0.000000) [1265189.197] wl_pointer@25.frame() [1265198.946] wl_pointer@25.motion(148423, 1531.000000, 854.000000) [1265199.050] wl_pointer@25.frame() [1265199.088] zwp_relative_pointer_v1@26.relative_motion(0, 148423010, 2.000000, 1.000000, 2.000000, 1.000000) [1265199.197] wl_pointer@25.frame() [1265206.944] wl_pointer@25.motion(148431, 1533.000000, 855.000000) [1265207.050] wl_pointer@25.frame() [1265207.087] zwp_relative_pointer_v1@26.relative_motion(0, 148431011, 2.000000, 1.000000, 2.000000, 1.000000) [1265207.181] wl_pointer@25.frame() This looks like an Xwayland issue.
(^ to get the wayland debug log output, I ran kwin with KWIN_XWAYLAND_DEBUG=1)
So here's my observation: Xwayland always received the "old size request", instead of the latest one. when set 150% -> xrandr output is still the last value. This is done by check kwin log and the xrandr output under wayland. Also I didn't notice that gnome-shell has the same problem. So I wonder if kwin is missing some kind "flush" operation in the implemenation.
(In reply to Weng Xuetian from comment #4) > So here's my observation: > Xwayland always received the "old size request", instead of the latest one. The last time I checked it, kwin was sending out the latest output information. If there is something wrong with Xrandr outputs, it's most likely an issue in Xwayland. > when set 150% -> xrandr output is still the last value. > > This is done by check kwin log and the xrandr output under wayland. > > Also I didn't notice that gnome-shell has the same problem. So I wonder if > kwin is missing some kind "flush" operation in the implemenation.
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/773
Git commit e004156aba52fc025f491b11ac26b0e9f873803e by Weng Xuetian. Committed on 19/03/2021 at 17:39. Pushed by xuetianweng into branch 'master'. Add explicit done to OutputInterface and deprecate zxdg_output_v1.done if version 3 is used. In zxdg_output_v1 version 3, done is deprecated and should be replaced with wl_output.done. This makes automatically send done upon change not suitable for the usage. OutputInterface user should now use done() explicitly to send the update. M +7 -0 autotests/client/test_wayland_output.cpp M +1 -0 autotests/client/test_xdg_output.cpp M +7 -4 src/server/output_interface.cpp M +6 -0 src/server/output_interface.h M +19 -6 src/server/xdgoutput_v1_interface.cpp M +1 -1 src/server/xdgoutput_v1_interface.h https://invent.kde.org/plasma/kwayland-server/commit/e004156aba52fc025f491b11ac26b0e9f873803e
Git commit d612d76e09ec5d8d26121d3e2dee17ef4867f5f7 by Weng Xuetian. Committed on 19/03/2021 at 16:53. Pushed by xuetianweng into branch 'master'. Replace xdg output done with explicit wl_output done M +6 -1 src/abstract_wayland_output.cpp https://invent.kde.org/plasma/kwin/commit/d612d76e09ec5d8d26121d3e2dee17ef4867f5f7