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
=== modified file 'plugins/WindowManager/Screen.h'
--- plugins/WindowManager/Screen.h 2017-04-06 12:58:36 +0000
+++ plugins/WindowManager/Screen.h 2017-04-06 12:58:37 +0000
@@ -16,7 +16,6 @@
16 Q_OBJECT16 Q_OBJECT
1717
18 Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)18 Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
19
20 Q_PROPERTY(bool used READ used NOTIFY usedChanged)19 Q_PROPERTY(bool used READ used NOTIFY usedChanged)
21 Q_PROPERTY(QString name READ name NOTIFY nameChanged)20 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
22 Q_PROPERTY(qtmir::OutputTypes outputType READ outputType NOTIFY outputTypeChanged)21 Q_PROPERTY(qtmir::OutputTypes outputType READ outputType NOTIFY outputTypeChanged)
2322
=== modified file 'plugins/WindowManager/Screens.cpp'
--- plugins/WindowManager/Screens.cpp 2017-04-06 12:58:36 +0000
+++ plugins/WindowManager/Screens.cpp 2017-04-06 12:58:37 +0000
@@ -67,6 +67,16 @@
67 return count();67 return count();
68}68}
6969
70int Screens::indexOf(Screen *screen) const
71{
72 return m_screens.indexOf(screen);
73}
74
75Screen *Screens::get(int index) const
76{
77 return m_screens.at(index);
78}
79
70int Screens::count() const80int Screens::count() const
71{81{
72 return m_screens.size();82 return m_screens.size();
7383
=== modified file 'plugins/WindowManager/Screens.h'
--- plugins/WindowManager/Screens.h 2017-04-06 12:58:36 +0000
+++ plugins/WindowManager/Screens.h 2017-04-06 12:58:37 +0000
@@ -49,6 +49,9 @@
49 QVariant data(const QModelIndex &index, int role = ScreenRole) const override;49 QVariant data(const QModelIndex &index, int role = ScreenRole) const override;
50 int rowCount(const QModelIndex &parent = QModelIndex()) const override;50 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
5151
52 Q_INVOKABLE int indexOf(Screen*) const;
53 Q_INVOKABLE Screen* get(int index) const;
54
52 int count() const;55 int count() const;
53 QVariant activeScreen() const;56 QVariant activeScreen() const;
5457
5558
=== modified file 'plugins/WindowManager/WorkspaceModel.h'
--- plugins/WindowManager/WorkspaceModel.h 2017-04-06 12:58:36 +0000
+++ plugins/WindowManager/WorkspaceModel.h 2017-04-06 12:58:37 +0000
@@ -49,8 +49,8 @@
49 void remove(Workspace* workspace);49 void remove(Workspace* workspace);
50 virtual void move(int from, int to);50 virtual void move(int from, int to);
5151
52 int indexOf(Workspace *workspace) const;52 Q_INVOKABLE int indexOf(Workspace *workspace) const;
53 Workspace* get(int index) const;53 Q_INVOKABLE Workspace* get(int index) const;
5454
55 // From QAbstractItemModel55 // From QAbstractItemModel
56 int rowCount(const QModelIndex &parent = QModelIndex()) const override;56 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
5757
=== modified file 'qml/Shell.qml'
--- qml/Shell.qml 2017-04-06 12:58:36 +0000
+++ qml/Shell.qml 2017-04-06 12:58:37 +0000
@@ -99,7 +99,7 @@
9999
100 readonly property var topLevelSurfaceList: {100 readonly property var topLevelSurfaceList: {
101 if (!WMScreen.currentWorkspace) return null;101 if (!WMScreen.currentWorkspace) return null;
102 return WMScreen.currentWorkspace.windowModel102 return stage.temporarySelectedWorkspace ? stage.temporarySelectedWorkspace.windowModel : WMScreen.currentWorkspace.windowModel
103 }103 }
104104
105 onMainAppChanged: {105 onMainAppChanged: {
@@ -189,11 +189,11 @@
189 }189 }
190190
191 function startApp(appId) {191 function startApp(appId) {
192 if (ApplicationManager.findApplication(appId)) {192 if (!ApplicationManager.findApplication(appId)) {
193 ApplicationManager.requestFocusApplication(appId);
194 } else {
195 ApplicationManager.startApplication(appId);193 ApplicationManager.startApplication(appId);
196 }194 }
195 ApplicationManager.requestFocusApplication(appId);
196 stage.closeSpread();
197 }197 }
198198
199 function startLockedApp(app) {199 function startLockedApp(app) {
200200
=== modified file 'qml/Stage/ApplicationWindow.qml'
--- qml/Stage/ApplicationWindow.qml 2017-02-24 12:37:14 +0000
+++ qml/Stage/ApplicationWindow.qml 2017-04-06 12:58:37 +0000
@@ -52,13 +52,8 @@
52 // other instructions.52 // other instructions.
53 if (surface) {53 if (surface) {
54 surfaceContainer.surface = surface;54 surfaceContainer.surface = surface;
55 d.liveSurface = surface.live;
56 d.hadSurface = false;
57 surfaceInitTimer.start();55 surfaceInitTimer.start();
58 } else {56 } else {
59 if (d.surfaceInitialized) {
60 d.hadSurface = true;
61 }
62 d.surfaceInitialized = false;57 d.surfaceInitialized = false;
63 surfaceContainer.surface = null;58 surfaceContainer.surface = null;
64 }59 }
@@ -67,21 +62,6 @@
67 QtObject {62 QtObject {
68 id: d63 id: d
6964
70 property bool liveSurface: false;
71 property var con: Connections {
72 target: root.surface
73 onLiveChanged: d.liveSurface = root.surface.live
74 }
75 // using liveSurface instead of root.surface.live because with the latter
76 // this expression is not reevaluated when root.surface changes
77 readonly property bool needToTakeScreenshot: root.surface && d.surfaceInitialized && !d.liveSurface
78 && applicationState !== ApplicationInfoInterface.Running
79 onNeedToTakeScreenshotChanged: {
80 if (needToTakeScreenshot && screenshotImage.status === Image.Null) {
81 screenshotImage.take();
82 }
83 }
84
85 // helpers so that we don't have to check for the existence of an application everywhere65 // helpers so that we don't have to check for the existence of an application everywhere
86 // (in order to avoid breaking qml binding due to a javascript exception)66 // (in order to avoid breaking qml binding due to a javascript exception)
87 readonly property string name: root.application ? root.application.name : ""67 readonly property string name: root.application ? root.application.name : ""
@@ -131,34 +111,10 @@
131 id: surfaceInitTimer111 id: surfaceInitTimer
132 interval: 100112 interval: 100
133 onTriggered: {113 onTriggered: {
134 if (root.surface && root.surface.live) {d.surfaceInitialized = true;}114 if (root.surface && root.surface.live) {
135 }115 d.surfaceInitialized = true;
136 }116 d.hadSurface = true;
137117 }
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 }118 }
163 }119 }
164120
@@ -167,7 +123,7 @@
167 visible: active123 visible: active
168 active: false124 active: false
169 anchors.fill: parent125 anchors.fill: parent
170 z: screenshotImage.z + 1126 z: 1
171 sourceComponent: Component {127 sourceComponent: Component {
172 Splash {128 Splash {
173 id: splash129 id: splash
@@ -238,167 +194,14 @@
238 id: stateGroup194 id: stateGroup
239 objectName: "applicationWindowStateGroup"195 objectName: "applicationWindowStateGroup"
240 states: [196 states: [
241 State {197 State{
242 name: "void"
243 when:
244 d.hadSurface && (!root.surface || !d.surfaceInitialized)
245 &&
246 screenshotImage.status !== Image.Ready
247 },
248 State {
249 name: "splashScreen"
250 when:
251 !d.hadSurface && (!root.surface || !d.surfaceInitialized)
252 &&
253 screenshotImage.status !== Image.Ready
254 },
255 State {
256 name: "surface"198 name: "surface"
257 when:199 when: (root.surface && d.surfaceInitialized) || d.hadSurface
258 (root.surface && d.surfaceInitialized)200 },
259 &&201 State {
260 (d.liveSurface ||202 name: "splash"
261 (d.applicationState !== ApplicationInfoInterface.Running203 when: !root.surface && !d.surfaceInitialized && !d.hadSurface
262 && screenshotImage.status !== Image.Ready))204 PropertyChanges { target: splashLoader; active: true }
263 PropertyChanges {
264 target: root
265 implicitWidth: surfaceContainer.implicitWidth
266 implicitHeight: surfaceContainer.implicitHeight
267 }
268 },
269 State {
270 name: "screenshot"
271 when:
272 screenshotImage.status === Image.Ready
273 &&
274 (d.applicationState !== ApplicationInfoInterface.Running
275 || !root.surface || !d.surfaceInitialized)
276 },
277 State {
278 // This is a dead end. From here we expect the surface to be removed from the model
279 // shortly after we stop referencing to it in our SurfaceContainer.
280 name: "closed"
281 when:
282 // The surface died while the application is running. It must have been closed
283 // by the shell or the application decided to destroy it by itself
284 root.surface && d.surfaceInitialized && !d.liveSurface
285 && d.applicationState === ApplicationInfoInterface.Running
286 }
287 ]
288
289 transitions: [
290 Transition {
291 from: ""; to: "splashScreen"
292 PropertyAction { target: splashLoader; property: "active"; value: true }
293 PropertyAction { target: surfaceContainer
294 property: "visible"; value: false }
295 },
296 Transition {
297 from: "splashScreen"; to: "surface"
298 SequentialAnimation {
299 PropertyAction { target: surfaceContainer
300 property: "opacity"; value: 0.0 }
301 PropertyAction { target: surfaceContainer
302 property: "visible"; value: true }
303 UbuntuNumberAnimation { target: surfaceContainer; property: "opacity";
304 from: 0.0; to: 1.0
305 duration: UbuntuAnimation.BriskDuration }
306 ScriptAction { script: {
307 splashLoader.active = false;
308 surfaceIsOldTimer.start();
309 } }
310 }
311 },
312 Transition {
313 from: "surface"; to: "splashScreen"
314 SequentialAnimation {
315 ScriptAction { script: {
316 surfaceIsOldTimer.stop();
317 d.surfaceOldEnoughToBeResized = false;
318 splashLoader.active = true;
319 surfaceContainer.visible = true;
320 } }
321 UbuntuNumberAnimation { target: splashLoader; property: "opacity";
322 from: 0.0; to: 1.0
323 duration: UbuntuAnimation.BriskDuration }
324 PropertyAction { target: surfaceContainer
325 property: "visible"; value: false }
326 }
327 },
328 Transition {
329 from: "surface"; to: "screenshot"
330 SequentialAnimation {
331 ScriptAction { script: {
332 surfaceIsOldTimer.stop();
333 d.surfaceOldEnoughToBeResized = false;
334 screenshotImage.visible = true;
335 } }
336 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
337 from: 0.0; to: 1.0
338 duration: UbuntuAnimation.BriskDuration }
339 ScriptAction { script: {
340 surfaceContainer.visible = false;
341 surfaceContainer.surface = null;
342 d.hadSurface = true;
343 } }
344 }
345 },
346 Transition {
347 from: "screenshot"; to: "surface"
348 SequentialAnimation {
349 PropertyAction { target: surfaceContainer
350 property: "visible"; value: true }
351 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
352 from: 1.0; to: 0.0
353 duration: UbuntuAnimation.BriskDuration }
354 ScriptAction { script: {
355 screenshotImage.visible = false;
356 screenshotImage.source = "";
357 surfaceIsOldTimer.start();
358 } }
359 }
360 },
361 Transition {
362 from: "splashScreen"; to: "screenshot"
363 SequentialAnimation {
364 PropertyAction { target: screenshotImage
365 property: "visible"; value: true }
366 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
367 from: 0.0; to: 1.0
368 duration: UbuntuAnimation.BriskDuration }
369 PropertyAction { target: splashLoader; property: "active"; value: false }
370 }
371 },
372 Transition {
373 from: "surface"; to: "void"
374 ScriptAction { script: {
375 surfaceIsOldTimer.stop();
376 d.surfaceOldEnoughToBeResized = false;
377 surfaceContainer.visible = false;
378 } }
379 },
380 Transition {
381 from: "void"; to: "surface"
382 SequentialAnimation {
383 PropertyAction { target: surfaceContainer; property: "opacity"; value: 0.0 }
384 PropertyAction { target: surfaceContainer; property: "visible"; value: true }
385 UbuntuNumberAnimation { target: surfaceContainer; property: "opacity";
386 from: 0.0; to: 1.0
387 duration: UbuntuAnimation.BriskDuration }
388 ScriptAction { script: {
389 surfaceIsOldTimer.start();
390 } }
391 }
392 },
393 Transition {
394 to: "closed"
395 SequentialAnimation {
396 ScriptAction { script: {
397 surfaceContainer.visible = false;
398 surfaceContainer.surface = null;
399 d.hadSurface = true;
400 } }
401 }
402 }205 }
403 ]206 ]
404 }207 }
405208
=== modified file 'qml/Stage/DecoratedWindow.qml'
--- qml/Stage/DecoratedWindow.qml 2017-04-06 12:58:36 +0000
+++ qml/Stage/DecoratedWindow.qml 2017-04-06 12:58:37 +0000
@@ -126,15 +126,15 @@
126 name: "preview"; when: root.scaleToPreviewProgress > 0126 name: "preview"; when: root.scaleToPreviewProgress > 0
127 PropertyChanges {127 PropertyChanges {
128 target: root128 target: root
129 implicitWidth: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedWidth, root.scaleToPreviewSize, root.scaleToPreviewProgress)129 implicitWidth: MathUtils.linearAnimation(0, 1, applicationWindow.requestedWidth, root.scaleToPreviewSize, root.scaleToPreviewProgress)
130 implicitHeight: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedHeight, root.scaleToPreviewSize, root.scaleToPreviewProgress)130 implicitHeight: MathUtils.linearAnimation(0, 1, applicationWindow.requestedHeight, root.scaleToPreviewSize, root.scaleToPreviewProgress)
131 }131 }
132 PropertyChanges {132 PropertyChanges {
133 target: applicationWindow;133 target: applicationWindow;
134 requestedWidth: applicationWindow.oldRequestedWidth134// requestedWidth: applicationWindow.oldRequestedWidth
135 requestedHeight: applicationWindow.oldRequestedHeight135// requestedHeight: applicationWindow.oldRequestedHeight
136 width: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedWidth, applicationWindow.minSize, root.scaleToPreviewProgress)136 width: MathUtils.linearAnimation(0, 1, applicationWindow.requestedWidth, applicationWindow.minSize, root.scaleToPreviewProgress)
137 height: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedHeight, applicationWindow.minSize, root.scaleToPreviewProgress)137 height: MathUtils.linearAnimation(0, 1, applicationWindow.requestedHeight, applicationWindow.minSize, root.scaleToPreviewProgress)
138 itemScale: root.implicitWidth / width138 itemScale: root.implicitWidth / width
139 }139 }
140 }140 }
@@ -173,10 +173,10 @@
173 height: implicitHeight173 height: implicitHeight
174 requestedHeight: !counterRotate ? root.requestedHeight - d.requestedDecorationHeight : root.requestedWidth174 requestedHeight: !counterRotate ? root.requestedHeight - d.requestedDecorationHeight : root.requestedWidth
175 requestedWidth: !counterRotate ? root.requestedWidth : root.requestedHeight - d.requestedDecorationHeight175 requestedWidth: !counterRotate ? root.requestedWidth : root.requestedHeight - d.requestedDecorationHeight
176 property int oldRequestedWidth: requestedWidth176// property int oldRequestedWidth: requestedWidth
177 property int oldRequestedHeight: requestedHeight177// property int oldRequestedHeight: requestedHeight
178 onRequestedWidthChanged: oldRequestedWidth = requestedWidth178// onRequestedWidthChanged: oldRequestedWidth = requestedWidth
179 onRequestedHeightChanged: oldRequestedHeight = requestedHeight179// onRequestedHeightChanged: oldRequestedHeight = requestedHeight
180 focus: true180 focus: true
181181
182 property real itemScale: 1182 property real itemScale: 1
183183
=== added file 'qml/Stage/Spread/ScreensAndWorkspaces.qml'
--- qml/Stage/Spread/ScreensAndWorkspaces.qml 1970-01-01 00:00:00 +0000
+++ qml/Stage/Spread/ScreensAndWorkspaces.qml 2017-04-06 12:58:37 +0000
@@ -0,0 +1,261 @@
1import QtQuick 2.4
2import Ubuntu.Components 1.3
3import Ubuntu.Components.Popups 1.3
4import WindowManager 1.0
5import Unity.Application 0.1
6import ".."
7
8Item {
9 id: root
10
11 property string background
12
13 property var screensProxy: Screens.createProxy();
14
15 property QtObject activeWorkspace: null
16
17 signal closeSpread();
18
19 Row {
20 id: row
21 anchors.bottom: parent.bottom
22 anchors.horizontalCenter: parent.horizontalCenter
23 Behavior on anchors.horizontalCenterOffset { NumberAnimation { duration: UbuntuAnimation.SlowDuration } }
24 spacing: units.gu(1)
25
26 property var selectedIndex: undefined
27
28 Repeater {
29 model: screensProxy
30
31 delegate: Item {
32 height: root.height - units.gu(6)
33 width: workspaces.width
34
35 Item {
36 id: header
37 anchors { left: parent.left; top: parent.top; right: parent.right }
38 height: units.gu(7)
39 z: 1
40
41 property bool isCurrent: {
42 // another screen is selected.
43 if (row.selectedIndex != undefined && row.selectedIndex != index) return false;
44
45 // this screen is active.
46 if (WMScreen.active && WMScreen.isSameAs(model.screen) && WMScreen.currentWorkspace.isSameAs(activeWorkspace)) return true;
47 if (model.screen.workspaces.indexOf(activeWorkspace) >= 0) return true;
48
49 // not active.
50 return false;
51 }
52
53 property bool isSelected: screenMA.containsMouse
54 onIsSelectedChanged: {
55 if (isSelected) {
56 row.selectedIndex = Qt.binding(function() { return index; });
57 } else if (row.selectedIndex === index) {
58 row.selectedIndex = undefined;
59 }
60 }
61
62 UbuntuShape {
63 anchors.fill: parent
64 backgroundColor: "white"
65 opacity: header.isCurrent || header.isSelected ? 1.0 : 0.5
66 }
67
68 DropArea {
69 anchors.fill: parent
70 keys: ["workspace"]
71
72 onEntered: {
73 workspaces.workspaceModel.insert(workspaces.workspaceModel.count, {text: drag.source.text})
74 drag.source.inDropArea = true;
75 }
76
77 onExited: {
78 workspaces.workspaceModel.remove(workspaces.workspaceModel.count - 1, 1)
79 drag.source.inDropArea = false;
80 }
81
82 onDropped: {
83 drag.source.inDropArea = false;
84 }
85 }
86
87 Column {
88 anchors.fill: parent
89 anchors.margins: units.gu(1)
90
91 Label {
92 text: model.screen.name
93 color: header.isCurrent || header.isSelected ? "black" : "white"
94 }
95
96 Label {
97 text: model.screen.outputTypeName
98 color: header.isCurrent || header.isSelected ? "black" : "white"
99 fontSize: "x-small"
100 }
101
102 Label {
103 text: screen.availableModes[screen.currentModeIndex].size.width + "x" + screen.availableModes[screen.currentModeIndex].size.height
104 color: header.isCurrent || header.isSelected ? "black" : "white"
105 fontSize: "x-small"
106 }
107 }
108
109 Icon {
110 anchors {
111 top: parent.top
112 right: parent.right
113 margins: units.gu(1)
114 }
115 width: units.gu(3)
116 height: width
117 source: "image://theme/select"
118 color: header.isCurrent || header.isSelected ? "black" : "white"
119 visible: model.screen.active
120 }
121
122 MouseArea {
123 id: screenMA
124 hoverEnabled: true
125 anchors.fill: parent
126
127 onClicked: {
128 var obj = screensMenuComponent.createObject(header)
129 obj.open(mouseX, mouseY)
130 }
131 }
132
133 Component {
134 id: screensMenuComponent
135 UbuntuShape {
136 id: screensMenu
137 width: units.gu(20)
138 height: contentColumn.childrenRect.height
139 backgroundColor: "white"
140
141 function open(mouseX, mouseY) {
142 x = Math.max(0, Math.min(mouseX - width / 2, parent.width - width))
143 y = mouseY + units.gu(1)
144 }
145
146 InverseMouseArea {
147 anchors.fill: parent
148 onClicked: {
149 screensMenu.destroy()
150 }
151 }
152
153 Column {
154 id: contentColumn
155 width: parent.width
156 ListItem {
157 height: layout.height
158 highlightColor: "transparent"
159 ListItemLayout {
160 id: layout
161 title.text: qsTr("Add workspace")
162 title.color: "black"
163 }
164 onClicked: {
165 screen.workspaces.addWorkspace();
166 Screens.sync(root.screensProxy);
167 screensMenu.destroy();
168 }
169 }
170 }
171 }
172 }
173 }
174
175 Workspaces {
176 id: workspaces
177 height: parent.height - header.height - units.gu(2)
178 width: {
179 var width = 0;
180 if (screensProxy.count == 1) {
181 width = Math.min(implicitWidth, root.width - units.gu(8));
182 } else {
183 width = Math.min(implicitWidth, model.screen.active ? root.width - units.gu(48) : units.gu(40))
184 }
185 return Math.max(workspaces.minimumWidth, width);
186 }
187
188 Behavior on width { UbuntuNumberAnimation {} }
189 anchors.bottom: parent.bottom
190 anchors.bottomMargin: units.gu(1)
191 anchors.horizontalCenter: parent.horizontalCenter
192 screen: model.screen
193 background: root.background
194
195 workspaceModel: model.screen.workspaces
196 activeWorkspace: root.activeWorkspace
197 readOnly: false
198
199 onCommitScreenSetup: Screens.sync(root.screensProxy)
200 onCloseSpread: root.closeSpread();
201
202 onClicked: {
203 root.activeWorkspace = workspace;
204 }
205 }
206 }
207 }
208 }
209
210 Rectangle {
211 anchors { left: parent.left; top: parent.top; bottom: parent.bottom; topMargin: units.gu(6); bottomMargin: units.gu(1) }
212 width: units.gu(5)
213 color: "#33000000"
214 visible: (row.width - root.width + units.gu(10)) / 2 - row.anchors.horizontalCenterOffset > units.gu(5)
215 MouseArea {
216 id: leftScrollArea
217 anchors.fill: parent
218 hoverEnabled: true
219 onPressed: mouse.accepted = false;
220 }
221 DropArea {
222 id: leftFakeDropArea
223 anchors.fill: parent
224 keys: ["application", "workspace"]
225 }
226 }
227 Rectangle {
228 anchors { right: parent.right; top: parent.top; bottom: parent.bottom; topMargin: units.gu(6); bottomMargin: units.gu(1) }
229 width: units.gu(5)
230 color: "#33000000"
231 visible: (row.width - root.width + units.gu(10)) / 2 + row.anchors.horizontalCenterOffset > units.gu(5)
232 MouseArea {
233 id: rightScrollArea
234 anchors.fill: parent
235 hoverEnabled: true
236 onPressed: mouse.accepted = false;
237 }
238 DropArea {
239 id: rightFakeDropArea
240 anchors.fill: parent
241 keys: ["application", "workspace"]
242 }
243 }
244 Timer {
245 repeat: true
246 running: leftScrollArea.containsMouse || rightScrollArea.containsMouse || leftFakeDropArea.containsDrag || rightFakeDropArea.containsDrag
247 interval: UbuntuAnimation.SlowDuration
248 triggeredOnStart: true
249 onTriggered: {
250 var newOffset = row.anchors.horizontalCenterOffset;
251 var maxOffset = Math.max((row.width - root.width + units.gu(10)) / 2, 0);
252 if (leftScrollArea.containsMouse || leftFakeDropArea.containsDrag) {
253 newOffset += units.gu(20)
254 } else {
255 newOffset -= units.gu(20)
256 }
257 newOffset = Math.max(-maxOffset, Math.min(maxOffset, newOffset));
258 row.anchors.horizontalCenterOffset = newOffset;
259 }
260 }
261}
0262
=== modified file 'qml/Stage/Spread/Spread.qml'
--- qml/Stage/Spread/Spread.qml 2017-03-09 09:31:43 +0000
+++ qml/Stage/Spread/Spread.qml 2017-04-06 12:58:37 +0000
@@ -28,10 +28,10 @@
28 property var spreadFlickable28 property var spreadFlickable
2929
30 // some config options30 // some config options
31 property real contentMargin: 0.16 * root.height31 property real contentMargin: 0.1 * root.height
32 property real contentTopMargin: contentMargin32 property real contentTopMargin: contentMargin + root.y + windowTitle.height
33 property real contentBottomMargin: 0.35 * contentMargin33 property real contentBottomMargin: contentMargin
34 property real windowTitleTopMargin: 3/4 * (contentTopMargin - windowTitle.height)34 property real windowTitleTopMargin: contentMargin - windowTitle.height
35 property int stackItemCount: 335 property int stackItemCount: 3
36 property real leftRotationAngle: 2236 property real leftRotationAngle: 22
37 property real rightRotationAngle: 3237 property real rightRotationAngle: 32
@@ -52,7 +52,7 @@
5252
53 readonly property real spreadWidth: rightStackXPos - leftStackXPos53 readonly property real spreadWidth: rightStackXPos - leftStackXPos
54 readonly property real spreadHeight: root.height54 readonly property real spreadHeight: root.height
55 readonly property real spreadItemHeight: spreadHeight - contentTopMargin - contentBottomMargin55 readonly property real spreadItemHeight: spreadHeight - contentMargin * 2
56 readonly property real spreadItemWidth: stackHeight56 readonly property real spreadItemWidth: stackHeight
5757
58 readonly property real dynamicLeftRotationAngle: leftRotationAngle * rotationAngleFactor58 readonly property real dynamicLeftRotationAngle: leftRotationAngle * rotationAngleFactor
@@ -92,10 +92,9 @@
9292
93 readonly property real visibleItemCount: (spreadWidth / spreadItemWidth) / (1 - itemOverlap)93 readonly property real visibleItemCount: (spreadWidth / spreadItemWidth) / (1 - itemOverlap)
9494
95 readonly property real spreadTotalWidth: Math.max(2,totalItemCount) * spreadWidth / visibleItemCount95 readonly property real spreadTotalWidth: totalItemCount * spreadWidth / visibleItemCount
9696
97 readonly property real centeringOffset: Math.max(spreadWidth - spreadTotalWidth ,0) / (2 * spreadWidth)97 readonly property real centeringOffset: Math.max(spreadWidth - spreadTotalWidth + (leftStackXPos - leftMargin) * 2, 0) / (2 * spreadWidth)
98
9998
100 readonly property var curve: BezierCurve {99 readonly property var curve: BezierCurve {
101 controlPoint2: {'x': 0.19, 'y': 0.00}100 controlPoint2: {'x': 0.19, 'y': 0.00}
102101
=== modified file 'qml/Stage/Spread/SpreadDelegateInputArea.qml'
--- qml/Stage/Spread/SpreadDelegateInputArea.qml 2016-11-07 14:07:45 +0000
+++ qml/Stage/Spread/SpreadDelegateInputArea.qml 2017-04-06 12:58:37 +0000
@@ -28,6 +28,9 @@
2828
29 readonly property alias distance: d.distance29 readonly property alias distance: d.distance
3030
31 property var stage: null
32 property var dragDelegate: null
33
31 signal clicked()34 signal clicked()
32 signal close()35 signal close()
3336
@@ -84,33 +87,27 @@
84 }87 }
85 }88 }
8689
87 // Event eater
88 MouseArea {
89 anchors.fill: parent
90 onClicked: root.clicked()
91 onWheel: wheel.accepted = true
92 }
93
94 MultiPointTouchArea {90 MultiPointTouchArea {
95 anchors.fill: parent91 anchors.fill: parent
96 mouseEnabled: false
97 maximumTouchPoints: 192 maximumTouchPoints: 1
98 property int offset: 093 property int offset: 0
9994
95 // tp.startY seems to be broken for mouse interaction... lets track it ourselves
96 property int startY: 0
97
100 touchPoints: [98 touchPoints: [
101 TouchPoint {99 TouchPoint {
102 id: tp100 id: tp
103 }101 }
104 ]102 ]
105103
106 onCanceled: {104 onPressed: {
107 d.moving = false105 startY = tp.y
108 animation.animate("center");
109 }106 }
110107
111 onTouchUpdated: {108 onTouchUpdated: {
112 if (!d.moving) {109 if (!d.moving || !tp.pressed) {
113 if (Math.abs(tp.startY - tp.y) > d.threshold) {110 if (Math.abs(startY - tp.y) > d.threshold) {
114 d.moving = true;111 d.moving = true;
115 d.dragEvents = []112 d.dragEvents = []
116 offset = tp.y - tp.startY;113 offset = tp.y - tp.startY;
@@ -119,17 +116,32 @@
119 }116 }
120 }117 }
121118
122 if (root.closeable) {119
123 d.distance = tp.y - tp.startY - offset120 var value = tp.y - tp.startY - offset;
121 if (value < 0) {
122 var coords = mapToItem(stage, tp.x, tp.y);
123 dragDelegate.Drag.hotSpot.x = dragDelegate.width / 2
124 dragDelegate.Drag.hotSpot.y = units.gu(2)
125 dragDelegate.x = coords.x - dragDelegate.Drag.hotSpot.x
126 dragDelegate.y = coords.y - dragDelegate.Drag.hotSpot.y
127 dragDelegate.Drag.active = true;
128 dragDelegate.surface = model.window.surface;
129
124 } else {130 } else {
125 var value = tp.y - tp.startY - offset;131 if (root.closeable) {
126 d.distance = Math.sqrt(Math.abs(value)) * (value < 0 ? -1 : 1) * 3132 d.distance = value
133 } else {
134 d.distance = Math.sqrt(Math.abs(value)) * (value < 0 ? -1 : 1) * 3
135 }
127 }136 }
128137
129 d.pushDragEvent(tp);138 d.pushDragEvent(tp);
130 }139 }
131140
132 onReleased: {141 onReleased: {
142 var result = dragDelegate.Drag.drop();
143 dragDelegate.surface = null;
144
133 if (!d.moving) {145 if (!d.moving) {
134 root.clicked()146 root.clicked()
135 }147 }
@@ -149,6 +161,13 @@
149 animation.animate("center")161 animation.animate("center")
150 }162 }
151 }163 }
164
165 onCanceled: {
166 dragDelegate.Drag.active = false;
167 dragDelegate.surface = null;
168 d.moving = false
169 animation.animate("center");
170 }
152 }171 }
153172
154 UbuntuNumberAnimation {173 UbuntuNumberAnimation {
155174
=== added file 'qml/Stage/Spread/WorkspacePreview.qml'
--- qml/Stage/Spread/WorkspacePreview.qml 1970-01-01 00:00:00 +0000
+++ qml/Stage/Spread/WorkspacePreview.qml 2017-04-06 12:58:37 +0000
@@ -0,0 +1,127 @@
1import QtQuick 2.4
2import Ubuntu.Components 1.3
3import Unity.Application 0.1
4import WindowManager 1.0
5import ".."
6import "../../Components"
7
8Item {
9 id: previewSpace
10 clip: true
11
12 property var workspace
13
14 property string background
15 property int screenHeight
16
17 property real previewScale: previewSpace.height / previewSpace.screenHeight
18
19 property bool containsDragLeft: false
20 property bool containsDragRight: false
21 property bool isActive: false
22 property bool isSelected: false
23
24 Image {
25 source: previewSpace.background
26 anchors.fill: parent
27 sourceSize.width: width
28 sourceSize.height: height
29
30 Repeater {
31 id: topLevelSurfaceRepeater
32 model: visible ? workspace.windowModel : null
33 delegate: Item {
34 width: surfaceItem.width
35 height: surfaceItem.height + decorationHeight * previewScale
36 x: model.window.position.x * previewScale
37 y: (model.window.position.y - decorationHeight) * previewScale
38 z: topLevelSurfaceRepeater.count - index
39 visible: model.window.state !== Mir.MinimizedState && model.window.state !== Mir.HiddenState
40
41 property int decorationHeight: units.gu(3)
42
43 WindowDecoration {
44 width: surfaceItem.implicitWidth
45 height: parent.decorationHeight
46 transform: Scale {
47 origin.x: 0
48 origin.y: 0
49 xScale: previewScale
50 yScale: previewScale
51 }
52 title: model.window && model.window.surface ? model.window.surface.name : ""
53 z: 3
54 }
55
56 MirSurfaceItem {
57 id: surfaceItem
58 y: parent.decorationHeight * previewScale
59 width: implicitWidth * previewScale
60 height: implicitHeight * previewScale
61 surfaceWidth: -1
62 surfaceHeight: -1
63 surface: model.window.surface
64 }
65 }
66 }
67
68 }
69
70 Rectangle {
71 anchors.fill: parent
72 border.color: UbuntuColors.ash
73 border.width: units.gu(.5)
74 color: "transparent"
75 visible: previewSpace.isActive
76 }
77
78 Rectangle {
79 anchors.fill: parent
80 border.color: UbuntuColors.blue
81 border.width: units.gu(.5)
82 color: "transparent"
83 visible: previewSpace.isSelected
84 }
85
86 Rectangle {
87 anchors.fill: parent
88 anchors.rightMargin: parent.width / 2
89 color: "#55000000"
90 visible: previewSpace.containsDragLeft
91
92 Column {
93 anchors.centerIn: parent
94 spacing: units.gu(1)
95 Icon {
96 source: "../graphics/multi-monitor_drop-here.png"
97 height: units.gu(4)
98 width: height
99 anchors.horizontalCenter: parent.horizontalCenter
100 }
101 Label {
102 text: qsTr("Drop here")
103 }
104 }
105 }
106
107 Rectangle {
108 anchors.fill: parent
109 anchors.leftMargin: parent.width / 2
110 color: "#55000000"
111 visible: previewSpace.containsDragRight
112
113 Column {
114 anchors.centerIn: parent
115 spacing: units.gu(1)
116 Icon {
117 source: "../graphics/multi-monitor_leave.png"
118 height: units.gu(4)
119 width: height
120 anchors.horizontalCenter: parent.horizontalCenter
121 }
122 Label {
123 text: qsTr("Drop and go")
124 }
125 }
126 }
127}
0128
=== added file 'qml/Stage/Spread/Workspaces.qml'
--- qml/Stage/Spread/Workspaces.qml 1970-01-01 00:00:00 +0000
+++ qml/Stage/Spread/Workspaces.qml 2017-04-06 12:58:37 +0000
@@ -0,0 +1,412 @@
1import QtQuick 2.4
2import Ubuntu.Components 1.3
3import WindowManager 1.0
4import "MathUtils.js" as MathUtils
5import "../../Components"
6
7Item {
8 id: root
9 implicitWidth: listView.contentWidth
10 readonly property int minimumWidth: {
11 var count = Math.min(3, listView.count);
12 return listView.itemWidth * count + listView.spacing * (count - 1)
13 }
14
15 property QtObject screen: null
16 property alias workspaceModel: listView.model
17 property var background // TODO: should be stored in the workspace data
18 property int selectedIndex: -1
19 property bool readOnly: true
20 property var activeWorkspace: null
21
22 signal commitScreenSetup();
23 signal closeSpread();
24 signal clicked(var workspace);
25
26 DropArea {
27 anchors.fill: root
28
29 keys: ['workspace']
30
31 onEntered: {
32 var index = listView.getDropIndex(drag);
33 drag.source.workspace.assign(workspaceModel, index)
34 drag.source.inDropArea = true;
35 }
36
37 onPositionChanged: {
38 var index = listView.getDropIndex(drag);
39 if (listView.dropItemIndex == index) return;
40 listView.model.move(listView.dropItemIndex, index, 1);
41 listView.dropItemIndex = index;
42 }
43
44 onExited: {
45 drag.source.workspace.unassign()
46 listView.dropItemIndex = -1;
47 listView.hoveredWorkspaceIndex = -1;
48 drag.source.inDropArea = false;
49 }
50
51 onDropped: {
52 drop.accept(Qt.MoveAction);
53 listView.dropItemIndex = -1;
54 drag.source.inDropArea = false;
55 }
56 }
57 DropArea {
58 anchors.fill: parent
59 keys: ["application"]
60
61 onPositionChanged: {
62 listView.progressiveScroll(drag.x)
63 listView.updateDropProperties(drag)
64 }
65 onExited: {
66 listView.hoveredWorkspaceIndex = -1
67 }
68 onDropped: {
69 var surface = drag.source.surface;
70 drag.source.surface = null;
71 var workspace = listView.model.get(listView.hoveredWorkspaceIndex);
72 WorkspaceManager.moveSurfaceToWorkspace(surface, workspace);
73 drop.accept(Qt.MoveAction)
74 if (listView.hoveredHalf == "right") {
75 root.closeSpread();
76 workspace.activate();
77 }
78 surface.activate();
79 listView.hoveredWorkspaceIndex = -1
80 }
81 }
82
83 onSelectedIndexChanged: {
84 listView.positionViewAtIndex(selectedIndex, ListView.Center);
85 }
86
87 Item {
88 // We need to clip the listview as it has left/right margins and it would
89 // overlap with items next to it and eat mouse input. However, we can't
90 // just clip at the actual bounds as the delegates have the close button
91 // on hover which reaches a bit outside, so lets some margins for the clipping
92 anchors.fill: parent
93 anchors.margins: -units.gu(2)
94 clip: true
95
96
97 ListView {
98 id: listView
99 anchors {
100 fill: parent
101 topMargin: -parent.anchors.margins
102 bottomMargin: -parent.anchors.margins
103 leftMargin: -itemWidth - parent.anchors.margins
104 rightMargin: -itemWidth - parent.anchors.margins
105 }
106 boundsBehavior: Flickable.StopAtBounds
107
108 Behavior on contentX {
109 SmoothedAnimation { duration: 200 }
110 }
111
112 property var clickedWorkspace: null
113
114 orientation: ListView.Horizontal
115 spacing: units.gu(1)
116 leftMargin: itemWidth
117 rightMargin: itemWidth
118
119 property int screenWidth: screen.availableModes[screen.currentModeIndex].size.width
120 property int screenHeight: screen.availableModes[screen.currentModeIndex].size.height
121 property int itemWidth: height * screenWidth / screenHeight
122 property int foldingAreaWidth: itemWidth / 2
123 property int maxAngle: 40
124
125 property real realContentX: contentX - originX + leftMargin
126 property int dropItemIndex: -1
127 property int hoveredWorkspaceIndex: -1
128 property string hoveredHalf: "" // left or right
129
130 function getDropIndex(drag) {
131 var coords = mapToItem(listView.contentItem, drag.x, drag.y)
132 var index = Math.floor((drag.x + listView.realContentX) / (listView.itemWidth + listView.spacing));
133 if (index < 0) index = 0;
134 var upperLimit = dropItemIndex == -1 ? listView.count : listView.count - 1
135 if (index > upperLimit) index = upperLimit;
136 return index;
137 }
138
139 function updateDropProperties(drag) {
140 var coords = mapToItem(listView.contentItem, drag.x, drag.y)
141 var index = Math.floor(drag.x + listView.realContentX) / (listView.itemWidth + listView.spacing);
142 if (index < 0) {
143 listView.hoveredWorkspaceIndex = -1;
144 listView.hoveredHalf = "";
145 return;
146 }
147
148 var upperLimit = dropItemIndex == -1 ? listView.count : listView.count - 1
149 if (index > upperLimit) index = upperLimit;
150 listView.hoveredWorkspaceIndex = index;
151 var pixelsInTile = (drag.x + listView.realContentX) % (listView.itemWidth + listView.spacing);
152 listView.hoveredHalf = (pixelsInTile / listView.itemWidth) < .5 ? "left" : "right";
153 }
154
155 function progressiveScroll(mouseX) {
156 var progress = Math.max(0, Math.min(1, (mouseX - listView.itemWidth) / (width - listView.leftMargin * 2 - listView.itemWidth * 2)))
157 listView.contentX = listView.originX + (listView.contentWidth - listView.width + listView.leftMargin + listView.rightMargin) * progress - listView.leftMargin
158 }
159
160 displaced: Transition { UbuntuNumberAnimation { properties: "x" } }
161
162 delegate: Item {
163 id: workspaceDelegate
164 objectName: "delegate" + index
165 height: parent.height
166 width: listView.itemWidth
167 Behavior on width { UbuntuNumberAnimation {} }
168 visible: listView.dropItemIndex !== index
169
170 property int itemX: -listView.realContentX + index * (listView.itemWidth + listView.spacing)
171 property int distanceFromLeft: itemX //- listView.leftMargin
172 property int distanceFromRight: listView.width - listView.leftMargin - listView.rightMargin - itemX - listView.itemWidth
173
174 property int itemAngle: {
175 if (index == 0) {
176 if (distanceFromLeft < 0) {
177 var progress = (distanceFromLeft + listView.foldingAreaWidth) / listView.foldingAreaWidth
178 return MathUtils.linearAnimation(1, -1, 0, listView.maxAngle, Math.max(-1, Math.min(1, progress)));
179 }
180 return 0
181 }
182 if (index == listView.count - 1) {
183 if (distanceFromRight < 0) {
184 var progress = (distanceFromRight + listView.foldingAreaWidth) / listView.foldingAreaWidth
185 return MathUtils.linearAnimation(1, -1, 0, -listView.maxAngle, Math.max(-1, Math.min(1, progress)));
186 }
187 return 0
188 }
189
190 if (distanceFromLeft < listView.foldingAreaWidth) {
191 // itemX : 10gu = p : 100
192 var progress = distanceFromLeft / listView.foldingAreaWidth
193 return MathUtils.linearAnimation(1, -1, 0, listView.maxAngle, Math.max(-1, Math.min(1, progress)));
194 }
195 if (distanceFromRight < listView.foldingAreaWidth) {
196 var progress = distanceFromRight / listView.foldingAreaWidth
197 return MathUtils.linearAnimation(1, -1, 0, -listView.maxAngle, Math.max(-1, Math.min(1, progress)));
198 }
199 return 0
200 }
201
202 property int itemOffset: {
203 if (index == 0) {
204 if (distanceFromLeft < 0) {
205 return -distanceFromLeft
206 }
207 return 0
208 }
209 if (index == listView.count - 1) {
210 if (distanceFromRight < 0) {
211 return distanceFromRight
212 }
213 return 0
214 }
215
216 if (itemX < -listView.foldingAreaWidth) {
217 return -itemX
218 }
219 if (distanceFromLeft < listView.foldingAreaWidth) {
220 return (listView.foldingAreaWidth - distanceFromLeft) / 2
221 }
222
223 if (distanceFromRight < -listView.foldingAreaWidth) {
224 return distanceFromRight
225 }
226
227 if (distanceFromRight < listView.foldingAreaWidth) {
228 return -(listView.foldingAreaWidth - distanceFromRight) / 2
229 }
230
231 return 0
232 }
233
234 z: itemOffset < 0 ? itemOffset : -itemOffset
235 transform: [
236 Rotation {
237 angle: itemAngle
238 axis { x: 0; y: 1; z: 0 }
239 origin { x: itemAngle < 0 ? listView.itemWidth : 0; y: height / 2 }
240 },
241 Translate {
242 x: itemOffset
243 }
244 ]
245
246 WorkspacePreview {
247 id: workspacePreview
248 height: listView.height
249 width: listView.itemWidth
250 background: root.background
251 screenHeight: listView.screenHeight
252 containsDragLeft: listView.hoveredWorkspaceIndex == index && listView.hoveredHalf == "left"
253 containsDragRight: listView.hoveredWorkspaceIndex == index && listView.hoveredHalf == "right"
254 isActive: workspace.isSameAs(root.activeWorkspace)
255 isSelected: index === root.selectedIndex
256 workspace: model.workspace
257 }
258 MouseArea {
259 anchors.fill: parent
260 onClicked: {
261 root.clicked(model.workspace)
262 }
263 onDoubleClicked: {
264 model.workspace.activate();
265 root.closeSpread();
266 }
267 }
268
269 MouseArea {
270 id: closeMouseArea
271 objectName: "closeMouseArea"
272 anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 }
273 hoverEnabled: true
274 height: units.gu(4)
275 width: height
276 visible: !root.readOnly && listView.count > 1
277
278 onClicked: {
279 model.workspace.unassign();
280 root.commitScreenSetup();
281 }
282 Image {
283 id: closeImage
284 source: "../graphics/window-close.svg"
285 anchors.fill: closeMouseArea
286 anchors.margins: units.gu(1)
287 sourceSize.width: width
288 sourceSize.height: height
289 readonly property var mousePos: hoverMouseArea.mapToItem(workspaceDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
290 readonly property bool shown: (hoverMouseArea.containsMouse || parent.containsMouse)
291 && mousePos.y < workspaceDelegate.width / 4
292 && mousePos.y > -units.gu(2)
293 && mousePos.x > -units.gu(2)
294 && mousePos.x < workspaceDelegate.height / 4
295 opacity: shown ? 1 : 0
296 visible: opacity > 0
297 Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
298
299 }
300 }
301 }
302
303 MouseArea {
304 id: hoverMouseArea
305 anchors.fill: parent
306 hoverEnabled: true
307 propagateComposedEvents: true
308 anchors.leftMargin: listView.leftMargin
309 anchors.rightMargin: listView.rightMargin
310 enabled: !root.readOnly
311
312 property int draggedIndex: -1
313
314 property int startX: 0
315 property int startY: 0
316
317 onMouseXChanged: {
318 if (!pressed || dragging) {
319 listView.progressiveScroll(mouseX)
320 }
321 }
322 onMouseYChanged: {
323 if (Math.abs(mouseY - startY) > units.gu(3)) {
324 drag.axis = Drag.XAndYAxis;
325 }
326 }
327
328 onReleased: {
329 var result = fakeDragItem.Drag.drop();
330 // if (result == Qt.IgnoreAction) {
331 // WorkspaceManager.destroyWorkspace(fakeDragItem.workspace);
332 // }
333 root.commitScreenSetup();
334 drag.target = null;
335 }
336
337 property bool dragging: drag.active
338 onDraggingChanged: {
339 if (drag.active) {
340 var ws = listView.model.get(draggedIndex);
341 if (ws) ws.unassign();
342 }
343 }
344
345 onPressed: {
346 startX = mouseX;
347 startY = mouseY;
348 if (listView.model.count < 2) return;
349
350 var coords = mapToItem(listView.contentItem, mouseX, mouseY)
351 draggedIndex = listView.indexAt(coords.x, coords.y)
352 var clickedItem = listView.itemAt(coords.x, coords.y)
353
354 var itemCoords = clickedItem.mapToItem(listView, -listView.leftMargin, 0);
355 fakeDragItem.x = itemCoords.x
356 fakeDragItem.y = itemCoords.y
357 fakeDragItem.workspace = listView.model.get(draggedIndex)
358
359 var mouseCoordsInItem = mapToItem(clickedItem, mouseX, mouseY);
360 fakeDragItem.Drag.hotSpot.x = mouseCoordsInItem.x
361 fakeDragItem.Drag.hotSpot.y = mouseCoordsInItem.y
362
363 drag.axis = Drag.YAxis;
364 drag.target = fakeDragItem;
365 }
366
367 WorkspacePreview {
368 id: fakeDragItem
369 height: listView.height
370 width: listView.itemWidth
371 background: root.background
372 screenHeight: screen.availableModes[screen.currentModeIndex].size.height
373 visible: Drag.active
374
375 Drag.active: hoverMouseArea.drag.active
376 Drag.keys: ['workspace']
377
378 property bool inDropArea: false
379
380 Rectangle {
381 anchors.fill: parent
382 color: "#33000000"
383 opacity: parent.inDropArea ? 0 : 1
384 Behavior on opacity { UbuntuNumberAnimation { } }
385 Rectangle {
386 anchors.centerIn: parent
387 width: units.gu(6)
388 height: units.gu(6)
389 radius: width / 2
390 color: "#aa000000"
391 }
392
393 Icon {
394 height: units.gu(3)
395 width: height
396 anchors.centerIn: parent
397 name: "edit-delete"
398 color: "white"
399 }
400 }
401
402 states: [
403 State {
404 when: fakeDragItem.Drag.active
405 ParentChange { target: fakeDragItem; parent: shell }
406 }
407 ]
408 }
409 }
410 }
411 }
412}
0413
=== modified file 'qml/Stage/Stage.qml'
--- qml/Stage/Stage.qml 2017-04-06 12:58:36 +0000
+++ qml/Stage/Stage.qml 2017-04-06 12:58:37 +0000
@@ -50,6 +50,8 @@
50 property Item availableDesktopArea50 property Item availableDesktopArea
51 property PanelState panelState51 property PanelState panelState
5252
53 readonly property var temporarySelectedWorkspace: state == "spread" ? screensAndWorkspaces.activeWorkspace : null
54
53 // Configuration55 // Configuration
54 property string mode: "staged"56 property string mode: "staged"
5557
@@ -138,6 +140,7 @@
138 function updateFocusedAppOrientationAnimated() { /* TODO */}140 function updateFocusedAppOrientationAnimated() { /* TODO */}
139141
140 function closeSpread() {142 function closeSpread() {
143 spreadItem.highlightedIndex = -1;
141 priv.goneToSpread = false;144 priv.goneToSpread = false;
142 }145 }
143146
@@ -244,6 +247,43 @@
244 }247 }
245 }248 }
246249
250 GlobalShortcut {
251 id: showWorkspaceSwitcherShortcutLeft
252 shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Left
253 active: !workspaceSwitcher.active
254 onTriggered: {
255 root.focus = true;
256 workspaceSwitcher.showLeft()
257 }
258 }
259 GlobalShortcut {
260 id: showWorkspaceSwitcherShortcutRight
261 shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Right
262 active: !workspaceSwitcher.active
263 onTriggered: {
264 root.focus = true;
265 workspaceSwitcher.showRight()
266 }
267 }
268 GlobalShortcut {
269 id: showWorkspaceSwitcherShortcutUp
270 shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Up
271 active: !workspaceSwitcher.active
272 onTriggered: {
273 root.focus = true;
274 workspaceSwitcher.showUp()
275 }
276 }
277 GlobalShortcut {
278 id: showWorkspaceSwitcherShortcutDown
279 shortcut: Qt.AltModifier|Qt.ControlModifier|Qt.Key_Down
280 active: !workspaceSwitcher.active
281 onTriggered: {
282 root.focus = true;
283 workspaceSwitcher.showDown()
284 }
285 }
286
247 QtObject {287 QtObject {
248 id: priv288 id: priv
249 objectName: "DesktopStagePrivate"289 objectName: "DesktopStagePrivate"
@@ -379,7 +419,7 @@
379 readonly property real windowDecorationHeight: units.gu(3)419 readonly property real windowDecorationHeight: units.gu(3)
380 }420 }
381421
382 Component.onCompleted: priv.updateMainAndSideStageIndexes();422 Component.onCompleted: priv.updateMainAndSideStageIndexes()
383423
384 Connections {424 Connections {
385 target: panelState425 target: panelState
@@ -484,6 +524,7 @@
484 PropertyChanges { target: cancelSpreadMouseArea; enabled: true }524 PropertyChanges { target: cancelSpreadMouseArea; enabled: true }
485 PropertyChanges { target: blurLayer; visible: true; blurRadius: 32; brightness: .65; opacity: 1 }525 PropertyChanges { target: blurLayer; visible: true; blurRadius: 32; brightness: .65; opacity: 1 }
486 PropertyChanges { target: wallpaper; visible: false }526 PropertyChanges { target: wallpaper; visible: false }
527 PropertyChanges { target: screensAndWorkspaces; opacity: 1 }
487 },528 },
488 State {529 State {
489 name: "stagedRightEdge"; when: root.spreadEnabled && (rightEdgeDragArea.dragging || rightEdgePushProgress > 0) && root.mode == "staged"530 name: "stagedRightEdge"; when: root.spreadEnabled && (rightEdgeDragArea.dragging || rightEdgePushProgress > 0) && root.mode == "staged"
@@ -531,11 +572,16 @@
531 Transition {572 Transition {
532 from: "stagedRightEdge,sideStagedRightEdge,windowedRightEdge"; to: "spread"573 from: "stagedRightEdge,sideStagedRightEdge,windowedRightEdge"; to: "spread"
533 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: -1 }574 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: -1 }
575 PropertyAction { target: screensAndWorkspaces; property: "activeWorkspace"; value: WMScreen.currentWorkspace }
534 PropertyAnimation { target: blurLayer; properties: "brightness,blurRadius"; duration: priv.animationDuration }576 PropertyAnimation { target: blurLayer; properties: "brightness,blurRadius"; duration: priv.animationDuration }
577 UbuntuNumberAnimation { target: screensAndWorkspaces; property: "opacity"; duration: priv.animationDuration }
535 },578 },
536 Transition {579 Transition {
537 to: "spread"580 to: "spread"
581 PropertyAction { target: screensAndWorkspaces; property: "activeWorkspace"; value: WMScreen.currentWorkspace }
538 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: appRepeater.count > 1 ? 1 : 0 }582 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: appRepeater.count > 1 ? 1 : 0 }
583 PropertyAction { target: floatingFlickable; property: "contentX"; value: 0 }
584 UbuntuNumberAnimation { target: screensAndWorkspaces; property: "opacity"; duration: priv.animationDuration }
539 },585 },
540 Transition {586 Transition {
541 from: "spread"587 from: "spread"
@@ -593,10 +639,20 @@
593 visible: false639 visible: false
594 }640 }
595641
642 ScreensAndWorkspaces {
643 id: screensAndWorkspaces
644 anchors { left: parent.left; top: parent.top; right: parent.right; leftMargin: root.leftMargin }
645 height: Math.max(units.gu(30), parent.height * .3)
646 background: root.background
647 opacity: 0
648 visible: opacity > 0
649 onCloseSpread: priv.goneToSpread = false;
650 }
651
596 Spread {652 Spread {
597 id: spreadItem653 id: spreadItem
598 objectName: "spreadItem"654 objectName: "spreadItem"
599 anchors.fill: appContainer655 anchors { left: parent.left; bottom: parent.bottom; right: parent.right; top: screensAndWorkspaces.bottom }
600 leftMargin: root.availableDesktopArea.x656 leftMargin: root.availableDesktopArea.x
601 model: root.topLevelSurfaceList657 model: root.topLevelSurfaceList
602 spreadFlickable: floatingFlickable658 spreadFlickable: floatingFlickable
@@ -611,6 +667,83 @@
611 appRepeater.itemAt(highlightedIndex).close();667 appRepeater.itemAt(highlightedIndex).close();
612 }668 }
613 }669 }
670
671 FloatingFlickable {
672 id: floatingFlickable
673 objectName: "spreadFlickable"
674 anchors.fill: parent
675 enabled: false
676 contentWidth: spreadItem.spreadTotalWidth
677
678 function snap(toIndex) {
679 var delegate = appRepeater.itemAt(toIndex)
680 var targetContentX = floatingFlickable.contentWidth / spreadItem.totalItemCount * toIndex;
681 if (targetContentX - floatingFlickable.contentX > spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) {
682 var offset = (spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) - (targetContentX - floatingFlickable.contentX)
683 snapAnimation.to = floatingFlickable.contentX - offset;
684 snapAnimation.start();
685 } else if (targetContentX - floatingFlickable.contentX < spreadItem.leftStackXPos + units.gu(1)) {
686 var offset = (spreadItem.leftStackXPos + units.gu(1)) - (targetContentX - floatingFlickable.contentX);
687 snapAnimation.to = floatingFlickable.contentX - offset;
688 snapAnimation.start();
689 }
690 }
691 UbuntuNumberAnimation {id: snapAnimation; target: floatingFlickable; property: "contentX"}
692 }
693
694 MouseArea {
695 id: hoverMouseArea
696 objectName: "hoverMouseArea"
697 anchors.fill: parent
698 propagateComposedEvents: true
699 hoverEnabled: true
700 enabled: false
701 visible: enabled
702
703 property int scrollAreaWidth: width / 3
704 property bool progressiveScrollingEnabled: false
705
706 onPressed: mouse.accepted = false
707
708 onMouseXChanged: {
709 mouse.accepted = false
710
711 if (hoverMouseArea.pressed) {
712 return;
713 }
714
715 // Find the hovered item and mark it active
716 for (var i = appRepeater.count - 1; i >= 0; i--) {
717 var appDelegate = appRepeater.itemAt(i);
718 var mapped = mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
719 var itemUnder = appDelegate.childAt(mapped.x, mapped.y);
720 if (itemUnder && (itemUnder.objectName === "dragArea" || itemUnder.objectName === "windowInfoItem" || itemUnder.objectName == "closeMouseArea")) {
721 spreadItem.highlightedIndex = i;
722 break;
723 }
724 }
725
726 if (floatingFlickable.contentWidth > floatingFlickable.width) {
727 var margins = floatingFlickable.width * 0.05;
728
729 if (!progressiveScrollingEnabled && mouseX < floatingFlickable.width - scrollAreaWidth) {
730 progressiveScrollingEnabled = true
731 }
732
733 // do we need to scroll?
734 if (mouseX < scrollAreaWidth + margins) {
735 var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
736 var contentX = (1 - progress) * (floatingFlickable.contentWidth - floatingFlickable.width)
737 floatingFlickable.contentX = Math.max(0, Math.min(floatingFlickable.contentX, contentX))
738 }
739 if (mouseX > floatingFlickable.width - scrollAreaWidth && progressiveScrollingEnabled) {
740 var progress = Math.min(1, (mouseX - (floatingFlickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
741 var contentX = progress * (floatingFlickable.contentWidth - floatingFlickable.width)
742 floatingFlickable.contentX = Math.min(floatingFlickable.contentWidth - floatingFlickable.width, Math.max(floatingFlickable.contentX, contentX))
743 }
744 }
745 }
746 }
614 }747 }
615748
616 Connections {749 Connections {
@@ -705,6 +838,24 @@
705 }838 }
706 }839 }
707840
841 MirSurfaceItem {
842 id: fakeDragItem
843 property real previewScale: .5
844 height: (screensAndWorkspaces.height - units.gu(8)) / 2
845 // w : h = iw : ih
846 width: implicitWidth * height / implicitHeight
847 surfaceWidth: -1
848 surfaceHeight: -1
849 opacity: surface != null ? 1 : 0
850 Behavior on opacity { UbuntuNumberAnimation {} }
851 visible: opacity > 0
852
853 Drag.active: surface != null
854 Drag.keys: ["application"]
855
856 z: 1000
857 }
858
708 Repeater {859 Repeater {
709 id: appRepeater860 id: appRepeater
710 model: topLevelSurfaceList861 model: topLevelSurfaceList
@@ -733,6 +884,9 @@
733 }884 }
734 z: normalZ885 z: normalZ
735886
887 opacity: fakeDragItem.surface == model.window.surface && fakeDragItem.Drag.active ? 0 : 1
888 Behavior on opacity { UbuntuNumberAnimation {} }
889
736 // Normally we want x/y where the surface thinks it is. Width/height of our delegate will890 // Normally we want x/y where the surface thinks it is. Width/height of our delegate will
737 // match what the actual surface size is.891 // match what the actual surface size is.
738 // Don't write to those, they will be set by states892 // Don't write to those, they will be set by states
@@ -913,7 +1067,6 @@
913 function claimFocus() {1067 function claimFocus() {
914 if (root.state == "spread") {1068 if (root.state == "spread") {
915 spreadItem.highlightedIndex = index1069 spreadItem.highlightedIndex = index
916 priv.goneToSpread = false;
917 }1070 }
918 if (root.mode == "stagedWithSideStage") {1071 if (root.mode == "stagedWithSideStage") {
919 if (appDelegate.stage == ApplicationInfoInterface.SideStage && !sideStage.shown) {1072 if (appDelegate.stage == ApplicationInfoInterface.SideStage && !sideStage.shown) {
@@ -1247,8 +1400,6 @@
1247 y: spreadMaths.targetY1400 y: spreadMaths.targetY
1248 z: index1401 z: index
1249 height: spreadItem.spreadItemHeight1402 height: spreadItem.spreadItemHeight
1250 requestedWidth: decoratedWindow.oldRequestedWidth
1251 requestedHeight: decoratedWindow.oldRequestedHeight
1252 visible: spreadMaths.itemVisible1403 visible: spreadMaths.itemVisible
1253 }1404 }
1254 PropertyChanges { target: dragArea; enabled: true }1405 PropertyChanges { target: dragArea; enabled: true }
@@ -1268,8 +1419,6 @@
1268 y: stagedRightEdgeMaths.animatedY1419 y: stagedRightEdgeMaths.animatedY
1269 z: stagedRightEdgeMaths.animatedZ1420 z: stagedRightEdgeMaths.animatedZ
1270 height: stagedRightEdgeMaths.animatedHeight1421 height: stagedRightEdgeMaths.animatedHeight
1271 requestedWidth: decoratedWindow.oldRequestedWidth
1272 requestedHeight: decoratedWindow.oldRequestedHeight
1273 visible: appDelegate.x < root.width1422 visible: appDelegate.x < root.width
1274 }1423 }
1275 PropertyChanges {1424 PropertyChanges {
@@ -1299,8 +1448,6 @@
1299 y: windowedRightEdgeMaths.animatedY1448 y: windowedRightEdgeMaths.animatedY
1300 z: windowedRightEdgeMaths.animatedZ1449 z: windowedRightEdgeMaths.animatedZ
1301 height: stagedRightEdgeMaths.animatedHeight1450 height: stagedRightEdgeMaths.animatedHeight
1302 requestedWidth: decoratedWindow.oldRequestedWidth
1303 requestedHeight: decoratedWindow.oldRequestedHeight
1304 }1451 }
1305 PropertyChanges {1452 PropertyChanges {
1306 target: decoratedWindow1453 target: decoratedWindow
@@ -1323,10 +1470,14 @@
1323 target: appDelegate1470 target: appDelegate
1324 x: stageMaths.itemX1471 x: stageMaths.itemX
1325 y: root.availableDesktopArea.y1472 y: root.availableDesktopArea.y
1473 visuallyMaximized: true
1474 visible: appDelegate.x < root.width
1475 }
1476 PropertyChanges {
1477 target: appDelegate
1326 requestedWidth: appContainer.width1478 requestedWidth: appContainer.width
1327 requestedHeight: root.availableDesktopArea.height1479 requestedHeight: root.availableDesktopArea.height
1328 visuallyMaximized: true1480 restoreEntryValues: false
1329 visible: appDelegate.x < root.width
1330 }1481 }
1331 PropertyChanges {1482 PropertyChanges {
1332 target: decoratedWindow1483 target: decoratedWindow
@@ -1356,10 +1507,14 @@
1356 x: stageMaths.itemX1507 x: stageMaths.itemX
1357 y: root.availableDesktopArea.y1508 y: root.availableDesktopArea.y
1358 z: stageMaths.itemZ1509 z: stageMaths.itemZ
1510 visuallyMaximized: true
1511 visible: appDelegate.x < root.width
1512 }
1513 PropertyChanges {
1514 target: appDelegate
1359 requestedWidth: stageMaths.itemWidth1515 requestedWidth: stageMaths.itemWidth
1360 requestedHeight: root.availableDesktopArea.height1516 requestedHeight: root.availableDesktopArea.height
1361 visuallyMaximized: true1517 restoreEntryValues: false
1362 visible: appDelegate.x < root.width
1363 }1518 }
1364 PropertyChanges {1519 PropertyChanges {
1365 target: decoratedWindow1520 target: decoratedWindow
@@ -1382,8 +1537,12 @@
1382 requestedY: 0;1537 requestedY: 0;
1383 visuallyMinimized: false;1538 visuallyMinimized: false;
1384 visuallyMaximized: true1539 visuallyMaximized: true
1540 }
1541 PropertyChanges {
1542 target: appDelegate
1385 requestedWidth: root.availableDesktopArea.width;1543 requestedWidth: root.availableDesktopArea.width;
1386 requestedHeight: appContainer.height;1544 requestedHeight: appContainer.height;
1545 restoreEntryValues: false
1387 }1546 }
1388 PropertyChanges { target: touchControls; enabled: true }1547 PropertyChanges { target: touchControls; enabled: true }
1389 },1548 },
@@ -1393,8 +1552,12 @@
1393 target: appDelegate;1552 target: appDelegate;
1394 requestedX: 01553 requestedX: 0
1395 requestedY: 01554 requestedY: 0
1396 requestedWidth: appContainer.width;1555 }
1397 requestedHeight: appContainer.height;1556 PropertyChanges {
1557 target: appDelegate
1558 requestedWidth: appContainer.width
1559 requestedHeight: appContainer.height
1560 restoreEntryValues: false
1398 }1561 }
1399 PropertyChanges { target: decoratedWindow; hasDecoration: false }1562 PropertyChanges { target: decoratedWindow; hasDecoration: false }
1400 },1563 },
@@ -1409,6 +1572,12 @@
1409 PropertyChanges { target: touchControls; enabled: true }1572 PropertyChanges { target: touchControls; enabled: true }
1410 PropertyChanges { target: resizeArea; enabled: true }1573 PropertyChanges { target: resizeArea; enabled: true }
1411 PropertyChanges { target: decoratedWindow; shadowOpacity: .3}1574 PropertyChanges { target: decoratedWindow; shadowOpacity: .3}
1575 PropertyChanges {
1576 target: appDelegate
1577 requestedWidth: windowedWidth
1578 requestedHeight: windowedHeight
1579 restoreEntryValues: false
1580 }
1412 },1581 },
1413 State {1582 State {
1414 name: "restored";1583 name: "restored";
@@ -1509,6 +1678,7 @@
1509 }1678 }
1510 }1679 }
1511 ]1680 ]
1681
1512 transitions: [1682 transitions: [
1513 Transition {1683 Transition {
1514 from: "staged,stagedWithSideStage"1684 from: "staged,stagedWithSideStage"
@@ -1522,6 +1692,7 @@
1522 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}1692 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}
1523 },1693 },
1524 Transition {1694 Transition {
1695 from: "normal,restored,maximized,maximizedHorizontally,maximizedVertically,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedBottomLeft,maximizedTopRight,maximizedBottomRight,staged,stagedWithSideStage,windowedRightEdge,stagedRightEdge";
1525 to: "spread"1696 to: "spread"
1526 // DecoratedWindow wants the scaleToPreviewSize set before enabling scaleToPreview1697 // DecoratedWindow wants the scaleToPreviewSize set before enabling scaleToPreview
1527 PropertyAction { target: appDelegate; properties: "z,visible" }1698 PropertyAction { target: appDelegate; properties: "z,visible" }
@@ -1628,6 +1799,7 @@
1628 borderThickness: units.gu(2)1799 borderThickness: units.gu(2)
1629 enabled: false1800 enabled: false
1630 visible: enabled1801 visible: enabled
1802 readyToAssesBounds: !appDelegate._constructing
16311803
1632 onPressed: {1804 onPressed: {
1633 appDelegate.activate();1805 appDelegate.activate();
@@ -1651,19 +1823,13 @@
1651 width: implicitWidth1823 width: implicitWidth
1652 height: implicitHeight1824 height: implicitHeight
1653 highlightSize: windowInfoItem.iconMargin / 21825 highlightSize: windowInfoItem.iconMargin / 2
1826 boundsItem: root.availableDesktopArea
1827 panelState: root.panelState
1654 altDragEnabled: root.mode == "windowed"1828 altDragEnabled: root.mode == "windowed"
1655 boundsItem: root.availableDesktopArea
1656 panelState: root.panelState
16571829
1658 requestedWidth: appDelegate.requestedWidth1830 requestedWidth: appDelegate.requestedWidth
1659 requestedHeight: appDelegate.requestedHeight1831 requestedHeight: appDelegate.requestedHeight
16601832
1661 property int oldRequestedWidth: -1
1662 property int oldRequestedHeight: -1
1663
1664 onRequestedWidthChanged: oldRequestedWidth = requestedWidth
1665 onRequestedHeightChanged: oldRequestedHeight = requestedHeight
1666
1667 onCloseClicked: { appDelegate.close(); }1833 onCloseClicked: { appDelegate.close(); }
1668 onMaximizeClicked: {1834 onMaximizeClicked: {
1669 if (appDelegate.canBeMaximized) {1835 if (appDelegate.canBeMaximized) {
@@ -1744,6 +1910,8 @@
1744 anchors.fill: decoratedWindow1910 anchors.fill: decoratedWindow
1745 enabled: false1911 enabled: false
1746 closeable: !appDelegate.isDash1912 closeable: !appDelegate.isDash
1913 stage: root
1914 dragDelegate: fakeDragItem
17471915
1748 onClicked: {1916 onClicked: {
1749 spreadItem.highlightedIndex = index;1917 spreadItem.highlightedIndex = index;
@@ -1786,12 +1954,15 @@
1786 objectName: "closeMouseArea"1954 objectName: "closeMouseArea"
1787 anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 + spreadMaths.closeIconOffset }1955 anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 + spreadMaths.closeIconOffset }
1788 readonly property var mousePos: hoverMouseArea.mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)1956 readonly property var mousePos: hoverMouseArea.mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1789 visible: !appDelegate.isDash && dragArea.distance == 01957 readonly property bool shown: !appDelegate.isDash && dragArea.distance == 0
1790 && index == spreadItem.highlightedIndex1958 && index == spreadItem.highlightedIndex
1791 && mousePos.y < (decoratedWindow.height / 3)1959 && mousePos.y < (decoratedWindow.height / 3)
1792 && mousePos.y > -units.gu(4)1960 && mousePos.y > -units.gu(4)
1793 && mousePos.x > -units.gu(4)1961 && mousePos.x > -units.gu(4)
1794 && mousePos.x < (decoratedWindow.width * 2 / 3)1962 && mousePos.x < (decoratedWindow.width * 2 / 3)
1963 opacity: shown ? 1 : 0
1964 visible: opacity > 0
1965 Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
1795 height: units.gu(6)1966 height: units.gu(6)
1796 width: height1967 width: height
17971968
@@ -1865,81 +2036,17 @@
1865 panelState: root.panelState2036 panelState: root.panelState
1866 }2037 }
18672038
1868 MouseArea {2039 WorkspaceSwitcher {
1869 id: hoverMouseArea2040 id: workspaceSwitcher
1870 objectName: "hoverMouseArea"2041 anchors.centerIn: parent
1871 anchors.fill: appContainer2042 height: units.gu(20)
1872 propagateComposedEvents: true2043 width: root.width - units.gu(8)
1873 hoverEnabled: true2044 background: root.background
1874 enabled: false2045 onActiveChanged: {
1875 visible: enabled2046 if (!active) {
18762047 appContainer.focus = true;
1877 property int scrollAreaWidth: width / 32048 }
1878 property bool progressiveScrollingEnabled: false2049 }
1879
1880 onMouseXChanged: {
1881 mouse.accepted = false
1882
1883 if (hoverMouseArea.pressed) {
1884 return;
1885 }
1886
1887 // Find the hovered item and mark it active
1888 for (var i = appRepeater.count - 1; i >= 0; i--) {
1889 var appDelegate = appRepeater.itemAt(i);
1890 var mapped = mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1891 var itemUnder = appDelegate.childAt(mapped.x, mapped.y);
1892 if (itemUnder && (itemUnder.objectName === "dragArea" || itemUnder.objectName === "windowInfoItem" || itemUnder.objectName == "closeMouseArea")) {
1893 spreadItem.highlightedIndex = i;
1894 break;
1895 }
1896 }
1897
1898 if (floatingFlickable.contentWidth > floatingFlickable.width) {
1899 var margins = floatingFlickable.width * 0.05;
1900
1901 if (!progressiveScrollingEnabled && mouseX < floatingFlickable.width - scrollAreaWidth) {
1902 progressiveScrollingEnabled = true
1903 }
1904
1905 // do we need to scroll?
1906 if (mouseX < scrollAreaWidth + margins) {
1907 var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
1908 var contentX = (1 - progress) * (floatingFlickable.contentWidth - floatingFlickable.width)
1909 floatingFlickable.contentX = Math.max(0, Math.min(floatingFlickable.contentX, contentX))
1910 }
1911 if (mouseX > floatingFlickable.width - scrollAreaWidth && progressiveScrollingEnabled) {
1912 var progress = Math.min(1, (mouseX - (floatingFlickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
1913 var contentX = progress * (floatingFlickable.contentWidth - floatingFlickable.width)
1914 floatingFlickable.contentX = Math.min(floatingFlickable.contentWidth - floatingFlickable.width, Math.max(floatingFlickable.contentX, contentX))
1915 }
1916 }
1917 }
1918
1919 onPressed: mouse.accepted = false
1920 }
1921
1922 FloatingFlickable {
1923 id: floatingFlickable
1924 objectName: "spreadFlickable"
1925 anchors.fill: appContainer
1926 enabled: false
1927 contentWidth: spreadItem.spreadTotalWidth
1928
1929 function snap(toIndex) {
1930 var delegate = appRepeater.itemAt(toIndex)
1931 var targetContentX = floatingFlickable.contentWidth / spreadItem.totalItemCount * toIndex;
1932 if (targetContentX - floatingFlickable.contentX > spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) {
1933 var offset = (spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) - (targetContentX - floatingFlickable.contentX)
1934 snapAnimation.to = Math.max(0, floatingFlickable.contentX - offset);
1935 snapAnimation.start();
1936 } else if (targetContentX - floatingFlickable.contentX < spreadItem.leftStackXPos + units.gu(1)) {
1937 var offset = (spreadItem.leftStackXPos + units.gu(1)) - (targetContentX - floatingFlickable.contentX);
1938 snapAnimation.to = Math.max(0, floatingFlickable.contentX - offset);
1939 snapAnimation.start();
1940 }
1941 }
1942 UbuntuNumberAnimation {id: snapAnimation; target: floatingFlickable; property: "contentX"}
1943 }2050 }
19442051
1945 PropertyAnimation {2052 PropertyAnimation {
19462053
=== modified file 'qml/Stage/WindowResizeArea.qml'
--- qml/Stage/WindowResizeArea.qml 2017-02-21 15:19:01 +0000
+++ qml/Stage/WindowResizeArea.qml 2017-04-06 12:58:37 +0000
@@ -36,35 +36,58 @@
36 property int minWidth: 036 property int minWidth: 0
37 property int minHeight: 037 property int minHeight: 0
3838
39 property bool readyToAssesBounds: false
40 onReadyToAssesBoundsChanged: d.reassesBounds()
41
39 QtObject {42 QtObject {
40 id: d43 id: d
4144
42 readonly property int maxSafeInt: 214748364745 readonly property int maxSafeInt: 2147483647
43 readonly property int maxSizeIncrement: units.gu(40)46 readonly property int maxSizeIncrement: units.gu(40)
4447
48 function reassesBounds() {
49 if (!readyToAssesBounds) return;
50
51 if (target.windowedWidth < minimumWidth) {
52 target.windowedWidth = minimumWidth;
53 }
54 if (target.windowedHeight < minimumHeight) {
55 target.windowedHeight = minimumHeight;
56 }
57 if (target.windowedHeight < minimumHeight) {
58 target.windowedHeight = minimumHeight;
59 }
60 if (target.windowedWidth > maximumWidth) {
61 target.windowedWidth = maximumWidth;
62 }
63 if (target.windowedHeight > maximumHeight) {
64 target.windowedHeight = maximumHeight;
65 }
66 }
67
45 readonly property int minimumWidth: root.target ? Math.max(root.minWidth, root.target.minimumWidth) : root.minWidth68 readonly property int minimumWidth: root.target ? Math.max(root.minWidth, root.target.minimumWidth) : root.minWidth
46 onMinimumWidthChanged: {69 onMinimumWidthChanged: {
47 if (target.windowedWidth < minimumWidth) {70 if (readyToAssesBounds && target.windowedWidth < minimumWidth) {
48 target.windowedWidth = minimumWidth;71 target.windowedWidth = minimumWidth;
49 }72 }
50 }73 }
51 readonly property int minimumHeight: root.target ? Math.max(root.minHeight, root.target.minimumHeight) : root.minHeight74 readonly property int minimumHeight: root.target ? Math.max(root.minHeight, root.target.minimumHeight) : root.minHeight
52 onMinimumHeightChanged: {75 onMinimumHeightChanged: {
53 if (target.windowedHeight < minimumHeight) {76 if (readyToAssesBounds && target.windowedHeight < minimumHeight) {
54 target.windowedHeight = minimumHeight;77 target.windowedHeight = minimumHeight;
55 }78 }
56 }79 }
57 readonly property int maximumWidth: root.target && root.target.maximumWidth >= minimumWidth && root.target.maximumWidth > 080 readonly property int maximumWidth: root.target && root.target.maximumWidth >= minimumWidth && root.target.maximumWidth > 0
58 ? root.target.maximumWidth : maxSafeInt81 ? root.target.maximumWidth : maxSafeInt
59 onMaximumWidthChanged: {82 onMaximumWidthChanged: {
60 if (target.windowedWidth > maximumWidth) {83 if (readyToAssesBounds && target.windowedWidth > maximumWidth) {
61 target.windowedWidth = maximumWidth;84 target.windowedWidth = maximumWidth;
62 }85 }
63 }86 }
64 readonly property int maximumHeight: root.target && root.target.maximumHeight >= minimumHeight && root.target.maximumHeight > 087 readonly property int maximumHeight: root.target && root.target.maximumHeight >= minimumHeight && root.target.maximumHeight > 0
65 ? root.target.maximumHeight : maxSafeInt88 ? root.target.maximumHeight : maxSafeInt
66 onMaximumHeightChanged: {89 onMaximumHeightChanged: {
67 if (target.windowedHeight > maximumHeight) {90 if (readyToAssesBounds && target.windowedHeight > maximumHeight) {
68 target.windowedHeight = maximumHeight;91 target.windowedHeight = maximumHeight;
69 }92 }
70 }93 }
7194
=== modified file 'qml/Stage/WindowStateSaver.qml'
--- qml/Stage/WindowStateSaver.qml 2017-02-24 12:54:39 +0000
+++ qml/Stage/WindowStateSaver.qml 2017-04-06 12:58:37 +0000
@@ -43,7 +43,10 @@
43 (target.fullscreen ? 0 : root.leftMargin)); });43 (target.fullscreen ? 0 : root.leftMargin)); });
44 target.windowedY = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, screenHeight - target.windowedHeight), minimumY); });44 target.windowedY = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, screenHeight - target.windowedHeight), minimumY); });
4545
46 target.updateNormalGeometry();46 target.normalWidth = target.windowedWidth;
47 target.normalHeight = target.windowedHeight;
48 target.normalX = target.windowedX;
49 target.normalY = target.windowedY;
4750
48 // initialize the x/y to restore to51 // initialize the x/y to restore to
49 target.restoredX = target.normalX;52 target.restoredX = target.normalX;
5053
=== added file 'qml/Stage/WorkspaceSwitcher.qml'
--- qml/Stage/WorkspaceSwitcher.qml 1970-01-01 00:00:00 +0000
+++ qml/Stage/WorkspaceSwitcher.qml 2017-04-06 12:58:37 +0000
@@ -0,0 +1,196 @@
1/*
2 * Copyright (C) 2014-2016 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17import QtQuick 2.4
18import Ubuntu.Components 1.3
19import "Spread"
20import WindowManager 1.0
21import Unity.Application 0.1
22
23Item {
24 id: root
25
26 opacity: d.shown ? 1 : 0
27 visible: opacity > 0
28 Behavior on opacity { UbuntuNumberAnimation {} }
29
30 property var screensProxy: Screens.createProxy();
31 property string background
32
33 readonly property alias active: d.active
34
35 function showLeft() {
36 show();
37 d.previousWorkspace();
38 }
39 function showRight() {
40 show();
41 d.nextWorkspace();
42 }
43 function showUp() {
44 show();
45 d.previousScreen();
46 }
47 function showDown() {
48 show();
49 d.nextScreen();
50 }
51
52 function show() {
53 hideTimer.stop();
54 d.altPressed = true;
55 d.ctrlPressed = true;
56 d.active = true;
57 d.shown = true;
58 focus = true;
59
60 d.highlightedScreenIndex = screensProxy.activeScreen;
61 var activeScreen = screensProxy.get(screensProxy.activeScreen);
62 d.highlightedWorkspaceIndex = activeScreen.workspaces.indexOf(activeScreen.currentWorkspace)
63 }
64
65 QtObject {
66 id: d
67
68 property bool active: false
69 property bool shown: false
70 property bool altPressed: false
71 property bool ctrlPressed: false
72
73 property int rowHeight: root.height - units.gu(4)
74
75 property int highlightedScreenIndex: -1
76 property int highlightedWorkspaceIndex: -1
77
78 function previousWorkspace() {
79 highlightedWorkspaceIndex = Math.max(highlightedWorkspaceIndex - 1, 0);
80 }
81 function nextWorkspace() {
82 var screen = screensProxy.get(highlightedScreenIndex);
83 highlightedWorkspaceIndex = Math.min(highlightedWorkspaceIndex + 1, screen.workspaces.count - 1);
84 }
85 function previousScreen() {
86 highlightedScreenIndex = Math.max(highlightedScreenIndex - 1, 0);
87 var screen = screensProxy.get(highlightedScreenIndex);
88 highlightedWorkspaceIndex = Math.min(highlightedWorkspaceIndex, screen.workspaces.count - 1)
89 }
90 function nextScreen() {
91 highlightedScreenIndex = Math.min(highlightedScreenIndex + 1, screensProxy.count - 1);
92 var screen = screensProxy.get(highlightedScreenIndex);
93 highlightedWorkspaceIndex = Math.min(highlightedWorkspaceIndex, screen.workspaces.count - 1)
94 }
95 }
96
97 Timer {
98 id: hideTimer
99 interval: 300
100 onTriggered: d.shown = false;
101 }
102
103 Keys.onPressed: {
104 switch (event.key) {
105 case Qt.Key_Left:
106 d.previousWorkspace();
107 break;
108 case Qt.Key_Right:
109 d.nextWorkspace()
110 break;
111 case Qt.Key_Up:
112 d.previousScreen();
113 break;
114 case Qt.Key_Down:
115 d.nextScreen();
116 }
117 }
118 Keys.onReleased: {
119 switch (event.key) {
120 case Qt.Key_Alt:
121 d.altPressed = false;
122 break;
123 case Qt.Key_Control:
124 d.ctrlPressed = false;
125 break;
126 }
127
128 if (!d.altPressed && !d.ctrlPressed) {
129 d.active = false;
130 hideTimer.start();
131 focus = false;
132 screensProxy.get(d.highlightedScreenIndex).workspaces.get(d.highlightedWorkspaceIndex).activate();
133 }
134 }
135
136 UbuntuShape {
137 backgroundColor: "#F2111111"
138 clip: true
139 width: Math.min(parent.width, screensColumn.width + units.gu(4))
140 anchors.horizontalCenter: parent.horizontalCenter
141 height: parent.height
142
143 Column {
144 id: screensColumn
145 anchors {
146 top: parent.top; topMargin: units.gu(2) - d.highlightedScreenIndex * (d.rowHeight + screensColumn.spacing)
147 left: parent.left; leftMargin: units.gu(2)
148 }
149 width: screensRepeater.itemAt(d.highlightedScreenIndex).width
150 spacing: units.gu(2)
151 Behavior on anchors.topMargin { UbuntuNumberAnimation {} }
152 Behavior on width { UbuntuNumberAnimation {} }
153
154 Repeater {
155 id: screensRepeater
156 model: screensProxy
157
158 delegate: Item {
159 height: d.rowHeight
160 width: workspaces.width
161 anchors.horizontalCenter: parent.horizontalCenter
162 opacity: d.highlightedScreenIndex == index ? 1 : 0
163 Behavior on opacity { UbuntuNumberAnimation {} }
164
165 UbuntuShape {
166 id: header
167 anchors { left: parent.left; top: parent.top; right: parent.right }
168 height: units.gu(4)
169 backgroundColor: "white"
170
171 Label {
172 anchors { left: parent.left; top: parent.top; right: parent.right; margins: units.gu(1) }
173 text: model.screen.name
174 color: UbuntuColors.ash
175 }
176 }
177
178 Workspaces {
179 id: workspaces
180 height: parent.height - header.height - units.gu(2)
181 width: Math.min(implicitWidth, root.width - units.gu(4))
182
183 anchors.bottom: parent.bottom
184 anchors.bottomMargin: units.gu(1)
185 anchors.horizontalCenter: parent.horizontalCenter
186 screen: model.screen
187 background: root.background
188 selectedIndex: d.highlightedScreenIndex == index ? d.highlightedWorkspaceIndex : -1
189
190 workspaceModel: model.screen.workspaces
191 }
192 }
193 }
194 }
195 }
196}
0197
=== added file 'qml/Stage/graphics/multi-monitor_drop-here.png'
1Binary 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 differ198Binary 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
=== added file 'qml/Stage/graphics/multi-monitor_leave.png'
2Binary 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 differ199Binary 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
=== modified file 'tests/mocks/Unity/Application/MirSurfaceItem.cpp'
--- tests/mocks/Unity/Application/MirSurfaceItem.cpp 2017-01-26 11:10:01 +0000
+++ tests/mocks/Unity/Application/MirSurfaceItem.cpp 2017-04-06 12:58:37 +0000
@@ -189,11 +189,13 @@
189 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());189 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
190 m_qmlItem->setParentItem(this);190 m_qmlItem->setParentItem(this);
191191
192 m_qmlItem->setWidth(m_surfaceWidth);192 if (m_fillMode == FillMode::Stretch && width() != 0 && height() != 0) {
193 m_qmlItem->setHeight(m_surfaceHeight);193 m_qmlItem->setSize(QSize(this->width(), this->height()));
194194 } else {
195 setImplicitWidth(m_qmlItem->implicitWidth());195 m_qmlItem->setSize(m_qmlSurface->size());
196 setImplicitHeight(m_qmlItem->implicitHeight());196 }
197 setImplicitWidth(m_qmlItem->width());
198 setImplicitHeight(m_qmlItem->height());
197199
198 {200 {
199 QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");201 QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
@@ -308,6 +310,16 @@
308 connect(m_qmlSurface, &MirSurface::screenshotUrlChanged, this, &MirSurfaceItem::updateScreenshot);310 connect(m_qmlSurface, &MirSurface::screenshotUrlChanged, this, &MirSurfaceItem::updateScreenshot);
309 connect(m_qmlSurface, &MirSurface::liveChanged, this, &MirSurfaceItem::liveChanged);311 connect(m_qmlSurface, &MirSurface::liveChanged, this, &MirSurfaceItem::liveChanged);
310 connect(m_qmlSurface, &MirSurface::stateChanged, this, &MirSurfaceItem::surfaceStateChanged);312 connect(m_qmlSurface, &MirSurface::stateChanged, this, &MirSurfaceItem::surfaceStateChanged);
313 connect(m_qmlSurface, &MirSurface::sizeChanged, this, [this] () {
314 setImplicitSize(m_qmlSurface->width(), m_qmlSurface->height());
315 if (m_fillMode == FillMode::Stretch) {
316 m_qmlItem->setSize(QSize(this->width(), this->height()));
317 } else {
318 m_qmlItem->setSize(m_qmlSurface->size());
319 }
320 });
321 m_surfaceWidth = surface->size().width();
322 m_surfaceHeight = surface->size().height();
311323
312 QUrl qmlComponentFilePath;324 QUrl qmlComponentFilePath;
313 if (!m_qmlSurface->qmlFilePath().isEmpty()) {325 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
@@ -321,6 +333,7 @@
321 switch (m_qmlContentComponent->status()) {333 switch (m_qmlContentComponent->status()) {
322 case QQmlComponent::Ready:334 case QQmlComponent::Ready:
323 createQmlContentItem();335 createQmlContentItem();
336 qDebug() << "content created" << m_surfaceWidth << implicitWidth() << width();
324 break;337 break;
325 case QQmlComponent::Loading:338 case QQmlComponent::Loading:
326 connect(m_qmlContentComponent, &QQmlComponent::statusChanged,339 connect(m_qmlContentComponent, &QQmlComponent::statusChanged,
@@ -399,9 +412,15 @@
399 if (m_qmlSurface && m_surfaceWidth > 0 && m_surfaceHeight > 0) {412 if (m_qmlSurface && m_surfaceWidth > 0 && m_surfaceHeight > 0) {
400 m_qmlSurface->resize(m_surfaceWidth, m_surfaceHeight);413 m_qmlSurface->resize(m_surfaceWidth, m_surfaceHeight);
401 if (m_qmlItem) {414 if (m_qmlItem) {
402 m_qmlItem->setWidth(m_surfaceWidth);415 if (m_fillMode == FillMode::Stretch) {
403 m_qmlItem->setHeight(m_surfaceHeight);416 m_qmlItem->setWidth(width());
417 m_qmlItem->setHeight(height());
418 } else {
419 m_qmlItem->setWidth(m_surfaceWidth);
420 m_qmlItem->setHeight(m_surfaceHeight);
421 }
404 }422 }
423 qDebug() << this << "setting implicitsize" << m_surfaceWidth << m_surfaceHeight;
405 setImplicitSize(m_surfaceWidth, m_surfaceHeight);424 setImplicitSize(m_surfaceWidth, m_surfaceHeight);
406 }425 }
407}426}
408427
=== modified file 'tests/mocks/Unity/Application/resources/MirSurfaceItem.qml'
--- tests/mocks/Unity/Application/resources/MirSurfaceItem.qml 2016-07-01 15:32:37 +0000
+++ tests/mocks/Unity/Application/resources/MirSurfaceItem.qml 2017-04-06 12:58:37 +0000
@@ -20,9 +20,6 @@
20 id: root20 id: root
21 color: "pink"21 color: "pink"
2222
23 implicitWidth: width
24 implicitHeight: height
25
26 property alias screenshotSource: screenshotImage.source23 property alias screenshotSource: screenshotImage.source
27 property int orientationAngle24 property int orientationAngle
2825
2926
=== modified file 'tests/mocks/WindowManager/MockScreens.cpp'
--- tests/mocks/WindowManager/MockScreens.cpp 2017-04-06 12:58:36 +0000
+++ tests/mocks/WindowManager/MockScreens.cpp 2017-04-06 12:58:37 +0000
@@ -31,10 +31,11 @@
31class MockScreen : public qtmir::Screen31class MockScreen : public qtmir::Screen
32{32{
33 Q_OBJECT33 Q_OBJECT
34 Q_PROPERTY(QString outputTypeName READ outputTypeName NOTIFY outputTypeNameChanged)
34public:35public:
35 MockScreen()36 MockScreen()
36 {37 {
37 m_sizes.append(new qtmir::ScreenMode(50, QSize(640,480)));38 m_sizes.append(new qtmir::ScreenMode(50, QSize(800,568)));
38 m_sizes.append(new qtmir::ScreenMode(60, QSize(1280,1024)));39 m_sizes.append(new qtmir::ScreenMode(60, QSize(1280,1024)));
39 m_sizes.append(new qtmir::ScreenMode(60, QSize(1440,900)));40 m_sizes.append(new qtmir::ScreenMode(60, QSize(1440,900)));
40 m_sizes.append(new qtmir::ScreenMode(60, QSize(1920,1080)));41 m_sizes.append(new qtmir::ScreenMode(60, QSize(1920,1080)));
@@ -51,7 +52,6 @@
5152
52 if (m_connectedWindow) {53 if (m_connectedWindow) {
53 disconnect(m_connectedWindow.data());54 disconnect(m_connectedWindow.data());
54 m_sizes.takeFirst()->deleteLater();
55 }55 }
5656
57 m_connectedWindow = w;57 m_connectedWindow = w;
@@ -77,7 +77,6 @@
77 });77 });
78 if (w->isActive()) setActive(true);78 if (w->isActive()) setActive(true);
7979
80 m_sizes.push_front(new qtmir::ScreenMode(50, w->size()));
81 Q_EMIT availableModesChanged();80 Q_EMIT availableModesChanged();
8281
83 }82 }
@@ -90,6 +89,7 @@
90 QSizeF physicalSize() const override { return m_physicalSize; }89 QSizeF physicalSize() const override { return m_physicalSize; }
91 qtmir::FormFactor formFactor() const override { return m_formFactor; }90 qtmir::FormFactor formFactor() const override { return m_formFactor; }
92 qtmir::OutputTypes outputType() const override { return m_outputType; }91 qtmir::OutputTypes outputType() const override { return m_outputType; }
92 QString outputTypeName() const { return QStringLiteral("Internal"); }
93 MirPowerMode powerMode() const override { return m_powerMode; }93 MirPowerMode powerMode() const override { return m_powerMode; }
94 Qt::ScreenOrientation orientation() const override { return m_orientation; }94 Qt::ScreenOrientation orientation() const override { return m_orientation; }
95 QPoint position() const override { return m_position; }95 QPoint position() const override { return m_position; }
@@ -137,6 +137,9 @@
137 return true;137 return true;
138 }138 }
139139
140Q_SIGNALS:
141 void outputTypeNameChanged();
142
140public:143public:
141 miral::DisplayId m_id;144 miral::DisplayId m_id;
142 bool m_active{false};145 bool m_active{false};
@@ -168,7 +171,7 @@
168 screen->m_active = i == 0;171 screen->m_active = i == 0;
169 screen->m_name = QString("Monitor %1").arg(i);172 screen->m_name = QString("Monitor %1").arg(i);
170 screen->m_position = QPoint(lastPoint.x(), lastPoint.y());173 screen->m_position = QPoint(lastPoint.x(), lastPoint.y());
171 screen->m_currentModeIndex = 3;174 screen->m_currentModeIndex = 0;
172 m_mocks.append(screen);175 m_mocks.append(screen);
173176
174 lastPoint.rx() += screen->m_sizes[screen->m_currentModeIndex]->size.width();177 lastPoint.rx() += screen->m_sizes[screen->m_currentModeIndex]->size.width();
175178
=== modified file 'tests/qmltests/Stage/tst_ApplicationWindow.qml'
--- tests/qmltests/Stage/tst_ApplicationWindow.qml 2017-04-06 12:58:36 +0000
+++ tests/qmltests/Stage/tst_ApplicationWindow.qml 2017-04-06 12:58:37 +0000
@@ -245,13 +245,12 @@
245 function test_showSplashUntilAppFullyInit_data() {245 function test_showSplashUntilAppFullyInit_data() {
246 return [246 return [
247 {tag: "state=Running then create surface", swapInitOrder: false},247 {tag: "state=Running then create surface", swapInitOrder: false},
248
249 {tag: "create surface then state=Running", swapInitOrder: true},248 {tag: "create surface then state=Running", swapInitOrder: true},
250 ]249 ]
251 }250 }
252251
253 function test_showSplashUntilAppFullyInit() {252 function test_showSplashUntilAppFullyInit() {
254 verify(stateGroup.state === "splashScreen");253 verify(stateGroup.state === "splash");
255254
256 if (data.swapInitOrder) {255 if (data.swapInitOrder) {
257 surfaceCheckbox.checked = true;256 surfaceCheckbox.checked = true;
@@ -259,7 +258,7 @@
259 setApplicationState(appRunning);258 setApplicationState(appRunning);
260 }259 }
261260
262 verify(stateGroup.state === "splashScreen");261 verify(stateGroup.state === "splash");
263262
264 if (data.swapInitOrder) {263 if (data.swapInitOrder) {
265 setApplicationState(appRunning);264 setApplicationState(appRunning);
@@ -284,27 +283,8 @@
284 waitUntilTransitionsEnd(stateGroup);283 waitUntilTransitionsEnd(stateGroup);
285 }284 }
286285
287 function test_killedAppShowsScreenshot() {
288 surfaceCheckbox.checked = true;
289 setApplicationState(appRunning);
290 tryCompare(stateGroup, "state", "surface");
291
292 setApplicationState(appSuspended);
293
294 verify(stateGroup.state === "surface");
295 verify(fakeApplication.surface !== null);
296
297 // kill it!
298 surfaceCheckbox.checked = false;
299 setApplicationState(appStopped);
300
301 tryCompare(stateGroup, "state", "screenshot");
302 tryCompare(fakeApplication.surfaceList, "count", 0);
303 }
304
305 function test_restartApp() {286 function test_restartApp() {
306 var screenshotImage = findChild(applicationWindow, "screenshotImage");287 tryCompare(stateGroup, "state", "splash");
307
308 surfaceCheckbox.checked = true;288 surfaceCheckbox.checked = true;
309 setApplicationState(appRunning);289 setApplicationState(appRunning);
310 tryCompare(stateGroup, "state", "surface");290 tryCompare(stateGroup, "state", "surface");
@@ -316,26 +296,23 @@
316 surfaceCheckbox.checked = false;296 surfaceCheckbox.checked = false;
317 setApplicationState(appStopped);297 setApplicationState(appStopped);
318298
319 tryCompare(stateGroup, "state", "screenshot");
320 waitUntilTransitionsEnd(stateGroup);299 waitUntilTransitionsEnd(stateGroup);
321 tryCompare(applicationWindow, "surface", null);300 tryCompare(stateGroup, "state", "surface");
322301
323 // and restart it302 // and restart it
324 setApplicationState(appStarting);303 setApplicationState(appStarting);
325304
326 waitUntilTransitionsEnd(stateGroup);305 waitUntilTransitionsEnd(stateGroup);
327 verify(stateGroup.state === "screenshot");306 verify(stateGroup.state === "surface");
328 verify(applicationWindow.surface === null);
329307
330 setApplicationState(appRunning);308 setApplicationState(appRunning);
331309
332 waitUntilTransitionsEnd(stateGroup);310 waitUntilTransitionsEnd(stateGroup);
333 verify(stateGroup.state === "screenshot");311 verify(stateGroup.state === "surface");
334312
335 surfaceCheckbox.checked = true;313 surfaceCheckbox.checked = true;
336314
337 tryCompare(stateGroup, "state", "surface");315 tryCompare(stateGroup, "state", "surface");
338 tryCompare(screenshotImage, "status", Image.Null);
339 }316 }
340317
341 function test_appCrashed() {318 function test_appCrashed() {
@@ -343,13 +320,15 @@
343 setApplicationState(appRunning);320 setApplicationState(appRunning);
344 tryCompare(stateGroup, "state", "surface");321 tryCompare(stateGroup, "state", "surface");
345 waitUntilTransitionsEnd(stateGroup);322 waitUntilTransitionsEnd(stateGroup);
323 var surface = applicationWindow.surface;
346324
347 // oh, it crashed...325 // oh, it crashed...
348 surfaceCheckbox.checked = false;326 surfaceCheckbox.checked = false;
349 setApplicationState(appStopped);327 setApplicationState(appStopped);
350328
351 tryCompare(stateGroup, "state", "screenshot");329 waitUntilTransitionsEnd(stateGroup);
352 tryCompare(applicationWindow, "surface", null);330 tryCompare(stateGroup, "state", "surface");
331 tryCompare(applicationWindow, "surface", surface);
353 }332 }
354333
355 function test_keepSurfaceWhileInvisible() {334 function test_keepSurfaceWhileInvisible() {
@@ -393,17 +372,6 @@
393 verify(surfaceItem.touchReleaseCount === 1);372 verify(surfaceItem.touchReleaseCount === 1);
394 }373 }
395374
396 function test_showNothingOnSuddenSurfaceLoss() {
397 surfaceCheckbox.checked = true;
398 setApplicationState(appRunning);
399 tryCompare(stateGroup, "state", "surface");
400 waitUntilTransitionsEnd(stateGroup);
401
402 applicationWindow.surface = null;
403
404 tryCompare(stateGroup, "state", "void");
405 }
406
407 function test_surfaceActiveFocusFollowsAppWindowInterative() {375 function test_surfaceActiveFocusFollowsAppWindowInterative() {
408 applicationWindow.interactive = false;376 applicationWindow.interactive = false;
409 applicationWindow.interactive = true;377 applicationWindow.interactive = true;
410378
=== modified file 'tests/qmltests/Stage/tst_DesktopStage.qml'
--- tests/qmltests/Stage/tst_DesktopStage.qml 2017-04-06 12:58:36 +0000
+++ tests/qmltests/Stage/tst_DesktopStage.qml 2017-04-06 12:58:37 +0000
@@ -558,8 +558,6 @@
558 var gmailDelegate = startApplication("gmail-webapp");558 var gmailDelegate = startApplication("gmail-webapp");
559 verify(gmailDelegate);559 verify(gmailDelegate);
560560
561 wait(2000)
562
563 var gmailMaximizeButton = findChild(gmailDelegate, "maximizeWindowButton");561 var gmailMaximizeButton = findChild(gmailDelegate, "maximizeWindowButton");
564 verify(gmailMaximizeButton);562 verify(gmailMaximizeButton);
565 mouseClick(gmailMaximizeButton);563 mouseClick(gmailMaximizeButton);
566564
=== modified file 'tests/qmltests/Stage/tst_PhoneStage.qml'
--- tests/qmltests/Stage/tst_PhoneStage.qml 2017-04-06 12:58:36 +0000
+++ tests/qmltests/Stage/tst_PhoneStage.qml 2017-04-06 12:58:37 +0000
@@ -304,7 +304,6 @@
304304
305 performEdgeSwipeToShowAppSpread();305 performEdgeSwipeToShowAppSpread();
306306
307 print("tapping", selectedAppDeleage.appId, selectedAppDeleage.visible)
308 if (selectedAppDeleage.x > stage.width - units.gu(5)) {307 if (selectedAppDeleage.x > stage.width - units.gu(5)) {
309 touchFlick(stage, stage.width - units.gu(2), stage.height / 2, units.gu(2), stage.height / 2, true, true, units.gu(2), 10)308 touchFlick(stage, stage.width - units.gu(2), stage.height / 2, units.gu(2), stage.height / 2, true, true, units.gu(2), 10)
310 }309 }
311310
=== modified file 'tests/qmltests/Stage/tst_TabletStage.qml'
--- tests/qmltests/Stage/tst_TabletStage.qml 2017-04-06 12:58:36 +0000
+++ tests/qmltests/Stage/tst_TabletStage.qml 2017-04-06 12:58:37 +0000
@@ -66,7 +66,6 @@
66 }66 }
6767
68 Component.onCompleted: {68 Component.onCompleted: {
69 print("starting dash")
70 ApplicationManager.startApplication("unity8-dash");69 ApplicationManager.startApplication("unity8-dash");
71 }70 }
72 }71 }
@@ -138,7 +137,6 @@
138 name: "TabletStage"137 name: "TabletStage"
139 when: windowShown138 when: windowShown
140139
141 readonly property alias topLevelSurfaceList: root.topLevelSurfaceList
142 property Item sideStage: stage ? findChild(stage, "sideStage") : null140 property Item sideStage: stage ? findChild(stage, "sideStage") : null
143141
144 function init() {142 function init() {
@@ -167,6 +165,7 @@
167 waitUntilAppSurfaceShowsUp(topLevelSurfaceList.idAt(0));165 waitUntilAppSurfaceShowsUp(topLevelSurfaceList.idAt(0));
168 sideStage.hideNow()166 sideStage.hideNow()
169 tryCompare(sideStage, "x", stage.width)167 tryCompare(sideStage, "x", stage.width)
168
170 }169 }
171170
172 function cleanup() {171 function cleanup() {
@@ -228,7 +227,7 @@
228 tryCompare(stage, "state", "spread");227 tryCompare(stage, "state", "spread");
229 }228 }
230229
231 function swipeSurfaceUpwards(surfaceId) {230 function swipeSurfaceDownwards(surfaceId) {
232 var appWindow = findAppWindowForSurfaceId(surfaceId);231 var appWindow = findAppWindowForSurfaceId(surfaceId);
233 verify(appWindow);232 verify(appWindow);
234233
@@ -236,7 +235,7 @@
236 // to not be covered by other surfaces when they're all being shown in the spread235 // to not be covered by other surfaces when they're all being shown in the spread
237 touchFlick(appWindow,236 touchFlick(appWindow,
238 appWindow.width * 0.1, appWindow.height / 2,237 appWindow.width * 0.1, appWindow.height / 2,
239 appWindow.width * 0.1, -appWindow.height / 2);238 appWindow.width * 0.1, appWindow.height * 1.5);
240 }239 }
241240
242 function dragToSideStage(surfaceId) {241 function dragToSideStage(surfaceId) {
@@ -334,7 +333,7 @@
334 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);333 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
335 tryCompare(dragArea, "closeable", true);334 tryCompare(dragArea, "closeable", true);
336335
337 swipeSurfaceUpwards(dialerSurfaceId);336 swipeSurfaceDownwards(dialerSurfaceId);
338337
339 // Check that dialer-app has been closed338 // Check that dialer-app has been closed
340339
@@ -345,6 +344,8 @@
345 tryCompareFunction(function() {344 tryCompareFunction(function() {
346 return ApplicationManager.findApplication(dialerCheckBox.appId);345 return ApplicationManager.findApplication(dialerCheckBox.appId);
347 }, null);346 }, null);
347
348 stage.closeSpread();
348 }349 }
349350
350 function test_suspendsAndResumesAppsInMainStage() {351 function test_suspendsAndResumesAppsInMainStage() {
@@ -597,7 +598,6 @@
597598
598 function test_loadSideStageByDraggingFromMainStage() {599 function test_loadSideStageByDraggingFromMainStage() {
599 sideStage.showNow();600 sideStage.showNow();
600 print("sidestage now shown. launching browser")
601 var webbrowserSurfaceId = topLevelSurfaceList.nextId;601 var webbrowserSurfaceId = topLevelSurfaceList.nextId;
602 webbrowserCheckBox.checked = true;602 webbrowserCheckBox.checked = true;
603 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);603 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
@@ -662,10 +662,6 @@
662 // simulate the suspended app being killed by the out-of-memory daemon662 // simulate the suspended app being killed by the out-of-memory daemon
663 webbrowserApp.surfaceList.get(0).setLive(false);663 webbrowserApp.surfaceList.get(0).setLive(false);
664664
665 // wait until the surface is gone
666 tryCompare(webbrowserApp.surfaceList, "count", 0);
667 compare(topLevelSurfaceList.surfaceAt(topLevelSurfaceList.indexForId(webbrowserSurfaceId)), null);
668
669 switchToSurface(webbrowserSurfaceId);665 switchToSurface(webbrowserSurfaceId);
670666
671 // webbrowser should have been brought to front667 // webbrowser should have been brought to front
672668
=== modified file 'tests/qmltests/tst_OrientedShell.qml'
--- tests/qmltests/tst_OrientedShell.qml 2017-04-06 12:58:36 +0000
+++ tests/qmltests/tst_OrientedShell.qml 2017-04-06 12:58:37 +0000
@@ -1521,7 +1521,6 @@
1521 }1521 }
1522 var point = surfaceItem.mapToItem(orientedShell, 0, 0);1522 var point = surfaceItem.mapToItem(orientedShell, 0, 0);
15231523
1524 print("exptectedAngle", expectedAngle, point.x, point.y)
1525 switch (expectedAngle) {1524 switch (expectedAngle) {
1526 case 0:1525 case 0:
1527 return point.x === 0 && point.y === panelState.panelHeight;1526 return point.x === 0 && point.y === panelState.panelHeight;
15281527
=== modified file 'tests/qmltests/tst_Shell.qml'
--- tests/qmltests/tst_Shell.qml 2017-04-06 12:58:36 +0000
+++ tests/qmltests/tst_Shell.qml 2017-04-06 12:58:37 +0000
@@ -265,6 +265,7 @@
265 anchors { left: parent.left; right: parent.right }265 anchors { left: parent.left; right: parent.right }
266 activeFocusOnPress: false266 activeFocusOnPress: false
267 model: ["phone", "tablet", "desktop"]267 model: ["phone", "tablet", "desktop"]
268 selectedIndex: 2
268 onSelectedIndexChanged: {269 onSelectedIndexChanged: {
269 shellLoader.state = model[selectedIndex];270 shellLoader.state = model[selectedIndex];
270 }271 }
@@ -278,6 +279,7 @@
278 anchors { left: parent.left; right: parent.right }279 anchors { left: parent.left; right: parent.right }
279 activeFocusOnPress: false280 activeFocusOnPress: false
280 model: ["phone", "tablet", "desktop"]281 model: ["phone", "tablet", "desktop"]
282 selectedIndex: 0
281 }283 }
282 MouseTouchEmulationCheckbox {284 MouseTouchEmulationCheckbox {
283 id: mouseEmulation285 id: mouseEmulation
@@ -1710,9 +1712,9 @@
1710 var spreadDelegate2 = appRepeater.itemAt(2);1712 var spreadDelegate2 = appRepeater.itemAt(2);
1711 var closeMouseArea = findChild(spreadDelegate2, "closeMouseArea");1713 var closeMouseArea = findChild(spreadDelegate2, "closeMouseArea");
17121714
1713 // Move the mosue over tile 2 and verify the close button becomes visible1715 // Move the mouse over tile 2 and verify the close button becomes visible
1714 var x = 0;1716 var x = 0;
1715 var y = shell.height * .5;1717 var y = shell.height * .6;
1716 mouseMove(shell, x, y)1718 mouseMove(shell, x, y)
1717 while (spreadItem.highlightedIndex !== 2 && x <= 4000) {1719 while (spreadItem.highlightedIndex !== 2 && x <= 4000) {
1718 x+=10;1720 x+=10;
@@ -1720,6 +1722,7 @@
1720 wait(0); // spin the loop so bindings get evaluated1722 wait(0); // spin the loop so bindings get evaluated
1721 }1723 }
1722 tryCompare(closeMouseArea, "enabled", true)1724 tryCompare(closeMouseArea, "enabled", true)
1725 waitForRendering(shell)
17231726
1724 var countBeforeClickingCloseButton = topLevelSurfaceList.count;1727 var countBeforeClickingCloseButton = topLevelSurfaceList.count;
1725 verify(topLevelSurfaceList.indexForId(surfaceId) === 2);1728 verify(topLevelSurfaceList.indexForId(surfaceId) === 2);
@@ -1761,7 +1764,7 @@
17611764
1762 // Move the mouse over tile 2 and verify the highlight becomes visible1765 // Move the mouse over tile 2 and verify the highlight becomes visible
1763 var x = 0;1766 var x = 0;
1764 var y = shell.height * (data.tileInfo ? .9 : 0.5)1767 var y = shell.height * (data.tileInfo ? .9 : 0.7)
1765 mouseMove(shell, x, y)1768 mouseMove(shell, x, y)
1766 while (spreadItem.highlightedIndex !== 2 && x <= 4000) {1769 while (spreadItem.highlightedIndex !== 2 && x <= 4000) {
1767 x+=10;1770 x+=10;
@@ -1783,6 +1786,15 @@
1783 function test_progressiveAutoScrolling() {1786 function test_progressiveAutoScrolling() {
1784 loadDesktopShellWithApps()1787 loadDesktopShellWithApps()
17851788
1789 // load some more apps
1790 ApplicationManager.startApplication("twitter-webapp")
1791 ApplicationManager.startApplication("ubuntu-weather-app")
1792 ApplicationManager.startApplication("notes-app")
1793 for (var i = 0; i < topLevelSurfaceList.count; ++i) {
1794 waitUntilAppWindowIsFullyLoaded(topLevelSurfaceList.idAt(i));
1795 }
1796
1797
1786 var appRepeater = findInvisibleChild(shell, "appRepeater");1798 var appRepeater = findInvisibleChild(shell, "appRepeater");
1787 verify(appRepeater !== null);1799 verify(appRepeater !== null);
17881800
@@ -1795,7 +1807,7 @@
17951807
1796 // Move the mouse to the right and make sure it scrolls the Flickable1808 // Move the mouse to the right and make sure it scrolls the Flickable
1797 var x = 0;1809 var x = 0;
1798 var y = shell.height * .51810 var y = shell.height * .7
1799 mouseMove(shell, x, y)1811 mouseMove(shell, x, y)
1800 while (x <= shell.width) {1812 while (x <= shell.width) {
1801 x+=10;1813 x+=10;
@@ -2696,7 +2708,6 @@
2696 dashAppDelegate.windowedY = data.windowY;2708 dashAppDelegate.windowedY = data.windowY;
2697 topLevelSurfaceList.inputMethodSurface.setInputBounds(Qt.rect(0, 0, 0, 0));2709 topLevelSurfaceList.inputMethodSurface.setInputBounds(Qt.rect(0, 0, 0, 0));
2698 var initialY = dashAppDelegate.y;2710 var initialY = dashAppDelegate.y;
2699 print("intial", initialY, "panel", panelState.panelHeight);
2700 verify(initialY > panelState.panelHeight);2711 verify(initialY > panelState.panelHeight);
27012712
2702 topLevelSurfaceList.inputMethodSurface.setInputBounds(Qt.rect(0, root.height / 2, root.width, root.height / 2));2713 topLevelSurfaceList.inputMethodSurface.setInputBounds(Qt.rect(0, root.height / 2, root.width, root.height / 2));

Subscribers

People subscribed via source and target branches