clutter/text: Make update_cursor_location() operate in stage coordinates
Until now we would clutter_input_focus_set_cursor_location
with
cursor-rectangle-in-physical-pixels + actor-location-in-stage-coordinates.
But those use different scaling factors so it only got the right answer
when the framebuffer scale was 1.0.
This directly determines the geometry of the invisible dummy cursor in gnome-shell ibusCandidatePopup.js:
panelService.connect('set-cursor-location', (ps, x, y, w, h) => {
this._setDummyCursorGeometry(x, y, w, h);
});
And because it's invisible it wasn't obvious that it was wrong until you
enable CLUTTER_PAINT=damage-region
and you can see its ghost at the wrong
offset and scale.
So now we clutter_input_focus_set_cursor_location
using purely unscaled
stage coordinates. And CLUTTER_PAINT=damage-region
shows that
gnome-shell's _dummyCursor
is placed precisely over the visible cursor.
Fixes: gnome-shell#3399 (closed) and probably other IBus issues that arise when using framebuffer scaling.