Need to support pointer confinement in Mir and toolkits using Mir
Bug #1590099 reported by
Brandon Schaefer
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical System Image |
Fix Released
|
Medium
|
Unassigned | ||
Mir |
Fix Released
|
Medium
|
Brandon Schaefer | ||
MirAL |
Fix Released
|
Medium
|
Alan Griffiths | ||
libsdl2 (Ubuntu) |
Confirmed
|
Undecided
|
Brandon Schaefer | ||
mir (Ubuntu) |
Fix Released
|
Medium
|
Brandon Schaefer | ||
qtmir (Ubuntu) |
Fix Released
|
Medium
|
Daniel d'Andrada | ||
unity8 (Ubuntu) |
Fix Released
|
Medium
|
Daniel d'Andrada | ||
xorg-server (Ubuntu) |
Won't Fix
|
Medium
|
Daniel van Vugt |
Bug Description
We need to support pointer confinement set by the client. This way we can generate relative mouse events on a surface without the cursor being able to leave the edge of the window.
Related branches
lp://qastaging/~brandontschaefer/mir/add-client-confine-pointer-spec
- Andreas Pokorny (community): Approve
- Mir CI Bot: Approve (continuous-integration)
- Cemil Azizoglu (community): Approve
- Kevin DuBois (community): Approve
-
Diff: 349 lines (+125/-13)13 files modifiedinclude/client/mir_toolkit/mir_surface.h (+10/-0)
include/common/mir_toolkit/common.h (+10/-0)
include/server/mir/shell/surface_specification.h (+1/-0)
src/client/mir_surface.cpp (+1/-0)
src/client/mir_surface.h (+1/-0)
src/client/mir_surface_api.cpp (+10/-0)
src/client/symbols.map (+1/-0)
src/include/server/mir/shell/window_management_info.h (+1/-0)
src/protobuf/mir_protobuf.proto (+1/-0)
src/server/frontend/session_mediator.cpp (+1/-0)
src/server/shell/canonical_window_manager.cpp (+1/-0)
tests/acceptance-tests/test_client_library.cpp (+18/-0)
tests/acceptance-tests/test_system_compositor_window_manager.cpp (+69/-13)
lp://qastaging/~brandontschaefer/mir/pointer-confinement
- Mir CI Bot: Approve (continuous-integration)
- Cemil Azizoglu (community): Approve
- Kevin DuBois (community): Approve
- Chris Halse Rogers: Approve
- Andreas Pokorny (community): Approve
-
Diff: 1159 lines (+429/-17)36 files modifiedexamples/server_example_canonical_window_manager.cpp (+5/-0)
include/server/mir/scene/surface.h (+3/-0)
include/server/mir/scene/surface_creation_parameters.h (+1/-0)
include/server/mir/shell/abstract_shell.h (+7/-1)
include/test/mir/test/doubles/stub_surface.h (+2/-0)
src/client/mir_connection.cpp (+1/-0)
src/include/server/mir/input/seat.h (+3/-0)
src/include/server/mir/shell/window_management_info.h (+1/-1)
src/protobuf/mir_protobuf.proto (+1/-0)
src/server/frontend/session_mediator.cpp (+1/-0)
src/server/input/basic_seat.cpp (+10/-0)
src/server/input/basic_seat.h (+2/-0)
src/server/input/seat_input_device_tracker.cpp (+29/-7)
src/server/input/seat_input_device_tracker.h (+6/-0)
src/server/scene/basic_surface.cpp (+14/-1)
src/server/scene/basic_surface.h (+6/-0)
src/server/scene/surface_allocator.cpp (+2/-0)
src/server/shell/abstract_shell.cpp (+23/-1)
src/server/shell/canonical_window_manager.cpp (+5/-0)
src/server/shell/default_configuration.cpp (+2/-1)
tests/acceptance-tests/CMakeLists.txt (+1/-0)
tests/acceptance-tests/test_confined_pointer.cpp (+214/-0)
tests/acceptance-tests/test_surface_placement.cpp (+1/-0)
tests/include/mir/test/doubles/mock_input_seat.h (+3/-0)
tests/include/mir/test/doubles/mock_surface.h (+1/-0)
tests/include/mir/test/doubles/stub_scene_surface.h (+3/-0)
tests/integration-tests/surface_composition.cpp (+1/-0)
tests/integration-tests/test_surface_stack_with_compositor.cpp (+1/-0)
tests/mir_test_framework/stub_surface.cpp (+10/-0)
tests/unit-tests/input/test_seat_input_device_tracker.cpp (+36/-0)
tests/unit-tests/scene/test_abstract_shell.cpp (+4/-1)
tests/unit-tests/scene/test_basic_surface.cpp (+8/-2)
tests/unit-tests/scene/test_session_manager.cpp (+1/-0)
tests/unit-tests/scene/test_surface.cpp (+4/-1)
tests/unit-tests/scene/test_surface_impl.cpp (+3/-1)
tests/unit-tests/scene/test_surface_stack.cpp (+14/-0)
lp://qastaging/~dandrader/unity8/cursorConfinement
- Unity8 CI Bot: Needs Fixing (continuous-integration)
- Lukáš Tinkl (community): Approve
-
Diff: 260 lines (+73/-6)10 files modifiedCMakeLists.txt (+1/-1)
debian/control (+3/-3)
plugins/Cursor/MousePointer.cpp (+42/-1)
plugins/Cursor/MousePointer.h (+10/-0)
qml/Shell.qml (+2/-0)
qml/Stages/AbstractStage.qml (+3/-0)
qml/Stages/DecoratedWindow.qml (+2/-0)
qml/Stages/DesktopStage.qml (+6/-0)
tests/mocks/Cursor/Cursor.qml (+2/-1)
tests/mocks/Unity/Application/MirSurface.h (+2/-0)
lp://qastaging/~unity-team/qtmir/cursorConfinement
- Unity8 CI Bot (community): Needs Fixing (continuous-integration)
- Lukáš Tinkl (community): Approve
-
Diff: 144 lines (+22/-5)9 files modifiedCMakeLists.txt (+1/-1)
debian/control (+2/-2)
debian/gles-patches/convert-to-gles.patch (+1/-1)
src/modules/Unity/Application/mirsurface.cpp (+6/-0)
src/modules/Unity/Application/mirsurface.h (+2/-0)
src/platforms/mirserver/mirwindowmanager.cpp (+5/-1)
src/platforms/mirserver/surfaceobserver.cpp (+3/-0)
src/platforms/mirserver/surfaceobserver.h (+1/-0)
tests/framework/fake_mirsurface.h (+1/-0)
lp://qastaging/~dandrader/miral/confine_pointer
- Alan Griffiths: Needs Fixing
-
Diff: 163 lines (+68/-0)5 files modifiedinclude/miral/window_specification.h (+8/-0)
miral/CMakeLists.txt (+11/-0)
miral/mir_features.h.in (+22/-0)
miral/symbols.map (+1/-0)
miral/window_specification.cpp (+26/-0)
lp://qastaging/~alan-griffiths/miral/confine_pointer
- Brandon Schaefer (community): Approve
- Daniel d'Andrada (community): Approve
- Alan Griffiths: Pending requested
-
Diff: 537 lines (+230/-101)11 files modifieddebian/libmiral1.symbols (+6/-1)
include/miral/detail/mir_forward_compatibility.h (+130/-0)
include/miral/window_info.h (+3/-0)
include/miral/window_specification.h (+4/-98)
miral/CMakeLists.txt (+12/-1)
miral/basic_window_manager.cpp (+6/-0)
miral/mir_features.h.in (+28/-0)
miral/symbols.map (+8/-0)
miral/window_info.cpp (+11/-0)
miral/window_management_trace.cpp (+2/-1)
miral/window_specification.cpp (+20/-0)
Changed in mir: | |
status: | New → In Progress |
Changed in mir (Ubuntu): | |
status: | New → In Progress |
Changed in mir: | |
importance: | Undecided → Medium |
Changed in mir (Ubuntu): | |
importance: | Undecided → Medium |
Changed in mir: | |
assignee: | nobody → Brandon Schaefer (brandontschaefer) |
Changed in mir (Ubuntu): | |
assignee: | nobody → Brandon Schaefer (brandontschaefer) |
Changed in mir: | |
milestone: | none → 0.24.0 |
Changed in qtmir (Ubuntu): | |
status: | New → Confirmed |
Changed in unity8 (Ubuntu): | |
status: | New → Confirmed |
Changed in qtmir (Ubuntu): | |
importance: | Undecided → Medium |
Changed in unity8 (Ubuntu): | |
importance: | Undecided → Medium |
Changed in qtmir (Ubuntu): | |
assignee: | nobody → Daniel d'Andrada (dandrader) |
Changed in unity8 (Ubuntu): | |
assignee: | nobody → Daniel d'Andrada (dandrader) |
Changed in miral: | |
status: | New → Triaged |
importance: | Undecided → Wishlist |
summary: |
- Need to support pointer confimenet + Need to support pointer confinement |
Changed in qtmir (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in unity8 (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in mir (Ubuntu): | |
status: | In Progress → Triaged |
summary: |
- Need to support pointer confinement + Need to support pointer confinement in Mir and toolkits using Mir |
tags: | added: xmir |
Changed in libsdl2 (Ubuntu): | |
assignee: | nobody → Brandon Schaefer (brandontschaefer) |
Changed in xorg-server (Ubuntu): | |
assignee: | nobody → Daniel van Vugt (vanvugt) |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in canonical-devices-system-image: | |
status: | New → Fix Committed |
importance: | Undecided → Medium |
milestone: | none → 13 |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Changed in canonical-devices-system-image: | |
status: | Fix Committed → Fix Released |
Changed in miral: | |
assignee: | nobody → Daniel d'Andrada (dandrader) |
status: | Triaged → In Progress |
importance: | Wishlist → Medium |
Changed in miral: | |
status: | In Progress → Fix Committed |
assignee: | Daniel d'Andrada (dandrader) → Alan Griffiths (alan-griffiths) |
Changed in miral: | |
milestone: | none → 0.2 |
Changed in miral: | |
status: | Fix Committed → Fix Released |
Changed in xorg-server (Ubuntu): | |
status: | Triaged → Won't Fix |
To post a comment you must log in.
I'm not sure we need to support displaying the cursor when it's confined.
It might be OK to just implement grabs, always hide the cursor then and leave it up to the client (which in the case of a VM might draw its own software cursor, like games do too).