Need to support pointer confinement in Mir and toolkits using Mir
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
| Canonical System Image |
Medium
|
Unassigned | ||
| Mir |
Fix Released
|
Medium
|
Brandon Schaefer | |
| MirAL |
Medium
|
Alan Griffiths | ||
| libsdl2 (Ubuntu) |
Undecided
|
Brandon Schaefer | ||
| mir (Ubuntu) |
Medium
|
Brandon Schaefer | ||
| qtmir (Ubuntu) |
Medium
|
Daniel d'Andrada | ||
| unity8 (Ubuntu) |
Medium
|
Daniel d'Andrada | ||
| xorg-server (Ubuntu) |
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
- Andreas Pokorny (community): Approve on 2016-06-08
- Mir CI Bot: Approve (continuous-integration) on 2016-06-08
- Cemil Azizoglu (community): Approve on 2016-06-08
- Kevin DuBois (community): Approve on 2016-06-08
-
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)
- Mir CI Bot: Approve (continuous-integration) on 2016-06-27
- Cemil Azizoglu (community): Approve on 2016-06-27
- Kevin DuBois (community): Approve on 2016-06-27
- Chris Halse Rogers: Approve on 2016-06-27
- Andreas Pokorny (community): Approve on 2016-06-24
-
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)
- Unity8 CI Bot: Needs Fixing (continuous-integration) on 2016-09-09
- Lukáš Tinkl (community): Approve on 2016-09-06
-
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)
- Unity8 CI Bot (community): Needs Fixing (continuous-integration) on 2016-09-09
- Lukáš Tinkl (community): Approve on 2016-09-08
-
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)
- Alan Griffiths: Needs Fixing on 2016-09-22
-
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)
- Brandon Schaefer (community): Approve on 2016-09-23
- Daniel d'Andrada (community): Approve on 2016-09-23
- Alan Griffiths: Pending requested 2016-09-23
-
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) |
Daniel van Vugt (vanvugt) wrote : | #1 |
Changed in miral: | |
status: | New → Triaged |
importance: | Undecided → Wishlist |
Mir CI Bot (mir-ci-bot) wrote : | #2 |
Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.24.0
Changed in mir: | |
status: | In Progress → Fix Committed |
The mir branch was the first step, not the 100% solution in mir.
Changed in mir: | |
status: | Fix Committed → In Progress |
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 |
Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.24.0
Changed in mir: | |
status: | In Progress → Fix Committed |
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 |
Launchpad Janitor (janitor) wrote : | #5 |
Status changed to 'Confirmed' because the bug affects multiple users.
Changed in libsdl2 (Ubuntu): | |
status: | New → Confirmed |
Changed in canonical-devices-system-image: | |
status: | New → Fix Committed |
importance: | Undecided → Medium |
milestone: | none → 13 |
Launchpad Janitor (janitor) wrote : | #6 |
This bug was fixed in the package mir - 0.24.0+
---------------
mir (0.24.0+
* New upstream release 0.24.0 (https:/
- ABI summary:
. mirclient ABI unchanged at 9
. mirserver ABI bumped to 41
. mircommon ABI unchanged at 6
. mirplatform ABI bumped to 12
. mirprotobuf ABI unchanged at 3
. mirplatformgraphics ABI bumped to 10
. mirclientplatform ABI unchanged at 5
. mirinputplatform ABI unchanged at 5
- Enhancements:
. Added a new tool 'mirvanity' which can use a high speed video camera
to measure client-to-screen latency.
. Added (build-time) support for desktop full OpenGL servers (disabled
by default in favor of GLESv2).
. Introduced new buffer semantics (NBS) and enabled it by default.
. Avoided using libmirserver in mir_demo_
making bringup traces less cluttered.
. Removed TilingWindowManager from example servers.
. Added two new mir_*_performan
. Added pointer confinement to the client API.
. Added new platform supporting software EGLStreams.
. Added an input platform that the nested server can use.
. Allow configuration of the application_
. Handle server-side keymapping using XKBMapper.
. Remove the offscreen display.
. Add callback option to notify shells that the server is about to stop.
. Add logging for ANativeWindow events on Android.
- Bugs fixed:
. usage of std:call_once in mirclient causes TLS collisions with some
android devices (LP: #1599867)
. AltGr not working on external keyboards (LP: #1565236)
. [regression] unity8 fails to start when built with 0.24 series (lp:mir)
(LP: #1597717)
. CI failure in MirSurfaceVisib
(LP: #1556045)
. package-built mir_demo_server does not start on device (LP: #1577357)
. During surface creation, first stream in spec becomes default stream.
(LP: #1577967)
. mouse is getting stuck on a phantom edge (LP: #1580774)
. [testsfail] in MirSurfaceVisib
. [enhancement] Add support for full OpenGL compositing (LP: #1420581)
. [testsfail] ServerSignal.
(LP: #1570353)
. [testsfail] ClientLatency.
. [testsfail] NestedServer.
. mir server crashed in what(): drmModeMoveCursor failed (returned -13)
(LP: #1579630)
. mirtest-dev is hard to use as the objects used are compiled with LTO
(LP: #1583536)
. [testsfail] ClientLogging.
Changed in mir (Ubuntu): | |
status: | Triaged → Fix Released |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Timo Aaltonen (tjaalton) wrote : | #7 |
xmir could probably reuse some of pointer confinement and warping support posted for xwayland this week
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 |
Launchpad Janitor (janitor) wrote : | #8 |
This bug was fixed in the package qtmir - 0.4.8+16.
---------------
qtmir (0.4.8+
[ Daniel d'Andrada ]
* Send relative pointer movement to Mir clients (LP: #1597205)
* Implement cursor confinement (LP: #1590099)
[ Gerry Boland ]
* Deliver mouse event manually if no cursor exists to deliver it
* [tests] refactor ScreensModel test to use mocks from mirtest-dev
-- Michał Sawicz <email address hidden> Fri, 09 Sep 2016 14:40:56 +0000
Changed in qtmir (Ubuntu): | |
status: | In Progress → Fix Released |
Changed in miral: | |
status: | In Progress → Fix Committed |
assignee: | Daniel d'Andrada (dandrader) → Alan Griffiths (alan-griffiths) |
Launchpad Janitor (janitor) wrote : | #9 |
This bug was fixed in the package unity8 - 8.14+16.
---------------
unity8 (8.14+16.
[ Albert Astals Cid ]
* LVWPH: update clipItem height when list height changes (LP:
#1606935)
* Put the touchdown shape inside a loader
* No need for the touchdown in the card for the cardtool
* Add bottom gradient to the Show Less floating button
* Remove artShapeSize from non cardtool cards
* LVWPH: Fix case in which header was shown incorrectly
* LVWPH: Fix items cut on top in the dash (or at least some instances
of it)
* Reduce calls to CardCreatorCach
component is being created (LP: #1615675)
* Dash::test_
* Make PreviewActionsT
* Adapt onShiftedConten
abruptly
* Make tryGenericScopeView show the scope correctly
* Make sure the spinner does not get too close to the title text (LP:
#1597392)
* Show "Pull to refresh" in white when overlaid in low luminance
colors (LP: #1596849)
* Make test_Shell non ultra slow again (LP: #1597366)
* Improve findChild calls inside tryCompareFunction.
[ Andrea Cimitan ]
* override some Qt Components definitions so we can have sane default
values for flick speeds
* Elide the label text inside recent searches panel (LP: #1611796)
* Add a PreviewSingleton module to store some data for previews (LP:
#1595235)
* Use PreviewSingleton for PreviewRatingInput and PreviewCommentInput
(LP: #1595235)
* rework GenericScopeView PullToRefresh test
* use mouseFlick instead touchFlick for manage_
* add a couple of waiting tricks for a flaky dash test
[ Daniel d'Andrada ]
* Set progress bar indeterminate when processing signal received. (LP:
#1249349)
* Implement cursor confinement (LP: #1590099)
[ Josh Arenson ]
* Add a frontend to the sessions model and enable a session chooser in
the greeter.
[ Lukáš Tinkl ]
* Implement edge maximizing (aka window snapping) (LP: #1602628)
* On the PC platform (as opposed to running on $devices), use the
"mute" action instead of silent mode
* Respect Fitt's law wrt the window control buttons in panel (LP:
#1611959)
* Fix 2 failing color-related tests
[ Marco Trevisan (Treviño) ]
* Indicators, mocks: add fake indicators menuitem to populate mocks
with different menu types
* IndicatorsClient: use PageHeader and ListItemLayout's
[ Michael Terry ]
* Support launching apps inside a unity8 session from the greeter and
support emergency dialing inside the greeter.
* Fix tryShell to actually show appropriate backgrounds for each mock
user.
* Add an indicator to the greeter when a user is logged in (only shown
if we have more than one user)
* Hide the greeter OSK if indicators are open and don't show the edge
tutorial during an emergency call.
* Switch from lockscreen PIN pad to a passcode entry box that uses the
OSK.
* Use the default system wallpaper instead of our custom one.
* Update look of infographi...
Changed in unity8 (Ubuntu): | |
status: | In Progress → Fix Released |
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 |
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).