Merge lp:~lukas-kde/unity8/windowOpenCloseAnimations into lp:unity8

Proposed by Lukáš Tinkl
Status: Superseded
Proposed branch: lp:~lukas-kde/unity8/windowOpenCloseAnimations
Merge into: lp:unity8
Prerequisite: lp:~unity-team/unity8/launcher-sizing
Diff against target: 550 lines (+171/-35)
15 files modified
CMakeLists.txt (+1/-1)
data/com.canonical.Unity8.gschema.xml (+1/-1)
plugins/Unity/Launcher/launchermodel.cpp (+1/-1)
qml/Launcher/Launcher.qml (+3/-2)
qml/Stages/DesktopStage.qml (+119/-15)
qml/Stages/PhoneStage.qml (+4/-0)
qml/Stages/TabletStage.qml (+4/-0)
qml/Stages/WindowResizeArea.qml (+8/-6)
tests/mocks/Unity/Application/ApplicationManager.cpp (+6/-0)
tests/mocks/Unity/Application/ApplicationManager.h (+1/-1)
tests/plugins/Unity/Launcher/launchermodeltest.cpp (+4/-0)
tests/qmltests/Launcher/tst_Launcher.qml (+13/-3)
tests/qmltests/Stages/ApplicationCheckBox.qml (+2/-2)
tests/qmltests/Stages/tst_DesktopStage.qml (+3/-3)
tests/qmltests/Stages/tst_WindowResizeArea.qml (+1/-0)
To merge this branch: bzr merge lp:~lukas-kde/unity8/windowOpenCloseAnimations
Reviewer Review Type Date Requested Status
Lukáš Tinkl (community) Needs Fixing
PS Jenkins bot (community) continuous-integration Needs Fixing
Unity8 CI Bot continuous-integration Needs Fixing
Nick Dedekind Pending
Michael Terry Pending
Daniel d'Andrada Pending
Review via email: mp+286414@code.launchpad.net

This proposal supersedes a proposal from 2016-02-02.

This proposal has been superseded by a proposal from 2016-03-06.

Commit message

Provide animations for windows opening/closing

Description of the change

Provide animations for windows opening/closing, as described by UX in the original bugreport.

* Are there any related MPs required for this MP to build/function as expected? Please list.

Yes, lp:~unity-team/unity8/launcher-sizing

* Did you perform an exploratory manual test run of your code change and any related functionality?

Yes

* Did you make sure that your branch does not contain spurious tags?

Yes

* If you changed the packaging (debian), did you subscribe the ubuntu-unity team to this MP?

Yes

* If you changed the UI, has there been a design review?

Yes

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2112
http://jenkins.qa.ubuntu.com/job/unity8-ci/7041/
Executed test runs:
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5984
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/456/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1746
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/449
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1641
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1641
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/448
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/447
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4623
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5995
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5995/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26543
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/204/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/454
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/454/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26544

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7041/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Terry (mterry) wrote : Posted in a previous version of this proposal

- The app closing animation seems to "stick" on the last frame. Or not smoothly go down to zero opacity. Or something. It didn't look right on my mako.

- closeApplication() takes two arguments, normally only using the first one. It uses the appId if the first argument is not given, which is an odd construction. Maybe just drop the second argument completely, as it's never used?

Otherwise already looks nice. :)

Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

> - The app closing animation seems to "stick" on the last frame. Or not
> smoothly go down to zero opacity. Or something. It didn't look right on my
> mako.

Agree, using the standard UbuntuNumberAnimation feels much smoother, at least here

> - closeApplication() takes two arguments, normally only using the first one.
> It uses the appId if the first argument is not given, which is an odd
> construction. Maybe just drop the second argument completely, as it's never
> used?

Fixed

> Otherwise already looks nice. :)

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2114
http://jenkins.qa.ubuntu.com/job/unity8-ci/7048/
Executed test runs:
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6000
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/463/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1753
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/456
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1648
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1648
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/455
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/454
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4635
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6011
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6011/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26591
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/211/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/461
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/461/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26592

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7048/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Terry (mterry) wrote : Posted in a previous version of this proposal

> Agree, using the standard UbuntuNumberAnimation feels much smoother, at least here

I'm still seeing a bit of a pause at the end of the animation on my mako.

Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

> > Agree, using the standard UbuntuNumberAnimation feels much smoother, at
> least here
>
> I'm still seeing a bit of a pause at the end of the animation on my mako.

I guess it's the reverse easing (UbuntuAnimation.StandardEasingReverse), if I try with StandardEasing, it goes away.

Revision history for this message
Michael Terry (mterry) wrote : Posted in a previous version of this proposal

Yeah agreed, StandardEasing looks good to me. Is StandardEasingReverse specifically requested by Design?

Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

Yes, as per the attached bug report

Revision history for this message
Michael Terry (mterry) wrote : Posted in a previous version of this proposal

Hrm. OK, but I ran Vesa's test code. And it didn't seem to pause at the end of the animation for me.

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

PASSED: Continuous integration, rev:2114
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/40/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/40/rebuild

review: Approve (continuous-integration)
Revision history for this message
Michael Zanetti (mzanetti) wrote : Posted in a previous version of this proposal

Confirming the close animation stuttering on flo. Could not see it on my laptop.

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2115
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/94/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/94/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

Please test again, not it feels much smoother on both phone and desktop.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2115
http://jenkins.qa.ubuntu.com/job/unity8-ci/7081/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6045
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/496/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1786
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/489
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1681
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1681
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/488
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/487
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4670
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6056
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6056/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26711
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/238/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/494
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/494/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26709

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7081/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Zanetti (mzanetti) wrote : Posted in a previous version of this proposal

the new animation does behave better on my flo, but it's still not 100% perfect. Paying close attention one can still see the last frames sticking around longer than they should. I don't think it's a problem of this branch, rather some sync stuff happening in Unity.Application when cleaning the app out of the memory. The new animation makes it less obvious.

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

PASSED: Continuous integration, rev:2115
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/94/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/94/rebuild

review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2115
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/94/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/94/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Terry (mterry) wrote : Posted in a previous version of this proposal

But Michael, wouldn't the Unity.Application work only start happening once opacity is already animated down to zero?

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2117
http://jenkins.qa.ubuntu.com/job/unity8-ci/7084/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6048
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/499/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1789
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/492
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1684
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1684
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/491
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/490
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4672
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6059
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6059/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26716
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/241/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/497
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/497/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26715

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7084/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

PASSED: Continuous integration, rev:2117
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/101/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/101/rebuild

review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

PASSED: Continuous integration, rev:2117
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/103/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/103/rebuild

review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2117
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/103/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/103/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

Animation is now smooth on devices, using a small hack to pause the animation at the end before actually closing the application.

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2118
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/108/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/108/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2118
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/108/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/108/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Terry (mterry) wrote : Posted in a previous version of this proposal

Looks good to me. The delay after the animation is a gross hack, but not the worst thing. I sat with Lukas and couldn't figure out why it would be needed. But it seems to be for now.

So approved from my end. Animation is smooth with the delay.

Tested it manually.
CI bot is crazy right now, let's wait for it to fix itself before top-approving.
No tags.

review: Approve
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2118
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/108/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/108/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2118
http://jenkins.qa.ubuntu.com/job/unity8-ci/7089/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6056
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/504/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1794
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/497
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1689
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1689
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/496
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/495
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4677
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6067
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6067/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26733
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/244/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/502
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/502/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26734

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7089/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Nick Dedekind (nick-dedekind) wrote : Posted in a previous version of this proposal

I believe this is what is causing the window to not be visible when opening a maximised app.

review: Needs Fixing
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2118
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/126/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/126/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

Starting maximized apps should be fixed now

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2120
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/132/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/132/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2120
http://jenkins.qa.ubuntu.com/job/unity8-ci/7098/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6065
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/513/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1803
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/506
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1698
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1698
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/505
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/504
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4685
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6076
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6076/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26767
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/252/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/511
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/511/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26768

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7098/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2121
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/133/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/133/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2121
http://jenkins.qa.ubuntu.com/job/unity8-ci/7099/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6069
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/514/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1804
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/507
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1699
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1699
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/506
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/505
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4687
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6080
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6080/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26773
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/253/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/512
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/512/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26772

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7099/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Terry (mterry) wrote : Posted in a previous version of this proposal

LGTM now, maximized works.

review: Approve
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2122
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/254/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/254/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2122
http://jenkins.qa.ubuntu.com/job/unity8-ci/7197/
Executed test runs:
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6299
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/612/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1902
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/605
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1797
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1797
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/604
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/603
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4842
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6310
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6310/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/27248
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/326/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/610
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/610/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/27246

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7197/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal

make tryShell
- select desktop size
- unlock screen
- select windowed mode

window gets broken

review: Needs Fixing
Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

OK, fixed the behavior, just not sure where to take the default size from, I have this atm:

PropertyChanges {
  target: decoratedWindow
  requestedWidth: resizeArea.defaultWidth
  requestedHeight: resizeArea.defaultHeight
}

Revision history for this message
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal

Could you please re-merge your prerequisite? You seem to have an outdated version of it....

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2123
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/308/
Executed test runs:
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build/429/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/452
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/470
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/470
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/466
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/466/artifact/output/*zip*/output.zip
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/466/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/466
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/466/artifact/output/*zip*/output.zip
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/466/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/466
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/466/artifact/output/*zip*/output.zip
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/466/console

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-1-ci/308/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

> Could you please re-merge your prerequisite? You seem to have an outdated
> version of it....

Rebased

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2123
http://jenkins.qa.ubuntu.com/job/unity8-ci/7248/
Executed test runs:
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/6400
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/663/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1953
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/656
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1848
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1848
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/655
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/654
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4906
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6411
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/6411/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/27455
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/341/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/661
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/661/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/27454

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/unity8-ci/7248/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
Lukáš Tinkl (lukas-kde) wrote : Posted in a previous version of this proposal

Done, no more regressions spotted

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal

* Did you perform an exploratory manual test run of the code change and any related functionality?
Yes

* Did CI run pass? If not, please explain why.
Will never pass due to unity-api dependency from the prerequisites

* Did you make sure that the branch does not contain spurious tags?
Yes

review: Approve
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
2133. By Lukáš Tinkl on 2016-02-19

merge prereq

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Terry (mterry) wrote :

Maximized apps don't seem to animate on open or close.

Revision history for this message
Lukáš Tinkl (lukas-kde) wrote :

On (maxed) window closing, I definitely do get the scale/opacity change although I agree when opening maximized windows, the animation is not there:

From WindowResizeArea.qml (r. 1978.4.2 <email address hidden> 20150925)

if (windowState === WindowStateStorage.WindowStateMaximized) {
     target.maximize(false)
}

Not sure what the intention is here

Revision history for this message
Michael Zanetti (mzanetti) wrote :

> On (maxed) window closing, I definitely do get the scale/opacity change
> although I agree when opening maximized windows, the animation is not there:
>
> From WindowResizeArea.qml (r. 1978.4.2 <email address hidden>
> 20150925)
>
> if (windowState === WindowStateStorage.WindowStateMaximized) {
> target.maximize(false)
> }
>
> Not sure what the intention is here

The issue I was solving with this is that otherwise a maximized window would start normal and then aminate to fullscreen. We might need to rework that a little to make the open animation play but not the maximize animation.

Revision history for this message
Lukáš Tinkl (lukas-kde) wrote :

I guess this should go to another MP (offtopic for this one), will likely need more UX hints.

Revision history for this message
Lukáš Tinkl (lukas-kde) wrote :

Marking this as WIP, needs to handle starting/closing apps from outside of the stage too (e.g. from launcher)

review: Needs Fixing
2134. By Lukáš Tinkl on 2016-02-24

merge trunk

2135. By Lukáš Tinkl on 2016-02-24

handle the close case coming from launcher

2136. By Lukáš Tinkl on 2016-02-24

fix the launcher ApplicationManager mock

2137. By Lukáš Tinkl on 2016-02-26

restart app if focusing doesn't work

happens with dash sometimes

2138. By Lukáš Tinkl on 2016-02-26

make the close animation testable using the App checkbox

2139. By Lukáš Tinkl on 2016-02-27

fix fullscreen apps being offset by the left margin

2140. By Lukáš Tinkl on 2016-02-27

disallow resizing windows up past the Panel

2141. By Lukáš Tinkl on 2016-02-28

fix closing animation for minimized apps

2142. By Lukáš Tinkl on 2016-02-29

fullscreen apps fix

2143. By Lukáš Tinkl on 2016-02-29

fix for fullscreen windows height

2144. By Lukáš Tinkl on 2016-03-06

merge lp:~mzanetti/unity8/launcher-sizing

2145. By Lukáš Tinkl on 2016-03-06

revert keymap (unrelated) changes

2146. By Lukáš Tinkl on 2016-03-06

depend on -15 appl framework

2147. By Lukáš Tinkl on 2016-03-06

implement maximizeHorizontally/Vertically

2148. By Lukáš Tinkl on 2016-03-07

requestStop() here

2149. By Lukáš Tinkl on 2016-03-07

save/restore the correct state in all cases

implement (easy now) maximize horizontal/vertical using it

2150. By Lukáš Tinkl on 2016-03-12

merge trunk

2151. By Lukáš Tinkl on 2016-03-21

merge trunk

2152. By Lukáš Tinkl on 2016-03-22

merge trunk

2153. By Lukáš Tinkl on 2016-03-24

merge trunk, resolve conflicts

2154. By Lukáš Tinkl on 2016-04-07

merge trunk

2155. By Lukáš Tinkl on 2016-04-14

merge trunk

Unmerged revisions

2155. By Lukáš Tinkl on 2016-04-14

merge trunk

2154. By Lukáš Tinkl on 2016-04-07

merge trunk

2153. By Lukáš Tinkl on 2016-03-24

merge trunk, resolve conflicts

2152. By Lukáš Tinkl on 2016-03-22

merge trunk

2151. By Lukáš Tinkl on 2016-03-21

merge trunk

2150. By Lukáš Tinkl on 2016-03-12

merge trunk

2149. By Lukáš Tinkl on 2016-03-07

save/restore the correct state in all cases

implement (easy now) maximize horizontal/vertical using it

2148. By Lukáš Tinkl on 2016-03-07

requestStop() here

2147. By Lukáš Tinkl on 2016-03-06

implement maximizeHorizontally/Vertically

2146. By Lukáš Tinkl on 2016-03-06

depend on -15 appl framework

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2016-03-06 13:19:33 +0000
3+++ CMakeLists.txt 2016-03-06 13:19:34 +0000
4@@ -57,7 +57,7 @@
5 find_package(Qt5Concurrent 5.4 REQUIRED)
6 find_package(Qt5Sql 5.4 REQUIRED)
7
8-pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=14)
9+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=15)
10 pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
11 pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
12 pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
13
14=== modified file 'data/com.canonical.Unity8.gschema.xml'
15--- data/com.canonical.Unity8.gschema.xml 2016-03-06 13:19:33 +0000
16+++ data/com.canonical.Unity8.gschema.xml 2016-03-06 13:19:34 +0000
17@@ -28,7 +28,7 @@
18 <description>How much you have to push (in grid units) the mouse against an edge barrier when sensibility is 1.</description>
19 </key>
20 <key type="b" name="autohide-launcher">
21- <default>false</default>
22+ <default>true</default>
23 <summary>Autohide the launcher</summary>
24 <description>This will only be applied in windowed mode. In staged mode, the launcher will always hide.</description>
25 </key>
26
27=== modified file 'plugins/Unity/Launcher/launchermodel.cpp'
28--- plugins/Unity/Launcher/launchermodel.cpp 2015-09-14 09:11:08 +0000
29+++ plugins/Unity/Launcher/launchermodel.cpp 2016-03-06 13:19:34 +0000
30@@ -214,7 +214,7 @@
31 QDesktopServices::openUrl(getUrlForAppId(appId));
32 } else if (actionId == QLatin1String("stop_item")) { // Quit
33 if (m_appManager) {
34- m_appManager->stopApplication(appId);
35+ m_appManager->requestStopApplication(appId);
36 }
37 // Nope, we don't know this action, let the backend forward it to the application
38 } else {
39
40=== modified file 'qml/Launcher/Launcher.qml'
41--- qml/Launcher/Launcher.qml 2016-03-06 13:19:33 +0000
42+++ qml/Launcher/Launcher.qml 2016-03-06 13:19:34 +0000
43@@ -175,7 +175,7 @@
44 event.accepted = true;
45 break;
46 case Qt.Key_Escape:
47- panel.highlightIndex = -2
48+ panel.highlightIndex = -2;
49 // Falling through intentionally
50 case Qt.Key_Enter:
51 case Qt.Key_Return:
52@@ -186,6 +186,7 @@
53 launcherApplicationSelected(LauncherModel.get(panel.highlightIndex).appId);
54 }
55 root.hide();
56+ panel.highlightIndex = -2
57 event.accepted = true;
58 root.focus = false;
59 }
60@@ -355,7 +356,7 @@
61 onTriggered: {
62 if (root.autohideEnabled && !root.lockedVisible) {
63 if (!panel.preventHiding) {
64- root.hide();
65+ root.state = ""
66 } else {
67 panel.dismissTimer.restart()
68 }
69
70=== modified file 'qml/Stages/DesktopStage.qml'
71--- qml/Stages/DesktopStage.qml 2016-03-06 13:19:33 +0000
72+++ qml/Stages/DesktopStage.qml 2016-03-06 13:19:34 +0000
73@@ -40,8 +40,6 @@
74 ? ApplicationManager.findApplication(ApplicationManager.focusedApplicationId)
75 : null
76
77- mainAppWindow: priv.focusedAppDelegate ? priv.focusedAppDelegate.appWindow : null
78-
79 // application windows never rotate independently
80 mainAppWindowOrientationAngle: shellOrientationAngle
81
82@@ -62,20 +60,30 @@
83 }
84
85 onFocusRequested: {
86- var appIndex = priv.indexOf(appId);
87- var appDelegate = appRepeater.itemAt(appIndex);
88- appDelegate.restore();
89+ var delegate = priv.appDelegate(appId);
90+ if (delegate) {
91+ delegate.restore();
92+ } else { // app died, start it
93+ ApplicationManager.startApplication(appId);
94+ }
95
96 if (spread.state == "altTab") {
97 spread.cancel();
98 }
99 }
100+
101+ onStopRequested: {
102+ var delegate = priv.appDelegate(appId);
103+ if (delegate) {
104+ delegate.close();
105+ }
106+ }
107 }
108
109 GlobalShortcut {
110 id: closeWindowShortcut
111 shortcut: Qt.AltModifier|Qt.Key_F4
112- onTriggered: ApplicationManager.stopApplication(priv.focusedAppId)
113+ onTriggered: priv.focusedAppDelegate.close()
114 active: priv.focusedAppId !== ""
115 }
116
117@@ -177,13 +185,18 @@
118 }
119 }
120 }
121+
122+ function appDelegate(appId) {
123+ var appIndex = indexOf(appId);
124+ return appRepeater.itemAt(appIndex);
125+ }
126 }
127
128 Connections {
129 target: PanelState
130- onClose: {
131- ApplicationManager.stopApplication(ApplicationManager.focusedApplicationId)
132- }
133+ onClose: if (priv.focusedAppDelegate) {
134+ priv.focusedAppDelegate.close()
135+ }
136 onMinimize: priv.focusedAppDelegate && priv.focusedAppDelegate.minimize();
137 onMaximize: priv.focusedAppDelegate // don't restore minimized apps when double clicking the panel
138 && priv.focusedAppDelegate.restoreFromMaximized();
139@@ -277,6 +290,7 @@
140 readonly property alias maximizedLeft: appDelegatePrivate.maximizedLeft
141 readonly property alias maximizedRight: appDelegatePrivate.maximizedRight
142 readonly property alias minimized: appDelegatePrivate.minimized
143+ readonly property alias fullscreen: decoratedWindow.fullscreen
144
145 readonly property string appId: model.appId
146 property bool animationsEnabled: true
147@@ -354,6 +368,10 @@
148 ApplicationManager.focusApplication(appId);
149 }
150
151+ function close() {
152+ state = "closing";
153+ }
154+
155 function playFocusAnimation() {
156 focusAnimation.start()
157 }
158@@ -369,6 +387,14 @@
159
160 states: [
161 State {
162+ name: "closing"
163+ PropertyChanges { // freeze the values
164+ target: appDelegate; explicit: true; restoreEntryValues: false;
165+ x: appDelegate.x; y: appDelegate.y
166+ requestedWidth: appDelegate.width; requestedHeight: appDelegate.height
167+ }
168+ },
169+ State {
170 name: "fullscreen"; when: decoratedWindow.fullscreen
171 PropertyChanges {
172 target: appDelegate;
173@@ -383,7 +409,8 @@
174 PropertyChanges {
175 target: appDelegate;
176 visuallyMinimized: false;
177- visuallyMaximized: false
178+ visuallyMaximized: false;
179+ opacity: 1; scale: 1
180 }
181 },
182 State {
183@@ -393,7 +420,8 @@
184 x: root.leftMargin; y: 0;
185 requestedWidth: appContainer.width - root.leftMargin; requestedHeight: appContainer.height;
186 visuallyMinimized: false;
187- visuallyMaximized: true
188+ visuallyMaximized: true;
189+ opacity: 1; scale: 1
190 }
191 },
192 State {
193@@ -420,17 +448,32 @@
194 ]
195 transitions: [
196 Transition {
197+ from: ",minimized"
198 to: "normal"
199 enabled: appDelegate.animationsEnabled
200 PropertyAction { target: appDelegate; properties: "visuallyMinimized,visuallyMaximized" }
201- UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,requestedWidth,requestedHeight,scale"; duration: UbuntuAnimation.FastDuration }
202+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y" }
203+ UbuntuNumberAnimation {
204+ target: appDelegate
205+ property: 'scale'
206+ from: 0.85
207+ to: 1
208+ duration: UbuntuAnimation.SnapDuration
209+ }
210+ UbuntuNumberAnimation {
211+ target: appDelegate
212+ property: 'opacity'
213+ from: 0
214+ to: 1
215+ duration: UbuntuAnimation.SnapDuration
216+ }
217 },
218 Transition {
219 to: "minimized"
220 enabled: appDelegate.animationsEnabled
221 PropertyAction { target: appDelegate; property: "visuallyMaximized" }
222 SequentialAnimation {
223- UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,requestedWidth,requestedHeight,scale"; duration: UbuntuAnimation.FastDuration }
224+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,scale,requestedWidth,requestedHeight" }
225 PropertyAction { target: appDelegate; property: "visuallyMinimized" }
226 ScriptAction {
227 script: {
228@@ -442,11 +485,51 @@
229 }
230 },
231 Transition {
232+ to: "closing"
233+ SequentialAnimation {
234+ PropertyAction { target: appDelegate; properties: "x,y,requestedWidth,requestedHeight" }
235+ ParallelAnimation {
236+ UbuntuNumberAnimation {
237+ target: appDelegate
238+ property: 'scale'
239+ from: 1
240+ to: 0.85
241+ duration: UbuntuAnimation.SnapDuration
242+ easing: UbuntuAnimation.StandardEasingReverse
243+ }
244+ UbuntuNumberAnimation {
245+ target: appDelegate
246+ property: 'opacity'
247+ from: 1
248+ to: 0
249+ duration: UbuntuAnimation.SnapDuration
250+ easing: UbuntuAnimation.StandardEasingReverse
251+ }
252+ }
253+ // hack: make sure the animation has really finished before closing the app
254+ PauseAnimation { duration: UbuntuAnimation.SnapDuration }
255+ ScriptAction {
256+ script: {
257+ ApplicationManager.stopApplication(appId);
258+ }
259+ }
260+ }
261+ },
262+ Transition {
263+ from: "minimized"
264+ to: "closing"
265+ ScriptAction {
266+ script: {
267+ ApplicationManager.stopApplication(appId);
268+ }
269+ }
270+ },
271+ Transition {
272 to: "*" //maximized and fullscreen
273 enabled: appDelegate.animationsEnabled
274 PropertyAction { target: appDelegate; property: "visuallyMinimized" }
275 SequentialAnimation {
276- UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,requestedWidth,requestedHeight,scale"; duration: UbuntuAnimation.FastDuration }
277+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,scale,requestedWidth,requestedHeight" }
278 PropertyAction { target: appDelegate; property: "visuallyMaximized" }
279 }
280 }
281@@ -483,7 +566,7 @@
282 active: ApplicationManager.focusedApplicationId === model.appId
283 focus: true
284
285- onClose: ApplicationManager.stopApplication(model.appId)
286+ onClose: appDelegate.close()
287 onMaximize: appDelegate.maximized || appDelegate.maximizedLeft || appDelegate.maximizedRight
288 ? appDelegate.restoreFromMaximized() : appDelegate.maximize()
289 onMinimize: appDelegate.minimize()
290@@ -493,6 +576,27 @@
291 }
292 }
293
294+ BlurLayer {
295+ id: blurLayer
296+ anchors.fill: appContainer
297+ source: appContainer
298+ visible: false
299+ }
300+
301+ Rectangle {
302+ id: spreadBackground
303+ anchors.fill: parent
304+ color: "#55000000"
305+ visible: false
306+ }
307+
308+ MouseArea {
309+ id: eventEater
310+ anchors.fill: parent
311+ visible: spreadBackground.visible
312+ enabled: visible
313+ }
314+
315 EdgeBarrier {
316 id: edgeBarrier
317
318
319=== modified file 'qml/Stages/PhoneStage.qml'
320--- qml/Stages/PhoneStage.qml 2016-03-06 13:19:33 +0000
321+++ qml/Stages/PhoneStage.qml 2016-03-06 13:19:34 +0000
322@@ -161,6 +161,10 @@
323 }
324 }
325
326+ onStopRequested: {
327+ applicationManager.stopApplication(appId);
328+ }
329+
330 function focusTopMostApp() {
331 if (applicationManager.count > 0) {
332 var topmostApp = applicationManager.get(0);
333
334=== modified file 'qml/Stages/TabletStage.qml'
335--- qml/Stages/TabletStage.qml 2016-03-06 13:19:33 +0000
336+++ qml/Stages/TabletStage.qml 2016-03-06 13:19:34 +0000
337@@ -228,6 +228,10 @@
338 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
339 }
340 }
341+
342+ onStopRequested: {
343+ ApplicationManager.stopApplication(appId);
344+ }
345 }
346
347 Flickable {
348
349=== modified file 'qml/Stages/WindowResizeArea.qml'
350--- qml/Stages/WindowResizeArea.qml 2016-03-06 13:19:33 +0000
351+++ qml/Stages/WindowResizeArea.qml 2016-03-06 13:19:34 +0000
352@@ -73,10 +73,12 @@
353 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
354 Qt.rect(target.x, target.y, defaultWidth, defaultHeight));
355
356- target.requestedWidth = Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin);
357- target.requestedHeight = Math.min(Math.max(windowGeometry.height, d.minimumHeight), root.screenHeight - PanelState.panelHeight);
358- target.x = Math.max(Math.min(windowGeometry.x, root.screenWidth - root.leftMargin - target.requestedWidth), root.leftMargin)
359- target.y = Math.max(Math.min(windowGeometry.y, root.screenHeight - target.requestedHeight), PanelState.panelHeight)
360+ target.requestedWidth = Qt.binding(function() { return Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin); });
361+ target.requestedHeight = Qt.binding(function() { return Math.min(Math.max(windowGeometry.height, d.minimumHeight),
362+ root.screenHeight - (target.fullscreen ? 0 : PanelState.panelHeight)); });
363+ target.x = Qt.binding(function() { return Math.max(Math.min(windowGeometry.x, root.screenWidth - root.leftMargin - target.requestedWidth),
364+ (target.fullscreen ? 0 : root.leftMargin)); });
365+ target.y = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, root.screenHeight - target.requestedHeight), PanelState.panelHeight); });
366
367 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
368 if (windowState === WindowStateStorage.WindowStateMaximized) {
369@@ -86,7 +88,7 @@
370 }
371
372 Component.onDestruction: {
373- windowStateStorage.saveState(root.windowId, target.state == "maximized" ? WindowStateStorage.WindowStateMaximized : WindowStateStorage.WindowStateNormal)
374+ windowStateStorage.saveState(root.windowId, target.maximized ? WindowStateStorage.WindowStateMaximized : WindowStateStorage.WindowStateNormal)
375 windowStateStorage.saveGeometry(root.windowId, Qt.rect(priv.normalX, priv.normalY, priv.normalWidth, priv.normalHeight))
376 }
377
378@@ -299,7 +301,7 @@
379 }
380
381 if (d.topBorder) {
382- var newTargetY = d.startY + deltaY;
383+ var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
384 var bottomBorderY = target.y + target.height;
385 if (bottomBorderY > newTargetY + d.minimumHeight) {
386 if (bottomBorderY < newTargetY + d.maximumHeight) {
387
388=== modified file 'tests/mocks/Unity/Application/ApplicationManager.cpp'
389--- tests/mocks/Unity/Application/ApplicationManager.cpp 2015-12-03 18:10:39 +0000
390+++ tests/mocks/Unity/Application/ApplicationManager.cpp 2016-03-06 13:19:34 +0000
391@@ -224,6 +224,12 @@
392 return application;
393 }
394
395+bool ApplicationManager::requestStopApplication(const QString &appId)
396+{
397+ QMetaObject::invokeMethod(this, "stopRequested", Qt::QueuedConnection, Q_ARG(QString, appId));
398+ return true;
399+}
400+
401 ApplicationInfo* ApplicationManager::add(QString appId)
402 {
403 ApplicationInfo *application = 0;
404
405=== modified file 'tests/mocks/Unity/Application/ApplicationManager.h'
406--- tests/mocks/Unity/Application/ApplicationManager.h 2015-12-03 18:10:39 +0000
407+++ tests/mocks/Unity/Application/ApplicationManager.h 2016-03-06 13:19:34 +0000
408@@ -66,6 +66,7 @@
409 Q_INVOKABLE void unfocusCurrentApplication() override;
410 Q_INVOKABLE ApplicationInfo *startApplication(const QString &appId, const QStringList &arguments = QStringList()) override;
411 Q_INVOKABLE ApplicationInfo *startApplication(const QString &appId, ExecFlags flags, const QStringList &arguments = QStringList());
412+ Q_INVOKABLE bool requestStopApplication(const QString &appId) override;
413 Q_INVOKABLE bool stopApplication(const QString &appId) override;
414
415 QString focusedApplicationId() const override;
416@@ -79,7 +80,6 @@
417 bool isEmpty() const;
418
419 Q_SIGNALS:
420- void focusRequested(const QString &appId);
421 void emptyChanged(bool empty);
422 void availableApplicationsChanged(QStringList list);
423
424
425=== modified file 'tests/plugins/Unity/Launcher/launchermodeltest.cpp'
426--- tests/plugins/Unity/Launcher/launchermodeltest.cpp 2016-01-22 19:44:56 +0000
427+++ tests/plugins/Unity/Launcher/launchermodeltest.cpp 2016-03-06 13:19:34 +0000
428@@ -105,6 +105,10 @@
429 }
430 return false;
431 }
432+ bool requestStopApplication(const QString &appId) override {
433+ Q_EMIT stopRequested(appId);
434+ return stopApplication(appId);
435+ }
436 bool focusApplication(const QString &appId) override {
437 Q_FOREACH(MockApp* app, m_list) {
438 app->setFocused(app->appId() == appId);
439
440=== modified file 'tests/qmltests/Launcher/tst_Launcher.qml'
441--- tests/qmltests/Launcher/tst_Launcher.qml 2016-03-06 13:19:33 +0000
442+++ tests/qmltests/Launcher/tst_Launcher.qml 2016-03-06 13:19:34 +0000
443@@ -320,14 +320,21 @@
444 }
445
446 function assertFocusOnIndex(index) {
447+ var launcherPanel = findChild(launcher, "launcherPanel");
448 var launcherListView = findChild(launcher, "launcherListView");
449 var bfbFocusHighlight = findChild(launcher, "bfbFocusHighlight");
450
451 waitForRendering(launcher);
452+ tryCompare(launcherPanel, "highlightIndex", index);
453 compare(bfbFocusHighlight.visible, index === -1);
454 for (var i = 0; i < launcherListView.count; i++) {
455- var focusRing = findChild(findChild(launcher, "launcherDelegate" + i), "focusRing")
456- compare(focusRing.visible, index === i);
457+ var item = findChild(launcher, "launcherDelegate" + i);
458+ // Delegates might be destroyed when not visible. We can't check if they paint a focus highlight.
459+ // Make sure the requested index does have focus. for the others, try best effort to check if they don't
460+ if (index === i || item) {
461+ var focusRing = findChild(item, "focusRing")
462+ tryCompare(focusRing, "visible", index === i);
463+ }
464 }
465 }
466
467@@ -1129,7 +1136,6 @@
468 var last = launcherListView.count - 1;
469
470 compare(bfbFocusHighlight.visible, false);
471-
472 launcher.openForKeyboardNavigation();
473 tryCompare(launcherPanel, "x", 0);
474 waitForRendering(launcher);
475@@ -1154,6 +1160,7 @@
476
477 // The list should wrap around
478 keyClick(Qt.Key_Up);
479+ waitForRendering(launcher);
480 assertFocusOnIndex(last);
481
482 keyClick(Qt.Key_Down);
483@@ -1186,6 +1193,9 @@
484 // Go bar to top by wrapping around
485 keyClick(Qt.Key_Down);
486 assertFocusOnIndex(1);
487+
488+ keyClick(Qt.Key_Enter);
489+ assertFocusOnIndex(-2);
490 }
491
492 function test_selectQuicklistItemByKeyboard() {
493
494=== modified file 'tests/qmltests/Stages/ApplicationCheckBox.qml'
495--- tests/qmltests/Stages/ApplicationCheckBox.qml 2015-08-11 11:41:08 +0000
496+++ tests/qmltests/Stages/ApplicationCheckBox.qml 2016-03-06 13:19:34 +0000
497@@ -33,7 +33,7 @@
498 if (checked) {
499 ApplicationManager.startApplication(root.appId);
500 } else {
501- ApplicationManager.stopApplication(root.appId);
502+ ApplicationManager.requestStopApplication(root.appId);
503 }
504 d.bindGuard = false;
505 }
506@@ -67,7 +67,7 @@
507 if (checked) {
508 ApplicationManager.startApplication(root.appId);
509 } else {
510- ApplicationManager.stopApplication(root.appId);
511+ ApplicationManager.requestStopApplication(root.appId);
512 }
513 d.bindGuard = false;
514 }
515
516=== modified file 'tests/qmltests/Stages/tst_DesktopStage.qml'
517--- tests/qmltests/Stages/tst_DesktopStage.qml 2016-03-06 13:19:33 +0000
518+++ tests/qmltests/Stages/tst_DesktopStage.qml 2016-03-06 13:19:34 +0000
519@@ -362,7 +362,7 @@
520 verify(appDelegate);
521 ApplicationManager.focusApplication(appName);
522 keyClick(Qt.Key_F4, Qt.AltModifier); // Alt+F4 shortcut to close
523- verify(ApplicationManager.count == 2); // verify the app is gone
524+ tryCompare(ApplicationManager, "count", 2); // verify the app is gone
525 verify(ApplicationManager.findApplication(appName) === null); // and it's not in running apps
526 }
527
528@@ -409,8 +409,8 @@
529
530 // restore
531 dialerDelegate.restoreFromMaximized();
532- compare(dashApp.session.lastSurface.visible, true);
533- compare(gmailApp.session.lastSurface.visible, true);
534+ tryCompare(dashApp.session.lastSurface, "visible", true);
535+ tryCompare(gmailApp.session.lastSurface, "visible", true);
536 }
537
538 function test_applicationsBecomeVisibleWhenOccludingAppRemoved() {
539
540=== modified file 'tests/qmltests/Stages/tst_WindowResizeArea.qml'
541--- tests/qmltests/Stages/tst_WindowResizeArea.qml 2015-11-30 18:25:47 +0000
542+++ tests/qmltests/Stages/tst_WindowResizeArea.qml 2016-03-06 13:19:34 +0000
543@@ -56,6 +56,7 @@
544 property real widthIncrement: 0
545 property real heightIncrement: 0
546 state: "normal"
547+ readonly property bool maximized: state == "maximized"
548
549 function maximize() {
550 state = "maximized"

Subscribers

People subscribed via source and target branches