Wrapping mir::graphics::Cursor doesn't work as expected on a nested server
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Confirmed
|
Undecided
|
Unassigned | ||
mir (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
I wrapped the_cursor() (mir::graphics:
I expected the cursor not to move at all, but it moves normally.
I call Cursor::hide() on initialization, but every time the nested server creates a new surface (for a new display that comes up), the cursor image property of that surface is set to default and therefore the host server shows the cursor when it's above that surface.
So at the very least I've to call Cursor::hide() again (or Cursor:
Clearly this interface is disjoint from what's happening.
If a nested server call Cursor::hide() or interceps all Cursor::show() calls, not forwarding them to the wrapped cursor, a cursor should never appear on the screen.
As alan_g said, mir::graphics:
When a nested server wraps mir::graphics:
If Mir denies giving such control to a nested server, this API should be removed and a CursorListener should be added in its place (which would be of no use for qtmir, by the way).
description: | updated |
description: | updated |
tags: | added: cursor nested |
description: | updated |
I'm unclear what behaviour is intended, so I don't know whether this is a "poor naming" bug or a feature request to allow clients more control of the cursor[1].
[1] For a nested server to directly control the cursor implies a client API for doing so - which doesn't exist, and we may not want to support. The alternative would be to be able to upload parameters that allow the (host) server to implement the desired functionality.