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

Proposed by Lukáš Tinkl
Status: Merged
Approved by: Daniel d'Andrada
Approved revision: 2073
Merged at revision: 2060
Proposed branch: lp:~lukas-kde/unity8/newWindowDecosAndPanel
Merge into: lp:unity8
Prerequisite: lp:~dandrader/unity8/noStretchOnResize
Diff against target: 1462 lines (+422/-298)
26 files modified
qml/Components/ModeSwitchWarningDialog.qml (+1/-1)
qml/Components/PanelState/PanelState.qml (+3/-2)
qml/Components/WindowControlButtons.qml (+76/-31)
qml/Components/graphics/window-close.svg (+14/-0)
qml/Components/graphics/window-maximize.svg (+12/-0)
qml/Components/graphics/window-minimize.svg (+13/-0)
qml/Panel/Handle.qml (+2/-2)
qml/Panel/IndicatorItem.qml (+3/-0)
qml/Panel/Indicators/client/IndicatorsClient.qml (+1/-1)
qml/Panel/IndicatorsMenu.qml (+2/-2)
qml/Panel/MenuContent.qml (+1/-1)
qml/Panel/Panel.qml (+68/-80)
qml/Panel/PanelBackground.qml (+0/-21)
qml/Panel/PanelSeparatorLine.qml (+0/-25)
qml/Shell.qml (+1/-1)
qml/Stages/ApplicationWindow.qml (+2/-2)
qml/Stages/DecoratedWindow.qml (+18/-15)
qml/Stages/DesktopStage.qml (+73/-49)
qml/Stages/WindowDecoration.qml (+15/-10)
qml/Stages/WindowResizeArea.qml (+1/-1)
tests/qmltests/Panel/tst_Panel.qml (+45/-11)
tests/qmltests/Stages/tst_DesktopStage.qml (+68/-30)
tests/qmltests/Stages/tst_PhoneStage.qml (+1/-1)
tests/qmltests/Stages/tst_SurfaceContainer.qml (+1/-1)
tests/qmltests/Stages/tst_TabletStage.qml (+1/-1)
tests/qmltests/tst_Shell.qml (+0/-10)
To merge this branch: bzr merge lp:~lukas-kde/unity8/newWindowDecosAndPanel
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Needs Fixing
Daniel d'Andrada (community) Approve
Review via email: mp+278320@code.launchpad.net

This proposal supersedes a proposal from 2015-11-05.

Commit message

Implement new visuals for panel and window decorations

Description of the change

Implement new visuals for panel and window decorations

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

lp:~dandrader/unity8/noStretchOnResize

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

Yes

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

Yes

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

Yes

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

Yes

To post a comment you must log in.
Revision history for this message
Albert Astals Cid (aacid) wrote : Posted in a previous version of this proposal

Text conflict in qml/Components/WindowControlButtons.qml
Text conflict in qml/Panel/Panel.qml
Text conflict in qml/Stages/DecoratedWindow.qml
Text conflict in qml/Stages/DesktopStage.qml
Text conflict in tests/qmltests/Stages/tst_DesktopStage.qml
5 conflicts encountered.

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

Conflicts resolved

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

I think it's worth considering using pre-rendered images (PNGs) instead of rendering them at runtime from SVGs for performance reasons.

We keep the SVG, but also ship a couple or prerendered versions at common grid unit resolutions (like for 1080p monitors, etc). So if we don't have a PNG for the grid unit at hand, we fallback to rendering one at runtime from the original SVG.

And maybe that scheme could be turned into a component of its own.

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

> I think it's worth considering using pre-rendered images (PNGs) instead of
> rendering them at runtime from SVGs for performance reasons.
>
> We keep the SVG, but also ship a couple or prerendered versions at common grid
> unit resolutions (like for 1080p monitors, etc). So if we don't have a PNG for
> the grid unit at hand, we fallback to rendering one at runtime from the
> original SVG.
>
> And maybe that scheme could be turned into a component of its own.

I recall this had a significant impact on start up time back in 2010/2011. Not sure how relevant it still is with todays hardware.

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

FAILED: Continuous integration, rev:2034
http://jenkins.qa.ubuntu.com/job/unity8-ci/6656/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5044
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/71/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1368
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/71
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1263
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1264
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/70
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/70
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-mako/4049
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5044
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5044/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/24970
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-mako/43/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/71
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/71/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/24968

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

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

FAILED: Continuous integration, rev:2046
http://jenkins.qa.ubuntu.com/job/unity8-ci/6678/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5077
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/93/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1390
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/93
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1285
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1286
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/92
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/92
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-mako/4065
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5082
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5082/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/24997
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-mako/48/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/93
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/93/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/24996

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

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

FAILED: Continuous integration, rev:2047
http://jenkins.qa.ubuntu.com/job/unity8-ci/6679/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5081
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/94/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1391
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/94
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1286
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1287
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/93
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/93
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-mako/4069
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5086
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5086/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25004
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-mako/49/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/94
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/94/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25002

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

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

> > I think it's worth considering using pre-rendered images (PNGs) instead of
> > rendering them at runtime from SVGs for performance reasons.
> >
> > We keep the SVG, but also ship a couple or prerendered versions at common
> grid
> > unit resolutions (like for 1080p monitors, etc). So if we don't have a PNG
> for
> > the grid unit at hand, we fallback to rendering one at runtime from the
> > original SVG.
> >
> > And maybe that scheme could be turned into a component of its own.
>
> I recall this had a significant impact on start up time back in 2010/2011. Not
> sure how relevant it still is with todays hardware.

This doesn't seem to have any impact on performance, design would be fine with giving me whatever format assets we want I guess.

I feel like going with SVGs has the advantage of being able to freely resize the decoration once we allow clients to provide their own in the longterm.

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

Could you please remove all those empty <g></g> from the SVGs?

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

> This doesn't seem to have any impact on performance

Sure, as it's used only for a couple of small images. But it might if adoption becomes widespread throughout unity8, specially on phones. We can worry about it once we get there.

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

Don't know how to reset it. "Abstain" will do it for now...

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

- run "make tryDesktopStage"
- Launch camera-app, gallery-app and webbrowser-app

Why are those apps being launched fullscreen now?

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

By the way, what about those rounded corner I saw in the design mock up. Should we have a trello card for it or was it dropped?

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

Is qml/Stages/graphics/window-close.svg being used for anything anymore?

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

There's not a shadow around the indicators panel (that thing that you drag down from the top) anymore. Instead, there's just a black line on its left side. Is it how design intended?

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

- run "make tryShell
- select desktop size
- select desktop usage scenario
- unlock the shell (dismiss lockscreen)
- Click on the indicators bar grey area between the focused app name and the indicators icons

This is what you get:
qml/Stages/DesktopStage.qml:178: TypeError: Cannot read property 'appId' of null

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

I don't get why you set "hoverEnabled: true" on that MouseArea where you put WindowControlButtons in Panel.qml.

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

Still in Panel.qml:

"// TODO here would the LIM come"

What's "LIM"? Also the sentence doesn't look grammatically correct.

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

Would it be too much to ask for adding a way to show/hide window controls and name in "make tryPanel" so we can see how it interacts with other panel components and states without having to run a fullblown Shell.qml test?

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

qml/Panel/PanelBackground.qml doesn't seem to be used anywhere... I removed it and didn't notice any difference. Also grepping for it didn't show anything.

If so, could you please nuke it? It's a pretty ridiculous component anyway... (a Rectangle with a pre-defined color)

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

> Could you please remove all those empty <g></g> from the SVGs?

Done

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

> - run "make tryDesktopStage"
> - Launch camera-app, gallery-app and webbrowser-app
>
> Why are those apps being launched fullscreen now?

Because of the bugfix for https://bugs.launchpad.net/ubuntu/+source/webbrowser-app/+bug/1511020

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

> By the way, what about those rounded corner I saw in the design mock up.
> Should we have a trello card for it or was it dropped?

Right, we will need another task in trello for this (qtmir I suppose)

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

> Is qml/Stages/graphics/window-close.svg being used for anything anymore?

Yup, for the desktop spread imo

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

In DesktopStage.qml:

Your updateForegroundMaximizedApp() makes unity8 traverse ApplicationManager model once again unnecessarily. The delegates are already ordered according to ApplicationManager model, so their indexes match. No need to look up for it.

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

> > - run "make tryDesktopStage"
> > - Launch camera-app, gallery-app and webbrowser-app
> >
> > Why are those apps being launched fullscreen now?
>
> Because of the bugfix for https://bugs.launchpad.net/ubuntu/+source
> /webbrowser-app/+bug/1511020

Can you please stick to the purpose of this branch and just update the visuals?

Please put this bug fix in a separate merge proposal.

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

> Still in Panel.qml:
>
> "// TODO here would the LIM come"
>
> What's "LIM"? Also the sentence doesn't look grammatically correct.

Locally integrated menus

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

> I don't get why you set "hoverEnabled: true" on that MouseArea where you put
> WindowControlButtons in Panel.qml.

Because the whole group is visible only on mouse over _and_ I need the individual mouse over visual effect when hovering over a single button. Any idea how to do that better?

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

On 12/11/2015 11:04, Lukáš Tinkl wrote:
>> Still in Panel.qml:
>>
>> "// TODO here would the LIM come"
>>
>> What's "LIM"? Also the sentence doesn't look grammatically correct.
> Locally integrated menus

Please write it down in full. Acronyms just hamper communication.

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

> qml/Panel/PanelBackground.qml doesn't seem to be used anywhere... I removed it
> and didn't notice any difference. Also grepping for it didn't show anything.
>
> If so, could you please nuke it? It's a pretty ridiculous component anyway...
> (a Rectangle with a pre-defined color)

Yup, it's gone

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

> In DesktopStage.qml:
>
> Your updateForegroundMaximizedApp() makes unity8 traverse ApplicationManager
> model once again unnecessarily. The delegates are already ordered according to
> ApplicationManager model, so their indexes match. No need to look up for it.

Not quite the same, the window might be maximized (its state) but not visually. In other words, the window might be maximized and minimized at the same time.

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

> On 12/11/2015 11:04, Lukáš Tinkl wrote:
> >> Still in Panel.qml:
> >>
> >> "// TODO here would the LIM come"
> >>
> >> What's "LIM"? Also the sentence doesn't look grammatically correct.
> > Locally integrated menus
>
> Please write it down in full. Acronyms just hamper communication.

That's what the design docs use but yea, you're right

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

On 12/11/2015 11:10, Lukáš Tinkl wrote:
>> In DesktopStage.qml:
>>
>> Your updateForegroundMaximizedApp() makes unity8 traverse ApplicationManager
>> model once again unnecessarily. The delegates are already ordered according to
>> ApplicationManager model, so their indexes match. No need to look up for it.
> Not quite the same, the window might be maximized (its state) but not visually. In other words, the window might be maximized and minimized at the same time.

Their state doesn't change their index.

appRepeater already iterates on ApplicationManager. I don't get how is
it possible to have a delegate in that repeater whose index differs from
the model it was created from.

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

> - run "make tryShell
> - select desktop size
> - select desktop usage scenario
> - unlock the shell (dismiss lockscreen)
> - Click on the indicators bar grey area between the focused app name and the
> indicators icons
>
> This is what you get:
> qml/Stages/DesktopStage.qml:178: TypeError: Cannot read property 'appId' of
> null

Fixed

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

> On 12/11/2015 11:10, Lukáš Tinkl wrote:
> >> In DesktopStage.qml:
> >>
> >> Your updateForegroundMaximizedApp() makes unity8 traverse
> ApplicationManager
> >> model once again unnecessarily. The delegates are already ordered according
> to
> >> ApplicationManager model, so their indexes match. No need to look up for
> it.
> > Not quite the same, the window might be maximized (its state) but not
> visually. In other words, the window might be maximized and minimized at the
> same time.
>
> Their state doesn't change their index.

And that's problem, I need to know what index is the (visually) maximized window at. To be able to cast the panel drop shadow and focus the correct window when clicking on the panel.

> appRepeater already iterates on ApplicationManager. I don't get how is
> it possible to have a delegate in that repeater whose index differs from
> the model it was created from.

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

> There's not a shadow around the indicators panel (that thing that you drag
> down from the top) anymore. Instead, there's just a black line on its left
> side. Is it how design intended?

Yup, I re-added it now but there's still the thin black line... dunno where it comes from :) Will investigate

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

> > There's not a shadow around the indicators panel (that thing that you drag
> > down from the top) anymore. Instead, there's just a black line on its left
> > side. Is it how design intended?
>
> Yup, I re-added it now but there's still the thin black line... dunno where it
> comes from :) Will investigate

Should be fixed now

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

> > On 12/11/2015 11:10, Lukáš Tinkl wrote:
> > >> In DesktopStage.qml:
> > >>
> > >> Your updateForegroundMaximizedApp() makes unity8 traverse
> > ApplicationManager
> > >> model once again unnecessarily. The delegates are already ordered
> according
> > to
> > >> ApplicationManager model, so their indexes match. No need to look up for
> > it.
> > > Not quite the same, the window might be maximized (its state) but not
> > visually. In other words, the window might be maximized and minimized at the
> > same time.
> >
> > Their state doesn't change their index.
>
> And that's problem, I need to know what index is the (visually) maximized
> window at. To be able to cast the panel drop shadow and focus the correct
> window when clicking on the panel.
>
> > appRepeater already iterates on ApplicationManager. I don't get how is
> > it possible to have a delegate in that repeater whose index differs from
> > the model it was created from.

Optimized the for loop by returning the already available index from appManager

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

FAILED: Continuous integration, rev:2049
http://jenkins.qa.ubuntu.com/job/unity8-ci/6700/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5130
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/115/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1412/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/115/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1307
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1308
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/114
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/114
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4108
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5144
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5144/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25114
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/17/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/115
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/115/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25113

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

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

> Would it be too much to ask for adding a way to show/hide window controls and
> name in "make tryPanel" so we can see how it interacts with other panel
> components and states without having to run a fullblown Shell.qml test?

Done

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

FAILED: Continuous integration, rev:2055
http://jenkins.qa.ubuntu.com/job/unity8-ci/6703/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5134
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/118/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1415
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/118
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1310
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1311
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/117
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/117
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4112
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5148
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5148/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25122
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/19/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/118
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/118/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25120

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

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

FAILED: Continuous integration, rev:2056
http://jenkins.qa.ubuntu.com/job/unity8-ci/6705/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5139
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/120/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1417
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/120
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1312
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1313
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/119
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/119
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4116
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5153
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5153/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25130
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/21/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/120
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/120/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25129

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

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

> > Would it be too much to ask for adding a way to show/hide window controls
> and
> > name in "make tryPanel" so we can see how it interacts with other panel
> > components and states without having to run a fullblown Shell.qml test?
>
> Done

But I don't see the name of the application there when the mouse is not hovering over it.

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

- make tryShell
- Select desktop size and desktop usage scenario
- Unlock screen
- Select phone size & usage scenario
- Unlock screen again

Expected outcome:
Indicators bar does not display the focused application name

Actual outcome:
Indicators bar displays the focused application name, like in a desktop usage scenario.

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

FAILED: Continuous integration, rev:2057
http://jenkins.qa.ubuntu.com/job/unity8-ci/6707/
Executed test runs:
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5142/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/122/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1419/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/122/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1314
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1315
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/121
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/121
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5156
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5156/artifact/work/output/*zip*/output.zip
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/23/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/122
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/122/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25133

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

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

FAILED: Continuous integration, rev:2060
http://jenkins.qa.ubuntu.com/job/unity8-ci/6715/
Executed test runs:
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5186/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/130/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1427
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/130
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1322
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1323
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/129/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/129
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4123/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5203
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5203/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25154
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/25/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/130
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/130/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25157

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

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

FAILED: Continuous integration, rev:2057
http://jenkins.qa.ubuntu.com/job/unity8-ci/6721/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5215
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/136/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1434
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/136
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1328
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1329
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/135
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/135
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4145
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5232
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5232/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25191
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/27/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/136
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/136/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25190

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

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

FAILED: Continuous integration, rev:2057
http://jenkins.qa.ubuntu.com/job/unity8-ci/6722/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5216
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/137/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1435
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/137
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1329
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1330
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/136
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/136
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4146
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5233
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5233/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25194
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/28/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/137
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/137/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25192

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

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

> > > Would it be too much to ask for adding a way to show/hide window controls
> > and
> > > name in "make tryPanel" so we can see how it interacts with other panel
> > > components and states without having to run a fullblown Shell.qml test?
> >
> > Done
>
> But I don't see the name of the application there when the mouse is not
> hovering over it.

I don't see any applications in "make tryPanel", what should it show then?

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

> - make tryShell
> - Select desktop size and desktop usage scenario
> - Unlock screen
> - Select phone size & usage scenario
> - Unlock screen again
>
> Expected outcome:
> Indicators bar does not display the focused application name
>
> Actual outcome:
> Indicators bar displays the focused application name, like in a desktop usage
> scenario.

Thanks for spotting, fixed

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

> > > Would it be too much to ask for adding a way to show/hide window controls
> > and
> > > name in "make tryPanel" so we can see how it interacts with other panel
> > > components and states without having to run a fullblown Shell.qml test?
> >
> > Done
>
> But I don't see the name of the application there when the mouse is not
> hovering over it.

Ok, added an option to show a fake window title

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

FAILED: Continuous integration, rev:2061
http://jenkins.qa.ubuntu.com/job/unity8-ci/6735/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5232
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/150/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1448
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/150/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1342
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1343
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/149
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/149
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4152
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5252
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5252/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25220
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/31/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/150
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/150/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25221

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

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

FAILED: Continuous integration, rev:2062
http://jenkins.qa.ubuntu.com/job/unity8-ci/6736/
Executed test runs:
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5236
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/151/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1449
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/151/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1343
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1344
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/150
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/150
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4156
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5256
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5256/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25231
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/32/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/151
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/151/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25233

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

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

- Run "make tryShell"
- Select desktop size and usage scenario
- Unlock the screen
- Launch a fullscreen app, like gallery

Expected outcome:
The applications takes the entire area of Shell.qml

Actual outcome:
It doesn't take the space on top that was previously occupied by the indicators bar.

Comments:
I know you said it works when run for real on a laptop/device. But those manual tests should reproduce exactly what happens "for real". Otherwise it undermines the value of qml tests. There's no reason why they should behave differently. This is just high-level QML code afterall.

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

> - Run "make tryShell"
> - Select desktop size and usage scenario
> - Unlock the screen
> - Launch a fullscreen app, like gallery
>
> Expected outcome:
> The applications takes the entire area of Shell.qml
>
> Actual outcome:
> It doesn't take the space on top that was previously occupied by the
> indicators bar.
>
> Comments:
> I know you said it works when run for real on a laptop/device. But those
> manual tests should reproduce exactly what happens "for real". Otherwise it
> undermines the value of qml tests. There's no reason why they should behave
> differently. This is just high-level QML code afterall.

Fixed

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

FAILED: Continuous integration, rev:2063
http://jenkins.qa.ubuntu.com/job/unity8-ci/6751/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5287
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/166/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1464
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/166/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1358
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1359
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/165
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/165
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4196
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5307
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5307/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25315
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/41/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/166
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/166/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25314

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

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

FAILED: Continuous integration, rev:2064
http://jenkins.qa.ubuntu.com/job/unity8-ci/6752/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5288
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/167/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1465
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/167
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1359
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1360
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/166
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/166
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4197
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5308
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5308/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25318
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/42/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/167
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/167/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25317

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

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

In test_tappingOnDecorationFocusesApplication

Please keep launching 3 applications. It's important that neither the "from" nor the "to" applications are focused before the test. That's why a 3rd one is being launched.

I guess the problem is that camera-app is now fullscreen in DesktopStage. So just replace it with another an application that is not fullscreen, like gmail-webapp.

You will have to change its saved mock geometry so that it doesn't overlap unity8-dash or dialer-app.

So just replace camera-app and gallery-app below with other two non-fullscreen apps:

"""
        WindowStateStorage.geometry = {
            'unity8-dash': Qt.rect(0, units.gu(3), units.gu(50), units.gu(40)),
            'dialer-app': Qt.rect(units.gu(51), units.gu(3), units.gu(50), units.gu(40)),
            'camera-app': Qt.rect(0, units.gu(44), units.gu(50), units.gu(40)),
            'gallery-app': Qt.rect(units.gu(51), units.gu(44), units.gu(50), units.gu(40))
        }
"""

I suggest gmail-webapp and twitter-webapp

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

Likewise in test_tappingOnWindowChangesFocusedApp and test_applicationsBecomeVisibleWhenOccludingAppRemoved

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

In test_maximisedAppStaysVisibleWhenAppStarts:

"""
findChild(dashDelegate, "decoratedWindow").maximize();
"""

You should click on the maximize button instead of directly calling an internal function. We should strive to keep code paths as close to real usage as possible.

"""
var dialerApp = startApplication("dialer-app");
"""

I guess you're using dialer-app here because it starts in normal state (ie non-maximed and non-fullscreen). If so, please explicitly check for this condition in the test to have it clear.

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

Tests now launch 3 apps and use the maximize button manually

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

In test_maximizeApplicationHidesSurfacesBehindIt:

I think you should s/camera-app/gmail-webapp/ instead of changing the test code expectations

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

Likewise in test_applicationsBecomeVisibleWhenOccludingAppRemoved()

s/camera-app/gmail-webapp
s/gallery-app/twitter-webapp

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

FAILED: Continuous integration, rev:2065
http://jenkins.qa.ubuntu.com/job/unity8-ci/6753/
Executed test runs:
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5290/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/168/console
    FAILURE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1466/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/168
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1360
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1361
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/167
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/167
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4198/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5310
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5310/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25326
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/43/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/168
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/168/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25327

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

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

> In test_maximizeApplicationHidesSurfacesBehindIt:
>
> I think you should s/camera-app/gmail-webapp/ instead of changing the test
> code expectations

Fixed

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

> Likewise in test_applicationsBecomeVisibleWhenOccludingAppRemoved()
>
> s/camera-app/gmail-webapp
> s/gallery-app/twitter-webapp

I don't see a problem with this testcase

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

test_applicationsBecomeVisibleWhenOccludingAppRemoved now shows an impossible scenario.

In this test you launch gallery-app and click on its maximize button.

But I cannot do it manually because gallery-app starts in fullscreen. No maximize button in sight. That's why I told you to change it into an app that doesn't start in fullscreen.

review: Needs Fixing
Revision history for this message
Daniel d'Andrada (dandrader) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:2067
http://jenkins.qa.ubuntu.com/job/unity8-ci/6760/
Executed test runs:
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5298
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/175/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1473
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/175
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1367
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1368
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/174
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/174
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4203
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5318
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5318/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25343
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/47/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/175
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/175/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25342

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

"""
+ width: root.width
+ height: fullscreen ? root.height : root.height - decoration.height
"""

After lp:~dandrader/unity8/noStretchOnResize, you cannot set ApplicationWindow's size directly. You have to use requestedWidth and requestedHeight instead.

review: Needs Fixing
2072. By Lukáš Tinkl

don't set width/height directly

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

> """
> + width: root.width
> + height: fullscreen ? root.height : root.height - decoration.height
> """
>
> After lp:~dandrader/unity8/noStretchOnResize, you cannot set
> ApplicationWindow's size directly. You have to use requestedWidth and
> requestedHeight instead.

Fixed

Revision history for this message
Daniel d'Andrada (dandrader) wrote :

Disclaimer: Not sure if your branch caused it or if this is a pre-existing issue

1 - Apply this patch: http://pastebin.ubuntu.com/13477069/
2 - run "make tryDesktopStage"
3 - launch dialer-app
4 - maximize dialer-app

Expected outcome:
unity8-dash stays put

Actual outcome:
http://pastebin.ubuntu.com/13477070/

review: Needs Fixing
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

> Disclaimer: Not sure if your branch caused it or if this is a pre-existing
> issue
>
> 1 - Apply this patch: http://pastebin.ubuntu.com/13477069/
> 2 - run "make tryDesktopStage"
> 3 - launch dialer-app
> 4 - maximize dialer-app
>
> Expected outcome:
> unity8-dash stays put
>
> Actual outcome:
> http://pastebin.ubuntu.com/13477070/

Confirmed it's your branch. It doesn't happen with its prerequisite.

2073. By Lukáš Tinkl

don't hide the decoration when the window is not visible

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

> Disclaimer: Not sure if your branch caused it or if this is a pre-existing
> issue
>
> 1 - Apply this patch: http://pastebin.ubuntu.com/13477069/
> 2 - run "make tryDesktopStage"
> 3 - launch dialer-app
> 4 - maximize dialer-app
>
> Expected outcome:
> unity8-dash stays put
>
> Actual outcome:
> http://pastebin.ubuntu.com/13477070/

Fixed

Revision history for this message
Daniel d'Andrada (dandrader) :
review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

FAILED: Continuous integration, rev:2071
http://jenkins.qa.ubuntu.com/job/unity8-ci/6777/
Executed test runs:
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-vivid-touch/5328
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-xenial-touch/192/console
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/unity-phablet-qmluitests-vivid/1490
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-qmluitest-xenial-amd64/192
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-amd64-ci/1384
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-vivid-i386-ci/1385
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-amd64-ci/191
    SUCCESS: http://jenkins.qa.ubuntu.com/job/unity8-xenial-i386-ci/191
    UNSTABLE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-vivid-touch/4227
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5348
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-vivid-armhf/5348/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25412
    FAILURE: http://jenkins.qa.ubuntu.com/job/generic-deb-autopilot-runner-xenial-touch/58/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/192
        deb: http://jenkins.qa.ubuntu.com/job/generic-mediumtests-builder-xenial-armhf/192/artifact/work/output/*zip*/output.zip
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/25413

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

review: Needs Fixing (continuous-integration)
2074. By Lukáš Tinkl

get rid of the dp(2) gap for the orange line

2075. By Lukáš Tinkl

#333333 -> #292929

2076. By Lukáš Tinkl

get rid of the orange line in the handle

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

Updated with new visuals (panel gap gone, changed decoration colors, got rid of the orange line in the drag handle)

2077. By Lukáš Tinkl

Light font weight for the root indicator labels

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'qml/Components/ModeSwitchWarningDialog.qml'
2--- qml/Components/ModeSwitchWarningDialog.qml 2015-11-06 10:12:44 +0000
3+++ qml/Components/ModeSwitchWarningDialog.qml 2015-11-25 16:12:37 +0000
4@@ -75,7 +75,7 @@
5 property string notClickedText: i18n.tr("OK, I will reconnect")
6 property string clickedText: i18n.tr("Reconnect now!")
7 text: clicked ? clickedText : notClickedText
8- color: "#333333"
9+ color: "#292929"
10
11 MouseArea {
12 anchors.fill: parent
13
14=== modified file 'qml/Components/PanelState/PanelState.qml'
15--- qml/Components/PanelState/PanelState.qml 2015-11-09 10:16:18 +0000
16+++ qml/Components/PanelState/PanelState.qml 2015-11-25 16:12:37 +0000
17@@ -22,10 +22,11 @@
18
19 property string title: ""
20 property bool buttonsVisible: false
21-
22- property int panelHeight: 0
23+ property bool dropShadow: false
24+ property int panelHeight: units.gu(3)
25
26 signal close()
27 signal minimize()
28 signal maximize()
29+ signal focusMaximizedApp()
30 }
31
32=== modified file 'qml/Components/WindowControlButtons.qml'
33--- qml/Components/WindowControlButtons.qml 2015-11-04 14:57:33 +0000
34+++ qml/Components/WindowControlButtons.qml 2015-11-25 16:12:37 +0000
35@@ -1,5 +1,5 @@
36 /*
37- * Copyright (C) 2014 Canonical, Ltd.
38+ * Copyright (C) 2014-2015 Canonical, Ltd.
39 *
40 * This program is free software; you can redistribute it and/or modify
41 * it under the terms of the GNU General Public License as published by
42@@ -12,8 +12,6 @@
43 *
44 * You should have received a copy of the GNU General Public License
45 * along with this program. If not, see <http://www.gnu.org/licenses/>.
46- *
47- * Authors: Michael Zanetti <michael.zanetti@canonical.com>
48 */
49
50 import QtQuick 2.4
51@@ -21,43 +19,90 @@
52
53 Row {
54 id: root
55- spacing: units.gu(0.5)
56+ spacing: units.gu(1)
57+
58+ // to be set from outside
59+ property bool active: false
60
61 signal close()
62 signal minimize()
63 signal maximize()
64
65- Rectangle {
66+ MouseArea {
67+ id: closeWindowButton
68 objectName: "closeWindowButton"
69- height: parent.height; width: height; radius: height / 2
70- gradient: Gradient {
71- GradientStop { color: "#F49073"; position: 0 }
72- GradientStop { color: "#DF4F1C"; position: 1 }
73- }
74- border.width: units.dp(.5)
75- border.color: "black"
76- MouseArea { anchors.fill: parent; onClicked: root.close() }
77+ hoverEnabled: true
78+ height: parent.height
79+ width: height
80+ onClicked: root.close()
81+
82+ Rectangle {
83+ anchors.centerIn: parent
84+ width: units.gu(2)
85+ height: units.gu(2)
86+ radius: height / 2
87+ color: "#ed3146"
88+ visible: parent.containsMouse
89+ }
90+ Icon {
91+ width: height
92+ height: parent.height *.5
93+ anchors.centerIn: parent
94+ source: "graphics/window-close.svg"
95+ color: root.active ? "white" : "#5d5d5d"
96+ keyColor: "black"
97+ }
98 }
99- Rectangle {
100+
101+ MouseArea {
102+ id: minimizeWindowButton
103 objectName: "minimizeWindowButton"
104- height: parent.height; width: height; radius: height / 2
105- gradient: Gradient {
106- GradientStop { color: "#92918C"; position: 0 }
107- GradientStop { color: "#5E5D58"; position: 1 }
108- }
109- border.width: units.dp(.5)
110- border.color: "black"
111- MouseArea { anchors.fill: parent; onClicked: root.minimize() }
112+ hoverEnabled: true
113+ height: parent.height
114+ width: height
115+ onClicked: root.minimize()
116+
117+ Rectangle {
118+ anchors.centerIn: parent
119+ width: units.gu(2)
120+ height: units.gu(2)
121+ radius: height / 2
122+ color: "#888888"
123+ visible: parent.containsMouse
124+ }
125+ Icon {
126+ width: height
127+ height: parent.height *.5
128+ anchors.centerIn: parent
129+ source: "graphics/window-minimize.svg"
130+ color: root.active ? "white" : "#5d5d5d"
131+ keyColor: "black"
132+ }
133 }
134- Rectangle {
135+
136+ MouseArea {
137+ id: maximizeWindowButton
138 objectName: "maximizeWindowButton"
139- height: parent.height; width: height; radius: height / 2
140- gradient: Gradient {
141- GradientStop { color: "#92918C"; position: 0 }
142- GradientStop { color: "#5E5D58"; position: 1 }
143- }
144- border.width: units.dp(.5)
145- border.color: "black"
146- MouseArea { anchors.fill: parent; onClicked: root.maximize() }
147+ hoverEnabled: true
148+ height: parent.height
149+ width: height
150+ onClicked: root.maximize()
151+
152+ Rectangle {
153+ anchors.centerIn: parent
154+ width: units.gu(2)
155+ height: units.gu(2)
156+ radius: height / 2
157+ color: "#888888"
158+ visible: parent.containsMouse
159+ }
160+ Icon {
161+ width: height
162+ height: parent.height *.5
163+ anchors.centerIn: parent
164+ source: "graphics/window-maximize.svg"
165+ color: root.active ? "white" : "#5d5d5d"
166+ keyColor: "black"
167+ }
168 }
169 }
170
171=== added file 'qml/Components/graphics/window-close.svg'
172--- qml/Components/graphics/window-close.svg 1970-01-01 00:00:00 +0000
173+++ qml/Components/graphics/window-close.svg 2015-11-25 16:12:37 +0000
174@@ -0,0 +1,14 @@
175+<?xml version="1.0" encoding="iso-8859-1"?>
176+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
177+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
178+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
179+ width="94.926px" height="94.926px" viewBox="0 0 94.926 94.926" style="enable-background:new 0 0 94.926 94.926;"
180+ xml:space="preserve">
181+<g>
182+ <path d="M55.931,47.463L94.306,9.09c0.826-0.827,0.826-2.167,0-2.994L88.833,0.62C88.436,0.224,87.896,0,87.335,0
183+ c-0.562,0-1.101,0.224-1.498,0.62L47.463,38.994L9.089,0.62c-0.795-0.795-2.202-0.794-2.995,0L0.622,6.096
184+ c-0.827,0.827-0.827,2.167,0,2.994l38.374,38.373L0.622,85.836c-0.827,0.827-0.827,2.167,0,2.994l5.473,5.476
185+ c0.397,0.396,0.936,0.62,1.498,0.62s1.1-0.224,1.497-0.62l38.374-38.374l38.374,38.374c0.397,0.396,0.937,0.62,1.498,0.62
186+ s1.101-0.224,1.498-0.62l5.473-5.476c0.826-0.827,0.826-2.167,0-2.994L55.931,47.463z"/>
187+</g>
188+</svg>
189
190=== added file 'qml/Components/graphics/window-maximize.svg'
191--- qml/Components/graphics/window-maximize.svg 1970-01-01 00:00:00 +0000
192+++ qml/Components/graphics/window-maximize.svg 2015-11-25 16:12:37 +0000
193@@ -0,0 +1,12 @@
194+<?xml version="1.0" encoding="iso-8859-1"?>
195+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
196+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
197+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
198+ width="459px" height="459px" viewBox="0 0 459 459" style="enable-background:new 0 0 459 459;" xml:space="preserve">
199+<g>
200+ <g id="check-box-outline-blank">
201+ <path d="M408,51v357H51V51H408 M408,0H51C22.95,0,0,22.95,0,51v357c0,28.05,22.95,51,51,51h357c28.05,0,51-22.95,51-51V51
202+ C459,22.95,436.05,0,408,0L408,0z"/>
203+ </g>
204+</g>
205+</svg>
206
207=== added file 'qml/Components/graphics/window-minimize.svg'
208--- qml/Components/graphics/window-minimize.svg 1970-01-01 00:00:00 +0000
209+++ qml/Components/graphics/window-minimize.svg 2015-11-25 16:12:37 +0000
210@@ -0,0 +1,13 @@
211+<?xml version="1.0" encoding="iso-8859-1"?>
212+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
213+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
214+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
215+ width="121.805px" height="121.804px" viewBox="0 0 121.805 121.804" style="enable-background:new 0 0 121.805 121.804;"
216+ xml:space="preserve">
217+<g>
218+ <g>
219+ <path d="M7.308,68.211h107.188c4.037,0,7.309-3.272,7.309-7.31c0-4.037-3.271-7.309-7.309-7.309H7.308
220+ C3.272,53.593,0,56.865,0,60.902C0,64.939,3.272,68.211,7.308,68.211z"/>
221+ </g>
222+</g>
223+</svg>
224
225=== modified file 'qml/Panel/Handle.qml'
226--- qml/Panel/Handle.qml 2015-07-15 15:07:19 +0000
227+++ qml/Panel/Handle.qml 2015-11-25 16:12:37 +0000
228@@ -19,7 +19,7 @@
229
230 Rectangle {
231 id: handle
232- color: "#333333"
233+ color: "#5d5d5d"
234 height: units.gu(2)
235 property bool active: false
236
237@@ -35,7 +35,7 @@
238 id: dot
239 width: units.dp(3)
240 height: width
241- color: handle.active ? "#de4814" : "#717171"
242+ color: handle.active ? UbuntuColors.orange : "#888888"
243 radius: units.dp(1)
244 }
245 }
246
247=== modified file 'qml/Panel/IndicatorItem.qml'
248--- qml/Panel/IndicatorItem.qml 2015-09-29 12:28:10 +0000
249+++ qml/Panel/IndicatorItem.qml 2015-11-25 16:12:37 +0000
250@@ -66,6 +66,7 @@
251 opacity: 1.0
252 font.family: "Ubuntu"
253 fontSize: "medium"
254+ font.weight: Font.Light
255 color: root.color
256 Behavior on color { ColorAnimation { duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing } }
257 }
258@@ -126,6 +127,7 @@
259 opacity: 1.0
260 font.family: "Ubuntu"
261 fontSize: "medium"
262+ font.weight: Font.Light
263 color: root.color
264 Behavior on color { ColorAnimation { duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing } }
265 }
266@@ -142,6 +144,7 @@
267
268 text: title !== "" ? title : identifier
269 fontSize: "x-small"
270+ font.weight: Font.Light
271 horizontalAlignment: Text.AlignHCenter
272 opacity: 0
273 color: root.color
274
275=== modified file 'qml/Panel/Indicators/client/IndicatorsClient.qml'
276--- qml/Panel/Indicators/client/IndicatorsClient.qml 2015-07-15 15:07:19 +0000
277+++ qml/Panel/Indicators/client/IndicatorsClient.qml 2015-11-25 16:12:37 +0000
278@@ -22,7 +22,7 @@
279 import Ubuntu.Components.ListItems 1.3 as ListItem
280
281 Rectangle {
282- color: "black"
283+ color: "#292929"
284 id: root
285
286 Component.onCompleted: {
287
288=== modified file 'qml/Panel/IndicatorsMenu.qml'
289--- qml/Panel/IndicatorsMenu.qml 2015-09-02 07:42:27 +0000
290+++ qml/Panel/IndicatorsMenu.qml 2015-11-25 16:12:37 +0000
291@@ -38,7 +38,7 @@
292 property bool enableHint: true
293 property bool contentEnabled: true
294 property bool showOnClick: true
295- property color panelColor: "black"
296+ property color panelColor: "#292929"
297
298 signal showTapped(point position)
299
300@@ -110,7 +110,7 @@
301 height: units.gu(0.5)
302 gradient: Gradient {
303 GradientStop { position: 0.0; color: "transparent" }
304- GradientStop { position: 1.0; color: "black" }
305+ GradientStop { position: 1.0; color: "#292929" }
306 }
307 opacity: 0.3
308 }
309
310=== modified file 'qml/Panel/MenuContent.qml'
311--- qml/Panel/MenuContent.qml 2015-07-15 15:13:18 +0000
312+++ qml/Panel/MenuContent.qml 2015-11-25 16:12:37 +0000
313@@ -27,7 +27,7 @@
314
315 property QtObject indicatorsModel: null
316 property int currentMenuIndex: -1
317- color: "#221e1c" // FIXME not in palette yet
318+ color: "#292929" // FIXME not in palette yet
319
320 width: units.gu(40)
321 height: units.gu(42)
322
323=== modified file 'qml/Panel/Panel.qml'
324--- qml/Panel/Panel.qml 2015-11-09 10:16:18 +0000
325+++ qml/Panel/Panel.qml 2015-11-25 16:12:37 +0000
326@@ -30,23 +30,12 @@
327 property real indicatorAreaShowProgress: 1.0
328 property bool locked: false
329
330- opacity: fullscreenMode && indicators.fullyClosed ? 0.0 : 1.0
331-
332- Binding {
333- target: PanelState
334- property: "panelHeight"
335- value: root.panelHeight
336- }
337-
338 Rectangle {
339 id: darkenedArea
340 property real darkenedOpacity: 0.6
341 anchors {
342- top: parent.top
343+ fill: parent
344 topMargin: panelHeight
345- left: parent.left
346- right: parent.right
347- bottom: parent.bottom
348 }
349 color: "black"
350 opacity: indicators.unitProgress * darkenedOpacity
351@@ -59,16 +48,18 @@
352 }
353 }
354
355+ Binding {
356+ target: PanelState
357+ property: "panelHeight"
358+ value: indicators.minimizedPanelHeight
359+ }
360+
361 Item {
362 id: indicatorArea
363 objectName: "indicatorArea"
364
365 anchors.fill: parent
366
367- Behavior on anchors.topMargin {
368- NumberAnimation { duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing }
369- }
370-
371 transform: Translate {
372 y: indicators.state === "initial"
373 ? (1.0 - indicatorAreaShowProgress) * -d.indicatorHeight
374@@ -76,7 +67,7 @@
375 }
376
377 BorderImage {
378- id: dropShadow
379+ id: indicatorsDropShadow
380 anchors {
381 fill: indicators
382 leftMargin: -units.gu(1)
383@@ -86,9 +77,19 @@
384 source: "graphics/rectangular_dropshadow.sci"
385 }
386
387+ BorderImage {
388+ id: panelDropShadow
389+ anchors {
390+ fill: indicatorAreaBackground
391+ bottomMargin: -units.gu(1)
392+ }
393+ visible: PanelState.dropShadow && !callHint.visible
394+ source: "graphics/rectangular_dropshadow.sci"
395+ }
396+
397 Rectangle {
398 id: indicatorAreaBackground
399- color: callHint.visible ? "green" : "black"
400+ color: callHint.visible ? "green" : "#292929"
401 anchors {
402 top: parent.top
403 left: parent.left
404@@ -99,30 +100,6 @@
405 Behavior on color { ColorAnimation { duration: UbuntuAnimation.FastDuration } }
406 }
407
408- PanelSeparatorLine {
409- id: orangeLine
410- anchors {
411- top: indicatorAreaBackground.bottom
412- left: parent.left
413- right: indicators.left
414- }
415- saturation: 1 - indicators.unitProgress
416-
417- // Don't let input event pass trough
418- MouseArea { anchors.fill: parent }
419- }
420-
421- Image {
422- anchors {
423- top: indicators.top
424- bottom: indicators.bottom
425- right: indicators.left
426- topMargin: indicatorArea.anchors.topMargin + indicators.minimizedPanelHeight
427- }
428- width: units.dp(2)
429- source: "graphics/VerticalDivider.png"
430- }
431-
432 MouseArea {
433 anchors {
434 top: parent.top
435@@ -130,7 +107,29 @@
436 right: indicators.left
437 }
438 height: indicators.minimizedPanelHeight
439- onClicked: { if (callHint.visible) { callHint.showLiveCall(); } }
440+ hoverEnabled: true
441+ onClicked: callHint.visible ? callHint.showLiveCall() : PanelState.focusMaximizedApp()
442+ onDoubleClicked: PanelState.maximize()
443+
444+ // WindowControlButtons inside the mouse area, otherwise QML doesn't grok nested hover events :/
445+ // cf. https://bugreports.qt.io/browse/QTBUG-32909
446+ WindowControlButtons {
447+ id: windowControlButtons
448+ objectName: "panelWindowControlButtons"
449+ anchors {
450+ left: parent.left
451+ top: parent.top
452+ leftMargin: units.gu(1)
453+ topMargin: units.gu(0.5)
454+ bottomMargin: units.gu(0.5)
455+ }
456+ height: indicators.minimizedPanelHeight - anchors.topMargin - anchors.bottomMargin
457+ visible: PanelState.buttonsVisible && parent.containsMouse && !root.locked && !callHint.visible
458+ active: PanelState.buttonsVisible
459+ onClose: PanelState.close()
460+ onMinimize: PanelState.minimize()
461+ onMaximize: PanelState.maximize()
462+ }
463 }
464
465 IndicatorsMenu {
466@@ -146,7 +145,7 @@
467 width: root.width - (windowControlButtons.visible ? windowControlButtons.width + titleLabel.width : 0)
468 minimizedPanelHeight: units.gu(3)
469 expandedPanelHeight: units.gu(7)
470- openedHeight: root.height - indicatorOrangeLine.height
471+ openedHeight: root.height
472
473 overFlowWidth: {
474 if (callHint.visible) {
475@@ -163,58 +162,34 @@
476 callHint.showLiveCall();
477 }
478 }
479-
480- hideDragHandle {
481- anchors.bottomMargin: -indicatorOrangeLine.height
482- }
483- }
484-
485- WindowControlButtons {
486- id: windowControlButtons
487- objectName: "panelWindowControlButtons"
488- anchors {
489- left: parent.left
490- top: parent.top
491- margins: units.gu(0.7)
492- }
493- height: indicators.minimizedPanelHeight - anchors.margins * 2
494- visible: PanelState.buttonsVisible && !root.locked
495- onClose: PanelState.close()
496- onMinimize: PanelState.minimize()
497- onMaximize: PanelState.maximize()
498 }
499
500 Label {
501 id: titleLabel
502 objectName: "windowDecorationTitle"
503 anchors {
504- left: windowControlButtons.right
505+ left: parent.left
506 top: parent.top
507- margins: units.gu(0.7)
508+ leftMargin: units.gu(1)
509+ topMargin: units.gu(0.5)
510+ bottomMargin: units.gu(0.5)
511 }
512- color: "#DFDBD2"
513- height: windowControlButtons.height
514- visible: windowControlButtons.visible
515+ color: PanelState.buttonsVisible ? "#ffffff" : "#5d5d5d"
516+ height: indicators.minimizedPanelHeight - anchors.topMargin - anchors.bottomMargin
517+ visible: !windowControlButtons.visible && !root.locked && !callHint.visible
518 verticalAlignment: Text.AlignVCenter
519- fontSize: "small"
520- font.bold: true
521+ fontSize: "medium"
522+ font.weight: Font.Normal
523 text: PanelState.title
524 }
525
526- PanelSeparatorLine {
527- id: indicatorOrangeLine
528- anchors {
529- top: indicators.bottom
530- left: indicators.left
531- right: indicators.right
532- }
533- }
534+ // TODO here would the Locally integrated menus come
535
536 ActiveCallHint {
537 id: __callHint
538 anchors {
539 top: parent.top
540- left: windowControlButtons.visible ? windowControlButtons.right : parent.left
541+ left: parent.left
542 }
543 height: indicators.minimizedPanelHeight
544 visible: active && indicators.state == "initial"
545@@ -224,7 +199,7 @@
546 QtObject {
547 id: d
548 objectName: "panelPriv"
549- readonly property real indicatorHeight: indicators.minimizedPanelHeight + indicatorOrangeLine.height
550+ readonly property real indicatorHeight: indicators.minimizedPanelHeight
551 }
552
553 states: [
554@@ -234,6 +209,7 @@
555 PropertyChanges {
556 target: indicatorArea;
557 anchors.topMargin: 0
558+ opacity: 1;
559 }
560 },
561 State {
562@@ -242,6 +218,7 @@
563 PropertyChanges {
564 target: indicatorArea;
565 anchors.topMargin: indicators.state === "initial" ? -d.indicatorHeight : 0
566+ opacity: indicators.fullyClosed ? 0.0 : 1.0
567 }
568 PropertyChanges {
569 target: indicators.showDragHandle;
570@@ -249,4 +226,15 @@
571 }
572 }
573 ]
574+
575+ transitions: [
576+ Transition {
577+ to: "onscreen"
578+ UbuntuNumberAnimation { target: indicatorArea; properties: "anchors.topMargin,opacity" }
579+ },
580+ Transition {
581+ to: "offscreen"
582+ UbuntuNumberAnimation { target: indicatorArea; properties: "anchors.topMargin,opacity" }
583+ }
584+ ]
585 }
586
587=== removed file 'qml/Panel/PanelBackground.qml'
588--- qml/Panel/PanelBackground.qml 2015-07-15 15:07:19 +0000
589+++ qml/Panel/PanelBackground.qml 1970-01-01 00:00:00 +0000
590@@ -1,21 +0,0 @@
591-/*
592- * Copyright (C) 2013 Canonical, Ltd.
593- *
594- * This program is free software; you can redistribute it and/or modify
595- * it under the terms of the GNU General Public License as published by
596- * the Free Software Foundation; version 3.
597- *
598- * This program is distributed in the hope that it will be useful,
599- * but WITHOUT ANY WARRANTY; without even the implied warranty of
600- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
601- * GNU General Public License for more details.
602- *
603- * You should have received a copy of the GNU General Public License
604- * along with this program. If not, see <http://www.gnu.org/licenses/>.
605- */
606-
607-import QtQuick 2.4
608-
609-Rectangle {
610- color: "black"
611-}
612
613=== removed file 'qml/Panel/PanelSeparatorLine.qml'
614--- qml/Panel/PanelSeparatorLine.qml 2015-07-15 15:07:19 +0000
615+++ qml/Panel/PanelSeparatorLine.qml 1970-01-01 00:00:00 +0000
616@@ -1,25 +0,0 @@
617-/*
618- * Copyright (C) 2013 Canonical, Ltd.
619- *
620- * This program is free software; you can redistribute it and/or modify
621- * it under the terms of the GNU General Public License as published by
622- * the Free Software Foundation; version 3.
623- *
624- * This program is distributed in the hope that it will be useful,
625- * but WITHOUT ANY WARRANTY; without even the implied warranty of
626- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
627- * GNU General Public License for more details.
628- *
629- * You should have received a copy of the GNU General Public License
630- * along with this program. If not, see <http://www.gnu.org/licenses/>.
631- */
632-
633-import QtQuick 2.4
634-
635-Rectangle {
636- property real saturation: 1.0
637-
638- // orange in HSL
639- color: Qt.hsla(16.0/360.0, saturation * 0.83, 0.47, 1.0)
640- height: units.dp(2)
641-}
642
643=== modified file 'qml/Shell.qml'
644--- qml/Shell.qml 2015-11-06 10:06:58 +0000
645+++ qml/Shell.qml 2015-11-25 16:12:37 +0000
646@@ -269,7 +269,7 @@
647 target: applicationsDisplayLoader.item
648 property: "maximizedAppTopMargin"
649 // Not just using panel.panelHeight as that changes depending on the focused app.
650- value: panel.indicators.minimizedPanelHeight + units.dp(2) // dp(2) for orange line
651+ value: panel.indicators.minimizedPanelHeight
652 }
653 Binding {
654 target: applicationsDisplayLoader.item
655
656=== modified file 'qml/Stages/ApplicationWindow.qml'
657--- qml/Stages/ApplicationWindow.qml 2015-11-25 16:12:36 +0000
658+++ qml/Stages/ApplicationWindow.qml 2015-11-25 16:12:37 +0000
659@@ -56,7 +56,7 @@
660 // Whether the Application had a surface before but lost it.
661 property bool hadSurface: sessionContainer.surfaceContainer.hadSurface
662
663- property bool needToTakeScreenshot:
664+ readonly property bool needToTakeScreenshot:
665 ((sessionContainer.surface && d.surfaceInitialized) || d.hadSurface)
666 && screenshotImage.status === Image.Null
667 && d.applicationState === ApplicationInfoInterface.Stopped
668@@ -71,7 +71,7 @@
669 // Remove this when possible
670 property bool surfaceInitialized: false
671
672- property bool supportsSurfaceResize:
673+ readonly property bool supportsSurfaceResize:
674 application &&
675 ((application.supportedOrientations & Qt.PortraitOrientation)
676 || (application.supportedOrientations & Qt.InvertedPortraitOrientation))
677
678=== modified file 'qml/Stages/DecoratedWindow.qml'
679--- qml/Stages/DecoratedWindow.qml 2015-11-25 16:12:36 +0000
680+++ qml/Stages/DecoratedWindow.qml 2015-11-25 16:12:37 +0000
681@@ -24,14 +24,15 @@
682 id: root
683
684 width: applicationWindow.width
685- height: (root.decorationShown ? decoration.height : 0) + applicationWindow.height
686+ height: (decorationShown ? decoration.height : 0) + applicationWindow.height
687
688 property alias window: applicationWindow
689 property alias application: applicationWindow.application
690 property alias active: decoration.active
691 property alias title: decoration.title
692+ property alias fullscreen: applicationWindow.fullscreen
693
694- property bool decorationShown: true
695+ readonly property bool decorationShown: !fullscreen
696 property bool highlightShown: false
697 property real shadowOpacity: 1
698
699@@ -43,15 +44,6 @@
700 signal minimize()
701 signal decorationPressed()
702
703- BorderImage {
704- anchors {
705- fill: root
706- margins: -units.gu(2)
707- }
708- source: "graphics/dropshadow2gu.sci"
709- opacity: root.shadowOpacity * .3
710- }
711-
712 Rectangle {
713 id: selectionHighlight
714 anchors.fill: parent
715@@ -64,7 +56,17 @@
716 anchors { left: selectionHighlight.left; right: selectionHighlight.right; bottom: selectionHighlight.bottom; }
717 height: units.dp(2)
718 color: UbuntuColors.orange
719- visible: root.highlightShown
720+ visible: highlightShown
721+ }
722+
723+ BorderImage {
724+ anchors {
725+ fill: root
726+ margins: active ? -units.gu(2) : -units.gu(1.5)
727+ }
728+ source: "graphics/dropshadow2gu.sci"
729+ opacity: root.shadowOpacity * .3
730+ enabled: !fullscreen
731 }
732
733 WindowDecoration {
734@@ -74,12 +76,13 @@
735 anchors { left: parent.left; top: parent.top; right: parent.right }
736 height: units.gu(3)
737 width: root.width
738- title: window.title !== "" ? window.title : ""
739+ title: window.title
740+ visible: root.decorationShown
741+
742 onClose: root.close();
743- onMaximize: root.maximize();
744+ onMaximize: { root.decorationPressed(); root.maximize(); }
745 onMinimize: root.minimize();
746 onPressed: root.decorationPressed();
747- visible: decorationShown
748 }
749
750 ApplicationWindow {
751
752=== modified file 'qml/Stages/DesktopStage.qml'
753--- qml/Stages/DesktopStage.qml 2015-11-25 16:12:36 +0000
754+++ qml/Stages/DesktopStage.qml 2015-11-25 16:12:37 +0000
755@@ -12,12 +12,9 @@
756 *
757 * You should have received a copy of the GNU General Public License
758 * along with this program. If not, see <http://www.gnu.org/licenses/>.
759- *
760- * Authors: Michael Zanetti <michael.zanetti@canonical.com>
761 */
762
763 import QtQuick 2.4
764-import QtQuick.Layouts 1.1
765 import Ubuntu.Components 1.3
766 import Unity.Application 0.1
767 import "../Components/PanelState"
768@@ -55,7 +52,7 @@
769 onFocusRequested: {
770 var appIndex = priv.indexOf(appId);
771 var appDelegate = appRepeater.itemAt(appIndex);
772- appDelegate.restoreFromMinimized();
773+ appDelegate.restore();
774
775 if (spread.state == "altTab") {
776 spread.cancel();
777@@ -107,7 +104,7 @@
778 id: minimizeRestoreShortcut
779 shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Down
780 onTriggered: priv.focusedAppDelegate.maximized || priv.focusedAppDelegate.maximizedLeft || priv.focusedAppDelegate.maximizedRight
781- ? priv.focusedAppDelegate.restore() : priv.focusedAppDelegate.minimize(true)
782+ ? priv.focusedAppDelegate.restoreFromMaximized() : priv.focusedAppDelegate.minimize()
783 active: priv.focusedAppDelegate !== null
784 }
785
786@@ -119,18 +116,16 @@
787 var index = indexOf(focusedAppId);
788 return index >= 0 && index < appRepeater.count ? appRepeater.itemAt(index) : null
789 }
790+ onFocusedAppDelegateChanged: updateForegroundMaximizedApp();
791+
792 property int foregroundMaximizedAppIdIndex: -1
793
794 function updateForegroundMaximizedApp() {
795 for (var i = 0; i < appRepeater.count; i++) {
796 var item = appRepeater.itemAt(i);
797-
798 if (item && item.visuallyMaximized) {
799- var app = ApplicationManager.get(i);
800- if (app) {
801- foregroundMaximizedAppIdIndex = i;
802- return;
803- }
804+ foregroundMaximizedAppIdIndex = i;
805+ return;
806 }
807 }
808 foregroundMaximizedAppIdIndex = -1;
809@@ -149,7 +144,7 @@
810 for (var i = 0; i < appRepeater.count; i++) {
811 var appDelegate = appRepeater.itemAt(i);
812 if (appDelegate && !appDelegate.minimized) {
813- appDelegate.minimize(false); // minimize but don't switch focus
814+ appDelegate.minimize();
815 }
816 }
817
818@@ -173,24 +168,47 @@
819 onClose: {
820 ApplicationManager.stopApplication(ApplicationManager.focusedApplicationId)
821 }
822- onMinimize: appRepeater.itemAt(0).minimize(true);
823- onMaximize: appRepeater.itemAt(0).restore();
824+ onMinimize: priv.focusedAppDelegate && priv.focusedAppDelegate.minimize();
825+ onMaximize: priv.focusedAppDelegate // don't restore minimized apps when double clicking the panel
826+ && priv.focusedAppDelegate.restoreFromMaximized();
827+ onFocusMaximizedApp: if (priv.foregroundMaximizedAppIdIndex != -1) {
828+ ApplicationManager.focusApplication(appRepeater.itemAt(priv.foregroundMaximizedAppIdIndex).appId);
829+ }
830 }
831
832 Binding {
833 target: PanelState
834 property: "buttonsVisible"
835- value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.maximized
836+ value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.maximized // FIXME for Locally integrated menus
837+ && spread.state == ""
838 }
839
840 Binding {
841 target: PanelState
842 property: "title"
843- value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.title
844- when: priv.focusedAppDelegate && priv.focusedAppDelegate.maximized
845- }
846-
847- Component.onDestruction: PanelState.buttonsVisible = false;
848+ value: {
849+ if (priv.focusedAppDelegate !== null && spread.state == "") {
850+ if (priv.focusedAppDelegate.maximized)
851+ return priv.focusedAppDelegate.title
852+ else
853+ return priv.focusedAppDelegate.appName
854+ }
855+ return ""
856+ }
857+ when: priv.focusedAppDelegate
858+ }
859+
860+ Binding {
861+ target: PanelState
862+ property: "dropShadow"
863+ value: priv.focusedAppDelegate && !priv.focusedAppDelegate.maximized && priv.foregroundMaximizedAppIdIndex !== -1
864+ }
865+
866+ Component.onDestruction: {
867+ PanelState.title = "";
868+ PanelState.buttonsVisible = false;
869+ PanelState.dropShadow = false;
870+ }
871
872 FocusScope {
873 id: appContainer
874@@ -211,19 +229,16 @@
875 model: ApplicationManager
876 objectName: "appRepeater"
877
878- onItemAdded: priv.updateForegroundMaximizedApp()
879- onItemRemoved: priv.updateForegroundMaximizedApp()
880-
881 delegate: FocusScope {
882 id: appDelegate
883 objectName: "appDelegate_" + appId
884 z: ApplicationManager.count - index
885- y: units.gu(3)
886+ y: PanelState.panelHeight
887+ focus: appId === priv.focusedAppId
888 width: decoratedWindow.width
889 height: decoratedWindow.height
890 property alias requestedWidth: decoratedWindow.requestedWidth
891 property alias requestedHeight: decoratedWindow.requestedHeight
892- focus: model.appId === priv.focusedAppId
893
894 QtObject {
895 id: appDelegatePrivate
896@@ -240,6 +255,7 @@
897 readonly property string appId: model.appId
898 property bool animationsEnabled: true
899 property alias title: decoratedWindow.title
900+ readonly property string appName: model.name
901 property bool visuallyMaximized: false
902 property bool visuallyMinimized: false
903
904@@ -249,7 +265,6 @@
905 }
906 }
907
908- onZChanged: priv.updateForegroundMaximizedApp()
909 onVisuallyMaximizedChanged: priv.updateForegroundMaximizedApp()
910
911 visible: !visuallyMinimized &&
912@@ -289,19 +304,18 @@
913 }
914 function minimize(animated) {
915 animationsEnabled = (animated === undefined) || animated;
916- appDelegatePrivate.maximized = false;
917 appDelegatePrivate.minimized = true;
918 }
919+ function restoreFromMaximized(animated) {
920+ animationsEnabled = (animated === undefined) || animated;
921+ appDelegatePrivate.minimized = false;
922+ appDelegatePrivate.maximized = false;
923+ appDelegatePrivate.maximizedLeft = false;
924+ appDelegatePrivate.maximizedRight = false;
925+ }
926 function restore(animated) {
927 animationsEnabled = (animated === undefined) || animated;
928 appDelegatePrivate.minimized = false;
929- appDelegatePrivate.maximized = false;
930- appDelegatePrivate.maximizedLeft = false;
931- appDelegatePrivate.maximizedRight = false;
932- }
933- function restoreFromMinimized(animated) {
934- animationsEnabled = (animated === undefined) || animated;
935- appDelegatePrivate.minimized = false;
936 if (maximized)
937 maximize();
938 else if (maximizedLeft)
939@@ -313,6 +327,14 @@
940
941 states: [
942 State {
943+ name: "fullscreen"; when: decoratedWindow.fullscreen
944+ extend: "maximized"
945+ PropertyChanges {
946+ target: appDelegate;
947+ y: -PanelState.panelHeight
948+ }
949+ },
950+ State {
951 name: "normal";
952 when: !appDelegate.maximized && !appDelegate.minimized
953 && !appDelegate.maximizedLeft && !appDelegate.maximizedRight
954@@ -323,7 +345,7 @@
955 }
956 },
957 State {
958- name: "maximized"; when: appDelegate.maximized
959+ name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
960 PropertyChanges {
961 target: appDelegate;
962 x: 0; y: 0;
963@@ -334,11 +356,13 @@
964 },
965 State {
966 name: "maximizedLeft"; when: appDelegate.maximizedLeft && !appDelegate.minimized
967- PropertyChanges { target: appDelegate; x: 0; y: units.gu(3); width: root.width/2; height: root.height - units.gu(3) }
968+ PropertyChanges { target: appDelegate; x: 0; y: PanelState.panelHeight;
969+ requestedWidth: root.width/2; requestedHeight: root.height - PanelState.panelHeight }
970 },
971 State {
972 name: "maximizedRight"; when: appDelegate.maximizedRight && !appDelegate.minimized
973- PropertyChanges { target: appDelegate; x: root.width/2; y: units.gu(3); width: root.width/2; height: root.height - units.gu(3) }
974+ PropertyChanges { target: appDelegate; x: root.width/2; y: PanelState.panelHeight;
975+ requestedWidth: root.width/2; requestedHeight: root.height - PanelState.panelHeight }
976 },
977 State {
978 name: "minimized"; when: appDelegate.minimized
979@@ -360,15 +384,6 @@
980 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,requestedWidth,requestedHeight,scale"; duration: UbuntuAnimation.FastDuration }
981 },
982 Transition {
983- to: "maximized"
984- enabled: appDelegate.animationsEnabled
985- PropertyAction { target: appDelegate; property: "visuallyMinimized" }
986- SequentialAnimation {
987- UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,requestedWidth,requestedHeight,scale"; duration: UbuntuAnimation.FastDuration }
988- PropertyAction { target: appDelegate; property: "visuallyMaximized" }
989- }
990- },
991- Transition {
992 to: "minimized"
993 enabled: appDelegate.animationsEnabled
994 PropertyAction { target: appDelegate; property: "visuallyMaximized" }
995@@ -377,12 +392,21 @@
996 PropertyAction { target: appDelegate; property: "visuallyMinimized" }
997 ScriptAction {
998 script: {
999- if (appDelegate.animationsEnabled && state === "minimized" ) {
1000+ if (appDelegate.minimized) {
1001 priv.focusNext();
1002 }
1003 }
1004 }
1005 }
1006+ },
1007+ Transition {
1008+ to: "*" //maximized and fullscreen
1009+ enabled: appDelegate.animationsEnabled
1010+ PropertyAction { target: appDelegate; property: "visuallyMinimized" }
1011+ SequentialAnimation {
1012+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,opacity,requestedWidth,requestedHeight,scale"; duration: UbuntuAnimation.FastDuration }
1013+ PropertyAction { target: appDelegate; property: "visuallyMaximized" }
1014+ }
1015 }
1016 ]
1017
1018@@ -418,8 +442,8 @@
1019
1020 onClose: ApplicationManager.stopApplication(model.appId)
1021 onMaximize: appDelegate.maximized || appDelegate.maximizedLeft || appDelegate.maximizedRight
1022- ? appDelegate.restore() : appDelegate.maximize()
1023- onMinimize: appDelegate.minimize(true)
1024+ ? appDelegate.restoreFromMaximized() : appDelegate.maximize()
1025+ onMinimize: appDelegate.minimize()
1026 onDecorationPressed: { ApplicationManager.focusApplication(model.appId) }
1027 }
1028 }
1029
1030=== modified file 'qml/Stages/WindowDecoration.qml'
1031--- qml/Stages/WindowDecoration.qml 2015-11-09 10:16:18 +0000
1032+++ qml/Stages/WindowDecoration.qml 2015-11-25 16:12:37 +0000
1033@@ -33,6 +33,8 @@
1034 signal minimize()
1035 signal maximize()
1036
1037+ onDoubleClicked: root.maximize()
1038+
1039 QtObject {
1040 id: priv
1041 property real distanceX
1042@@ -65,20 +67,23 @@
1043 anchors.fill: parent
1044 anchors.bottomMargin: -radius
1045 radius: units.gu(.5)
1046- gradient: Gradient {
1047- GradientStop { color: "#626055"; position: 0 }
1048- GradientStop { color: "#3C3B37"; position: 1 }
1049- }
1050+ color: "#292929"
1051 }
1052
1053 Row {
1054- anchors { fill: parent; margins: units.gu(0.7) }
1055- spacing: units.gu(1)
1056- opacity: root.active ? 1 : 0.5
1057+ anchors {
1058+ fill: parent
1059+ leftMargin: units.gu(1)
1060+ rightMargin: units.gu(1)
1061+ topMargin: units.gu(0.5)
1062+ bottomMargin: units.gu(0.5)
1063+ }
1064+ spacing: units.gu(3)
1065
1066 WindowControlButtons {
1067 id: buttons
1068 height: parent.height
1069+ active: root.active
1070 onClose: root.close();
1071 onMinimize: root.minimize();
1072 onMaximize: root.maximize();
1073@@ -87,12 +92,12 @@
1074 Label {
1075 id: titleLabel
1076 objectName: "windowDecorationTitle"
1077- color: "#DFDBD2"
1078+ color: root.active ? "white" : "#5d5d5d"
1079 height: parent.height
1080 width: parent.width - buttons.width - parent.anchors.rightMargin - parent.anchors.leftMargin
1081 verticalAlignment: Text.AlignVCenter
1082- fontSize: "small"
1083- font.bold: true
1084+ fontSize: "medium"
1085+ font.weight: root.active ? Font.Light : Font.Normal
1086 elide: Text.ElideRight
1087 }
1088 }
1089
1090=== modified file 'qml/Stages/WindowResizeArea.qml'
1091--- qml/Stages/WindowResizeArea.qml 2015-11-25 16:12:36 +0000
1092+++ qml/Stages/WindowResizeArea.qml 2015-11-25 16:12:37 +0000
1093@@ -25,7 +25,7 @@
1094 anchors.fill: target
1095 anchors.margins: -borderThickness
1096
1097- hoverEnabled: true
1098+ hoverEnabled: target && !target.maximized // don't grab the resize under the panel
1099
1100 property var windowStateStorage: WindowStateStorage
1101
1102
1103=== modified file 'tests/qmltests/Panel/tst_Panel.qml'
1104--- tests/qmltests/Panel/tst_Panel.qml 2015-08-03 13:48:14 +0000
1105+++ tests/qmltests/Panel/tst_Panel.qml 2015-11-25 16:12:37 +0000
1106@@ -23,6 +23,7 @@
1107 import Unity.Indicators 0.1 as Indicators
1108 import Ubuntu.Telephony 0.1 as Telephony
1109 import "../../../qml/Panel"
1110+import "../../../qml/Components/PanelState"
1111
1112 IndicatorTest {
1113 id: root
1114@@ -30,6 +31,12 @@
1115 height: units.gu(71)
1116 color: "white"
1117
1118+ Binding {
1119+ target: mouseEmulation
1120+ property: "checked"
1121+ value: !windowControlsCB.checked
1122+ }
1123+
1124 RowLayout {
1125 anchors.fill: parent
1126 anchors.margins: units.gu(1)
1127@@ -45,17 +52,18 @@
1128 MouseArea {
1129 id: backgroundMouseArea
1130 anchors.fill: parent
1131- }
1132-
1133- Panel {
1134- id: panel
1135- anchors.fill: parent
1136- indicators {
1137- width: parent.width > units.gu(60) ? units.gu(40) : parent.width
1138- indicatorsModel: root.indicatorsModel
1139+ hoverEnabled: true
1140+
1141+ Panel {
1142+ id: panel
1143+ anchors.fill: parent
1144+ indicators {
1145+ width: parent.width > units.gu(60) ? units.gu(40) : parent.width
1146+ indicatorsModel: root.indicatorsModel
1147+ }
1148+
1149+ property real panelAndSeparatorHeight: panel.indicators.minimizedPanelHeight
1150 }
1151-
1152- property real panelAndSeparatorHeight: panel.indicators.minimizedPanelHeight + units.dp(2)
1153 }
1154 }
1155
1156@@ -93,6 +101,32 @@
1157 }
1158 }
1159
1160+ RowLayout {
1161+ Layout.fillWidth: true
1162+ CheckBox {
1163+ id: windowControlsCB
1164+ onClicked: PanelState.buttonsVisible = checked
1165+ }
1166+ Label {
1167+ text: "Show window controls"
1168+ }
1169+ }
1170+
1171+ RowLayout {
1172+ Layout.fillWidth: true
1173+ CheckBox {
1174+ onClicked: {
1175+ if (checked)
1176+ PanelState.title = "Fake window title"
1177+ else
1178+ PanelState.title = ""
1179+ }
1180+ }
1181+ Label {
1182+ text: "Show fake window title"
1183+ }
1184+ }
1185+
1186 Rectangle {
1187 Layout.preferredHeight: units.dp(1);
1188 Layout.fillWidth: true;
1189@@ -127,7 +161,7 @@
1190 color: "black"
1191 }
1192
1193- MouseTouchEmulationCheckbox {}
1194+ MouseTouchEmulationCheckbox { id: mouseEmulation }
1195 }
1196 }
1197
1198
1199=== modified file 'tests/qmltests/Stages/tst_DesktopStage.qml'
1200--- tests/qmltests/Stages/tst_DesktopStage.qml 2015-11-25 16:12:36 +0000
1201+++ tests/qmltests/Stages/tst_DesktopStage.qml 2015-11-25 16:12:37 +0000
1202@@ -46,8 +46,8 @@
1203 WindowStateStorage.geometry = {
1204 'unity8-dash': Qt.rect(0, units.gu(3), units.gu(50), units.gu(40)),
1205 'dialer-app': Qt.rect(units.gu(51), units.gu(3), units.gu(50), units.gu(40)),
1206- 'camera-app': Qt.rect(0, units.gu(44), units.gu(50), units.gu(40)),
1207- 'gallery-app': Qt.rect(units.gu(51), units.gu(44), units.gu(50), units.gu(40))
1208+ 'gmail-webapp': Qt.rect(0, units.gu(44), units.gu(50), units.gu(40)),
1209+ 'twitter-webapp': Qt.rect(units.gu(51), units.gu(44), units.gu(50), units.gu(40))
1210 }
1211 }
1212
1213@@ -60,10 +60,14 @@
1214
1215 focus: true
1216
1217+ property bool itemDestroyed: false
1218 sourceComponent: Component {
1219 DesktopStage {
1220 color: "darkblue"
1221 anchors.fill: parent
1222+ Component.onDestruction: {
1223+ desktopStageLoader.itemDestroyed = true;
1224+ }
1225 orientations: Orientations {}
1226 }
1227 }
1228@@ -114,10 +118,16 @@
1229 property Item desktopStage: desktopStageLoader.status === Loader.Ready ? desktopStageLoader.item : null
1230
1231 function cleanup() {
1232+ desktopStageLoader.itemDestroyed = false;
1233 desktopStageLoader.active = false;
1234
1235 tryCompare(desktopStageLoader, "status", Loader.Null);
1236 tryCompare(desktopStageLoader, "item", null);
1237+ // Loader.status might be Loader.Null and Loader.item might be null but the Loader
1238+ // actually took place. Likely because Loader waits until the next event loop
1239+ // iteration to do its work. So to ensure the reload, we will wait until the
1240+ // Shell instance gets destroyed.
1241+ tryCompare(desktopStageLoader, "itemDestroyed", true);
1242
1243 killAllRunningApps();
1244
1245@@ -171,8 +181,8 @@
1246
1247 function test_tappingOnWindowChangesFocusedApp_data() {
1248 return [
1249- {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
1250- {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
1251+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "gmail-webapp"], focusfrom: 0, focusTo: 1 },
1252+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "gmail-webapp"], focusfrom: 1, focusTo: 0 }
1253 ]
1254 }
1255
1256@@ -218,8 +228,8 @@
1257
1258 function test_tappingOnDecorationFocusesApplication_data() {
1259 return [
1260- {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
1261- {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
1262+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "gmail-webapp"], focusfrom: 0, focusTo: 1 },
1263+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "gmail-webapp"], focusfrom: 1, focusTo: 0 }
1264 ]
1265 }
1266
1267@@ -229,12 +239,16 @@
1268 var fromAppDecoration = findChild(desktopStage, "appWindowDecoration_" + data.apps[data.focusfrom]);
1269 verify(fromAppDecoration);
1270 tap(fromAppDecoration);
1271- tryCompare(ApplicationManager.findApplication(data.apps[data.focusfrom]).session.surface, "activeFocus", true);
1272+ var fromApp = ApplicationManager.findApplication(data.apps[data.focusfrom]);
1273+ verify(fromApp);
1274+ tryCompare(fromApp.session.surface, "activeFocus", true);
1275
1276 var toAppDecoration = findChild(desktopStage, "appWindowDecoration_" + data.apps[data.focusTo]);
1277 verify(toAppDecoration);
1278 tap(toAppDecoration);
1279- tryCompare(ApplicationManager.findApplication(data.apps[data.focusTo]).session.surface, "activeFocus", true);
1280+ var toApp = ApplicationManager.findApplication(data.apps[data.focusTo]);
1281+ verify(toApp);
1282+ tryCompare(toApp.session.surface, "activeFocus", true);
1283 }
1284
1285 function test_clickingOnDecorationFocusesApplication_data() {
1286@@ -354,26 +368,26 @@
1287 function test_maximizeApplicationHidesSurfacesBehindIt() {
1288 var dashApp = startApplication("unity8-dash");
1289 var dialerApp = startApplication("dialer-app");
1290- var cameraApp = startApplication("camera-app");
1291+ var gmailApp = startApplication("gmail-webapp");
1292
1293 var dashDelegate = findChild(desktopStage, "appDelegate_unity8-dash");
1294 verify(dashDelegate);
1295 var dialerDelegate = findChild(desktopStage, "appDelegate_dialer-app");
1296 verify(dialerDelegate);
1297- var cameraDelegate = findChild(desktopStage, "appDelegate_camera-app");
1298- verify(cameraDelegate);
1299+ var gmailDelegate = findChild(desktopStage, "appDelegate_gmail-webapp");
1300+ verify(gmailDelegate);
1301
1302 // maximize
1303- findChild(dialerDelegate, "decoratedWindow").maximize();
1304+ dialerDelegate.maximize();
1305 tryCompare(dialerDelegate, "visuallyMaximized", true);
1306
1307 tryCompare(dashApp.session.surface, "visible", false);
1308- compare(cameraApp.session.surface.visible, true);
1309+ compare(gmailApp.session.surface.visible, true);
1310
1311 // restore
1312- findChild(dialerDelegate, "decoratedWindow").maximize();
1313+ dialerDelegate.restoreFromMaximized();
1314 compare(dashApp.session.surface.visible, true);
1315- compare(cameraApp.session.surface.visible, true);
1316+ compare(gmailApp.session.surface.visible, true);
1317 }
1318
1319 function test_applicationsBecomeVisibleWhenOccludingAppRemoved() {
1320@@ -385,28 +399,52 @@
1321 var dialerDelegate = findChild(desktopStage, "appDelegate_dialer-app");
1322 verify(dialerDelegate);
1323
1324- var cameraApp = startApplication("camera-app");
1325- var cameraDelegate = findChild(desktopStage, "appDelegate_camera-app");
1326- verify(cameraDelegate);
1327- findChild(dialerDelegate, "decoratedWindow").maximize();
1328-
1329- var galleryApp = startApplication("gallery-app");
1330- var galleryDelegate = findChild(desktopStage, "appDelegate_gallery-app");
1331- verify(galleryDelegate);
1332- findChild(galleryDelegate, "decoratedWindow").maximize();
1333+ var dialerMaximizeButton = findChild(dialerDelegate, "maximizeWindowButton");
1334+ verify(dialerMaximizeButton);
1335+ mouseClick(dialerMaximizeButton);
1336+
1337+ var mapApp = startApplication("map");
1338+ var mapDelegate = findChild(desktopStage, "appDelegate_map");
1339+ verify(mapDelegate);
1340+
1341+ var gmailApp = startApplication("gmail-webapp");
1342+ var gmailDelegate = findChild(desktopStage, "appDelegate_gmail-webapp");
1343+ verify(gmailDelegate);
1344+
1345+ var gmailMaximizeButton = findChild(gmailDelegate, "maximizeWindowButton");
1346+ verify(gmailMaximizeButton);
1347+ mouseClick(gmailMaximizeButton);
1348
1349 tryCompare(dialerDelegate, "visuallyMaximized", true);
1350- tryCompare(galleryDelegate, "visuallyMaximized", true);
1351+ tryCompare(gmailDelegate, "visuallyMaximized", true);
1352
1353 tryCompare(dashApp.session.surface, "visible", false);
1354 tryCompare(dialerApp.session.surface, "visible", false);
1355- tryCompare(cameraApp.session.surface, "visible", false);
1356-
1357- ApplicationManager.stopApplication("gallery-app");
1358-
1359- compare(cameraApp.session.surface.visible, true);
1360+ tryCompare(mapApp.session.surface, "visible", false);
1361+
1362+ ApplicationManager.stopApplication("gmail-webapp");
1363+
1364+ compare(mapApp.session.surface.visible, true);
1365 tryCompare(dialerApp.session.surface, "visible", true);
1366 tryCompare(dashApp.session.surface, "visible", false); // still occluded by maximised dialer
1367 }
1368+
1369+ function test_maximisedAppStaysVisibleWhenAppStarts() {
1370+ var dashApp = startApplication("unity8-dash");
1371+ var dashDelegate = findChild(desktopStage, "appDelegate_unity8-dash");
1372+ verify(dashDelegate);
1373+ // maximize
1374+ var dashMaximizeButton = findChild(dashDelegate, "maximizeWindowButton");
1375+ verify(dashMaximizeButton);
1376+ mouseClick(dashMaximizeButton);
1377+ tryCompare(dashDelegate, "visuallyMaximized", true);
1378+
1379+ var dialerApp = startApplication("dialer-app");
1380+ var dialerDelegate = findChild(desktopStage, "appDelegate_dialer-app");
1381+ verify(dialerDelegate);
1382+
1383+ compare(dialerDelegate.visible, true, "Dialer should be visible");
1384+ compare(dashDelegate.visible, true, "Dash should still be visible");
1385+ }
1386 }
1387 }
1388
1389=== modified file 'tests/qmltests/Stages/tst_PhoneStage.qml'
1390--- tests/qmltests/Stages/tst_PhoneStage.qml 2015-11-04 14:58:05 +0000
1391+++ tests/qmltests/Stages/tst_PhoneStage.qml 2015-11-25 16:12:37 +0000
1392@@ -34,7 +34,7 @@
1393 anchors { fill: parent; rightMargin: units.gu(30) }
1394 focus: true
1395 dragAreaWidth: units.gu(2)
1396- maximizedAppTopMargin: units.gu(3) + units.dp(2)
1397+ maximizedAppTopMargin: units.gu(3)
1398 interactive: true
1399 shellOrientation: Qt.PortraitOrientation
1400 orientations: Orientations {}
1401
1402=== modified file 'tests/qmltests/Stages/tst_SurfaceContainer.qml'
1403--- tests/qmltests/Stages/tst_SurfaceContainer.qml 2015-09-02 07:42:27 +0000
1404+++ tests/qmltests/Stages/tst_SurfaceContainer.qml 2015-11-25 16:12:37 +0000
1405@@ -39,7 +39,7 @@
1406 id: surfaceContainerLoader
1407 anchors {
1408 top: parent.top
1409- topMargin: fullscreenCheckbox.checked ? 0 : units.gu(3) + units.dp(2)
1410+ topMargin: fullscreenCheckbox.checked ? 0 : units.gu(3)
1411 bottom: parent.bottom
1412 left: parent.left
1413 }
1414
1415=== modified file 'tests/qmltests/Stages/tst_TabletStage.qml'
1416--- tests/qmltests/Stages/tst_TabletStage.qml 2015-11-04 14:58:05 +0000
1417+++ tests/qmltests/Stages/tst_TabletStage.qml 2015-11-25 16:12:37 +0000
1418@@ -50,7 +50,7 @@
1419 tabletStageLoader.itemDestroyed = true;
1420 }
1421 dragAreaWidth: units.gu(2)
1422- maximizedAppTopMargin: units.gu(3) + units.dp(2)
1423+ maximizedAppTopMargin: units.gu(3)
1424 interactive: true
1425 shellOrientation: Qt.LandscapeOrientation
1426 nativeWidth: width
1427
1428=== modified file 'tests/qmltests/tst_Shell.qml'
1429--- tests/qmltests/tst_Shell.qml 2015-11-12 20:40:49 +0000
1430+++ tests/qmltests/tst_Shell.qml 2015-11-25 16:12:37 +0000
1431@@ -1777,15 +1777,10 @@
1432 tryCompare(panelButtons, "visible", false);
1433
1434 appDelegate.maximize(false);
1435- tryCompare(panelButtons, "visible", true);
1436
1437 shell.usageScenario = "phone";
1438 waitForRendering(shell);
1439 tryCompare(panelButtons, "visible", false);
1440-
1441- shell.usageScenario = "desktop";
1442- waitForRendering(shell);
1443- tryCompare(panelButtons, "visible", true);
1444 }
1445
1446 function test_lockingGreeterHidesPanelButtons() {
1447@@ -1799,15 +1794,10 @@
1448 tryCompare(panelButtons, "visible", false);
1449
1450 appDelegate.maximize(false);
1451- tryCompare(panelButtons, "visible", true);
1452
1453 LightDM.Greeter.showGreeter();
1454 waitForRendering(shell);
1455 tryCompare(panelButtons, "visible", false);
1456-
1457- LightDM.Greeter.hideGreeter();
1458- waitForRendering(shell);
1459- tryCompare(panelButtons, "visible", true);
1460 }
1461
1462 function test_cantMoveWindowUnderPanel() {

Subscribers

People subscribed via source and target branches