Merge lp:~unity-team/unity8/screens-workspaces-switcher into lp:unity8

Proposed by Michael Zanetti
Status: Needs review
Proposed branch: lp:~unity-team/unity8/screens-workspaces-switcher
Merge into: lp:unity8
Prerequisite: lp:~unity-team/unity8/workspace-backend
Diff against target: 2624 lines (+1383/-431)
25 files modified
plugins/WindowManager/Screen.h (+0/-1)
plugins/WindowManager/Screens.cpp (+10/-0)
plugins/WindowManager/Screens.h (+3/-0)
plugins/WindowManager/WorkspaceModel.h (+2/-2)
qml/Shell.qml (+4/-4)
qml/Stage/ApplicationWindow.qml (+12/-209)
qml/Stage/DecoratedWindow.qml (+10/-10)
qml/Stage/Spread/ScreensAndWorkspaces.qml (+261/-0)
qml/Stage/Spread/Spread.qml (+8/-9)
qml/Stage/Spread/SpreadDelegateInputArea.qml (+36/-17)
qml/Stage/Spread/WorkspacePreview.qml (+127/-0)
qml/Stage/Spread/Workspaces.qml (+412/-0)
qml/Stage/Stage.qml (+206/-99)
qml/Stage/WindowResizeArea.qml (+27/-4)
qml/Stage/WindowStateSaver.qml (+4/-1)
qml/Stage/WorkspaceSwitcher.qml (+196/-0)
tests/mocks/Unity/Application/MirSurfaceItem.cpp (+26/-7)
tests/mocks/Unity/Application/resources/MirSurfaceItem.qml (+0/-3)
tests/mocks/WindowManager/MockScreens.cpp (+7/-4)
tests/qmltests/Stage/tst_ApplicationWindow.qml (+10/-42)
tests/qmltests/Stage/tst_DesktopStage.qml (+0/-2)
tests/qmltests/Stage/tst_PhoneStage.qml (+0/-1)
tests/qmltests/Stage/tst_TabletStage.qml (+6/-10)
tests/qmltests/tst_OrientedShell.qml (+0/-1)
tests/qmltests/tst_Shell.qml (+16/-5)
To merge this branch: bzr merge lp:~unity-team/unity8/screens-workspaces-switcher
Reviewer Review Type Date Requested Status
Unity8 CI Bot continuous-integration Needs Fixing
Unity Team Pending
Review via email: mp+320155@code.launchpad.net

This proposal supersedes a proposal from 2017-02-23.

Commit message

screens and workspaces switcher

To post a comment you must log in.
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
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
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
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
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
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
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

I know this is still very much WIP but better have a look at those missing i18n.tr() calls, otherwise they'll get forgotten for sure :)

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
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
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
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
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2807
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3344/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4399
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2633
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2633
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4427
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4260
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4260/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4260
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4260/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4260
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4260/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4260
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4260/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4260
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4260/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4260
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4260/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3344/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
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
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
Unity8 CI Bot (unity8-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2816
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3389/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4468
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2682
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2682
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4496
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4323/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3389/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
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

FAILED: Continuous integration, rev:2820
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3415/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4502
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2706
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2706
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4530
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4357
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4357/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4357
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4357/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4357
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4357/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4357
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4357/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4357
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4357/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4357
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4357/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3415/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:2821
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3418/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4505
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2709
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2709
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4533
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4360
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4360/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4360
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4360/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4360
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4360/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4360
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4360/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4360
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4360/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4360
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4360/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3418/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:2822
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3423/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4515
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2715
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2715
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4543
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4370
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4370/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4370
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4370/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4370
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4370/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4370
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4370/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4370
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4370/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4370
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4370/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2824. By Nick Dedekind

merged with prereq

2825. By Michael Zanetti

fix the mock to not be funky with screen sizes at startup

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2823
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3433/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4525
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2724
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2724
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4553
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4380
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4380/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4380
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4380/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4380
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4380/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4380
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4380/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4380
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4380/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4380
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4380/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2825
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3434/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4527
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2725
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2725
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4555
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4382
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4382/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4382
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4382/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4382
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4382/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4382
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4382/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4382
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4382/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4382
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4382/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2826. By Michael Zanetti

implement our own popup

2827. By Michael Zanetti

fix workspace drag reordering again

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2826
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3440/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4533
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2728
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2728
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4561
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4388
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4388/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4388
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4388/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4388
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4388/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4388
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4388/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4388
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4388/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4388
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4388/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2827
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3442/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4536
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2730
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2730
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4564
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4392
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4392/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4392
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4392/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4392
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4392/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4392
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4392/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4392
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4392/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4392
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4392/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2828. By Nick Dedekind

merged prereq

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2828
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3448/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4542
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2734
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2734
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4570
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4397
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4397/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4397
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4397/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4397
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4397/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4397
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4397/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4397
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4397/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4397
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4397/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2829
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3461/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4564
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2750
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2750
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4592
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4419
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4419/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4419
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4419/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4419
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4419/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4419
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4419/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4419
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4419/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4419
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4419/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2830
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3462/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4565
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2752
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2752
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4593
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4420
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4420/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4420
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4420/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4420
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4420/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4420
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4420/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4420
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4420/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4420
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4420/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2829. By Michael Zanetti

bring the splash screen back, drop the screenshot image (surfaces keep on to their buffer now anyways)

2830. By Michael Zanetti

merge

2831. By Michael Zanetti

merge

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2831
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3475/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4587
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2770
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2770
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4615
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4442
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4442/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4442
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4442/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4442
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4442/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4442
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4442/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4442
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4442/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4442
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4442/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2832. By Michael Zanetti

some tweaks and cleanups

2833. By Michael Zanetti

prevent closing a workspace if it's the last one

2834. By Michael Zanetti

apply nick's patch for fixing tiny window sizes

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2832
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3483/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4596
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2777
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2777
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4624
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4451
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4451/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4451
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4451/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4451
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4451/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4451
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4451/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4451
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4451/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4451
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4451/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2834
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3485/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4599
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2779
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2779
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4627
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4454
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4454/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4454
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4454/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4454
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4454/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4454
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4454/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4454
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4454/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4454
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4454/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2835. By Michael Zanetti

merge prereq

2836. By Michael Zanetti

add WorkspaceSwitcher

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2835
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3489/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4606
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2786
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2786
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4634
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4461
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4461/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4461
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4461/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4461
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4461/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4461
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4461/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4461
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4461/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4461
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4461/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2837. By Nick Dedekind

merged with prereq

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2836
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3490/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4608
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2787
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2787
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4636
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4463
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4463/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4463
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4463/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4463
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4463/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4463
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4463/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4463
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4463/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4463
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4463/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2837
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3491/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4609
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2790
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2790
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4637
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4464
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4464/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4464
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4464/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4464
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4464/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4464
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4464/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4464
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4464/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4464
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4464/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2838
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3492/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4615
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2795
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2795
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4643
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4470
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4470/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4470
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4470/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4470
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4470/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4470
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4470/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4470
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4470/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4470
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4470/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2838. By Michael Zanetti

don't reach out of context

2839. By Michael Zanetti

merge

2840. By Michael Zanetti

merge parent

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2840
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3501/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4627
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2805
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2805
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4655
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4482
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4482/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4482
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4482/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4482
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4482/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4482
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4482/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4482
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4482/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4482
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4482/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2841. By Nick Dedekind

merged parent

2842. By Nick Dedekind

merged prereq

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2842
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3502/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4630
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2806
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2806
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4658
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4485
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4485/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4485
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4485/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4485
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4485/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4485
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4485/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4485
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4485/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4485
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4485/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2843. By Michael Zanetti

workspace switcher now working

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2844. By Nick Dedekind

merged prereq

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2845. By Nick Dedekind

merged parent

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2845
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3531/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4675
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2830
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2830
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4703
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4526
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4526/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4526
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4526/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4526
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4526/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4526
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4526/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4526
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4526/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4526
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4526/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2845
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3538/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4686
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2843
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2843
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4714
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4537
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4537/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4537
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4537/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4537
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4537/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4537
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4537/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4537
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4537/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4537
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4537/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2846. By Michael Zanetti

fix focus issue and activate the surface once dropped on a workspace

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2846
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3550/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4710
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2862
    FAILURE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2862/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4738
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4561
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4561/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4561
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4561/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4561
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4561/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4561
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4561/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4561
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4561/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4561
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4561/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2847
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3551/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4711
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2865
    FAILURE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2865/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4739
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4562
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4562/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4562
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4562/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4562
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4562/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4562
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4562/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4562
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4562/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4562
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4562/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2847. By Michael Zanetti

decrease timer timeout for hiding the workspaceswitcher

2848. By Michael Zanetti

merge prereq

2849. By Michael Zanetti

merge

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2847
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3570/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4731
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2879
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2879
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4759
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4577
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4577/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4577
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4577/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4577
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4577/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4577
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4577/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4577
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4577/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4577
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4577/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2849
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3573/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4735
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2885
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2885
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4763
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4586
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4586/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4586
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4586/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4586
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4586/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4586
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4586/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4586
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4586/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4586
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4586/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2850. By Michael Zanetti

merge prereq

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2850
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3598/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4768
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2913
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2913
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4796
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4619
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4619/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4619
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4619/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4619
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4619/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4619
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4619/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4619
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4619/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4619
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4619/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2851. By Michael Zanetti

fix testApplicationWindow

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2851
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3602/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4775
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2919
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2919
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4803
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4626
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4626/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4626
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4626/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4626
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4626/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4626
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4626/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4626
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4626/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4626
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4626/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2852. By Michael Zanetti

fix testDesktopStage

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2852
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3605/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4778
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2922
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2922
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4806
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4629
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4629/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4629
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4629/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4629
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4629/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4629
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4629/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4629
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4629/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4629
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4629/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2853. By Michael Zanetti

some more tabletstage test fixes

2854. By Michael Zanetti

merge prereq

2855. By Michael Zanetti

some more test fixes

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2854
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3607/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4781
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2927
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2927
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4809
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4632
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4632
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4632
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4632
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4632
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4632
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4632/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2855
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3609/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4784
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2928
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2928
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4812
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4635
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4635/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4635
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4635/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4635
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4635/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4635
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4635/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4635
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4635/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4635
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4635/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2856. By Michael Zanetti

testShell should be working again

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2857. By Michael Zanetti

don't show minimized apps in the workspace previews

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2858. By Michael Zanetti

don't really activate a workspace just yet when clicking on it

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2859. By Nick Dedekind

merged pre-req

2860. By Nick Dedekind

merged with pre-req

2861. By Nick Dedekind

merged pre-req

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2859
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3639/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4831
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/2959
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/2959
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4859
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4670
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4670/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4670
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4670/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4670
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4670/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4670
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4670/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4670
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4670/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4670
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4670/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2862. By Nick Dedekind

merged prereq

2863. By Nick Dedekind

merged prereq

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2864. By Nick Dedekind

merged pre-req

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
2865. By Nick Dedekind

merged pre-req

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2865
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3688/
Executed test runs:
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build/4898/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4926
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4734
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4734/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4734
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4734/artifact/output/*zip*/output.zip
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4734/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4734
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4734/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4734
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4734/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4734
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4734/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

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

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

review: Needs Fixing (continuous-integration)
2866. By Michael Zanetti

test fixes

2867. By Michael Zanetti

merge

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2867
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3692/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4903
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/3007
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/3007
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4931
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4740
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4740/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4740
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4740/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4740
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4740/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4740
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4740/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4740
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4740/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4740
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4740/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2868. By Michael Zanetti

rework workspace switcher for up/down navigation for screens

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2868
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/3696/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/4910
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/3010
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=zesty,testname=qmluitests.sh/3010
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/4938
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4746
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4746
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=zesty/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4746
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4746
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=zesty/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4746
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4746
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=zesty/4746/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
2869. By Nick Dedekind

removed debug

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)

Unmerged revisions

2869. By Nick Dedekind

removed debug

2868. By Michael Zanetti

rework workspace switcher for up/down navigation for screens

2867. By Michael Zanetti

merge

2866. By Michael Zanetti

test fixes

2865. By Nick Dedekind

merged pre-req

2864. By Nick Dedekind

merged pre-req

2863. By Nick Dedekind

merged prereq

2862. By Nick Dedekind

merged prereq

2861. By Nick Dedekind

merged pre-req

2860. By Nick Dedekind

merged with pre-req

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'plugins/WindowManager/Screen.h'
2--- plugins/WindowManager/Screen.h 2017-04-06 12:58:36 +0000
3+++ plugins/WindowManager/Screen.h 2017-04-06 12:58:37 +0000
4@@ -16,7 +16,6 @@
5 Q_OBJECT
6
7 Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
8-
9 Q_PROPERTY(bool used READ used NOTIFY usedChanged)
10 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
11 Q_PROPERTY(qtmir::OutputTypes outputType READ outputType NOTIFY outputTypeChanged)
12
13=== modified file 'plugins/WindowManager/Screens.cpp'
14--- plugins/WindowManager/Screens.cpp 2017-04-06 12:58:36 +0000
15+++ plugins/WindowManager/Screens.cpp 2017-04-06 12:58:37 +0000
16@@ -67,6 +67,16 @@
17 return count();
18 }
19
20+int Screens::indexOf(Screen *screen) const
21+{
22+ return m_screens.indexOf(screen);
23+}
24+
25+Screen *Screens::get(int index) const
26+{
27+ return m_screens.at(index);
28+}
29+
30 int Screens::count() const
31 {
32 return m_screens.size();
33
34=== modified file 'plugins/WindowManager/Screens.h'
35--- plugins/WindowManager/Screens.h 2017-04-06 12:58:36 +0000
36+++ plugins/WindowManager/Screens.h 2017-04-06 12:58:37 +0000
37@@ -49,6 +49,9 @@
38 QVariant data(const QModelIndex &index, int role = ScreenRole) const override;
39 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
40
41+ Q_INVOKABLE int indexOf(Screen*) const;
42+ Q_INVOKABLE Screen* get(int index) const;
43+
44 int count() const;
45 QVariant activeScreen() const;
46
47
48=== modified file 'plugins/WindowManager/WorkspaceModel.h'
49--- plugins/WindowManager/WorkspaceModel.h 2017-04-06 12:58:36 +0000
50+++ plugins/WindowManager/WorkspaceModel.h 2017-04-06 12:58:37 +0000
51@@ -49,8 +49,8 @@
52 void remove(Workspace* workspace);
53 virtual void move(int from, int to);
54
55- int indexOf(Workspace *workspace) const;
56- Workspace* get(int index) const;
57+ Q_INVOKABLE int indexOf(Workspace *workspace) const;
58+ Q_INVOKABLE Workspace* get(int index) const;
59
60 // From QAbstractItemModel
61 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
62
63=== modified file 'qml/Shell.qml'
64--- qml/Shell.qml 2017-04-06 12:58:36 +0000
65+++ qml/Shell.qml 2017-04-06 12:58:37 +0000
66@@ -99,7 +99,7 @@
67
68 readonly property var topLevelSurfaceList: {
69 if (!WMScreen.currentWorkspace) return null;
70- return WMScreen.currentWorkspace.windowModel
71+ return stage.temporarySelectedWorkspace ? stage.temporarySelectedWorkspace.windowModel : WMScreen.currentWorkspace.windowModel
72 }
73
74 onMainAppChanged: {
75@@ -189,11 +189,11 @@
76 }
77
78 function startApp(appId) {
79- if (ApplicationManager.findApplication(appId)) {
80- ApplicationManager.requestFocusApplication(appId);
81- } else {
82+ if (!ApplicationManager.findApplication(appId)) {
83 ApplicationManager.startApplication(appId);
84 }
85+ ApplicationManager.requestFocusApplication(appId);
86+ stage.closeSpread();
87 }
88
89 function startLockedApp(app) {
90
91=== modified file 'qml/Stage/ApplicationWindow.qml'
92--- qml/Stage/ApplicationWindow.qml 2017-02-24 12:37:14 +0000
93+++ qml/Stage/ApplicationWindow.qml 2017-04-06 12:58:37 +0000
94@@ -52,13 +52,8 @@
95 // other instructions.
96 if (surface) {
97 surfaceContainer.surface = surface;
98- d.liveSurface = surface.live;
99- d.hadSurface = false;
100 surfaceInitTimer.start();
101 } else {
102- if (d.surfaceInitialized) {
103- d.hadSurface = true;
104- }
105 d.surfaceInitialized = false;
106 surfaceContainer.surface = null;
107 }
108@@ -67,21 +62,6 @@
109 QtObject {
110 id: d
111
112- property bool liveSurface: false;
113- property var con: Connections {
114- target: root.surface
115- onLiveChanged: d.liveSurface = root.surface.live
116- }
117- // using liveSurface instead of root.surface.live because with the latter
118- // this expression is not reevaluated when root.surface changes
119- readonly property bool needToTakeScreenshot: root.surface && d.surfaceInitialized && !d.liveSurface
120- && applicationState !== ApplicationInfoInterface.Running
121- onNeedToTakeScreenshotChanged: {
122- if (needToTakeScreenshot && screenshotImage.status === Image.Null) {
123- screenshotImage.take();
124- }
125- }
126-
127 // helpers so that we don't have to check for the existence of an application everywhere
128 // (in order to avoid breaking qml binding due to a javascript exception)
129 readonly property string name: root.application ? root.application.name : ""
130@@ -131,34 +111,10 @@
131 id: surfaceInitTimer
132 interval: 100
133 onTriggered: {
134- if (root.surface && root.surface.live) {d.surfaceInitialized = true;}
135- }
136- }
137-
138- Timer {
139- id: surfaceIsOldTimer
140- interval: 1000
141- onTriggered: { if (stateGroup.state === "surface") { d.surfaceOldEnoughToBeResized = true; } }
142- }
143-
144- Image {
145- id: screenshotImage
146- objectName: "screenshotImage"
147- anchors.fill: parent
148- fillMode: Image.PreserveAspectCrop
149- horizontalAlignment: Image.AlignLeft
150- verticalAlignment: Image.AlignTop
151- antialiasing: !root.interactive
152- z: 1
153-
154- function take() {
155- // Save memory by using a half-resolution (thus quarter size) screenshot.
156- // Do not make this a binding, we can only take the screenshot once!
157- surfaceContainer.grabToImage(
158- function(result) {
159- screenshotImage.source = result.url;
160- },
161- Qt.size(root.width / 2, root.height / 2));
162+ if (root.surface && root.surface.live) {
163+ d.surfaceInitialized = true;
164+ d.hadSurface = true;
165+ }
166 }
167 }
168
169@@ -167,7 +123,7 @@
170 visible: active
171 active: false
172 anchors.fill: parent
173- z: screenshotImage.z + 1
174+ z: 1
175 sourceComponent: Component {
176 Splash {
177 id: splash
178@@ -238,167 +194,14 @@
179 id: stateGroup
180 objectName: "applicationWindowStateGroup"
181 states: [
182- State {
183- name: "void"
184- when:
185- d.hadSurface && (!root.surface || !d.surfaceInitialized)
186- &&
187- screenshotImage.status !== Image.Ready
188- },
189- State {
190- name: "splashScreen"
191- when:
192- !d.hadSurface && (!root.surface || !d.surfaceInitialized)
193- &&
194- screenshotImage.status !== Image.Ready
195- },
196- State {
197+ State{
198 name: "surface"
199- when:
200- (root.surface && d.surfaceInitialized)
201- &&
202- (d.liveSurface ||
203- (d.applicationState !== ApplicationInfoInterface.Running
204- && screenshotImage.status !== Image.Ready))
205- PropertyChanges {
206- target: root
207- implicitWidth: surfaceContainer.implicitWidth
208- implicitHeight: surfaceContainer.implicitHeight
209- }
210- },
211- State {
212- name: "screenshot"
213- when:
214- screenshotImage.status === Image.Ready
215- &&
216- (d.applicationState !== ApplicationInfoInterface.Running
217- || !root.surface || !d.surfaceInitialized)
218- },
219- State {
220- // This is a dead end. From here we expect the surface to be removed from the model
221- // shortly after we stop referencing to it in our SurfaceContainer.
222- name: "closed"
223- when:
224- // The surface died while the application is running. It must have been closed
225- // by the shell or the application decided to destroy it by itself
226- root.surface && d.surfaceInitialized && !d.liveSurface
227- && d.applicationState === ApplicationInfoInterface.Running
228- }
229- ]
230-
231- transitions: [
232- Transition {
233- from: ""; to: "splashScreen"
234- PropertyAction { target: splashLoader; property: "active"; value: true }
235- PropertyAction { target: surfaceContainer
236- property: "visible"; value: false }
237- },
238- Transition {
239- from: "splashScreen"; to: "surface"
240- SequentialAnimation {
241- PropertyAction { target: surfaceContainer
242- property: "opacity"; value: 0.0 }
243- PropertyAction { target: surfaceContainer
244- property: "visible"; value: true }
245- UbuntuNumberAnimation { target: surfaceContainer; property: "opacity";
246- from: 0.0; to: 1.0
247- duration: UbuntuAnimation.BriskDuration }
248- ScriptAction { script: {
249- splashLoader.active = false;
250- surfaceIsOldTimer.start();
251- } }
252- }
253- },
254- Transition {
255- from: "surface"; to: "splashScreen"
256- SequentialAnimation {
257- ScriptAction { script: {
258- surfaceIsOldTimer.stop();
259- d.surfaceOldEnoughToBeResized = false;
260- splashLoader.active = true;
261- surfaceContainer.visible = true;
262- } }
263- UbuntuNumberAnimation { target: splashLoader; property: "opacity";
264- from: 0.0; to: 1.0
265- duration: UbuntuAnimation.BriskDuration }
266- PropertyAction { target: surfaceContainer
267- property: "visible"; value: false }
268- }
269- },
270- Transition {
271- from: "surface"; to: "screenshot"
272- SequentialAnimation {
273- ScriptAction { script: {
274- surfaceIsOldTimer.stop();
275- d.surfaceOldEnoughToBeResized = false;
276- screenshotImage.visible = true;
277- } }
278- UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
279- from: 0.0; to: 1.0
280- duration: UbuntuAnimation.BriskDuration }
281- ScriptAction { script: {
282- surfaceContainer.visible = false;
283- surfaceContainer.surface = null;
284- d.hadSurface = true;
285- } }
286- }
287- },
288- Transition {
289- from: "screenshot"; to: "surface"
290- SequentialAnimation {
291- PropertyAction { target: surfaceContainer
292- property: "visible"; value: true }
293- UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
294- from: 1.0; to: 0.0
295- duration: UbuntuAnimation.BriskDuration }
296- ScriptAction { script: {
297- screenshotImage.visible = false;
298- screenshotImage.source = "";
299- surfaceIsOldTimer.start();
300- } }
301- }
302- },
303- Transition {
304- from: "splashScreen"; to: "screenshot"
305- SequentialAnimation {
306- PropertyAction { target: screenshotImage
307- property: "visible"; value: true }
308- UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
309- from: 0.0; to: 1.0
310- duration: UbuntuAnimation.BriskDuration }
311- PropertyAction { target: splashLoader; property: "active"; value: false }
312- }
313- },
314- Transition {
315- from: "surface"; to: "void"
316- ScriptAction { script: {
317- surfaceIsOldTimer.stop();
318- d.surfaceOldEnoughToBeResized = false;
319- surfaceContainer.visible = false;
320- } }
321- },
322- Transition {
323- from: "void"; to: "surface"
324- SequentialAnimation {
325- PropertyAction { target: surfaceContainer; property: "opacity"; value: 0.0 }
326- PropertyAction { target: surfaceContainer; property: "visible"; value: true }
327- UbuntuNumberAnimation { target: surfaceContainer; property: "opacity";
328- from: 0.0; to: 1.0
329- duration: UbuntuAnimation.BriskDuration }
330- ScriptAction { script: {
331- surfaceIsOldTimer.start();
332- } }
333- }
334- },
335- Transition {
336- to: "closed"
337- SequentialAnimation {
338- ScriptAction { script: {
339- surfaceContainer.visible = false;
340- surfaceContainer.surface = null;
341- d.hadSurface = true;
342- } }
343- }
344+ when: (root.surface && d.surfaceInitialized) || d.hadSurface
345+ },
346+ State {
347+ name: "splash"
348+ when: !root.surface && !d.surfaceInitialized && !d.hadSurface
349+ PropertyChanges { target: splashLoader; active: true }
350 }
351 ]
352 }
353
354=== modified file 'qml/Stage/DecoratedWindow.qml'
355--- qml/Stage/DecoratedWindow.qml 2017-04-06 12:58:36 +0000
356+++ qml/Stage/DecoratedWindow.qml 2017-04-06 12:58:37 +0000
357@@ -126,15 +126,15 @@
358 name: "preview"; when: root.scaleToPreviewProgress > 0
359 PropertyChanges {
360 target: root
361- implicitWidth: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedWidth, root.scaleToPreviewSize, root.scaleToPreviewProgress)
362- implicitHeight: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedHeight, root.scaleToPreviewSize, root.scaleToPreviewProgress)
363+ implicitWidth: MathUtils.linearAnimation(0, 1, applicationWindow.requestedWidth, root.scaleToPreviewSize, root.scaleToPreviewProgress)
364+ implicitHeight: MathUtils.linearAnimation(0, 1, applicationWindow.requestedHeight, root.scaleToPreviewSize, root.scaleToPreviewProgress)
365 }
366 PropertyChanges {
367 target: applicationWindow;
368- requestedWidth: applicationWindow.oldRequestedWidth
369- requestedHeight: applicationWindow.oldRequestedHeight
370- width: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedWidth, applicationWindow.minSize, root.scaleToPreviewProgress)
371- height: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedHeight, applicationWindow.minSize, root.scaleToPreviewProgress)
372+// requestedWidth: applicationWindow.oldRequestedWidth
373+// requestedHeight: applicationWindow.oldRequestedHeight
374+ width: MathUtils.linearAnimation(0, 1, applicationWindow.requestedWidth, applicationWindow.minSize, root.scaleToPreviewProgress)
375+ height: MathUtils.linearAnimation(0, 1, applicationWindow.requestedHeight, applicationWindow.minSize, root.scaleToPreviewProgress)
376 itemScale: root.implicitWidth / width
377 }
378 }
379@@ -173,10 +173,10 @@
380 height: implicitHeight
381 requestedHeight: !counterRotate ? root.requestedHeight - d.requestedDecorationHeight : root.requestedWidth
382 requestedWidth: !counterRotate ? root.requestedWidth : root.requestedHeight - d.requestedDecorationHeight
383- property int oldRequestedWidth: requestedWidth
384- property int oldRequestedHeight: requestedHeight
385- onRequestedWidthChanged: oldRequestedWidth = requestedWidth
386- onRequestedHeightChanged: oldRequestedHeight = requestedHeight
387+// property int oldRequestedWidth: requestedWidth
388+// property int oldRequestedHeight: requestedHeight
389+// onRequestedWidthChanged: oldRequestedWidth = requestedWidth
390+// onRequestedHeightChanged: oldRequestedHeight = requestedHeight
391 focus: true
392
393 property real itemScale: 1
394
395=== added file 'qml/Stage/Spread/ScreensAndWorkspaces.qml'
396--- qml/Stage/Spread/ScreensAndWorkspaces.qml 1970-01-01 00:00:00 +0000
397+++ qml/Stage/Spread/ScreensAndWorkspaces.qml 2017-04-06 12:58:37 +0000
398@@ -0,0 +1,261 @@
399+import QtQuick 2.4
400+import Ubuntu.Components 1.3
401+import Ubuntu.Components.Popups 1.3
402+import WindowManager 1.0
403+import Unity.Application 0.1
404+import ".."
405+
406+Item {
407+ id: root
408+
409+ property string background
410+
411+ property var screensProxy: Screens.createProxy();
412+
413+ property QtObject activeWorkspace: null
414+
415+ signal closeSpread();
416+
417+ Row {
418+ id: row
419+ anchors.bottom: parent.bottom
420+ anchors.horizontalCenter: parent.horizontalCenter
421+ Behavior on anchors.horizontalCenterOffset { NumberAnimation { duration: UbuntuAnimation.SlowDuration } }
422+ spacing: units.gu(1)
423+
424+ property var selectedIndex: undefined
425+
426+ Repeater {
427+ model: screensProxy
428+
429+ delegate: Item {
430+ height: root.height - units.gu(6)
431+ width: workspaces.width
432+
433+ Item {
434+ id: header
435+ anchors { left: parent.left; top: parent.top; right: parent.right }
436+ height: units.gu(7)
437+ z: 1
438+
439+ property bool isCurrent: {
440+ // another screen is selected.
441+ if (row.selectedIndex != undefined && row.selectedIndex != index) return false;
442+
443+ // this screen is active.
444+ if (WMScreen.active && WMScreen.isSameAs(model.screen) && WMScreen.currentWorkspace.isSameAs(activeWorkspace)) return true;
445+ if (model.screen.workspaces.indexOf(activeWorkspace) >= 0) return true;
446+
447+ // not active.
448+ return false;
449+ }
450+
451+ property bool isSelected: screenMA.containsMouse
452+ onIsSelectedChanged: {
453+ if (isSelected) {
454+ row.selectedIndex = Qt.binding(function() { return index; });
455+ } else if (row.selectedIndex === index) {
456+ row.selectedIndex = undefined;
457+ }
458+ }
459+
460+ UbuntuShape {
461+ anchors.fill: parent
462+ backgroundColor: "white"
463+ opacity: header.isCurrent || header.isSelected ? 1.0 : 0.5
464+ }
465+
466+ DropArea {
467+ anchors.fill: parent
468+ keys: ["workspace"]
469+
470+ onEntered: {
471+ workspaces.workspaceModel.insert(workspaces.workspaceModel.count, {text: drag.source.text})
472+ drag.source.inDropArea = true;
473+ }
474+
475+ onExited: {
476+ workspaces.workspaceModel.remove(workspaces.workspaceModel.count - 1, 1)
477+ drag.source.inDropArea = false;
478+ }
479+
480+ onDropped: {
481+ drag.source.inDropArea = false;
482+ }
483+ }
484+
485+ Column {
486+ anchors.fill: parent
487+ anchors.margins: units.gu(1)
488+
489+ Label {
490+ text: model.screen.name
491+ color: header.isCurrent || header.isSelected ? "black" : "white"
492+ }
493+
494+ Label {
495+ text: model.screen.outputTypeName
496+ color: header.isCurrent || header.isSelected ? "black" : "white"
497+ fontSize: "x-small"
498+ }
499+
500+ Label {
501+ text: screen.availableModes[screen.currentModeIndex].size.width + "x" + screen.availableModes[screen.currentModeIndex].size.height
502+ color: header.isCurrent || header.isSelected ? "black" : "white"
503+ fontSize: "x-small"
504+ }
505+ }
506+
507+ Icon {
508+ anchors {
509+ top: parent.top
510+ right: parent.right
511+ margins: units.gu(1)
512+ }
513+ width: units.gu(3)
514+ height: width
515+ source: "image://theme/select"
516+ color: header.isCurrent || header.isSelected ? "black" : "white"
517+ visible: model.screen.active
518+ }
519+
520+ MouseArea {
521+ id: screenMA
522+ hoverEnabled: true
523+ anchors.fill: parent
524+
525+ onClicked: {
526+ var obj = screensMenuComponent.createObject(header)
527+ obj.open(mouseX, mouseY)
528+ }
529+ }
530+
531+ Component {
532+ id: screensMenuComponent
533+ UbuntuShape {
534+ id: screensMenu
535+ width: units.gu(20)
536+ height: contentColumn.childrenRect.height
537+ backgroundColor: "white"
538+
539+ function open(mouseX, mouseY) {
540+ x = Math.max(0, Math.min(mouseX - width / 2, parent.width - width))
541+ y = mouseY + units.gu(1)
542+ }
543+
544+ InverseMouseArea {
545+ anchors.fill: parent
546+ onClicked: {
547+ screensMenu.destroy()
548+ }
549+ }
550+
551+ Column {
552+ id: contentColumn
553+ width: parent.width
554+ ListItem {
555+ height: layout.height
556+ highlightColor: "transparent"
557+ ListItemLayout {
558+ id: layout
559+ title.text: qsTr("Add workspace")
560+ title.color: "black"
561+ }
562+ onClicked: {
563+ screen.workspaces.addWorkspace();
564+ Screens.sync(root.screensProxy);
565+ screensMenu.destroy();
566+ }
567+ }
568+ }
569+ }
570+ }
571+ }
572+
573+ Workspaces {
574+ id: workspaces
575+ height: parent.height - header.height - units.gu(2)
576+ width: {
577+ var width = 0;
578+ if (screensProxy.count == 1) {
579+ width = Math.min(implicitWidth, root.width - units.gu(8));
580+ } else {
581+ width = Math.min(implicitWidth, model.screen.active ? root.width - units.gu(48) : units.gu(40))
582+ }
583+ return Math.max(workspaces.minimumWidth, width);
584+ }
585+
586+ Behavior on width { UbuntuNumberAnimation {} }
587+ anchors.bottom: parent.bottom
588+ anchors.bottomMargin: units.gu(1)
589+ anchors.horizontalCenter: parent.horizontalCenter
590+ screen: model.screen
591+ background: root.background
592+
593+ workspaceModel: model.screen.workspaces
594+ activeWorkspace: root.activeWorkspace
595+ readOnly: false
596+
597+ onCommitScreenSetup: Screens.sync(root.screensProxy)
598+ onCloseSpread: root.closeSpread();
599+
600+ onClicked: {
601+ root.activeWorkspace = workspace;
602+ }
603+ }
604+ }
605+ }
606+ }
607+
608+ Rectangle {
609+ anchors { left: parent.left; top: parent.top; bottom: parent.bottom; topMargin: units.gu(6); bottomMargin: units.gu(1) }
610+ width: units.gu(5)
611+ color: "#33000000"
612+ visible: (row.width - root.width + units.gu(10)) / 2 - row.anchors.horizontalCenterOffset > units.gu(5)
613+ MouseArea {
614+ id: leftScrollArea
615+ anchors.fill: parent
616+ hoverEnabled: true
617+ onPressed: mouse.accepted = false;
618+ }
619+ DropArea {
620+ id: leftFakeDropArea
621+ anchors.fill: parent
622+ keys: ["application", "workspace"]
623+ }
624+ }
625+ Rectangle {
626+ anchors { right: parent.right; top: parent.top; bottom: parent.bottom; topMargin: units.gu(6); bottomMargin: units.gu(1) }
627+ width: units.gu(5)
628+ color: "#33000000"
629+ visible: (row.width - root.width + units.gu(10)) / 2 + row.anchors.horizontalCenterOffset > units.gu(5)
630+ MouseArea {
631+ id: rightScrollArea
632+ anchors.fill: parent
633+ hoverEnabled: true
634+ onPressed: mouse.accepted = false;
635+ }
636+ DropArea {
637+ id: rightFakeDropArea
638+ anchors.fill: parent
639+ keys: ["application", "workspace"]
640+ }
641+ }
642+ Timer {
643+ repeat: true
644+ running: leftScrollArea.containsMouse || rightScrollArea.containsMouse || leftFakeDropArea.containsDrag || rightFakeDropArea.containsDrag
645+ interval: UbuntuAnimation.SlowDuration
646+ triggeredOnStart: true
647+ onTriggered: {
648+ var newOffset = row.anchors.horizontalCenterOffset;
649+ var maxOffset = Math.max((row.width - root.width + units.gu(10)) / 2, 0);
650+ if (leftScrollArea.containsMouse || leftFakeDropArea.containsDrag) {
651+ newOffset += units.gu(20)
652+ } else {
653+ newOffset -= units.gu(20)
654+ }
655+ newOffset = Math.max(-maxOffset, Math.min(maxOffset, newOffset));
656+ row.anchors.horizontalCenterOffset = newOffset;
657+ }
658+ }
659+}
660
661=== modified file 'qml/Stage/Spread/Spread.qml'
662--- qml/Stage/Spread/Spread.qml 2017-03-09 09:31:43 +0000
663+++ qml/Stage/Spread/Spread.qml 2017-04-06 12:58:37 +0000
664@@ -28,10 +28,10 @@
665 property var spreadFlickable
666
667 // some config options
668- property real contentMargin: 0.16 * root.height
669- property real contentTopMargin: contentMargin
670- property real contentBottomMargin: 0.35 * contentMargin
671- property real windowTitleTopMargin: 3/4 * (contentTopMargin - windowTitle.height)
672+ property real contentMargin: 0.1 * root.height
673+ property real contentTopMargin: contentMargin + root.y + windowTitle.height
674+ property real contentBottomMargin: contentMargin
675+ property real windowTitleTopMargin: contentMargin - windowTitle.height
676 property int stackItemCount: 3
677 property real leftRotationAngle: 22
678 property real rightRotationAngle: 32
679@@ -52,7 +52,7 @@
680
681 readonly property real spreadWidth: rightStackXPos - leftStackXPos
682 readonly property real spreadHeight: root.height
683- readonly property real spreadItemHeight: spreadHeight - contentTopMargin - contentBottomMargin
684+ readonly property real spreadItemHeight: spreadHeight - contentMargin * 2
685 readonly property real spreadItemWidth: stackHeight
686
687 readonly property real dynamicLeftRotationAngle: leftRotationAngle * rotationAngleFactor
688@@ -92,10 +92,9 @@
689
690 readonly property real visibleItemCount: (spreadWidth / spreadItemWidth) / (1 - itemOverlap)
691
692- readonly property real spreadTotalWidth: Math.max(2,totalItemCount) * spreadWidth / visibleItemCount
693-
694- readonly property real centeringOffset: Math.max(spreadWidth - spreadTotalWidth ,0) / (2 * spreadWidth)
695-
696+ readonly property real spreadTotalWidth: totalItemCount * spreadWidth / visibleItemCount
697+
698+ readonly property real centeringOffset: Math.max(spreadWidth - spreadTotalWidth + (leftStackXPos - leftMargin) * 2, 0) / (2 * spreadWidth)
699
700 readonly property var curve: BezierCurve {
701 controlPoint2: {'x': 0.19, 'y': 0.00}
702
703=== modified file 'qml/Stage/Spread/SpreadDelegateInputArea.qml'
704--- qml/Stage/Spread/SpreadDelegateInputArea.qml 2016-11-07 14:07:45 +0000
705+++ qml/Stage/Spread/SpreadDelegateInputArea.qml 2017-04-06 12:58:37 +0000
706@@ -28,6 +28,9 @@
707
708 readonly property alias distance: d.distance
709
710+ property var stage: null
711+ property var dragDelegate: null
712+
713 signal clicked()
714 signal close()
715
716@@ -84,33 +87,27 @@
717 }
718 }
719
720- // Event eater
721- MouseArea {
722- anchors.fill: parent
723- onClicked: root.clicked()
724- onWheel: wheel.accepted = true
725- }
726-
727 MultiPointTouchArea {
728 anchors.fill: parent
729- mouseEnabled: false
730 maximumTouchPoints: 1
731 property int offset: 0
732
733+ // tp.startY seems to be broken for mouse interaction... lets track it ourselves
734+ property int startY: 0
735+
736 touchPoints: [
737 TouchPoint {
738 id: tp
739 }
740 ]
741
742- onCanceled: {
743- d.moving = false
744- animation.animate("center");
745+ onPressed: {
746+ startY = tp.y
747 }
748
749 onTouchUpdated: {
750- if (!d.moving) {
751- if (Math.abs(tp.startY - tp.y) > d.threshold) {
752+ if (!d.moving || !tp.pressed) {
753+ if (Math.abs(startY - tp.y) > d.threshold) {
754 d.moving = true;
755 d.dragEvents = []
756 offset = tp.y - tp.startY;
757@@ -119,17 +116,32 @@
758 }
759 }
760
761- if (root.closeable) {
762- d.distance = tp.y - tp.startY - offset
763+
764+ var value = tp.y - tp.startY - offset;
765+ if (value < 0) {
766+ var coords = mapToItem(stage, tp.x, tp.y);
767+ dragDelegate.Drag.hotSpot.x = dragDelegate.width / 2
768+ dragDelegate.Drag.hotSpot.y = units.gu(2)
769+ dragDelegate.x = coords.x - dragDelegate.Drag.hotSpot.x
770+ dragDelegate.y = coords.y - dragDelegate.Drag.hotSpot.y
771+ dragDelegate.Drag.active = true;
772+ dragDelegate.surface = model.window.surface;
773+
774 } else {
775- var value = tp.y - tp.startY - offset;
776- d.distance = Math.sqrt(Math.abs(value)) * (value < 0 ? -1 : 1) * 3
777+ if (root.closeable) {
778+ d.distance = value
779+ } else {
780+ d.distance = Math.sqrt(Math.abs(value)) * (value < 0 ? -1 : 1) * 3
781+ }
782 }
783
784 d.pushDragEvent(tp);
785 }
786
787 onReleased: {
788+ var result = dragDelegate.Drag.drop();
789+ dragDelegate.surface = null;
790+
791 if (!d.moving) {
792 root.clicked()
793 }
794@@ -149,6 +161,13 @@
795 animation.animate("center")
796 }
797 }
798+
799+ onCanceled: {
800+ dragDelegate.Drag.active = false;
801+ dragDelegate.surface = null;
802+ d.moving = false
803+ animation.animate("center");
804+ }
805 }
806
807 UbuntuNumberAnimation {
808
809=== added file 'qml/Stage/Spread/WorkspacePreview.qml'
810--- qml/Stage/Spread/WorkspacePreview.qml 1970-01-01 00:00:00 +0000
811+++ qml/Stage/Spread/WorkspacePreview.qml 2017-04-06 12:58:37 +0000
812@@ -0,0 +1,127 @@
813+import QtQuick 2.4
814+import Ubuntu.Components 1.3
815+import Unity.Application 0.1
816+import WindowManager 1.0
817+import ".."
818+import "../../Components"
819+
820+Item {
821+ id: previewSpace
822+ clip: true
823+
824+ property var workspace
825+
826+ property string background
827+ property int screenHeight
828+
829+ property real previewScale: previewSpace.height / previewSpace.screenHeight
830+
831+ property bool containsDragLeft: false
832+ property bool containsDragRight: false
833+ property bool isActive: false
834+ property bool isSelected: false
835+
836+ Image {
837+ source: previewSpace.background
838+ anchors.fill: parent
839+ sourceSize.width: width
840+ sourceSize.height: height
841+
842+ Repeater {
843+ id: topLevelSurfaceRepeater
844+ model: visible ? workspace.windowModel : null
845+ delegate: Item {
846+ width: surfaceItem.width
847+ height: surfaceItem.height + decorationHeight * previewScale
848+ x: model.window.position.x * previewScale
849+ y: (model.window.position.y - decorationHeight) * previewScale
850+ z: topLevelSurfaceRepeater.count - index
851+ visible: model.window.state !== Mir.MinimizedState && model.window.state !== Mir.HiddenState
852+
853+ property int decorationHeight: units.gu(3)
854+
855+ WindowDecoration {
856+ width: surfaceItem.implicitWidth
857+ height: parent.decorationHeight
858+ transform: Scale {
859+ origin.x: 0
860+ origin.y: 0
861+ xScale: previewScale
862+ yScale: previewScale
863+ }
864+ title: model.window && model.window.surface ? model.window.surface.name : ""
865+ z: 3
866+ }
867+
868+ MirSurfaceItem {
869+ id: surfaceItem
870+ y: parent.decorationHeight * previewScale
871+ width: implicitWidth * previewScale
872+ height: implicitHeight * previewScale
873+ surfaceWidth: -1
874+ surfaceHeight: -1
875+ surface: model.window.surface
876+ }
877+ }
878+ }
879+
880+ }
881+
882+ Rectangle {
883+ anchors.fill: parent
884+ border.color: UbuntuColors.ash
885+ border.width: units.gu(.5)
886+ color: "transparent"
887+ visible: previewSpace.isActive
888+ }
889+
890+ Rectangle {
891+ anchors.fill: parent
892+ border.color: UbuntuColors.blue
893+ border.width: units.gu(.5)
894+ color: "transparent"
895+ visible: previewSpace.isSelected
896+ }
897+
898+ Rectangle {
899+ anchors.fill: parent
900+ anchors.rightMargin: parent.width / 2
901+ color: "#55000000"
902+ visible: previewSpace.containsDragLeft
903+
904+ Column {
905+ anchors.centerIn: parent
906+ spacing: units.gu(1)
907+ Icon {
908+ source: "../graphics/multi-monitor_drop-here.png"
909+ height: units.gu(4)
910+ width: height
911+ anchors.horizontalCenter: parent.horizontalCenter
912+ }
913+ Label {
914+ text: qsTr("Drop here")
915+ }
916+ }
917+ }
918+
919+ Rectangle {
920+ anchors.fill: parent
921+ anchors.leftMargin: parent.width / 2
922+ color: "#55000000"
923+ visible: previewSpace.containsDragRight
924+
925+ Column {
926+ anchors.centerIn: parent
927+ spacing: units.gu(1)
928+ Icon {
929+ source: "../graphics/multi-monitor_leave.png"
930+ height: units.gu(4)
931+ width: height
932+ anchors.horizontalCenter: parent.horizontalCenter
933+ }
934+ Label {
935+ text: qsTr("Drop and go")
936+ }
937+ }
938+ }
939+}
940
941=== added file 'qml/Stage/Spread/Workspaces.qml'
942--- qml/Stage/Spread/Workspaces.qml 1970-01-01 00:00:00 +0000
943+++ qml/Stage/Spread/Workspaces.qml 2017-04-06 12:58:37 +0000
944@@ -0,0 +1,412 @@
945+import QtQuick 2.4
946+import Ubuntu.Components 1.3
947+import WindowManager 1.0
948+import "MathUtils.js" as MathUtils
949+import "../../Components"
950+
951+Item {
952+ id: root
953+ implicitWidth: listView.contentWidth
954+ readonly property int minimumWidth: {
955+ var count = Math.min(3, listView.count);
956+ return listView.itemWidth * count + listView.spacing * (count - 1)
957+ }
958+
959+ property QtObject screen: null
960+ property alias workspaceModel: listView.model
961+ property var background // TODO: should be stored in the workspace data
962+ property int selectedIndex: -1
963+ property bool readOnly: true
964+ property var activeWorkspace: null
965+
966+ signal commitScreenSetup();
967+ signal closeSpread();
968+ signal clicked(var workspace);
969+
970+ DropArea {
971+ anchors.fill: root
972+
973+ keys: ['workspace']
974+
975+ onEntered: {
976+ var index = listView.getDropIndex(drag);
977+ drag.source.workspace.assign(workspaceModel, index)
978+ drag.source.inDropArea = true;
979+ }
980+
981+ onPositionChanged: {
982+ var index = listView.getDropIndex(drag);
983+ if (listView.dropItemIndex == index) return;
984+ listView.model.move(listView.dropItemIndex, index, 1);
985+ listView.dropItemIndex = index;
986+ }
987+
988+ onExited: {
989+ drag.source.workspace.unassign()
990+ listView.dropItemIndex = -1;
991+ listView.hoveredWorkspaceIndex = -1;
992+ drag.source.inDropArea = false;
993+ }
994+
995+ onDropped: {
996+ drop.accept(Qt.MoveAction);
997+ listView.dropItemIndex = -1;
998+ drag.source.inDropArea = false;
999+ }
1000+ }
1001+ DropArea {
1002+ anchors.fill: parent
1003+ keys: ["application"]
1004+
1005+ onPositionChanged: {
1006+ listView.progressiveScroll(drag.x)
1007+ listView.updateDropProperties(drag)
1008+ }
1009+ onExited: {
1010+ listView.hoveredWorkspaceIndex = -1
1011+ }
1012+ onDropped: {
1013+ var surface = drag.source.surface;
1014+ drag.source.surface = null;
1015+ var workspace = listView.model.get(listView.hoveredWorkspaceIndex);
1016+ WorkspaceManager.moveSurfaceToWorkspace(surface, workspace);
1017+ drop.accept(Qt.MoveAction)
1018+ if (listView.hoveredHalf == "right") {
1019+ root.closeSpread();
1020+ workspace.activate();
1021+ }
1022+ surface.activate();
1023+ listView.hoveredWorkspaceIndex = -1
1024+ }
1025+ }
1026+
1027+ onSelectedIndexChanged: {
1028+ listView.positionViewAtIndex(selectedIndex, ListView.Center);
1029+ }
1030+
1031+ Item {
1032+ // We need to clip the listview as it has left/right margins and it would
1033+ // overlap with items next to it and eat mouse input. However, we can't
1034+ // just clip at the actual bounds as the delegates have the close button
1035+ // on hover which reaches a bit outside, so lets some margins for the clipping
1036+ anchors.fill: parent
1037+ anchors.margins: -units.gu(2)
1038+ clip: true
1039+
1040+
1041+ ListView {
1042+ id: listView
1043+ anchors {
1044+ fill: parent
1045+ topMargin: -parent.anchors.margins
1046+ bottomMargin: -parent.anchors.margins
1047+ leftMargin: -itemWidth - parent.anchors.margins
1048+ rightMargin: -itemWidth - parent.anchors.margins
1049+ }
1050+ boundsBehavior: Flickable.StopAtBounds
1051+
1052+ Behavior on contentX {
1053+ SmoothedAnimation { duration: 200 }
1054+ }
1055+
1056+ property var clickedWorkspace: null
1057+
1058+ orientation: ListView.Horizontal
1059+ spacing: units.gu(1)
1060+ leftMargin: itemWidth
1061+ rightMargin: itemWidth
1062+
1063+ property int screenWidth: screen.availableModes[screen.currentModeIndex].size.width
1064+ property int screenHeight: screen.availableModes[screen.currentModeIndex].size.height
1065+ property int itemWidth: height * screenWidth / screenHeight
1066+ property int foldingAreaWidth: itemWidth / 2
1067+ property int maxAngle: 40
1068+
1069+ property real realContentX: contentX - originX + leftMargin
1070+ property int dropItemIndex: -1
1071+ property int hoveredWorkspaceIndex: -1
1072+ property string hoveredHalf: "" // left or right
1073+
1074+ function getDropIndex(drag) {
1075+ var coords = mapToItem(listView.contentItem, drag.x, drag.y)
1076+ var index = Math.floor((drag.x + listView.realContentX) / (listView.itemWidth + listView.spacing));
1077+ if (index < 0) index = 0;
1078+ var upperLimit = dropItemIndex == -1 ? listView.count : listView.count - 1
1079+ if (index > upperLimit) index = upperLimit;
1080+ return index;
1081+ }
1082+
1083+ function updateDropProperties(drag) {
1084+ var coords = mapToItem(listView.contentItem, drag.x, drag.y)
1085+ var index = Math.floor(drag.x + listView.realContentX) / (listView.itemWidth + listView.spacing);
1086+ if (index < 0) {
1087+ listView.hoveredWorkspaceIndex = -1;
1088+ listView.hoveredHalf = "";
1089+ return;
1090+ }
1091+
1092+ var upperLimit = dropItemIndex == -1 ? listView.count : listView.count - 1
1093+ if (index > upperLimit) index = upperLimit;
1094+ listView.hoveredWorkspaceIndex = index;
1095+ var pixelsInTile = (drag.x + listView.realContentX) % (listView.itemWidth + listView.spacing);
1096+ listView.hoveredHalf = (pixelsInTile / listView.itemWidth) < .5 ? "left" : "right";
1097+ }
1098+
1099+ function progressiveScroll(mouseX) {
1100+ var progress = Math.max(0, Math.min(1, (mouseX - listView.itemWidth) / (width - listView.leftMargin * 2 - listView.itemWidth * 2)))
1101+ listView.contentX = listView.originX + (listView.contentWidth - listView.width + listView.leftMargin + listView.rightMargin) * progress - listView.leftMargin
1102+ }
1103+
1104+ displaced: Transition { UbuntuNumberAnimation { properties: "x" } }
1105+
1106+ delegate: Item {
1107+ id: workspaceDelegate
1108+ objectName: "delegate" + index
1109+ height: parent.height
1110+ width: listView.itemWidth
1111+ Behavior on width { UbuntuNumberAnimation {} }
1112+ visible: listView.dropItemIndex !== index
1113+
1114+ property int itemX: -listView.realContentX + index * (listView.itemWidth + listView.spacing)
1115+ property int distanceFromLeft: itemX //- listView.leftMargin
1116+ property int distanceFromRight: listView.width - listView.leftMargin - listView.rightMargin - itemX - listView.itemWidth
1117+
1118+ property int itemAngle: {
1119+ if (index == 0) {
1120+ if (distanceFromLeft < 0) {
1121+ var progress = (distanceFromLeft + listView.foldingAreaWidth) / listView.foldingAreaWidth
1122+ return MathUtils.linearAnimation(1, -1, 0, listView.maxAngle, Math.max(-1, Math.min(1, progress)));
1123+ }
1124+ return 0
1125+ }
1126+ if (index == listView.count - 1) {
1127+ if (distanceFromRight < 0) {
1128+ var progress = (distanceFromRight + listView.foldingAreaWidth) / listView.foldingAreaWidth
1129+ return MathUtils.linearAnimation(1, -1, 0, -listView.maxAngle, Math.max(-1, Math.min(1, progress)));
1130+ }
1131+ return 0
1132+ }
1133+
1134+ if (distanceFromLeft < listView.foldingAreaWidth) {
1135+ // itemX : 10gu = p : 100
1136+ var progress = distanceFromLeft / listView.foldingAreaWidth
1137+ return MathUtils.linearAnimation(1, -1, 0, listView.maxAngle, Math.max(-1, Math.min(1, progress)));
1138+ }
1139+ if (distanceFromRight < listView.foldingAreaWidth) {
1140+ var progress = distanceFromRight / listView.foldingAreaWidth
1141+ return MathUtils.linearAnimation(1, -1, 0, -listView.maxAngle, Math.max(-1, Math.min(1, progress)));
1142+ }
1143+ return 0
1144+ }
1145+
1146+ property int itemOffset: {
1147+ if (index == 0) {
1148+ if (distanceFromLeft < 0) {
1149+ return -distanceFromLeft
1150+ }
1151+ return 0
1152+ }
1153+ if (index == listView.count - 1) {
1154+ if (distanceFromRight < 0) {
1155+ return distanceFromRight
1156+ }
1157+ return 0
1158+ }
1159+
1160+ if (itemX < -listView.foldingAreaWidth) {
1161+ return -itemX
1162+ }
1163+ if (distanceFromLeft < listView.foldingAreaWidth) {
1164+ return (listView.foldingAreaWidth - distanceFromLeft) / 2
1165+ }
1166+
1167+ if (distanceFromRight < -listView.foldingAreaWidth) {
1168+ return distanceFromRight
1169+ }
1170+
1171+ if (distanceFromRight < listView.foldingAreaWidth) {
1172+ return -(listView.foldingAreaWidth - distanceFromRight) / 2
1173+ }
1174+
1175+ return 0
1176+ }
1177+
1178+ z: itemOffset < 0 ? itemOffset : -itemOffset
1179+ transform: [
1180+ Rotation {
1181+ angle: itemAngle
1182+ axis { x: 0; y: 1; z: 0 }
1183+ origin { x: itemAngle < 0 ? listView.itemWidth : 0; y: height / 2 }
1184+ },
1185+ Translate {
1186+ x: itemOffset
1187+ }
1188+ ]
1189+
1190+ WorkspacePreview {
1191+ id: workspacePreview
1192+ height: listView.height
1193+ width: listView.itemWidth
1194+ background: root.background
1195+ screenHeight: listView.screenHeight
1196+ containsDragLeft: listView.hoveredWorkspaceIndex == index && listView.hoveredHalf == "left"
1197+ containsDragRight: listView.hoveredWorkspaceIndex == index && listView.hoveredHalf == "right"
1198+ isActive: workspace.isSameAs(root.activeWorkspace)
1199+ isSelected: index === root.selectedIndex
1200+ workspace: model.workspace
1201+ }
1202+ MouseArea {
1203+ anchors.fill: parent
1204+ onClicked: {
1205+ root.clicked(model.workspace)
1206+ }
1207+ onDoubleClicked: {
1208+ model.workspace.activate();
1209+ root.closeSpread();
1210+ }
1211+ }
1212+
1213+ MouseArea {
1214+ id: closeMouseArea
1215+ objectName: "closeMouseArea"
1216+ anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 }
1217+ hoverEnabled: true
1218+ height: units.gu(4)
1219+ width: height
1220+ visible: !root.readOnly && listView.count > 1
1221+
1222+ onClicked: {
1223+ model.workspace.unassign();
1224+ root.commitScreenSetup();
1225+ }
1226+ Image {
1227+ id: closeImage
1228+ source: "../graphics/window-close.svg"
1229+ anchors.fill: closeMouseArea
1230+ anchors.margins: units.gu(1)
1231+ sourceSize.width: width
1232+ sourceSize.height: height
1233+ readonly property var mousePos: hoverMouseArea.mapToItem(workspaceDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1234+ readonly property bool shown: (hoverMouseArea.containsMouse || parent.containsMouse)
1235+ && mousePos.y < workspaceDelegate.width / 4
1236+ && mousePos.y > -units.gu(2)
1237+ && mousePos.x > -units.gu(2)
1238+ && mousePos.x < workspaceDelegate.height / 4
1239+ opacity: shown ? 1 : 0
1240+ visible: opacity > 0
1241+ Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
1242+
1243+ }
1244+ }
1245+ }
1246+
1247+ MouseArea {
1248+ id: hoverMouseArea
1249+ anchors.fill: parent
1250+ hoverEnabled: true
1251+ propagateComposedEvents: true
1252+ anchors.leftMargin: listView.leftMargin
1253+ anchors.rightMargin: listView.rightMargin
1254+ enabled: !root.readOnly
1255+
1256+ property int draggedIndex: -1
1257+
1258+ property int startX: 0
1259+ property int startY: 0
1260+
1261+ onMouseXChanged: {
1262+ if (!pressed || dragging) {
1263+ listView.progressiveScroll(mouseX)
1264+ }
1265+ }
1266+ onMouseYChanged: {
1267+ if (Math.abs(mouseY - startY) > units.gu(3)) {
1268+ drag.axis = Drag.XAndYAxis;
1269+ }
1270+ }
1271+
1272+ onReleased: {
1273+ var result = fakeDragItem.Drag.drop();
1274+ // if (result == Qt.IgnoreAction) {
1275+ // WorkspaceManager.destroyWorkspace(fakeDragItem.workspace);
1276+ // }
1277+ root.commitScreenSetup();
1278+ drag.target = null;
1279+ }
1280+
1281+ property bool dragging: drag.active
1282+ onDraggingChanged: {
1283+ if (drag.active) {
1284+ var ws = listView.model.get(draggedIndex);
1285+ if (ws) ws.unassign();
1286+ }
1287+ }
1288+
1289+ onPressed: {
1290+ startX = mouseX;
1291+ startY = mouseY;
1292+ if (listView.model.count < 2) return;
1293+
1294+ var coords = mapToItem(listView.contentItem, mouseX, mouseY)
1295+ draggedIndex = listView.indexAt(coords.x, coords.y)
1296+ var clickedItem = listView.itemAt(coords.x, coords.y)
1297+
1298+ var itemCoords = clickedItem.mapToItem(listView, -listView.leftMargin, 0);
1299+ fakeDragItem.x = itemCoords.x
1300+ fakeDragItem.y = itemCoords.y
1301+ fakeDragItem.workspace = listView.model.get(draggedIndex)
1302+
1303+ var mouseCoordsInItem = mapToItem(clickedItem, mouseX, mouseY);
1304+ fakeDragItem.Drag.hotSpot.x = mouseCoordsInItem.x
1305+ fakeDragItem.Drag.hotSpot.y = mouseCoordsInItem.y
1306+
1307+ drag.axis = Drag.YAxis;
1308+ drag.target = fakeDragItem;
1309+ }
1310+
1311+ WorkspacePreview {
1312+ id: fakeDragItem
1313+ height: listView.height
1314+ width: listView.itemWidth
1315+ background: root.background
1316+ screenHeight: screen.availableModes[screen.currentModeIndex].size.height
1317+ visible: Drag.active
1318+
1319+ Drag.active: hoverMouseArea.drag.active
1320+ Drag.keys: ['workspace']
1321+
1322+ property bool inDropArea: false
1323+
1324+ Rectangle {
1325+ anchors.fill: parent
1326+ color: "#33000000"
1327+ opacity: parent.inDropArea ? 0 : 1
1328+ Behavior on opacity { UbuntuNumberAnimation { } }
1329+ Rectangle {
1330+ anchors.centerIn: parent
1331+ width: units.gu(6)
1332+ height: units.gu(6)
1333+ radius: width / 2
1334+ color: "#aa000000"
1335+ }
1336+
1337+ Icon {
1338+ height: units.gu(3)
1339+ width: height
1340+ anchors.centerIn: parent
1341+ name: "edit-delete"
1342+ color: "white"
1343+ }
1344+ }
1345+
1346+ states: [
1347+ State {
1348+ when: fakeDragItem.Drag.active
1349+ ParentChange { target: fakeDragItem; parent: shell }
1350+ }
1351+ ]
1352+ }
1353+ }
1354+ }
1355+ }
1356+}
1357
1358=== modified file 'qml/Stage/Stage.qml'
1359--- qml/Stage/Stage.qml 2017-04-06 12:58:36 +0000
1360+++ qml/Stage/Stage.qml 2017-04-06 12:58:37 +0000
1361@@ -50,6 +50,8 @@
1362 property Item availableDesktopArea
1363 property PanelState panelState
1364
1365+ readonly property var temporarySelectedWorkspace: state == "spread" ? screensAndWorkspaces.activeWorkspace : null
1366+
1367 // Configuration
1368 property string mode: "staged"
1369
1370@@ -138,6 +140,7 @@
1371 function updateFocusedAppOrientationAnimated() { /* TODO */}
1372
1373 function closeSpread() {
1374+ spreadItem.highlightedIndex = -1;
1375 priv.goneToSpread = false;
1376 }
1377
1378@@ -244,6 +247,43 @@
1379 }
1380 }
1381
1382+ GlobalShortcut {
1383+ id: showWorkspaceSwitcherShortcutLeft
1384+ shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Left
1385+ active: !workspaceSwitcher.active
1386+ onTriggered: {
1387+ root.focus = true;
1388+ workspaceSwitcher.showLeft()
1389+ }
1390+ }
1391+ GlobalShortcut {
1392+ id: showWorkspaceSwitcherShortcutRight
1393+ shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Right
1394+ active: !workspaceSwitcher.active
1395+ onTriggered: {
1396+ root.focus = true;
1397+ workspaceSwitcher.showRight()
1398+ }
1399+ }
1400+ GlobalShortcut {
1401+ id: showWorkspaceSwitcherShortcutUp
1402+ shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Up
1403+ active: !workspaceSwitcher.active
1404+ onTriggered: {
1405+ root.focus = true;
1406+ workspaceSwitcher.showUp()
1407+ }
1408+ }
1409+ GlobalShortcut {
1410+ id: showWorkspaceSwitcherShortcutDown
1411+ shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Down
1412+ active: !workspaceSwitcher.active
1413+ onTriggered: {
1414+ root.focus = true;
1415+ workspaceSwitcher.showDown()
1416+ }
1417+ }
1418+
1419 QtObject {
1420 id: priv
1421 objectName: "DesktopStagePrivate"
1422@@ -379,7 +419,7 @@
1423 readonly property real windowDecorationHeight: units.gu(3)
1424 }
1425
1426- Component.onCompleted: priv.updateMainAndSideStageIndexes();
1427+ Component.onCompleted: priv.updateMainAndSideStageIndexes()
1428
1429 Connections {
1430 target: panelState
1431@@ -484,6 +524,7 @@
1432 PropertyChanges { target: cancelSpreadMouseArea; enabled: true }
1433 PropertyChanges { target: blurLayer; visible: true; blurRadius: 32; brightness: .65; opacity: 1 }
1434 PropertyChanges { target: wallpaper; visible: false }
1435+ PropertyChanges { target: screensAndWorkspaces; opacity: 1 }
1436 },
1437 State {
1438 name: "stagedRightEdge"; when: root.spreadEnabled && (rightEdgeDragArea.dragging || rightEdgePushProgress > 0) && root.mode == "staged"
1439@@ -531,11 +572,16 @@
1440 Transition {
1441 from: "stagedRightEdge,sideStagedRightEdge,windowedRightEdge"; to: "spread"
1442 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: -1 }
1443+ PropertyAction { target: screensAndWorkspaces; property: "activeWorkspace"; value: WMScreen.currentWorkspace }
1444 PropertyAnimation { target: blurLayer; properties: "brightness,blurRadius"; duration: priv.animationDuration }
1445+ UbuntuNumberAnimation { target: screensAndWorkspaces; property: "opacity"; duration: priv.animationDuration }
1446 },
1447 Transition {
1448 to: "spread"
1449+ PropertyAction { target: screensAndWorkspaces; property: "activeWorkspace"; value: WMScreen.currentWorkspace }
1450 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: appRepeater.count > 1 ? 1 : 0 }
1451+ PropertyAction { target: floatingFlickable; property: "contentX"; value: 0 }
1452+ UbuntuNumberAnimation { target: screensAndWorkspaces; property: "opacity"; duration: priv.animationDuration }
1453 },
1454 Transition {
1455 from: "spread"
1456@@ -593,10 +639,20 @@
1457 visible: false
1458 }
1459
1460+ ScreensAndWorkspaces {
1461+ id: screensAndWorkspaces
1462+ anchors { left: parent.left; top: parent.top; right: parent.right; leftMargin: root.leftMargin }
1463+ height: Math.max(units.gu(30), parent.height * .3)
1464+ background: root.background
1465+ opacity: 0
1466+ visible: opacity > 0
1467+ onCloseSpread: priv.goneToSpread = false;
1468+ }
1469+
1470 Spread {
1471 id: spreadItem
1472 objectName: "spreadItem"
1473- anchors.fill: appContainer
1474+ anchors { left: parent.left; bottom: parent.bottom; right: parent.right; top: screensAndWorkspaces.bottom }
1475 leftMargin: root.availableDesktopArea.x
1476 model: root.topLevelSurfaceList
1477 spreadFlickable: floatingFlickable
1478@@ -611,6 +667,83 @@
1479 appRepeater.itemAt(highlightedIndex).close();
1480 }
1481 }
1482+
1483+ FloatingFlickable {
1484+ id: floatingFlickable
1485+ objectName: "spreadFlickable"
1486+ anchors.fill: parent
1487+ enabled: false
1488+ contentWidth: spreadItem.spreadTotalWidth
1489+
1490+ function snap(toIndex) {
1491+ var delegate = appRepeater.itemAt(toIndex)
1492+ var targetContentX = floatingFlickable.contentWidth / spreadItem.totalItemCount * toIndex;
1493+ if (targetContentX - floatingFlickable.contentX > spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) {
1494+ var offset = (spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) - (targetContentX - floatingFlickable.contentX)
1495+ snapAnimation.to = floatingFlickable.contentX - offset;
1496+ snapAnimation.start();
1497+ } else if (targetContentX - floatingFlickable.contentX < spreadItem.leftStackXPos + units.gu(1)) {
1498+ var offset = (spreadItem.leftStackXPos + units.gu(1)) - (targetContentX - floatingFlickable.contentX);
1499+ snapAnimation.to = floatingFlickable.contentX - offset;
1500+ snapAnimation.start();
1501+ }
1502+ }
1503+ UbuntuNumberAnimation {id: snapAnimation; target: floatingFlickable; property: "contentX"}
1504+ }
1505+
1506+ MouseArea {
1507+ id: hoverMouseArea
1508+ objectName: "hoverMouseArea"
1509+ anchors.fill: parent
1510+ propagateComposedEvents: true
1511+ hoverEnabled: true
1512+ enabled: false
1513+ visible: enabled
1514+
1515+ property int scrollAreaWidth: width / 3
1516+ property bool progressiveScrollingEnabled: false
1517+
1518+ onPressed: mouse.accepted = false
1519+
1520+ onMouseXChanged: {
1521+ mouse.accepted = false
1522+
1523+ if (hoverMouseArea.pressed) {
1524+ return;
1525+ }
1526+
1527+ // Find the hovered item and mark it active
1528+ for (var i = appRepeater.count - 1; i >= 0; i--) {
1529+ var appDelegate = appRepeater.itemAt(i);
1530+ var mapped = mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1531+ var itemUnder = appDelegate.childAt(mapped.x, mapped.y);
1532+ if (itemUnder && (itemUnder.objectName === "dragArea" || itemUnder.objectName === "windowInfoItem" || itemUnder.objectName == "closeMouseArea")) {
1533+ spreadItem.highlightedIndex = i;
1534+ break;
1535+ }
1536+ }
1537+
1538+ if (floatingFlickable.contentWidth > floatingFlickable.width) {
1539+ var margins = floatingFlickable.width * 0.05;
1540+
1541+ if (!progressiveScrollingEnabled && mouseX < floatingFlickable.width - scrollAreaWidth) {
1542+ progressiveScrollingEnabled = true
1543+ }
1544+
1545+ // do we need to scroll?
1546+ if (mouseX < scrollAreaWidth + margins) {
1547+ var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
1548+ var contentX = (1 - progress) * (floatingFlickable.contentWidth - floatingFlickable.width)
1549+ floatingFlickable.contentX = Math.max(0, Math.min(floatingFlickable.contentX, contentX))
1550+ }
1551+ if (mouseX > floatingFlickable.width - scrollAreaWidth && progressiveScrollingEnabled) {
1552+ var progress = Math.min(1, (mouseX - (floatingFlickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
1553+ var contentX = progress * (floatingFlickable.contentWidth - floatingFlickable.width)
1554+ floatingFlickable.contentX = Math.min(floatingFlickable.contentWidth - floatingFlickable.width, Math.max(floatingFlickable.contentX, contentX))
1555+ }
1556+ }
1557+ }
1558+ }
1559 }
1560
1561 Connections {
1562@@ -705,6 +838,24 @@
1563 }
1564 }
1565
1566+ MirSurfaceItem {
1567+ id: fakeDragItem
1568+ property real previewScale: .5
1569+ height: (screensAndWorkspaces.height - units.gu(8)) / 2
1570+ // w : h = iw : ih
1571+ width: implicitWidth * height / implicitHeight
1572+ surfaceWidth: -1
1573+ surfaceHeight: -1
1574+ opacity: surface != null ? 1 : 0
1575+ Behavior on opacity { UbuntuNumberAnimation {} }
1576+ visible: opacity > 0
1577+
1578+ Drag.active: surface != null
1579+ Drag.keys: ["application"]
1580+
1581+ z: 1000
1582+ }
1583+
1584 Repeater {
1585 id: appRepeater
1586 model: topLevelSurfaceList
1587@@ -733,6 +884,9 @@
1588 }
1589 z: normalZ
1590
1591+ opacity: fakeDragItem.surface == model.window.surface && fakeDragItem.Drag.active ? 0 : 1
1592+ Behavior on opacity { UbuntuNumberAnimation {} }
1593+
1594 // Normally we want x/y where the surface thinks it is. Width/height of our delegate will
1595 // match what the actual surface size is.
1596 // Don't write to those, they will be set by states
1597@@ -913,7 +1067,6 @@
1598 function claimFocus() {
1599 if (root.state == "spread") {
1600 spreadItem.highlightedIndex = index
1601- priv.goneToSpread = false;
1602 }
1603 if (root.mode == "stagedWithSideStage") {
1604 if (appDelegate.stage == ApplicationInfoInterface.SideStage && !sideStage.shown) {
1605@@ -1247,8 +1400,6 @@
1606 y: spreadMaths.targetY
1607 z: index
1608 height: spreadItem.spreadItemHeight
1609- requestedWidth: decoratedWindow.oldRequestedWidth
1610- requestedHeight: decoratedWindow.oldRequestedHeight
1611 visible: spreadMaths.itemVisible
1612 }
1613 PropertyChanges { target: dragArea; enabled: true }
1614@@ -1268,8 +1419,6 @@
1615 y: stagedRightEdgeMaths.animatedY
1616 z: stagedRightEdgeMaths.animatedZ
1617 height: stagedRightEdgeMaths.animatedHeight
1618- requestedWidth: decoratedWindow.oldRequestedWidth
1619- requestedHeight: decoratedWindow.oldRequestedHeight
1620 visible: appDelegate.x < root.width
1621 }
1622 PropertyChanges {
1623@@ -1299,8 +1448,6 @@
1624 y: windowedRightEdgeMaths.animatedY
1625 z: windowedRightEdgeMaths.animatedZ
1626 height: stagedRightEdgeMaths.animatedHeight
1627- requestedWidth: decoratedWindow.oldRequestedWidth
1628- requestedHeight: decoratedWindow.oldRequestedHeight
1629 }
1630 PropertyChanges {
1631 target: decoratedWindow
1632@@ -1323,10 +1470,14 @@
1633 target: appDelegate
1634 x: stageMaths.itemX
1635 y: root.availableDesktopArea.y
1636+ visuallyMaximized: true
1637+ visible: appDelegate.x < root.width
1638+ }
1639+ PropertyChanges {
1640+ target: appDelegate
1641 requestedWidth: appContainer.width
1642 requestedHeight: root.availableDesktopArea.height
1643- visuallyMaximized: true
1644- visible: appDelegate.x < root.width
1645+ restoreEntryValues: false
1646 }
1647 PropertyChanges {
1648 target: decoratedWindow
1649@@ -1356,10 +1507,14 @@
1650 x: stageMaths.itemX
1651 y: root.availableDesktopArea.y
1652 z: stageMaths.itemZ
1653+ visuallyMaximized: true
1654+ visible: appDelegate.x < root.width
1655+ }
1656+ PropertyChanges {
1657+ target: appDelegate
1658 requestedWidth: stageMaths.itemWidth
1659 requestedHeight: root.availableDesktopArea.height
1660- visuallyMaximized: true
1661- visible: appDelegate.x < root.width
1662+ restoreEntryValues: false
1663 }
1664 PropertyChanges {
1665 target: decoratedWindow
1666@@ -1382,8 +1537,12 @@
1667 requestedY: 0;
1668 visuallyMinimized: false;
1669 visuallyMaximized: true
1670+ }
1671+ PropertyChanges {
1672+ target: appDelegate
1673 requestedWidth: root.availableDesktopArea.width;
1674 requestedHeight: appContainer.height;
1675+ restoreEntryValues: false
1676 }
1677 PropertyChanges { target: touchControls; enabled: true }
1678 },
1679@@ -1393,8 +1552,12 @@
1680 target: appDelegate;
1681 requestedX: 0
1682 requestedY: 0
1683- requestedWidth: appContainer.width;
1684- requestedHeight: appContainer.height;
1685+ }
1686+ PropertyChanges {
1687+ target: appDelegate
1688+ requestedWidth: appContainer.width
1689+ requestedHeight: appContainer.height
1690+ restoreEntryValues: false
1691 }
1692 PropertyChanges { target: decoratedWindow; hasDecoration: false }
1693 },
1694@@ -1409,6 +1572,12 @@
1695 PropertyChanges { target: touchControls; enabled: true }
1696 PropertyChanges { target: resizeArea; enabled: true }
1697 PropertyChanges { target: decoratedWindow; shadowOpacity: .3}
1698+ PropertyChanges {
1699+ target: appDelegate
1700+ requestedWidth: windowedWidth
1701+ requestedHeight: windowedHeight
1702+ restoreEntryValues: false
1703+ }
1704 },
1705 State {
1706 name: "restored";
1707@@ -1509,6 +1678,7 @@
1708 }
1709 }
1710 ]
1711+
1712 transitions: [
1713 Transition {
1714 from: "staged,stagedWithSideStage"
1715@@ -1522,6 +1692,7 @@
1716 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}
1717 },
1718 Transition {
1719+ from: "normal,restored,maximized,maximizedHorizontally,maximizedVertically,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedBottomLeft,maximizedTopRight,maximizedBottomRight,staged,stagedWithSideStage,windowedRightEdge,stagedRightEdge";
1720 to: "spread"
1721 // DecoratedWindow wants the scaleToPreviewSize set before enabling scaleToPreview
1722 PropertyAction { target: appDelegate; properties: "z,visible" }
1723@@ -1628,6 +1799,7 @@
1724 borderThickness: units.gu(2)
1725 enabled: false
1726 visible: enabled
1727+ readyToAssesBounds: !appDelegate._constructing
1728
1729 onPressed: {
1730 appDelegate.activate();
1731@@ -1651,19 +1823,13 @@
1732 width: implicitWidth
1733 height: implicitHeight
1734 highlightSize: windowInfoItem.iconMargin / 2
1735+ boundsItem: root.availableDesktopArea
1736+ panelState: root.panelState
1737 altDragEnabled: root.mode == "windowed"
1738- boundsItem: root.availableDesktopArea
1739- panelState: root.panelState
1740
1741 requestedWidth: appDelegate.requestedWidth
1742 requestedHeight: appDelegate.requestedHeight
1743
1744- property int oldRequestedWidth: -1
1745- property int oldRequestedHeight: -1
1746-
1747- onRequestedWidthChanged: oldRequestedWidth = requestedWidth
1748- onRequestedHeightChanged: oldRequestedHeight = requestedHeight
1749-
1750 onCloseClicked: { appDelegate.close(); }
1751 onMaximizeClicked: {
1752 if (appDelegate.canBeMaximized) {
1753@@ -1744,6 +1910,8 @@
1754 anchors.fill: decoratedWindow
1755 enabled: false
1756 closeable: !appDelegate.isDash
1757+ stage: root
1758+ dragDelegate: fakeDragItem
1759
1760 onClicked: {
1761 spreadItem.highlightedIndex = index;
1762@@ -1786,12 +1954,15 @@
1763 objectName: "closeMouseArea"
1764 anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 + spreadMaths.closeIconOffset }
1765 readonly property var mousePos: hoverMouseArea.mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1766- visible: !appDelegate.isDash && dragArea.distance == 0
1767+ readonly property bool shown: !appDelegate.isDash && dragArea.distance == 0
1768 && index == spreadItem.highlightedIndex
1769 && mousePos.y < (decoratedWindow.height / 3)
1770 && mousePos.y > -units.gu(4)
1771 && mousePos.x > -units.gu(4)
1772 && mousePos.x < (decoratedWindow.width * 2 / 3)
1773+ opacity: shown ? 1 : 0
1774+ visible: opacity > 0
1775+ Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
1776 height: units.gu(6)
1777 width: height
1778
1779@@ -1865,81 +2036,17 @@
1780 panelState: root.panelState
1781 }
1782
1783- MouseArea {
1784- id: hoverMouseArea
1785- objectName: "hoverMouseArea"
1786- anchors.fill: appContainer
1787- propagateComposedEvents: true
1788- hoverEnabled: true
1789- enabled: false
1790- visible: enabled
1791-
1792- property int scrollAreaWidth: width / 3
1793- property bool progressiveScrollingEnabled: false
1794-
1795- onMouseXChanged: {
1796- mouse.accepted = false
1797-
1798- if (hoverMouseArea.pressed) {
1799- return;
1800- }
1801-
1802- // Find the hovered item and mark it active
1803- for (var i = appRepeater.count - 1; i >= 0; i--) {
1804- var appDelegate = appRepeater.itemAt(i);
1805- var mapped = mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1806- var itemUnder = appDelegate.childAt(mapped.x, mapped.y);
1807- if (itemUnder && (itemUnder.objectName === "dragArea" || itemUnder.objectName === "windowInfoItem" || itemUnder.objectName == "closeMouseArea")) {
1808- spreadItem.highlightedIndex = i;
1809- break;
1810- }
1811- }
1812-
1813- if (floatingFlickable.contentWidth > floatingFlickable.width) {
1814- var margins = floatingFlickable.width * 0.05;
1815-
1816- if (!progressiveScrollingEnabled && mouseX < floatingFlickable.width - scrollAreaWidth) {
1817- progressiveScrollingEnabled = true
1818- }
1819-
1820- // do we need to scroll?
1821- if (mouseX < scrollAreaWidth + margins) {
1822- var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
1823- var contentX = (1 - progress) * (floatingFlickable.contentWidth - floatingFlickable.width)
1824- floatingFlickable.contentX = Math.max(0, Math.min(floatingFlickable.contentX, contentX))
1825- }
1826- if (mouseX > floatingFlickable.width - scrollAreaWidth && progressiveScrollingEnabled) {
1827- var progress = Math.min(1, (mouseX - (floatingFlickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
1828- var contentX = progress * (floatingFlickable.contentWidth - floatingFlickable.width)
1829- floatingFlickable.contentX = Math.min(floatingFlickable.contentWidth - floatingFlickable.width, Math.max(floatingFlickable.contentX, contentX))
1830- }
1831- }
1832- }
1833-
1834- onPressed: mouse.accepted = false
1835- }
1836-
1837- FloatingFlickable {
1838- id: floatingFlickable
1839- objectName: "spreadFlickable"
1840- anchors.fill: appContainer
1841- enabled: false
1842- contentWidth: spreadItem.spreadTotalWidth
1843-
1844- function snap(toIndex) {
1845- var delegate = appRepeater.itemAt(toIndex)
1846- var targetContentX = floatingFlickable.contentWidth / spreadItem.totalItemCount * toIndex;
1847- if (targetContentX - floatingFlickable.contentX > spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) {
1848- var offset = (spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) - (targetContentX - floatingFlickable.contentX)
1849- snapAnimation.to = Math.max(0, floatingFlickable.contentX - offset);
1850- snapAnimation.start();
1851- } else if (targetContentX - floatingFlickable.contentX < spreadItem.leftStackXPos + units.gu(1)) {
1852- var offset = (spreadItem.leftStackXPos + units.gu(1)) - (targetContentX - floatingFlickable.contentX);
1853- snapAnimation.to = Math.max(0, floatingFlickable.contentX - offset);
1854- snapAnimation.start();
1855- }
1856- }
1857- UbuntuNumberAnimation {id: snapAnimation; target: floatingFlickable; property: "contentX"}
1858+ WorkspaceSwitcher {
1859+ id: workspaceSwitcher
1860+ anchors.centerIn: parent
1861+ height: units.gu(20)
1862+ width: root.width - units.gu(8)
1863+ background: root.background
1864+ onActiveChanged: {
1865+ if (!active) {
1866+ appContainer.focus = true;
1867+ }
1868+ }
1869 }
1870
1871 PropertyAnimation {
1872
1873=== modified file 'qml/Stage/WindowResizeArea.qml'
1874--- qml/Stage/WindowResizeArea.qml 2017-02-21 15:19:01 +0000
1875+++ qml/Stage/WindowResizeArea.qml 2017-04-06 12:58:37 +0000
1876@@ -36,35 +36,58 @@
1877 property int minWidth: 0
1878 property int minHeight: 0
1879
1880+ property bool readyToAssesBounds: false
1881+ onReadyToAssesBoundsChanged: d.reassesBounds()
1882+
1883 QtObject {
1884 id: d
1885
1886 readonly property int maxSafeInt: 2147483647
1887 readonly property int maxSizeIncrement: units.gu(40)
1888
1889+ function reassesBounds() {
1890+ if (!readyToAssesBounds) return;
1891+
1892+ if (target.windowedWidth < minimumWidth) {
1893+ target.windowedWidth = minimumWidth;
1894+ }
1895+ if (target.windowedHeight < minimumHeight) {
1896+ target.windowedHeight = minimumHeight;
1897+ }
1898+ if (target.windowedHeight < minimumHeight) {
1899+ target.windowedHeight = minimumHeight;
1900+ }
1901+ if (target.windowedWidth > maximumWidth) {
1902+ target.windowedWidth = maximumWidth;
1903+ }
1904+ if (target.windowedHeight > maximumHeight) {
1905+ target.windowedHeight = maximumHeight;
1906+ }
1907+ }
1908+
1909 readonly property int minimumWidth: root.target ? Math.max(root.minWidth, root.target.minimumWidth) : root.minWidth
1910 onMinimumWidthChanged: {
1911- if (target.windowedWidth < minimumWidth) {
1912+ if (readyToAssesBounds && target.windowedWidth < minimumWidth) {
1913 target.windowedWidth = minimumWidth;
1914 }
1915 }
1916 readonly property int minimumHeight: root.target ? Math.max(root.minHeight, root.target.minimumHeight) : root.minHeight
1917 onMinimumHeightChanged: {
1918- if (target.windowedHeight < minimumHeight) {
1919+ if (readyToAssesBounds && target.windowedHeight < minimumHeight) {
1920 target.windowedHeight = minimumHeight;
1921 }
1922 }
1923 readonly property int maximumWidth: root.target && root.target.maximumWidth >= minimumWidth && root.target.maximumWidth > 0
1924 ? root.target.maximumWidth : maxSafeInt
1925 onMaximumWidthChanged: {
1926- if (target.windowedWidth > maximumWidth) {
1927+ if (readyToAssesBounds && target.windowedWidth > maximumWidth) {
1928 target.windowedWidth = maximumWidth;
1929 }
1930 }
1931 readonly property int maximumHeight: root.target && root.target.maximumHeight >= minimumHeight && root.target.maximumHeight > 0
1932 ? root.target.maximumHeight : maxSafeInt
1933 onMaximumHeightChanged: {
1934- if (target.windowedHeight > maximumHeight) {
1935+ if (readyToAssesBounds && target.windowedHeight > maximumHeight) {
1936 target.windowedHeight = maximumHeight;
1937 }
1938 }
1939
1940=== modified file 'qml/Stage/WindowStateSaver.qml'
1941--- qml/Stage/WindowStateSaver.qml 2017-02-24 12:54:39 +0000
1942+++ qml/Stage/WindowStateSaver.qml 2017-04-06 12:58:37 +0000
1943@@ -43,7 +43,10 @@
1944 (target.fullscreen ? 0 : root.leftMargin)); });
1945 target.windowedY = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, screenHeight - target.windowedHeight), minimumY); });
1946
1947- target.updateNormalGeometry();
1948+ target.normalWidth = target.windowedWidth;
1949+ target.normalHeight = target.windowedHeight;
1950+ target.normalX = target.windowedX;
1951+ target.normalY = target.windowedY;
1952
1953 // initialize the x/y to restore to
1954 target.restoredX = target.normalX;
1955
1956=== added file 'qml/Stage/WorkspaceSwitcher.qml'
1957--- qml/Stage/WorkspaceSwitcher.qml 1970-01-01 00:00:00 +0000
1958+++ qml/Stage/WorkspaceSwitcher.qml 2017-04-06 12:58:37 +0000
1959@@ -0,0 +1,196 @@
1960+/*
1961+ * Copyright (C) 2014-2016 Canonical, Ltd.
1962+ *
1963+ * This program is free software; you can redistribute it and/or modify
1964+ * it under the terms of the GNU General Public License as published by
1965+ * the Free Software Foundation; version 3.
1966+ *
1967+ * This program is distributed in the hope that it will be useful,
1968+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1969+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1970+ * GNU General Public License for more details.
1971+ *
1972+ * You should have received a copy of the GNU General Public License
1973+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1974+ */
1975+
1976+import QtQuick 2.4
1977+import Ubuntu.Components 1.3
1978+import "Spread"
1979+import WindowManager 1.0
1980+import Unity.Application 0.1
1981+
1982+Item {
1983+ id: root
1984+
1985+ opacity: d.shown ? 1 : 0
1986+ visible: opacity > 0
1987+ Behavior on opacity { UbuntuNumberAnimation {} }
1988+
1989+ property var screensProxy: Screens.createProxy();
1990+ property string background
1991+
1992+ readonly property alias active: d.active
1993+
1994+ function showLeft() {
1995+ show();
1996+ d.previousWorkspace();
1997+ }
1998+ function showRight() {
1999+ show();
2000+ d.nextWorkspace();
2001+ }
2002+ function showUp() {
2003+ show();
2004+ d.previousScreen();
2005+ }
2006+ function showDown() {
2007+ show();
2008+ d.nextScreen();
2009+ }
2010+
2011+ function show() {
2012+ hideTimer.stop();
2013+ d.altPressed = true;
2014+ d.ctrlPressed = true;
2015+ d.active = true;
2016+ d.shown = true;
2017+ focus = true;
2018+
2019+ d.highlightedScreenIndex = screensProxy.activeScreen;
2020+ var activeScreen = screensProxy.get(screensProxy.activeScreen);
2021+ d.highlightedWorkspaceIndex = activeScreen.workspaces.indexOf(activeScreen.currentWorkspace)
2022+ }
2023+
2024+ QtObject {
2025+ id: d
2026+
2027+ property bool active: false
2028+ property bool shown: false
2029+ property bool altPressed: false
2030+ property bool ctrlPressed: false
2031+
2032+ property int rowHeight: root.height - units.gu(4)
2033+
2034+ property int highlightedScreenIndex: -1
2035+ property int highlightedWorkspaceIndex: -1
2036+
2037+ function previousWorkspace() {
2038+ highlightedWorkspaceIndex = Math.max(highlightedWorkspaceIndex - 1, 0);
2039+ }
2040+ function nextWorkspace() {
2041+ var screen = screensProxy.get(highlightedScreenIndex);
2042+ highlightedWorkspaceIndex = Math.min(highlightedWorkspaceIndex + 1, screen.workspaces.count - 1);
2043+ }
2044+ function previousScreen() {
2045+ highlightedScreenIndex = Math.max(highlightedScreenIndex - 1, 0);
2046+ var screen = screensProxy.get(highlightedScreenIndex);
2047+ highlightedWorkspaceIndex = Math.min(highlightedWorkspaceIndex, screen.workspaces.count - 1)
2048+ }
2049+ function nextScreen() {
2050+ highlightedScreenIndex = Math.min(highlightedScreenIndex + 1, screensProxy.count - 1);
2051+ var screen = screensProxy.get(highlightedScreenIndex);
2052+ highlightedWorkspaceIndex = Math.min(highlightedWorkspaceIndex, screen.workspaces.count - 1)
2053+ }
2054+ }
2055+
2056+ Timer {
2057+ id: hideTimer
2058+ interval: 300
2059+ onTriggered: d.shown = false;
2060+ }
2061+
2062+ Keys.onPressed: {
2063+ switch (event.key) {
2064+ case Qt.Key_Left:
2065+ d.previousWorkspace();
2066+ break;
2067+ case Qt.Key_Right:
2068+ d.nextWorkspace()
2069+ break;
2070+ case Qt.Key_Up:
2071+ d.previousScreen();
2072+ break;
2073+ case Qt.Key_Down:
2074+ d.nextScreen();
2075+ }
2076+ }
2077+ Keys.onReleased: {
2078+ switch (event.key) {
2079+ case Qt.Key_Alt:
2080+ d.altPressed = false;
2081+ break;
2082+ case Qt.Key_Control:
2083+ d.ctrlPressed = false;
2084+ break;
2085+ }
2086+
2087+ if (!d.altPressed && !d.ctrlPressed) {
2088+ d.active = false;
2089+ hideTimer.start();
2090+ focus = false;
2091+ screensProxy.get(d.highlightedScreenIndex).workspaces.get(d.highlightedWorkspaceIndex).activate();
2092+ }
2093+ }
2094+
2095+ UbuntuShape {
2096+ backgroundColor: "#F2111111"
2097+ clip: true
2098+ width: Math.min(parent.width, screensColumn.width + units.gu(4))
2099+ anchors.horizontalCenter: parent.horizontalCenter
2100+ height: parent.height
2101+
2102+ Column {
2103+ id: screensColumn
2104+ anchors {
2105+ top: parent.top; topMargin: units.gu(2) - d.highlightedScreenIndex * (d.rowHeight + screensColumn.spacing)
2106+ left: parent.left; leftMargin: units.gu(2)
2107+ }
2108+ width: screensRepeater.itemAt(d.highlightedScreenIndex).width
2109+ spacing: units.gu(2)
2110+ Behavior on anchors.topMargin { UbuntuNumberAnimation {} }
2111+ Behavior on width { UbuntuNumberAnimation {} }
2112+
2113+ Repeater {
2114+ id: screensRepeater
2115+ model: screensProxy
2116+
2117+ delegate: Item {
2118+ height: d.rowHeight
2119+ width: workspaces.width
2120+ anchors.horizontalCenter: parent.horizontalCenter
2121+ opacity: d.highlightedScreenIndex == index ? 1 : 0
2122+ Behavior on opacity { UbuntuNumberAnimation {} }
2123+
2124+ UbuntuShape {
2125+ id: header
2126+ anchors { left: parent.left; top: parent.top; right: parent.right }
2127+ height: units.gu(4)
2128+ backgroundColor: "white"
2129+
2130+ Label {
2131+ anchors { left: parent.left; top: parent.top; right: parent.right; margins: units.gu(1) }
2132+ text: model.screen.name
2133+ color: UbuntuColors.ash
2134+ }
2135+ }
2136+
2137+ Workspaces {
2138+ id: workspaces
2139+ height: parent.height - header.height - units.gu(2)
2140+ width: Math.min(implicitWidth, root.width - units.gu(4))
2141+
2142+ anchors.bottom: parent.bottom
2143+ anchors.bottomMargin: units.gu(1)
2144+ anchors.horizontalCenter: parent.horizontalCenter
2145+ screen: model.screen
2146+ background: root.background
2147+ selectedIndex: d.highlightedScreenIndex == index ? d.highlightedWorkspaceIndex : -1
2148+
2149+ workspaceModel: model.screen.workspaces
2150+ }
2151+ }
2152+ }
2153+ }
2154+ }
2155+}
2156
2157=== added file 'qml/Stage/graphics/multi-monitor_drop-here.png'
2158Binary files qml/Stage/graphics/multi-monitor_drop-here.png 1970-01-01 00:00:00 +0000 and qml/Stage/graphics/multi-monitor_drop-here.png 2017-04-06 12:58:37 +0000 differ
2159=== added file 'qml/Stage/graphics/multi-monitor_leave.png'
2160Binary files qml/Stage/graphics/multi-monitor_leave.png 1970-01-01 00:00:00 +0000 and qml/Stage/graphics/multi-monitor_leave.png 2017-04-06 12:58:37 +0000 differ
2161=== modified file 'tests/mocks/Unity/Application/MirSurfaceItem.cpp'
2162--- tests/mocks/Unity/Application/MirSurfaceItem.cpp 2017-01-26 11:10:01 +0000
2163+++ tests/mocks/Unity/Application/MirSurfaceItem.cpp 2017-04-06 12:58:37 +0000
2164@@ -189,11 +189,13 @@
2165 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
2166 m_qmlItem->setParentItem(this);
2167
2168- m_qmlItem->setWidth(m_surfaceWidth);
2169- m_qmlItem->setHeight(m_surfaceHeight);
2170-
2171- setImplicitWidth(m_qmlItem->implicitWidth());
2172- setImplicitHeight(m_qmlItem->implicitHeight());
2173+ if (m_fillMode == FillMode::Stretch && width() != 0 && height() != 0) {
2174+ m_qmlItem->setSize(QSize(this->width(), this->height()));
2175+ } else {
2176+ m_qmlItem->setSize(m_qmlSurface->size());
2177+ }
2178+ setImplicitWidth(m_qmlItem->width());
2179+ setImplicitHeight(m_qmlItem->height());
2180
2181 {
2182 QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
2183@@ -308,6 +310,16 @@
2184 connect(m_qmlSurface, &MirSurface::screenshotUrlChanged, this, &MirSurfaceItem::updateScreenshot);
2185 connect(m_qmlSurface, &MirSurface::liveChanged, this, &MirSurfaceItem::liveChanged);
2186 connect(m_qmlSurface, &MirSurface::stateChanged, this, &MirSurfaceItem::surfaceStateChanged);
2187+ connect(m_qmlSurface, &MirSurface::sizeChanged, this, [this] () {
2188+ setImplicitSize(m_qmlSurface->width(), m_qmlSurface->height());
2189+ if (m_fillMode == FillMode::Stretch) {
2190+ m_qmlItem->setSize(QSize(this->width(), this->height()));
2191+ } else {
2192+ m_qmlItem->setSize(m_qmlSurface->size());
2193+ }
2194+ });
2195+ m_surfaceWidth = surface->size().width();
2196+ m_surfaceHeight = surface->size().height();
2197
2198 QUrl qmlComponentFilePath;
2199 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
2200@@ -321,6 +333,7 @@
2201 switch (m_qmlContentComponent->status()) {
2202 case QQmlComponent::Ready:
2203 createQmlContentItem();
2204+ qDebug() << "content created" << m_surfaceWidth << implicitWidth() << width();
2205 break;
2206 case QQmlComponent::Loading:
2207 connect(m_qmlContentComponent, &QQmlComponent::statusChanged,
2208@@ -399,9 +412,15 @@
2209 if (m_qmlSurface && m_surfaceWidth > 0 && m_surfaceHeight > 0) {
2210 m_qmlSurface->resize(m_surfaceWidth, m_surfaceHeight);
2211 if (m_qmlItem) {
2212- m_qmlItem->setWidth(m_surfaceWidth);
2213- m_qmlItem->setHeight(m_surfaceHeight);
2214+ if (m_fillMode == FillMode::Stretch) {
2215+ m_qmlItem->setWidth(width());
2216+ m_qmlItem->setHeight(height());
2217+ } else {
2218+ m_qmlItem->setWidth(m_surfaceWidth);
2219+ m_qmlItem->setHeight(m_surfaceHeight);
2220+ }
2221 }
2222+ qDebug() << this << "setting implicitsize" << m_surfaceWidth << m_surfaceHeight;
2223 setImplicitSize(m_surfaceWidth, m_surfaceHeight);
2224 }
2225 }
2226
2227=== modified file 'tests/mocks/Unity/Application/resources/MirSurfaceItem.qml'
2228--- tests/mocks/Unity/Application/resources/MirSurfaceItem.qml 2016-07-01 15:32:37 +0000
2229+++ tests/mocks/Unity/Application/resources/MirSurfaceItem.qml 2017-04-06 12:58:37 +0000
2230@@ -20,9 +20,6 @@
2231 id: root
2232 color: "pink"
2233
2234- implicitWidth: width
2235- implicitHeight: height
2236-
2237 property alias screenshotSource: screenshotImage.source
2238 property int orientationAngle
2239
2240
2241=== modified file 'tests/mocks/WindowManager/MockScreens.cpp'
2242--- tests/mocks/WindowManager/MockScreens.cpp 2017-04-06 12:58:36 +0000
2243+++ tests/mocks/WindowManager/MockScreens.cpp 2017-04-06 12:58:37 +0000
2244@@ -31,10 +31,11 @@
2245 class MockScreen : public qtmir::Screen
2246 {
2247 Q_OBJECT
2248+ Q_PROPERTY(QString outputTypeName READ outputTypeName NOTIFY outputTypeNameChanged)
2249 public:
2250 MockScreen()
2251 {
2252- m_sizes.append(new qtmir::ScreenMode(50, QSize(640,480)));
2253+ m_sizes.append(new qtmir::ScreenMode(50, QSize(800,568)));
2254 m_sizes.append(new qtmir::ScreenMode(60, QSize(1280,1024)));
2255 m_sizes.append(new qtmir::ScreenMode(60, QSize(1440,900)));
2256 m_sizes.append(new qtmir::ScreenMode(60, QSize(1920,1080)));
2257@@ -51,7 +52,6 @@
2258
2259 if (m_connectedWindow) {
2260 disconnect(m_connectedWindow.data());
2261- m_sizes.takeFirst()->deleteLater();
2262 }
2263
2264 m_connectedWindow = w;
2265@@ -77,7 +77,6 @@
2266 });
2267 if (w->isActive()) setActive(true);
2268
2269- m_sizes.push_front(new qtmir::ScreenMode(50, w->size()));
2270 Q_EMIT availableModesChanged();
2271
2272 }
2273@@ -90,6 +89,7 @@
2274 QSizeF physicalSize() const override { return m_physicalSize; }
2275 qtmir::FormFactor formFactor() const override { return m_formFactor; }
2276 qtmir::OutputTypes outputType() const override { return m_outputType; }
2277+ QString outputTypeName() const { return QStringLiteral("Internal"); }
2278 MirPowerMode powerMode() const override { return m_powerMode; }
2279 Qt::ScreenOrientation orientation() const override { return m_orientation; }
2280 QPoint position() const override { return m_position; }
2281@@ -137,6 +137,9 @@
2282 return true;
2283 }
2284
2285+Q_SIGNALS:
2286+ void outputTypeNameChanged();
2287+
2288 public:
2289 miral::DisplayId m_id;
2290 bool m_active{false};
2291@@ -168,7 +171,7 @@
2292 screen->m_active = i == 0;
2293 screen->m_name = QString("Monitor %1").arg(i);
2294 screen->m_position = QPoint(lastPoint.x(), lastPoint.y());
2295- screen->m_currentModeIndex = 3;
2296+ screen->m_currentModeIndex = 0;
2297 m_mocks.append(screen);
2298
2299 lastPoint.rx() += screen->m_sizes[screen->m_currentModeIndex]->size.width();
2300
2301=== modified file 'tests/qmltests/Stage/tst_ApplicationWindow.qml'
2302--- tests/qmltests/Stage/tst_ApplicationWindow.qml 2017-04-06 12:58:36 +0000
2303+++ tests/qmltests/Stage/tst_ApplicationWindow.qml 2017-04-06 12:58:37 +0000
2304@@ -245,13 +245,12 @@
2305 function test_showSplashUntilAppFullyInit_data() {
2306 return [
2307 {tag: "state=Running then create surface", swapInitOrder: false},
2308-
2309 {tag: "create surface then state=Running", swapInitOrder: true},
2310 ]
2311 }
2312
2313 function test_showSplashUntilAppFullyInit() {
2314- verify(stateGroup.state === "splashScreen");
2315+ verify(stateGroup.state === "splash");
2316
2317 if (data.swapInitOrder) {
2318 surfaceCheckbox.checked = true;
2319@@ -259,7 +258,7 @@
2320 setApplicationState(appRunning);
2321 }
2322
2323- verify(stateGroup.state === "splashScreen");
2324+ verify(stateGroup.state === "splash");
2325
2326 if (data.swapInitOrder) {
2327 setApplicationState(appRunning);
2328@@ -284,27 +283,8 @@
2329 waitUntilTransitionsEnd(stateGroup);
2330 }
2331
2332- function test_killedAppShowsScreenshot() {
2333- surfaceCheckbox.checked = true;
2334- setApplicationState(appRunning);
2335- tryCompare(stateGroup, "state", "surface");
2336-
2337- setApplicationState(appSuspended);
2338-
2339- verify(stateGroup.state === "surface");
2340- verify(fakeApplication.surface !== null);
2341-
2342- // kill it!
2343- surfaceCheckbox.checked = false;
2344- setApplicationState(appStopped);
2345-
2346- tryCompare(stateGroup, "state", "screenshot");
2347- tryCompare(fakeApplication.surfaceList, "count", 0);
2348- }
2349-
2350 function test_restartApp() {
2351- var screenshotImage = findChild(applicationWindow, "screenshotImage");
2352-
2353+ tryCompare(stateGroup, "state", "splash");
2354 surfaceCheckbox.checked = true;
2355 setApplicationState(appRunning);
2356 tryCompare(stateGroup, "state", "surface");
2357@@ -316,26 +296,23 @@
2358 surfaceCheckbox.checked = false;
2359 setApplicationState(appStopped);
2360
2361- tryCompare(stateGroup, "state", "screenshot");
2362 waitUntilTransitionsEnd(stateGroup);
2363- tryCompare(applicationWindow, "surface", null);
2364+ tryCompare(stateGroup, "state", "surface");
2365
2366 // and restart it
2367 setApplicationState(appStarting);
2368
2369 waitUntilTransitionsEnd(stateGroup);
2370- verify(stateGroup.state === "screenshot");
2371- verify(applicationWindow.surface === null);
2372+ verify(stateGroup.state === "surface");
2373
2374 setApplicationState(appRunning);
2375
2376 waitUntilTransitionsEnd(stateGroup);
2377- verify(stateGroup.state === "screenshot");
2378+ verify(stateGroup.state === "surface");
2379
2380 surfaceCheckbox.checked = true;
2381
2382 tryCompare(stateGroup, "state", "surface");
2383- tryCompare(screenshotImage, "status", Image.Null);
2384 }
2385
2386 function test_appCrashed() {
2387@@ -343,13 +320,15 @@
2388 setApplicationState(appRunning);
2389 tryCompare(stateGroup, "state", "surface");
2390 waitUntilTransitionsEnd(stateGroup);
2391+ var surface = applicationWindow.surface;
2392
2393 // oh, it crashed...
2394 surfaceCheckbox.checked = false;
2395 setApplicationState(appStopped);
2396
2397- tryCompare(stateGroup, "state", "screenshot");
2398- tryCompare(applicationWindow, "surface", null);
2399+ waitUntilTransitionsEnd(stateGroup);
2400+ tryCompare(stateGroup, "state", "surface");
2401+ tryCompare(applicationWindow, "surface", surface);
2402 }
2403
2404 function test_keepSurfaceWhileInvisible() {
2405@@ -393,17 +372,6 @@
2406 verify(surfaceItem.touchReleaseCount === 1);
2407 }
2408
2409- function test_showNothingOnSuddenSurfaceLoss() {
2410- surfaceCheckbox.checked = true;
2411- setApplicationState(appRunning);
2412- tryCompare(stateGroup, "state", "surface");
2413- waitUntilTransitionsEnd(stateGroup);
2414-
2415- applicationWindow.surface = null;
2416-
2417- tryCompare(stateGroup, "state", "void");
2418- }
2419-
2420 function test_surfaceActiveFocusFollowsAppWindowInterative() {
2421 applicationWindow.interactive = false;
2422 applicationWindow.interactive = true;
2423
2424=== modified file 'tests/qmltests/Stage/tst_DesktopStage.qml'
2425--- tests/qmltests/Stage/tst_DesktopStage.qml 2017-04-06 12:58:36 +0000
2426+++ tests/qmltests/Stage/tst_DesktopStage.qml 2017-04-06 12:58:37 +0000
2427@@ -558,8 +558,6 @@
2428 var gmailDelegate = startApplication("gmail-webapp");
2429 verify(gmailDelegate);
2430
2431- wait(2000)
2432-
2433 var gmailMaximizeButton = findChild(gmailDelegate, "maximizeWindowButton");
2434 verify(gmailMaximizeButton);
2435 mouseClick(gmailMaximizeButton);
2436
2437=== modified file 'tests/qmltests/Stage/tst_PhoneStage.qml'
2438--- tests/qmltests/Stage/tst_PhoneStage.qml 2017-04-06 12:58:36 +0000
2439+++ tests/qmltests/Stage/tst_PhoneStage.qml 2017-04-06 12:58:37 +0000
2440@@ -304,7 +304,6 @@
2441
2442 performEdgeSwipeToShowAppSpread();
2443
2444- print("tapping", selectedAppDeleage.appId, selectedAppDeleage.visible)
2445 if (selectedAppDeleage.x > stage.width - units.gu(5)) {
2446 touchFlick(stage, stage.width - units.gu(2), stage.height / 2, units.gu(2), stage.height / 2, true, true, units.gu(2), 10)
2447 }
2448
2449=== modified file 'tests/qmltests/Stage/tst_TabletStage.qml'
2450--- tests/qmltests/Stage/tst_TabletStage.qml 2017-04-06 12:58:36 +0000
2451+++ tests/qmltests/Stage/tst_TabletStage.qml 2017-04-06 12:58:37 +0000
2452@@ -66,7 +66,6 @@
2453 }
2454
2455 Component.onCompleted: {
2456- print("starting dash")
2457 ApplicationManager.startApplication("unity8-dash");
2458 }
2459 }
2460@@ -138,7 +137,6 @@
2461 name: "TabletStage"
2462 when: windowShown
2463
2464- readonly property alias topLevelSurfaceList: root.topLevelSurfaceList
2465 property Item sideStage: stage ? findChild(stage, "sideStage") : null
2466
2467 function init() {
2468@@ -167,6 +165,7 @@
2469 waitUntilAppSurfaceShowsUp(topLevelSurfaceList.idAt(0));
2470 sideStage.hideNow()
2471 tryCompare(sideStage, "x", stage.width)
2472+
2473 }
2474
2475 function cleanup() {
2476@@ -228,7 +227,7 @@
2477 tryCompare(stage, "state", "spread");
2478 }
2479
2480- function swipeSurfaceUpwards(surfaceId) {
2481+ function swipeSurfaceDownwards(surfaceId) {
2482 var appWindow = findAppWindowForSurfaceId(surfaceId);
2483 verify(appWindow);
2484
2485@@ -236,7 +235,7 @@
2486 // to not be covered by other surfaces when they're all being shown in the spread
2487 touchFlick(appWindow,
2488 appWindow.width * 0.1, appWindow.height / 2,
2489- appWindow.width * 0.1, -appWindow.height / 2);
2490+ appWindow.width * 0.1, appWindow.height * 1.5);
2491 }
2492
2493 function dragToSideStage(surfaceId) {
2494@@ -334,7 +333,7 @@
2495 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
2496 tryCompare(dragArea, "closeable", true);
2497
2498- swipeSurfaceUpwards(dialerSurfaceId);
2499+ swipeSurfaceDownwards(dialerSurfaceId);
2500
2501 // Check that dialer-app has been closed
2502
2503@@ -345,6 +344,8 @@
2504 tryCompareFunction(function() {
2505 return ApplicationManager.findApplication(dialerCheckBox.appId);
2506 }, null);
2507+
2508+ stage.closeSpread();
2509 }
2510
2511 function test_suspendsAndResumesAppsInMainStage() {
2512@@ -597,7 +598,6 @@
2513
2514 function test_loadSideStageByDraggingFromMainStage() {
2515 sideStage.showNow();
2516- print("sidestage now shown. launching browser")
2517 var webbrowserSurfaceId = topLevelSurfaceList.nextId;
2518 webbrowserCheckBox.checked = true;
2519 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
2520@@ -662,10 +662,6 @@
2521 // simulate the suspended app being killed by the out-of-memory daemon
2522 webbrowserApp.surfaceList.get(0).setLive(false);
2523
2524- // wait until the surface is gone
2525- tryCompare(webbrowserApp.surfaceList, "count", 0);
2526- compare(topLevelSurfaceList.surfaceAt(topLevelSurfaceList.indexForId(webbrowserSurfaceId)), null);
2527-
2528 switchToSurface(webbrowserSurfaceId);
2529
2530 // webbrowser should have been brought to front
2531
2532=== modified file 'tests/qmltests/tst_OrientedShell.qml'
2533--- tests/qmltests/tst_OrientedShell.qml 2017-04-06 12:58:36 +0000
2534+++ tests/qmltests/tst_OrientedShell.qml 2017-04-06 12:58:37 +0000
2535@@ -1521,7 +1521,6 @@
2536 }
2537 var point = surfaceItem.mapToItem(orientedShell, 0, 0);
2538
2539- print("exptectedAngle", expectedAngle, point.x, point.y)
2540 switch (expectedAngle) {
2541 case 0:
2542 return point.x === 0 && point.y === panelState.panelHeight;
2543
2544=== modified file 'tests/qmltests/tst_Shell.qml'
2545--- tests/qmltests/tst_Shell.qml 2017-04-06 12:58:36 +0000
2546+++ tests/qmltests/tst_Shell.qml 2017-04-06 12:58:37 +0000
2547@@ -265,6 +265,7 @@
2548 anchors { left: parent.left; right: parent.right }
2549 activeFocusOnPress: false
2550 model: ["phone", "tablet", "desktop"]
2551+ selectedIndex: 2
2552 onSelectedIndexChanged: {
2553 shellLoader.state = model[selectedIndex];
2554 }
2555@@ -278,6 +279,7 @@
2556 anchors { left: parent.left; right: parent.right }
2557 activeFocusOnPress: false
2558 model: ["phone", "tablet", "desktop"]
2559+ selectedIndex: 0
2560 }
2561 MouseTouchEmulationCheckbox {
2562 id: mouseEmulation
2563@@ -1710,9 +1712,9 @@
2564 var spreadDelegate2 = appRepeater.itemAt(2);
2565 var closeMouseArea = findChild(spreadDelegate2, "closeMouseArea");
2566
2567- // Move the mosue over tile 2 and verify the close button becomes visible
2568+ // Move the mouse over tile 2 and verify the close button becomes visible
2569 var x = 0;
2570- var y = shell.height * .5;
2571+ var y = shell.height * .6;
2572 mouseMove(shell, x, y)
2573 while (spreadItem.highlightedIndex !== 2 && x <= 4000) {
2574 x+=10;
2575@@ -1720,6 +1722,7 @@
2576 wait(0); // spin the loop so bindings get evaluated
2577 }
2578 tryCompare(closeMouseArea, "enabled", true)
2579+ waitForRendering(shell)
2580
2581 var countBeforeClickingCloseButton = topLevelSurfaceList.count;
2582 verify(topLevelSurfaceList.indexForId(surfaceId) === 2);
2583@@ -1761,7 +1764,7 @@
2584
2585 // Move the mouse over tile 2 and verify the highlight becomes visible
2586 var x = 0;
2587- var y = shell.height * (data.tileInfo ? .9 : 0.5)
2588+ var y = shell.height * (data.tileInfo ? .9 : 0.7)
2589 mouseMove(shell, x, y)
2590 while (spreadItem.highlightedIndex !== 2 && x <= 4000) {
2591 x+=10;
2592@@ -1783,6 +1786,15 @@
2593 function test_progressiveAutoScrolling() {
2594 loadDesktopShellWithApps()
2595
2596+ // load some more apps
2597+ ApplicationManager.startApplication("twitter-webapp")
2598+ ApplicationManager.startApplication("ubuntu-weather-app")
2599+ ApplicationManager.startApplication("notes-app")
2600+ for (var i = 0; i < topLevelSurfaceList.count; ++i) {
2601+ waitUntilAppWindowIsFullyLoaded(topLevelSurfaceList.idAt(i));
2602+ }
2603+
2604+
2605 var appRepeater = findInvisibleChild(shell, "appRepeater");
2606 verify(appRepeater !== null);
2607
2608@@ -1795,7 +1807,7 @@
2609
2610 // Move the mouse to the right and make sure it scrolls the Flickable
2611 var x = 0;
2612- var y = shell.height * .5
2613+ var y = shell.height * .7
2614 mouseMove(shell, x, y)
2615 while (x <= shell.width) {
2616 x+=10;
2617@@ -2696,7 +2708,6 @@
2618 dashAppDelegate.windowedY = data.windowY;
2619 topLevelSurfaceList.inputMethodSurface.setInputBounds(Qt.rect(0, 0, 0, 0));
2620 var initialY = dashAppDelegate.y;
2621- print("intial", initialY, "panel", panelState.panelHeight);
2622 verify(initialY > panelState.panelHeight);
2623
2624 topLevelSurfaceList.inputMethodSurface.setInputBounds(Qt.rect(0, root.height / 2, root.width, root.height / 2));

Subscribers

People subscribed via source and target branches