Merge lp://qastaging/~dandrader/unity8/cursorConfinement into lp://qastaging/unity8
- cursorConfinement
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Lukáš Tinkl |
Approved revision: | 2610 |
Merged at revision: | 2638 |
Proposed branch: | lp://qastaging/~dandrader/unity8/cursorConfinement |
Merge into: | lp://qastaging/unity8 |
Prerequisite: | lp://qastaging/~unity-team/unity8/processing-indterminate |
Diff against target: |
260 lines (+73/-6) 10 files modified
CMakeLists.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) |
To merge this branch: | bzr merge lp://qastaging/~dandrader/unity8/cursorConfinement |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Unity8 CI Bot | continuous-integration | Needs Fixing | |
Lukáš Tinkl (community) | Approve | ||
Review via email:
|
This proposal supersedes a proposal from 2016-09-01.
Commit message
Implement cursor confinement
Description of the change
* Are there any related MPs required for this MP to build/function as expected? Please list.
https:/
https:/
* Did you perform an exploratory manual test run of your code change and any related functionality?
Yes
For testing, build and run this application: lp:~dandrader/+junk/confinedCursor
Clicking on its big button will turn cursor confinement on/off
* If you changed the packaging (debian), did you subscribe the ubuntu-unity team to this MP?
Not applicable
* If you changed the UI, has there been a design review?
Not applicable
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal | # |
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal | # |
+ itemConfiningMo
I'd prefer this being an inline binding, instead of the returns. How about sth like:
itemConfiningMo
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal | # |
On 26/08/2016 11:20, Lukáš Tinkl wrote:
> Review: Needs Information
>
> + itemConfiningMo
>
> I'd prefer this being an inline binding, instead of the returns. How about sth like:
>
> itemConfiningMo
> priv.focusedApp
> priv.focusedApp
>
>
Done.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:2601
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal | # |
What happens, when the window moves under cursor (e.g. press Ctrl+Super+Right to semi maximize on the right edge)? Will the cursor be still captured correctly?
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal | # |
> What happens, when the window moves under cursor (e.g. press Ctrl+Super+Right
> to semi maximize on the right edge)? Will the cursor be still captured
> correctly?
I'm guessing what you mean is this:
1 - mouse is confined to a non-fullscreen window, positioned over the left side of the desktop
2 - You press Ctrl+Super+Right
What will happen is that the cursor will jump to be within the window client area the next time you start to move the mouse.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal | # |
> > What happens, when the window moves under cursor (e.g. press
> Ctrl+Super+Right
> > to semi maximize on the right edge)? Will the cursor be still captured
> > correctly?
>
> I'm guessing what you mean is this:
>
> 1 - mouse is confined to a non-fullscreen window, positioned over the left
> side of the desktop
> 2 - You press Ctrl+Super+Right
>
> What will happen is that the cursor will jump to be within the window client
> area the next time you start to move the mouse.
Yeah I kinda expected that... do you think it makes sense to improve the situation when the window gets moved/resized under the cursor?
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal | # |
Explanation, I know you can't resize the window when the cursor is confined, but you're still able to resize it/ move it using for example the touch controls, that's my main concern.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:2602
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
Click here to trigger a rebuild:
https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal | # |
On 30/08/2016 11:39, Lukáš Tinkl wrote:
> [...]
> Yeah I kinda expected that... do you think it makes sense to improve the situation when the window gets moved/resized under the cursor?
Don't think this corner case is worth the extra complexity involved.
It's not simply tracking changes to the x,y,width,height of the client
area (eg: its x,y won't change when the window moves around). Would have
to add a signal to AbstractStage that would say "hey, client area
changed its geometry in scene coords" and in Shell.qml I would wire it
to some update function in Cursor. Then in DesktopStage I would emit
this signal whenever the focused window changed its geometry.
But if you think this is relevant enough, I can look into it.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal | # |
On 30/08/2016 11:40, Lukáš Tinkl wrote:
> Explanation, I know you can't resize the window when the cursor is confined, but you're still able to resize it/ move it using for example the touch controls, that's my main concern.
Have you tried moving or resizing the window with touch while at the
same time moving the cursor with a mouse/touchpad? It's a disaster :)
Maybe we should report a bug on it...
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal | # |
> On 30/08/2016 11:39, Lukáš Tinkl wrote:
> > [...]
> > Yeah I kinda expected that... do you think it makes sense to improve the
> situation when the window gets moved/resized under the cursor?
>
> Don't think this corner case is worth the extra complexity involved.
> It's not simply tracking changes to the x,y,width,height of the client
> area (eg: its x,y won't change when the window moves around). Would have
> to add a signal to AbstractStage that would say "hey, client area
> changed its geometry in scene coords" and in Shell.qml I would wire it
> to some update function in Cursor. Then in DesktopStage I would emit
> this signal whenever the focused window changed its geometry.
>
> But if you think this is relevant enough, I can look into it.
I don't know... I guess not since this is highly dependent on the intended use case (I assume this is meant mainly for fullscreen apps, like games?)
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal | # |
Alright then, this sounds good for the initial iteration
* Did you perform an exploratory manual test run of the code change and any related functionality?
Yes, with the demo provided (no real app using this to my knowledge)
* Did CI run pass? If not, please explain why.
No, due to unity-api bump
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:2606
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal | # |
Yup, still good
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:2607
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 2606. By CI Train Bot Account
-
Resync trunk.
- 2607. By Launchpad Translations on behalf of unity-team
-
Launchpad automatic translations update.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Lukáš Tinkl (lukas-kde) wrote : | # |
Needs updating tests/mocks/
+ property Item confiningItem
- 2608. By Daniel d'Andrada
- 2609. By dobey
-
Set progress bar indeterminate when processing signal received.
- 2610. By Daniel d'Andrada
-
Implement cursor confinement
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Daniel d'Andrada (dandrader) wrote : | # |
On 05/09/2016 18:16, Lukáš Tinkl wrote:
> Review: Needs Fixing
>
> Needs updating tests/mocks/
>
> + property Item confiningItem
Fixed.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:2610
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:2610
https:/
Executed test runs:
Click here to trigger a rebuild:
https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:2610
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:2610
https:/
Executed test runs:
SUCCESS: https:/
ABORTED: https:/
ABORTED: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Unity8 CI Bot (unity8-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:2610
https:/
Executed test runs:
SUCCESS: https:/
UNSTABLE: https:/
UNSTABLE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
FAILED: Continuous integration, rev:2600 /unity8- jenkins. ubuntu. com/job/ lp-unity8- ci/2039/ /unity8- jenkins. ubuntu. com/job/ build/2675/ console /unity8- jenkins. ubuntu. com/job/ build-0- fetch/2703 /unity8- jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 2576 /unity8- jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial+ overlay/ 2576 /unity8- jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= yakkety/ 2576 /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 2570/console /unity8- jenkins. ubuntu. com/job/ build-2- binpkg/ arch=i386, release= yakkety/ 2570/console
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild: /unity8- jenkins. ubuntu. com/job/ lp-unity8- ci/2039/ rebuild
https:/