on xenial help sign in
merge trunk
commitd1c453ca5dd769309d46f339ace542b0d9a0f251 authorLukáš Tinkl <lukas.tinkl@canonical.com> dateTue 22 Sep 2015, 04:32 (11 years ago) parent435e1071de5dcc
127 files changed+443−769
debian/changelog+25 plugins/Dash/CMakeLists.txt−2 plugins/Dash/CardCreator.js+4−4 plugins/Dash/CroppedImageMinimumSourceSize.qml+5−22 plugins/Dash/Dash.qmltypes−15 plugins/Dash/croppedimagesizer.cpp−136 plugins/Dash/croppedimagesizer.h−72 plugins/Dash/croppedimagesizerasyncworker.cpp−74 plugins/Dash/croppedimagesizerasyncworker.h−47 plugins/Dash/plugin.cpp−2 plugins/Utils/CMakeLists.txt+1 tests/uqmlscene/ActiveFocusLogger.cpp → plugins/Utils/activefocuslogger.cpp+21−8 tests/uqmlscene/ActiveFocusLogger.h → plugins/Utils/activefocuslogger.h+8−8 plugins/Utils/plugin.cpp+2 po/am.po+2−5 po/ar.po+2−5 po/ast.po+2−5 po/az.po+2−2 po/be.po+2−5 po/bg.po+2−2 po/br.po+2−5 po/bs.po+2−2 po/ca.po+2−5 po/ca@valencia.po+2−2 po/ce.po+2−2 po/ckb.po+2−2 po/cs.po+2−5 po/cy.po+2−5 po/da.po+2−5 po/de.po+2−5 po/el.po+2−5 po/en_AU.po+2−5 po/en_GB.po+4−7 po/eo.po+2−2 po/es.po+4−7 po/eu.po+2−5 po/fa.po+2−5 po/fi.po+2−5 po/fo.po+2−2 po/fr.po+2−5 po/ga.po+2−2 po/gd.po+2−5 po/gl.po+2−5 po/gv.po+2−2 po/he.po+2−5 po/hi.po+2−2 po/hr.po+2−2 po/hu.po+5−8 po/hy.po+2−2 po/ia.po+2−5 po/id.po+2−2 po/is.po+2−2 po/it.po+5−8 po/ja.po+2−2 po/km.po+2−2 po/kn.po+2−2 po/ko.po+2−5 po/ku.po+2−2 po/ky.po+2−2 po/lo.po+2−2 po/lt.po+2−2 po/lv.po+2−2 po/ml.po+2−2 po/mr.po+2−2 po/ms.po+2−2 po/my.po+2−2 po/nb.po+2−5 po/nl.po+2−5 po/nn.po+2−2 po/oc.po+2−2 po/or.po+2−2 po/pa.po+2−5 po/pl.po+2−5 po/pt.po+2−5 po/pt_BR.po+2−5 po/ro.po+2−5 po/ru.po+2−5 po/shn.po+2−2 po/si.po+2−2 po/sk.po+2−2 po/sl.po+2−5 po/sq.po+2−2 po/sr.po+2−2 po/sv.po+2−5 po/sw.po+2−5 po/ta.po+2−2 po/te.po+2−2 po/th.po+2−2 po/tr.po+2−5 po/ug.po+2−2 po/uk.po+2−5 po/ur.po+2−2 po/uz.po+2−2 po/vi.po+2−2 po/xh.po+2−2 po/zh_CN.po+2−5 po/zh_HK.po+2−2 po/zh_TW.po+2−2 qml/Dash/Previews/PreviewExpandable.qml+3−3 qml/Dash/Previews/PreviewWidgetFactory.qml+1−1 qml/Launcher/Launcher.qml+1 qml/Stages/ApplicationWindow.qml−3 qml/Stages/DesktopStage.qml+14−15 tests/autopilot/unity8/application_lifecycle/tests/test_application_lifecycle.py+2−1 tests/autopilot/unity8/dash.py+3−4 tests/autopilot/unity8/shell/tests/test_helpers.py+2−2 tests/mocks/Powerd/Powerd.cpp+2−2 tests/mocks/Powerd/Powerd.h+4−2 tests/mocks/Unity/Application/MirSurfaceItem.cpp+15 tests/mocks/Unity/Application/MirSurfaceItem.h+3 tests/mocks/Utils/CMakeLists.txt+1 tests/mocks/Utils/plugin.cpp+2 tests/plugins/Dash/cardcreator/1.res+1−1 tests/plugins/Dash/cardcreator/3.res+1−1 tests/plugins/Dash/cardcreator/4.res+2−2 tests/plugins/Dash/cardcreator/5.res+1−1 tests/plugins/Dash/tst_CroppedImageMinimumSourceSize.qml+6−6 tests/qmltests/Components/tst_PhysicalKeysMapper.qml+3−3 tests/qmltests/Dash/Previews/tst_PreviewExpandable.qml+91−2 tests/qmltests/Panel/Indicators/tst_IndicatorsLight.qml+8−5 tests/qmltests/Stages/tst_DesktopStage.qml+10−7 tests/qmltests/Stages/tst_TabletStage.qml+1−1 tests/qmltests/tst_OrientedShell.qml+2−2 tests/qmltests/tst_Shell.qml+18−4 tests/qmltests/tst_ShellWithPin.qml+2−2 tests/uqmlscene/CMakeLists.txt−1 tests/uqmlscene/main.cpp−13
debian/changelog+25
@@ -4,6 +4,31 @@ unity8 (8.13+15.04.20150914-0ubuntu1) UNRELEASED; urgency=medium
44
55 -- Lukas Tinkl <ltinkl@canonical.com> Mon, 14 Sep 2015 19:19:23 +0200
66
7+unity8 (8.11+15.10.20150915-0ubuntu1) wily; urgency=medium
8+
9+ [ Albert Astals Cid ]
10+ * Fix testNotifications
11+ * Make the wait longer to make tests pass in CI
12+ * New simplified CroppedImageMinimumSourceSize (LP: #1467740)
13+ * Stop animateTimer when starting the fadeOutAnimation
14+ * Use AlreadyLaunchedUpstart so that tests passes
15+ * Workaround keyboard issues and make test pass again
16+
17+ [ Daniel d'Andrada ]
18+ * DesktopStage: Refactor focus handling
19+ * Stabilize tstShell.test_launchedAppHasActiveFocus
20+
21+ [ Gary.Wzl ]
22+ * Add widgetData["expanded"] property for expandable widget.
23+
24+ [ Michael Terry ]
25+ * Fix typo that caused the tutorial to tease the launcher on top of
26+ the greeter.
27+ * Fix typo that caused the tutorial to tease the launcher on top of
28+ the greeter.
29+
30+ -- Michael Zanetti <michael.zanetti@canonical.com> Tue, 15 Sep 2015 12:06:06 +0000
31+
732unity8 (8.11+15.10.20150907-0ubuntu1) wily; urgency=medium
833
934 [ Michal Sawicz ]
plugins/Dash/CMakeLists.txt−2
@@ -24,8 +24,6 @@ set(QMLPLUGIN_SRC
2424 verticaljournal.cpp
2525 horizontaljournal.cpp
2626 organicgrid.cpp
27− croppedimagesizer.cpp
28− croppedimagesizerasyncworker.cpp
2927 )
3028
3129add_library(Dash-qml MODULE
plugins/Dash/CardCreator.js+4−4
@@ -68,7 +68,7 @@ var kArtShapeHolderCode = 'Item { \n\
6868 objectName: "artShape"; \n\
6969 property bool doShapeItem: components["art"]["conciergeMode"] !== true; \n\
7070 visible: image.status == Image.Ready; \n\
71− readonly property alias image: artImage.image; \n\
71+ readonly property alias image: artImage; \n\
7272 property alias borderSource: artShapeShape.borderSource; \n\
7373 ShaderEffectSource { \n\
7474 id: artShapeSource; \n\
@@ -195,11 +195,11 @@ var kMascotShapeLoaderCode = 'Loader { \n\
195195 id: mascotShapeLoader; \n\
196196 objectName: "mascotShapeLoader"; \n\
197197 asynchronous: root.asynchronous; \n\
198− active: mascotImage.image.status === Image.Ready; \n\
198+ active: mascotImage.status === Image.Ready; \n\
199199 visible: showHeader && active && status == Loader.Ready; \n\
200200 width: units.gu(6); \n\
201201 height: units.gu(5.625); \n\
202− sourceComponent: UbuntuShape { image: mascotImage.image } \n\
202+ sourceComponent: UbuntuShape { image: mascotImage } \n\
203203 anchors { %1 } \n\
204204 }\n';
205205
@@ -476,7 +476,7 @@ function cardString(template, components) {
476476 mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
477477 var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
478478 if (fallback !== "") {
479− code += 'Connections { target: mascotImage.image; onStatusChanged: if (mascotImage.image.status === Image.Error) mascotImage.source = "%1"; } \n'.arg(fallback);
479+ code += 'Connections { target: mascotImage; onStatusChanged: if (mascotImage.status === Image.Error) mascotImage.source = "%1"; } \n'.arg(fallback);
480480 }
481481 }
482482
plugins/Dash/CroppedImageMinimumSourceSize.qml+5−22
@@ -15,30 +15,13 @@
1515 */
1616
1717import QtQuick 2.3
18−import Dash 0.1
1918
20−Item {
19+Image {
2120 id: root
2221
23− property string source
24− property alias image: innerImage
25− property alias asynchronous: innerImage.asynchronous
26− property alias verticalAlignment: innerImage.verticalAlignment
27− property alias horizontalAlignment: innerImage.horizontalAlignment
28− property alias fillMode: innerImage.fillMode
22+ fillMode: Image.PreserveAspectCrop
2923
30− CroppedImageSizer {
31− id: sizer
32− source: root.source
33− width: root.width
34− height: root.height
35− }
36−
37− Image {
38− id: innerImage
39− anchors.fill: parent
40− fillMode: Image.PreserveAspectCrop
41− sourceSize: sizer.sourceSize.width == 0 && sizer.sourceSize.height == 0 ? undefined : sizer.sourceSize
42− source: sizer.sourceSize.width == -1 && sizer.sourceSize.height == -1 ? "" : root.source
43− }
24+ readonly property real itemAspectRatio: width / height
25+ readonly property real imageAspectRatio: implicitWidth / implicitHeight
26+ sourceSize: (imageAspectRatio > itemAspectRatio) ? Qt.size(0, height) : Qt.size(width, 0)
4427}
plugins/Dash/Dash.qmltypes−15
@@ -19,21 +19,6 @@ Module {
1919 Property { name: "displayMarginBeginning"; type: "double" }
2020 Property { name: "displayMarginEnd"; type: "double" }
2121 }
22− Component {
23− name: "CroppedImageSizer"
24− prototype: "QObject"
25− exports: ["Dash/CroppedImageSizer 0.1"]
26− exportMetaObjectRevisions: [0]
27− Property { name: "source"; type: "QUrl" }
28− Property { name: "width"; type: "double" }
29− Property { name: "height"; type: "double" }
30− Property { name: "sourceSize"; type: "QSize"; isReadonly: true }
31− Signal { name: "inputParamsChanged" }
32− Method {
33− name: "setImageSize"
34− Parameter { name: "imageSize"; type: "QSize" }
35− }
36− }
3722 Component {
3823 name: "HorizontalJournal"
3924 defaultProperty: "data"
plugins/Dash/croppedimagesizer.cppdeleted−136
@@ -1,136 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#include "croppedimagesizer.h"
18−
19−#include "croppedimagesizerasyncworker.h"
20−
21−#include <QNetworkAccessManager>
22−#include <QNetworkRequest>
23−#include <QQmlEngine>
24−#include <QQuickItem>
25−
26−CroppedImageSizer::CroppedImageSizer()
27− : m_width(0),
28− m_height(0),
29− m_sourceSize(QSize(-1, -1)),
30− m_worker(nullptr)
31−{
32− connect(this, &CroppedImageSizer::inputParamsChanged, this, &CroppedImageSizer::calculateSourceSize);
33− connect(this, &CroppedImageSizer::sourceChanged, this, &CroppedImageSizer::requestImage);
34−}
35−
36−CroppedImageSizer::~CroppedImageSizer()
37−{
38− if (m_worker) {
39− m_worker->abort();
40− }
41−}
42−
43−QUrl CroppedImageSizer::source() const
44−{
45− return m_source;
46−}
47−
48−void CroppedImageSizer::setSource(const QUrl &source)
49−{
50− if (source != m_source) {
51− m_source = source;
52− Q_EMIT sourceChanged();
53− }
54−}
55−
56−qreal CroppedImageSizer::width() const
57−{
58− return m_width;
59−}
60−
61−void CroppedImageSizer::setWidth(qreal width)
62−{
63− if (width != m_width) {
64− m_width = width;
65− Q_EMIT inputParamsChanged();
66− }
67−}
68−
69−qreal CroppedImageSizer::height() const
70−{
71− return m_height;
72−}
73−
74−void CroppedImageSizer::setHeight(qreal height)
75−{
76− if (height != m_height) {
77− m_height = height;
78− Q_EMIT inputParamsChanged();
79− }
80−}
81−
82−QSize CroppedImageSizer::sourceSize() const
83−{
84− return m_sourceSize;
85−}
86−
87−void CroppedImageSizer::setSourceSize(const QSize &sourceSize)
88−{
89− if (sourceSize != m_sourceSize) {
90− m_sourceSize = sourceSize;
91− Q_EMIT sourceSizeChanged();
92− }
93−}
94−
95−void CroppedImageSizer::setImageSize(const QSize &imageSize)
96−{
97− m_imageSize = imageSize;
98− m_worker = nullptr;
99− calculateSourceSize();
100−}
101−
102−void CroppedImageSizer::requestImage()
103−{
104− if (m_worker) {
105− m_worker->abort();
106− m_worker = nullptr;
107− }
108−
109− if (m_source.isValid() && qmlEngine(this) && qmlEngine(this)->networkAccessManager()) {
110− QNetworkRequest request(m_source);
111− QNetworkReply *reply = qmlEngine(this)->networkAccessManager()->get(request);
112− m_worker = new CroppedImageSizerAsyncWorker(this, reply);
113− } else {
114− setSourceSize(QSize(-1, -1));
115− }
116−}
117−
118−void CroppedImageSizer::calculateSourceSize()
119−{
120− if (m_source.isValid() && m_width > 0 && m_height > 0 && !m_worker) {
121− if (!m_imageSize.isEmpty()) {
122− const qreal ar = m_width / m_height;
123− const qreal ssar = m_imageSize.width() / (qreal)m_imageSize.height();
124− if (ar > ssar) {
125− setSourceSize(QSize(m_width, 0));
126− } else {
127− setSourceSize(QSize(0, m_height));
128− }
129− } else {
130− qWarning() << "Invalid size for " << m_source << m_imageSize;
131− setSourceSize(QSize(0, 0));
132− }
133− } else {
134− setSourceSize(QSize(-1, -1));
135− }
136−}
plugins/Dash/croppedimagesizer.hdeleted−72
@@ -1,72 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#ifndef CROPPEDIMAGESIZER_H
18−#define CROPPEDIMAGESIZER_H
19−
20−#include <QImageReader>
21−#include <QObject>
22−#include <QSize>
23−#include <QUrl>
24−
25−class CroppedImageSizerAsyncWorker;
26−
27−class CroppedImageSizer : public QObject
28−{
29− Q_OBJECT
30−
31− Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
32− Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY inputParamsChanged)
33− Q_PROPERTY(qreal height READ height WRITE setHeight NOTIFY inputParamsChanged)
34− Q_PROPERTY(QSize sourceSize READ sourceSize NOTIFY sourceSizeChanged)
35−
36−public:
37− CroppedImageSizer();
38− ~CroppedImageSizer();
39−
40− QUrl source() const;
41− void setSource(const QUrl &source);
42−
43− qreal width() const;
44− void setWidth(qreal width);
45−
46− qreal height() const;
47− void setHeight(qreal height);
48−
49− QSize sourceSize() const;
50− void setSourceSize(const QSize &sourceSize);
51−
52− Q_INVOKABLE void setImageSize(const QSize &imageSize);
53−
54−Q_SIGNALS:
55− void inputParamsChanged();
56− void sourceChanged();
57− void sourceSizeChanged();
58−
59−private Q_SLOT:
60− void calculateSourceSize();
61− void requestImage();
62−
63−private:
64− QUrl m_source;
65− qreal m_width;
66− qreal m_height;
67− QSize m_sourceSize;
68− QSize m_imageSize;
69− QPointer<CroppedImageSizerAsyncWorker> m_worker;
70−};
71−
72−#endif
plugins/Dash/croppedimagesizerasyncworker.cppdeleted−74
@@ -1,74 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#include "croppedimagesizerasyncworker.h"
18−
19−#include "croppedimagesizer.h"
20−
21−#include <QNetworkReply>
22−#include <QtConcurrentRun>
23−
24−CroppedImageSizerAsyncWorker::CroppedImageSizerAsyncWorker(CroppedImageSizer *sizer, QNetworkReply *reply)
25− : m_sizer(sizer),
26− m_reply(reply),
27− m_ignoreAbort(false)
28−{
29− connect(m_reply, &QNetworkReply::finished, this, &CroppedImageSizerAsyncWorker::requestFinished);
30−}
31−
32−void CroppedImageSizerAsyncWorker::abort()
33−{
34− // This runs on main thread
35− QMutexLocker locker(&m_mutex);
36− m_sizer = nullptr;
37− // If we already started the future run we can't abort the reply
38− // since we don't know at which stage the future is, just let it finish
39− if (!m_ignoreAbort) {
40− QMetaObject::invokeMethod(m_reply, "abort", Qt::QueuedConnection);
41− }
42−}
43−
44−void CroppedImageSizerAsyncWorker::requestFinished()
45−{
46− // This runs on main thread
47− QMutexLocker locker(&m_mutex);
48− if (m_sizer) {
49− m_ignoreAbort = true;
50− QtConcurrent::run(processRequestFinished, this);
51− } else {
52− // We were aborted delete ourselves
53− m_reply->deleteLater();
54− deleteLater();
55− }
56−}
57−
58−void CroppedImageSizerAsyncWorker::processRequestFinished(CroppedImageSizerAsyncWorker *worker)
59−{
60− // This runs on non main thread
61− // m_reply has finished at this point and is protected against change by m_ignoreAbort
62− QImageReader reader(worker->m_reply);
63− const QSize imageSize = reader.size();
64−
65− worker->m_mutex.lock();
66− if (worker->m_sizer) {
67− QMetaObject::invokeMethod(worker->m_sizer, "setImageSize", Qt::QueuedConnection, Q_ARG(QSize, imageSize));
68− }
69− worker->m_mutex.unlock();
70−
71− // All work is done, delete ourselves
72− worker->m_reply->deleteLater();
73− worker->deleteLater();
74−}
plugins/Dash/croppedimagesizerasyncworker.hdeleted−47
@@ -1,47 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#ifndef CROPPEDIMAGESIZERASYNCWORKER_H
18−#define CROPPEDIMAGESIZERASYNCWORKER_H
19−
20−#include <QMutex>
21−#include <QObject>
22−
23−class CroppedImageSizer;
24−
25−class QNetworkReply;
26−
27−class CroppedImageSizerAsyncWorker : public QObject
28−{
29− Q_OBJECT
30−public:
31− CroppedImageSizerAsyncWorker(CroppedImageSizer *sizer, QNetworkReply *reply);
32−
33− void abort();
34−
35−private Q_SLOTS:
36− void requestFinished();
37−
38−private:
39− static void processRequestFinished(CroppedImageSizerAsyncWorker *worker);
40−
41− QMutex m_mutex;
42− CroppedImageSizer *m_sizer;
43− QNetworkReply *m_reply;
44− bool m_ignoreAbort;
45−};
46−
47−#endif
plugins/Dash/plugin.cpp−2
@@ -17,7 +17,6 @@
1717
1818#include "plugin.h"
1919
20−#include "croppedimagesizer.h"
2120#include "horizontaljournal.h"
2221#include "listviewwithpageheader.h"
2322#include "organicgrid.h"
@@ -33,5 +32,4 @@ void DashPlugin::registerTypes(const char *uri)
3332 qmlRegisterType<ListViewWithPageHeader>(uri, 0, 1, "ListViewWithPageHeader");
3433 qmlRegisterType<OrganicGrid>(uri, 0, 1, "OrganicGrid");
3534 qmlRegisterType<VerticalJournal>(uri, 0, 1, "VerticalJournal");
36− qmlRegisterType<CroppedImageSizer>(uri, 0, 1, "CroppedImageSizer");
3735}
plugins/Utils/CMakeLists.txt+1
@@ -9,6 +9,7 @@ include_directories(
99)
1010
1111set(QMLPLUGIN_SRC
12+ activefocuslogger.cpp
1213 constants.cpp
1314 HomeKeyWatcher.cpp
1415 inputwatcher.cpp
tests/uqmlscene/ActiveFocusLogger.cpp → plugins/Utils/activefocuslogger.cpprenamed+21−8
@@ -14,21 +14,34 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#include "ActiveFocusLogger.h"
17+#include "activefocuslogger.h"
1818
19−#include <QDebug>
20−#include <QQuickItem>
19+#include <QQuickWindow>
2120
22−void ActiveFocusLogger::setWindow(QQuickWindow *window)
21+ActiveFocusLogger::ActiveFocusLogger(QQuickItem *parent)
22+ : QQuickItem(parent)
2323{
24− m_window = window;
25− QObject::connect(window, &QQuickWindow::activeFocusItemChanged,
26− this, &ActiveFocusLogger::printActiveFocusInfo);
24+ connect(this, &QQuickItem::windowChanged,
25+ this, &ActiveFocusLogger::setupFilterOnWindow);
26+}
27+
28+void ActiveFocusLogger::setupFilterOnWindow(QQuickWindow *window)
29+{
30+ if (!m_window.isNull()) {
31+ disconnect(m_window.data(), nullptr, this, nullptr);
32+ m_window.clear();
33+ }
34+
35+ if (window) {
36+ m_window = window;
37+ QObject::connect(window, &QQuickWindow::activeFocusItemChanged,
38+ this, &ActiveFocusLogger::printActiveFocusInfo);
39+ }
2740}
2841
2942void ActiveFocusLogger::printActiveFocusInfo()
3043{
31− if (!m_window) {
44+ if (!m_window || !isEnabled()) {
3245 return;
3346 }
3447
tests/uqmlscene/ActiveFocusLogger.h → plugins/Utils/activefocuslogger.hrenamed+8−8
@@ -14,24 +14,24 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#ifndef ACTIVE_FOCUS_LOGGER_H
18−#define ACTIVE_FOCUS_LOGGER_H
17+#ifndef UNITY_ACTIVEFOCUSLOGGER_H
18+#define UNITY_ACTIVEFOCUSLOGGER_H
1919
20−#include <QObject>
21−#include <QQuickWindow>
20+#include <QQuickItem>
2221#include <QPointer>
2322
24−class ActiveFocusLogger : public QObject {
23+class ActiveFocusLogger : public QQuickItem
24+{
2525 Q_OBJECT
26−
2726public:
28− void setWindow(QQuickWindow *window);
27+ ActiveFocusLogger(QQuickItem *parent = 0);
2928
3029private Q_SLOTS:
30+ void setupFilterOnWindow(QQuickWindow *window);
3131 void printActiveFocusInfo();
3232
3333private:
3434 QPointer<QQuickWindow> m_window;
3535};
3636
37−#endif // ACTIVE_FOCUS_LOGGER_H
37+#endif // UNITY_ACTIVEFOCUSLOGGER_H
plugins/Utils/plugin.cpp+2
@@ -23,6 +23,7 @@
2323#include "plugin.h"
2424
2525// local
26+#include "activefocuslogger.h"
2627#include "easingcurve.h"
2728#include "HomeKeyWatcher.h"
2829#include "inputwatcher.h"
@@ -66,6 +67,7 @@ void UtilsPlugin::registerTypes(const char *uri)
6667 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
6768 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
6869 qmlRegisterSingletonType<Constants>(uri, 0, 1, "Constants", createConstants);
70+ qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
6971}
7072
7173void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
po/am.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -803,6 +803,3 @@ msgstr "%1 〉"
803803
804804#~ msgid "Please re-enter"
805805#~ msgstr "እባክዎን እንደገና-ያስገቡ"
806−
807−#~ msgid "Click here to finish."
808−#~ msgstr "ለመጨረስ እዚህ ይጫኑ"
po/ar.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
1818"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -788,6 +788,3 @@ msgstr ""
788788
789789#~ msgid "Please re-enter"
790790#~ msgstr "برجاء إعادة إدخالها"
791−
792−#~ msgid "Click here to finish."
793−#~ msgstr "انقر هنا للإنهاء."
po/ast.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -809,8 +809,5 @@ msgstr "%1 〉"
809809#~ msgid "Manage Scopes"
810810#~ msgstr "Xestionar ámbitos"
811811
812−#~ msgid "Click here to finish."
813−#~ msgstr "Primi equí pa finar."
814−
815812#~ msgid "Please re-enter"
816813#~ msgstr "Por favor, reintroduzla"
po/az.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/be.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -804,6 +804,3 @@ msgstr "%1 〉"
804804
805805#~ msgid "Please re-enter"
806806#~ msgstr "Калі ласка, паўтарыце ўвод"
807−
808−#~ msgid "Click here to finish."
809−#~ msgstr "Націсніце тут для завяршэння."
po/bg.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/br.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n > 1;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -819,6 +819,3 @@ msgstr "%1 〉"
819819
820820#~ msgid "Please re-enter"
821821#~ msgstr "Adverkañ, mar plij"
822−
823−#~ msgid "Click here to finish."
824−#~ msgstr "Klikit amañ evit echuiñ."
po/bs.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
po/ca.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -822,6 +822,3 @@ msgstr "%1 〉"
822822
823823#~ msgid "Manage Scopes"
824824#~ msgstr "Gestioneu les lents"
825−
826−#~ msgid "Click here to finish."
827−#~ msgstr "Feu un toc aquí per finalitzar"
po/ca@valencia.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ce.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ckb.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/cs.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: cs\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
@@ -772,6 +772,3 @@ msgstr "%1 〉"
772772
773773#~ msgid "Please re-enter"
774774#~ msgstr "Vložte znovu"
775−
776−#~ msgid "Click here to finish."
777−#~ msgstr "Klikněte zde pro dokončení."
po/cy.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
1818"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -725,6 +725,3 @@ msgstr "〈 %1"
725725#, qt-format
726726msgid "%1 〉"
727727msgstr "%1 〉"
728−
729−#~ msgid "Click here to finish."
730−#~ msgstr "Cliciwch yma i orffen."
po/da.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -779,6 +779,3 @@ msgstr "%1 〉"
779779
780780#~ msgid "Please re-enter"
781781#~ msgstr "Vær venlig at genindtaste"
782−
783−#~ msgid "Click here to finish."
784−#~ msgstr "Tryk her for at afslutte."
po/de.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -817,6 +817,3 @@ msgstr "%1 〉"
817817
818818#~ msgid "Please re-enter"
819819#~ msgstr "Bitte erneut eingeben"
820−
821−#~ msgid "Click here to finish."
822−#~ msgstr "Zum Abschließen bitte hier klicken."
po/el.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -819,6 +819,3 @@ msgstr "%1 〉"
819819
820820#~ msgid "Power"
821821#~ msgstr "Ενέργεια"
822−
823−#~ msgid "Click here to finish."
824−#~ msgstr "Πατήστε εδώ για τέλος."
po/en_AU.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -807,6 +807,3 @@ msgstr "%1 〉"
807807
808808#~ msgid "Please re-enter"
809809#~ msgstr "Please re-enter"
810−
811−#~ msgid "Click here to finish."
812−#~ msgstr "Click here to finish."
po/en_GB.po+4−7
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Pin shortcut"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Quit"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -459,7 +459,7 @@ msgstr "Reply"
459459
460460#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
461461msgid "Call back"
462−msgstr ""
462+msgstr "Call back"
463463
464464#: qml/Panel/Indicators/ModemInfoItem.qml:105
465465msgid "Unlock SIM"
@@ -807,6 +807,3 @@ msgstr "%1 〉"
807807
808808#~ msgid "Please re-enter"
809809#~ msgstr "Please re-enter"
810−
811−#~ msgid "Click here to finish."
812−#~ msgstr "Click here to finish."
po/eo.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/es.po+4−7
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Anclar"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Salir"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Responder"
463463
464464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465465msgid "Call back"
466−msgstr ""
466+msgstr "Devolver llamada"
467467
468468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469469msgid "Unlock SIM"
@@ -814,6 +814,3 @@ msgstr "%1 〉"
814814
815815#~ msgid "Manage Scopes"
816816#~ msgstr "Administrar Scopes"
817−
818−#~ msgid "Click here to finish."
819−#~ msgstr "Pulse aquí para finalizar."
po/eu.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -813,6 +813,3 @@ msgstr "%1 〉"
813813
814814#~ msgid "Please re-enter"
815815#~ msgstr "Errepikatu"
816−
817−#~ msgid "Click here to finish."
818−#~ msgstr "Egin klik hemen amaitzeko."
po/fa.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -806,6 +806,3 @@ msgstr "%1 〉"
806806
807807#~ msgid "Manage Scopes"
808808#~ msgstr "مدیریت حوزه‌ها"
809−
810−#~ msgid "Click here to finish."
811−#~ msgstr "برای پایان اینجا کلیک کنید."
po/fi.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -810,6 +810,3 @@ msgstr "%1 〉"
810810
811811#~ msgid "Please re-enter"
812812#~ msgstr "Anna uudelleen"
813−
814−#~ msgid "Click here to finish."
815−#~ msgstr "Viimeistele napsauttamalla tästä."
po/fo.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/fr.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -826,6 +826,3 @@ msgstr "%1 〉"
826826
827827#~ msgid "Please re-enter"
828828#~ msgstr "Veuillez ressaisir"
829−
830−#~ msgid "Click here to finish."
831−#~ msgstr "Cliquez ici pour terminer."
po/ga.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/gd.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
1818"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121"Language: gd\n"
2222
2323#: plugins/LightDM/Greeter.cpp:112
@@ -832,8 +832,5 @@ msgstr "%1 〉"
832832#~ msgid "Manage Scopes"
833833#~ msgstr "Stiùirich na sgòpaichean"
834834
835−#~ msgid "Click here to finish."
836−#~ msgstr "Briog an-seo gus crìoch a chur air."
837−
838835#~ msgid "Please re-enter"
839836#~ msgstr "Cuir a-steach i a-rithist"
po/gl.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -808,6 +808,3 @@ msgstr "%1 〉"
808808
809809#~ msgid "Please re-enter"
810810#~ msgstr "Introducir de novo"
811−
812−#~ msgid "Click here to finish."
813−#~ msgstr "Prema aquí para rematar."
po/gv.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/he.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -771,6 +771,3 @@ msgstr ""
771771
772772#~ msgid "Favorites"
773773#~ msgstr "מועדפים"
774−
775−#~ msgid "Click here to finish."
776−#~ msgstr "יש ללחוץ כאן כדי לסיים."
po/hi.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/hr.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
po/hu.po+5−8
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: \n"
1010"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-08-26 07:51+0000\n"
11+"PO-Revision-Date: 2015-09-18 08:40+0000\n"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
1414"Language: hu\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -562,11 +562,11 @@ msgstr "A jelmondat legalább 4 karakter hosszú legyen"
562562
563563#: qml/Wizard/Pages/10-welcome.qml:27
564564msgid "Hi!"
565−msgstr "Üdv!"
565+msgstr "Üdvözöljük!"
566566
567567#: qml/Wizard/Pages/10-welcome.qml:44
568568msgid "Welcome to your Ubuntu phone."
569−msgstr "Üdvözöljük az Ubuntu telefonos változatában."
569+msgstr "Köszöntjük az Ubuntu telefonos változatában."
570570
571571#: qml/Wizard/Pages/10-welcome.qml:52
572572msgid "Let’s get started."
@@ -812,6 +812,3 @@ msgstr "%1 〉"
812812
813813#~ msgid "Please re-enter"
814814#~ msgstr "Próbálja újra"
815−
816−#~ msgid "Click here to finish."
817−#~ msgstr "Kattintson ide a befejezéshez."
po/hy.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ia.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -805,6 +805,3 @@ msgstr "%1 〉"
805805#~ msgstr ""
806806#~ "Tu es ora maestrate le gestos del bordo e pote initiar usar le "
807807#~ "telephono<br><br>colpar sur le schermo pro initiar"
808−
809−#~ msgid "Click here to finish."
810−#~ msgstr "Clicca ci pro finir"
po/id.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/is.po+2−2
@@ -17,8 +17,8 @@ msgstr ""
1717"Content-Type: text/plain; charset=UTF-8\n"
1818"Content-Transfer-Encoding: 8bit\n"
1919"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
21−"X-Generator: Launchpad (build 17737)\n"
20+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
21+"X-Generator: Launchpad (build 17746)\n"
2222"Language: is\n"
2323
2424#: plugins/LightDM/Greeter.cpp:112
po/it.po+5−8
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-07-04 11:34+0000\n"
11+"PO-Revision-Date: 2015-09-18 08:24+0000\n"
1212"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Blocca scorciatoia"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Esci"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Rispondi"
463463
464464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465465msgid "Call back"
466−msgstr ""
466+msgstr "Richiama"
467467
468468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469469msgid "Unlock SIM"
@@ -816,9 +816,6 @@ msgstr "%1 〉"
816816#~ msgid "Please re-enter"
817817#~ msgstr "Inserire nuovamente"
818818
819−#~ msgid "Click here to finish."
820−#~ msgstr "Fare clic qui per terminare."
821−
822819#~ msgid "Swipe up again to close the settings screen"
823820#~ msgstr ""
824821#~ "Far scorrere nuovamente verso l'alto per chiudere la schermata delle "
po/ja.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/km.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/kn.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ko.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -790,6 +790,3 @@ msgstr "%1 〉"
790790
791791#~ msgid "Please re-enter"
792792#~ msgstr "다시 입력해주십시오."
793−
794−#~ msgid "Click here to finish."
795−#~ msgstr "끝내려면 눌러주십시오."
po/ku.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ky.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/lo.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/lt.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
po/lv.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ml.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/mr.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ms.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/my.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/nb.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -809,6 +809,3 @@ msgstr "%1 〉"
809809
810810#~ msgid "Please re-enter"
811811#~ msgstr "Skriv inn på nytt"
812−
813−#~ msgid "Click here to finish."
814−#~ msgstr "Trykk her for å fullføre."
po/nl.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -814,6 +814,3 @@ msgstr "%1 〉"
814814
815815#~ msgid "Please re-enter"
816816#~ msgstr "Herhaal deze a.u.b."
817−
818−#~ msgid "Click here to finish."
819−#~ msgstr "Klik hier om te stoppen."
po/nn.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/oc.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/or.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n!=1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/pa.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -753,6 +753,3 @@ msgstr "%1 〉"
753753
754754#~ msgid "Please re-enter"
755755#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਮੁੜ-ਦਰਜ ਕਰੋ"
756−
757−#~ msgid "Click here to finish."
758−#~ msgstr "ਸਮਾਪਤੀ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।"
po/pl.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -801,6 +801,3 @@ msgstr "%1 〉"
801801
802802#~ msgid "Please re-enter"
803803#~ msgstr "Proszę wprowadź ponownie"
804−
805−#~ msgid "Click here to finish."
806−#~ msgstr "Kliknij tutaj, by zakończyć."
po/pt.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -811,8 +811,5 @@ msgstr "%1 〉"
811811#~ msgstr ""
812812#~ "Deslize da margem esquerda para mostrar o lançador para acesso rápido às apps"
813813
814−#~ msgid "Click here to finish."
815−#~ msgstr "Clique aqui para finalizar."
816−
817814#~ msgid "Shut down"
818815#~ msgstr "Desligar"
po/pt_BR.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -814,6 +814,3 @@ msgstr "%1 〉"
814814
815815#~ msgid "Please re-enter"
816816#~ msgstr "Por favor, digite novamente"
817−
818−#~ msgid "Click here to finish."
819−#~ msgstr "Clique aqui para finalizar."
po/ro.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
1818"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -825,6 +825,3 @@ msgstr "%1 〉"
825825
826826#~ msgid "Please re-enter"
827827#~ msgstr "Introduceți din nou"
828−
829−#~ msgid "Click here to finish."
830−#~ msgstr "Apăsați aici pentru a termina."
po/ru.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -822,6 +822,3 @@ msgstr "%1 〉"
822822
823823#~ msgid "Manage Scopes"
824824#~ msgstr "Настройки поиска"
825−
826−#~ msgid "Click here to finish."
827−#~ msgstr "Нажмите для завершения."
po/shn.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/si.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/sk.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/sl.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
1818"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -817,6 +817,3 @@ msgstr "%1 〉"
817817
818818#~ msgid "Please re-enter"
819819#~ msgstr "Ponovno vnesite"
820−
821−#~ msgid "Click here to finish."
822−#~ msgstr "Kliknite tu za zaključek."
po/sq.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:49+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/sr.po+2−2
@@ -17,8 +17,8 @@ msgstr ""
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1919"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2015-09-17 05:46+0000\n"
21−"X-Generator: Launchpad (build 17737)\n"
20+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
21+"X-Generator: Launchpad (build 17746)\n"
2222"Language: sr\n"
2323
2424#: plugins/LightDM/Greeter.cpp:112
po/sv.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: sv\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
@@ -810,6 +810,3 @@ msgstr "%1 〉"
810810
811811#~ msgid "Please re-enter"
812812#~ msgstr "Ange igen"
813−
814−#~ msgid "Click here to finish."
815−#~ msgstr "Klicka här för att slutföra."
po/sw.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -719,6 +719,3 @@ msgstr ""
719719
720720#~ msgid "Please re-enter"
721721#~ msgstr "Tafadhali bonyeza tena"
722−
723−#~ msgid "Click here to finish."
724−#~ msgstr "Click hapa umalize."
po/ta.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: ta\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
po/te.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/th.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/tr.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -801,6 +801,3 @@ msgstr "%1 〉"
801801
802802#~ msgid "Please re-enter"
803803#~ msgstr "Lütfen yeniden girin"
804−
805−#~ msgid "Click here to finish."
806−#~ msgstr "Bitirmek için buraya tıklayın."
po/ug.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/uk.po+2−5
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
20−"X-Generator: Launchpad (build 17737)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -822,6 +822,3 @@ msgstr "%1 〉"
822822
823823#~ msgid "Please re-enter"
824824#~ msgstr "Ввведіть ще раз"
825−
826−#~ msgid "Click here to finish."
827−#~ msgstr "Натисніть тут, щоб завершити."
po/ur.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/uz.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/vi.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/xh.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/zh_CN.po+2−5
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -770,6 +770,3 @@ msgstr "%1 〉"
770770
771771#~ msgid "Please re-enter"
772772#~ msgstr "请重新输入"
773−
774−#~ msgid "Click here to finish."
775−#~ msgstr "点击这里完成。"
po/zh_HK.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/zh_TW.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-16 05:50+0000\n"
19−"X-Generator: Launchpad (build 17737)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: zh_TW\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
qml/Dash/Previews/PreviewExpandable.qml+3−3
@@ -24,15 +24,15 @@ import "../../Components"
2424 Those widgets can be collapsed or uncollapsed. When uncollapsed
2525 all the widgets are shown, when collapsed only the first
2626 widgetData["collapsed-widgets"] are shown. It has a title that comes
27− in via widgetData["title"]
27+ in via widgetData["title"]. This widget expands all child widgets
28+ when initialized by specifying widgetData["expanded"] == true.
29+ It's in unexpanded mode by default.
2830 */
2931
3032PreviewWidget {
3133 id: root
3234 implicitHeight: childrenRect.height
3335
34− expanded: false
35−
3636 Label {
3737 id: titleLabel
3838 objectName: "titleLabel"
qml/Dash/Previews/PreviewWidgetFactory.qml+1−1
@@ -35,7 +35,7 @@ Loader {
3535 property var scopeStyle: null
3636
3737 //! Should the widget show in expanded mode (For those that support it)
38− property bool expanded: widgetType !== "expandable"
38+ property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
3939
4040 //! Set to true if the parent preview is displayed.
4141 property bool isCurrentPreview: false
qml/Launcher/Launcher.qml+1
@@ -136,6 +136,7 @@ Item {
136136 id: fadeOutAnimation
137137 ScriptAction {
138138 script: {
139+ animateTimer.stop(); // Don't change the state behind our back
139140 panel.layer.enabled = true
140141 }
141142 }
qml/Stages/ApplicationWindow.qml−3
@@ -137,9 +137,6 @@ FocusScope {
137137 onSurfaceChanged: {
138138 if (sessionContainer.surface) {
139139 surfaceInitTimer.start();
140− if (ApplicationManager.focusedApplicationId == application.appId) {
141− root.forceActiveFocus();
142− }
143140 } else {
144141 d.surfaceInitialized = false;
145142 }
qml/Stages/DesktopStage.qml+14−15
@@ -78,7 +78,6 @@ Rectangle {
7878 var appDelegate = appRepeater.itemAt(appIndex);
7979 appDelegate.minimized = false;
8080 appDelegate.focus = true;
81− ApplicationManager.focusApplication(appId);
8281 }
8382 }
8483
@@ -91,12 +90,6 @@ Rectangle {
9190 return index >= 0 && index < appRepeater.count ? appRepeater.itemAt(index) : null
9291 }
9392
94− onFocusedAppDelegateChanged: {
95− if (focusedAppDelegate) {
96− focusedAppDelegate.focus = true;
97− }
98− }
99−
10093 function indexOf(appId) {
10194 for (var i = 0; i < ApplicationManager.count; i++) {
10295 if (ApplicationManager.get(i).appId == appId) {
@@ -133,23 +126,28 @@ Rectangle {
133126 id: appContainer
134127 objectName: "appContainer"
135128 anchors.fill: parent
129+ focus: true
136130
137131 Keys.onPressed: {
138132 switch (event.key) {
139133 case Qt.Key_Left:
140134 case Qt.Key_Backtab:
141135 selectPrevious(event.isAutoRepeat)
136+ event.accepted = true;
142137 break;
143138 case Qt.Key_Right:
144139 case Qt.Key_Tab:
145140 selectNext(event.isAutoRepeat)
141+ event.accepted = true;
146142 break;
147143 case Qt.Key_Escape:
148144 appRepeater.highlightedIndex = -1
145+ event.accepted = true;
149146 case Qt.Key_Enter:
150147 case Qt.Key_Return:
151148 case Qt.Key_Space:
152149 root.state = ""
150+ event.accepted = true;
153151 }
154152 }
155153
@@ -180,7 +178,8 @@ Rectangle {
180178
181179 function focusSelected() {
182180 if (appRepeater.highlightedIndex != -1) {
183− appRepeater.itemAt(appRepeater.highlightedIndex).focus = true;
181+ var application = ApplicationManager.get(appRepeater.highlightedIndex);
182+ ApplicationManager.requestFocusApplication(application.appId)
184183 }
185184 }
186185
@@ -222,13 +221,14 @@ Rectangle {
222221
223222 onFocusChanged: {
224223 if (focus && ApplicationManager.focusedApplicationId !== model.appId) {
225− ApplicationManager.requestFocusApplication(model.appId);
226− decoratedWindow.forceActiveFocus();
224+ ApplicationManager.focusApplication(model.appId);
227225 }
228226 }
227+
229228 Component.onCompleted: {
230− if (ApplicationManager.focusedApplicationId == model.appId) {
231− decoratedWindow.forceActiveFocus();
229+ // Focus the top-most or AppMan-focused application on start up.
230+ if (ApplicationManager.focusedApplicationId === model.appId && !focus) {
231+ focus = true;
232232 }
233233 }
234234
@@ -356,7 +356,7 @@ Rectangle {
356356 resizeHandleWidth: units.gu(2)
357357 windowId: model.appId // FIXME: Change this to point to windowId once we have such a thing
358358
359− onPressed: appDelegate.focus = true;
359+ onPressed: { appDelegate.focus = true; }
360360 }
361361
362362 DecoratedWindow {
@@ -368,7 +368,7 @@ Rectangle {
368368 windowHeight: appDelegate.windowHeight
369369 application: ApplicationManager.get(index)
370370 active: ApplicationManager.focusedApplicationId === model.appId
371− focus: false
371+ focus: true
372372
373373 onClose: ApplicationManager.stopApplication(model.appId)
374374 onMaximize: appDelegate.maximize()
@@ -642,7 +642,6 @@ Rectangle {
642642 PropertyChanges { target: spreadFlickable; enabled: spreadFlickable.contentWidth > spreadFlickable.minContentWidth }
643643 PropertyChanges { target: currentSelectedLabel; visible: true }
644644 PropertyChanges { target: spreadBackground; visible: true }
645− PropertyChanges { target: appContainer; focus: true }
646645 PropertyChanges { target: hoverMouseArea; enabled: true }
647646 }
648647 ]
tests/autopilot/unity8/application_lifecycle/tests/test_application_lifecycle.py+2−1
@@ -24,6 +24,7 @@ import os
2424import threading
2525
2626from autopilot.platform import model
27+from autopilot.application import _launcher
2728
2829from unity8 import process_helpers
2930from unity8.application_lifecycle import tests
@@ -118,7 +119,7 @@ class ApplicationLifecycleTests(tests.ApplicationLifeCycleTestCase):
118119
119120 process_helpers.lock_unity()
120121
121− self.launch_upstart_application(application_name)
122+ self.launch_upstart_application(application_name, [], _launcher.AlreadyLaunchedUpstartLauncher)
122123 greeter = self.main_window.get_greeter()
123124 greeter.wait_swiped_away()
124125 process_helpers.unlock_unity()
tests/autopilot/unity8/dash.py+3−4
@@ -155,7 +155,7 @@ class Dash(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
155155 self.pointing_device.drag(start_x, start_y, stop_x, stop_y, rate)
156156 self.dash_content_list.currentIndex.wait_for(original_index + 1)
157157
158− def enter_search_query(self, query):
158+ def enter_search_query(self, query, keyboard):
159159 current_header = self._get_current_page_header()
160160 search_button = \
161161 current_header.select_single(objectName="search_header_button")
@@ -166,12 +166,11 @@ class Dash(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
166166 headerContainer = current_header.select_single(
167167 objectName="headerContainer")
168168 headerContainer.contentY.wait_for(0)
169− search_text_field = self._get_search_text_field()
170− search_text_field.write(query)
169+ keyboard.type(query)
171170 self.select_single(
172171 objectName="processingIndicator").visible.wait_for(False)
173172
174− def _get_search_text_field(self):
173+ def get_search_text_field(self):
175174 page_header = self._get_current_page_header()
176175 return page_header.select_single(objectName='searchTextField')
177176
tests/autopilot/unity8/shell/tests/test_helpers.py+2−2
@@ -47,8 +47,8 @@ class MainWindowTestCase(tests.UnityTestCase):
4747class DashHelperTestCase(tests.DashBaseTestCase):
4848
4949 def test_search(self):
50− self.dash.enter_search_query('Test')
51− text_field = self.dash._get_search_text_field()
50+ self.dash.enter_search_query('Test', self.keyboard)
51+ text_field = self.dash.get_search_text_field()
5252 self.assertEqual(text_field.text, 'Test')
5353
5454 def test_open_scope_to_the_right(self):
tests/mocks/Powerd/Powerd.cpp+2−2
@@ -24,11 +24,11 @@ Powerd::Powerd(QObject* parent)
2424{
2525}
2626
27−void Powerd::setStatus(Powerd::Status status)
27+void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
2828{
2929 if (m_status != status) {
3030 m_status = status;
31− Q_EMIT statusChanged(DisplayStateChangeReason::Unknown);
31+ Q_EMIT statusChanged(reason);
3232 }
3333}
3434
tests/mocks/Powerd/Powerd.h+4−2
@@ -26,7 +26,7 @@ class Powerd: public QObject
2626 Q_OBJECT
2727 Q_ENUMS(Status)
2828 Q_ENUMS(DisplayStateChangeReason)
29− Q_PROPERTY(Status status READ status WRITE setStatus NOTIFY statusChanged) // write only exists for tests
29+ Q_PROPERTY(Status status READ status NOTIFY statusChanged)
3030
3131public:
3232 enum DisplayStateChangeReason {
@@ -44,7 +44,9 @@ public:
4444 explicit Powerd(QObject *parent = 0);
4545
4646 Status status() const;
47− void setStatus(Status status);
47+
48+ // Not exposed via Q_PROPERTY because we need the 'reason' argument too
49+ Q_INVOKABLE void setStatus(Status status, DisplayStateChangeReason reason);
4850
4951Q_SIGNALS:
5052 void statusChanged(DisplayStateChangeReason reason);
tests/mocks/Unity/Application/MirSurfaceItem.cpp+15
@@ -161,6 +161,21 @@ void MirSurfaceItem::touchEvent(QTouchEvent * event)
161161 }
162162}
163163
164+void MirSurfaceItem::mousePressEvent(QMouseEvent * event)
165+{
166+ event->accept();
167+}
168+
169+void MirSurfaceItem::mouseMoveEvent(QMouseEvent * event)
170+{
171+ event->accept();
172+}
173+
174+void MirSurfaceItem::mouseReleaseEvent(QMouseEvent * event)
175+{
176+ event->accept();
177+}
178+
164179void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
165180{
166181 qDebug().nospace() << "MirSurfaceItem::setSurface() this=" << (void*)(this)
tests/mocks/Unity/Application/MirSurfaceItem.h+3
@@ -79,6 +79,9 @@ Q_SIGNALS:
7979
8080protected:
8181 void touchEvent(QTouchEvent * event) override;
82+ void mousePressEvent(QMouseEvent * event) override;
83+ void mouseMoveEvent(QMouseEvent * event) override;
84+ void mouseReleaseEvent(QMouseEvent * event) override;
8285 void itemChange(ItemChange change, const ItemChangeData & value) override;
8386
8487private Q_SLOTS:
tests/mocks/Utils/CMakeLists.txt+1
@@ -10,6 +10,7 @@ include_directories(
1010)
1111
1212set(QMLPLUGIN_SRC
13+ ${CMAKE_SOURCE_DIR}/plugins/Utils/activefocuslogger.cpp
1314 ${CMAKE_SOURCE_DIR}/plugins/Utils/qlimitproxymodelqml.cpp
1415 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitysortfilterproxymodelqml.cpp
1516 ${CMAKE_SOURCE_DIR}/plugins/Utils/relativetimeformatter.cpp
tests/mocks/Utils/plugin.cpp+2
@@ -35,6 +35,7 @@
3535#include "constants.h"
3636
3737// plugin
38+#include <activefocuslogger.h>
3839#include <inputwatcher.h>
3940#include <qlimitproxymodelqml.h>
4041#include <unitysortfilterproxymodelqml.h>
@@ -74,6 +75,7 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
7475 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
7576 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
7677 qmlRegisterSingletonType<Constants>(uri, 0, 1, "Constants", createConstants);
78+ qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
7779}
7880
7981void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
tests/plugins/Dash/cardcreator/1.res+1−1
@@ -32,7 +32,7 @@ Item {
3232 objectName: "artShape";
3333 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
3434 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
3636 property alias borderSource: artShapeShape.borderSource;
3737 ShaderEffectSource {
3838 id: artShapeSource;
tests/plugins/Dash/cardcreator/3.res+1−1
@@ -32,7 +32,7 @@ Item {
3232 objectName: "artShape";
3333 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
3434 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
3636 property alias borderSource: artShapeShape.borderSource;
3737 ShaderEffectSource {
3838 id: artShapeSource;
tests/plugins/Dash/cardcreator/4.res+2−2
@@ -34,11 +34,11 @@ Loader {
3434 id: mascotShapeLoader;
3535 objectName: "mascotShapeLoader";
3636 asynchronous: root.asynchronous;
37− active: mascotImage.image.status === Image.Ready;
37+ active: mascotImage.status === Image.Ready;
3838 visible: showHeader && active && status == Loader.Ready;
3939 width: units.gu(6);
4040 height: units.gu(5.625);
41− sourceComponent: UbuntuShape { image: mascotImage.image }
41+ sourceComponent: UbuntuShape { image: mascotImage }
4242 anchors { verticalCenter: parent.verticalCenter; }
4343 }
4444
tests/plugins/Dash/cardcreator/5.res+1−1
@@ -32,7 +32,7 @@ Item {
3232 objectName: "artShape";
3333 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
3434 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
3636 property alias borderSource: artShapeShape.borderSource;
3737 ShaderEffectSource {
3838 id: artShapeSource;
tests/plugins/Dash/tst_CroppedImageMinimumSourceSize.qml+6−6
@@ -41,16 +41,16 @@ Rectangle {
4141 when: windowShown
4242
4343 function test_croppedSource() {
44− tryCompare(cimss.image.sourceSize, "width", 100);
45− tryCompare(cimss.image.sourceSize, "height", 0);
44+ tryCompare(cimss.sourceSize, "width", 100);
45+ tryCompare(cimss.sourceSize, "height", 0);
4646
4747 cimss.width = 40;
48− tryCompare(cimss.image.sourceSize, "width", 0);
49− tryCompare(cimss.image.sourceSize, "height", 100);
48+ tryCompare(cimss.sourceSize, "width", 0);
49+ tryCompare(cimss.sourceSize, "height", 100);
5050
5151 cimss.width = 100;
52− tryCompare(cimss.image.sourceSize, "width", 100);
53− tryCompare(cimss.image.sourceSize, "height", 0);
52+ tryCompare(cimss.sourceSize, "width", 100);
53+ tryCompare(cimss.sourceSize, "height", 0);
5454 }
5555 }
5656}
tests/qmltests/Components/tst_PhysicalKeysMapper.qml+3−3
@@ -45,7 +45,7 @@ TestCase {
4545 }
4646
4747 function init() {
48− Powerd.status = Powerd.On;
48+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
4949 loader.active = true;
5050 tryCompare(loader.status == Loader.Ready);
5151 }
@@ -64,14 +64,14 @@ TestCase {
6464 }
6565
6666 function test_powerKeyLongPressed(data) {
67− Powerd.status = data.status;
67+ Powerd.setStatus(data.status, Powerd.Unknown);
6868 physicalKeysMapper.powerKeyLongPressTime = 500;
6969
7070 physicalKeysMapper.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: false });
7171
7272 // After the first key press the screen is always on
7373 // and the rest of keypresses are auto repeat
74− Powerd.status = Powerd.On;
74+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
7575
7676 for (var i = 0; i < 3; ++i) {
7777 wait(10);
tests/qmltests/Dash/Previews/tst_PreviewExpandable.qml+91−2
@@ -120,13 +120,26 @@ Rectangle {
120120 "widgets": widgetsModel
121121 }
122122
123+ property var widgetData1: {
124+ "title": "Title here1",
125+ "collapsed-widgets": 2,
126+ "widgets": widgetsModel,
127+ "expanded": true
128+ }
129+
130+ property var widgetData2: {
131+ "title": "Title here2",
132+ "collapsed-widgets": 2,
133+ "widgets": widgetsModel,
134+ "expanded": false
135+ }
136+
123137 property var allWidgetsData: {
124138 "title": "Title here",
125139 "collapsed-widgets": 0,
126140 "widgets": allWidgetsModel
127141 }
128142
129−
130143 Component.onCompleted: {
131144 widgetsModel.append({"type": "text", "widgetId": "text1", "properties": { "text": longText }});
132145 widgetsModel.append({"type": "table", "widgetId": "table1", "properties": tableData });
@@ -160,8 +173,22 @@ Rectangle {
160173 }
161174
162175 PreviewWidgetFactory {
163− id: previewWidgetFactory
176+ id: previewExpandable1
164177 anchors { left: parent.left; right: parent.right; top: previewExpandable.bottom }
178+ widgetType: "expandable"
179+ widgetData: root.widgetData1
180+ }
181+
182+ PreviewWidgetFactory {
183+ id: previewExpandable2
184+ anchors { left: parent.left; right: parent.right; top: previewExpandable1.bottom }
185+ widgetType: "expandable"
186+ widgetData: root.widgetData2
187+ }
188+
189+ PreviewWidgetFactory {
190+ id: previewWidgetFactory
191+ anchors { left: parent.left; right: parent.right; top: previewExpandable2.bottom }
165192 opacity: 0
166193 }
167194
@@ -185,6 +212,8 @@ Rectangle {
185212 }
186213
187214 function init() {
215+ previewExpandable.widgetType = "";
216+ previewExpandable.widgetType = "expandable";
188217 previewExpandable.widgetData = widgetData;
189218 checkInitialState();
190219 }
@@ -210,6 +239,66 @@ Rectangle {
210239 checkInitialState();
211240 }
212241
242+ function test_expand_collapse_when_assigned() {
243+ previewExpandable.widgetData = widgetData1;
244+
245+ var repeater = findChild(previewExpandable, "repeater")
246+ compare(repeater.count, 4)
247+
248+ compare (repeater.itemAt(0).visible, true);
249+ compare (repeater.itemAt(1).visible, true);
250+ compare (repeater.itemAt(2).visible, true);
251+ compare (repeater.itemAt(3).visible, true);
252+ compare (repeater.itemAt(0).expanded, true);
253+ compare (repeater.itemAt(1).expanded, true);
254+ compare (repeater.itemAt(2).expanded, true);
255+ compare (repeater.itemAt(3).expanded, true);
256+ }
257+
258+ function test_collapsed_when_assigned() {
259+ previewExpandable.widgetData = widgetData2;
260+
261+ var repeater = findChild(previewExpandable, "repeater")
262+ compare(repeater.count, 4)
263+
264+ compare (repeater.itemAt(0).visible, true);
265+ compare (repeater.itemAt(1).visible, true);
266+ compare (repeater.itemAt(2).visible, false);
267+ compare (repeater.itemAt(3).visible, false);
268+ compare (repeater.itemAt(0).expanded, false);
269+ compare (repeater.itemAt(1).expanded, false);
270+ compare (repeater.itemAt(2).expanded, false);
271+ compare (repeater.itemAt(3).expanded, false);
272+ }
273+
274+ function test_expand_when_initialized() {
275+ var repeater = findChild(previewExpandable1, "repeater")
276+ compare(repeater.count, 4)
277+
278+ compare (repeater.itemAt(0).visible, true);
279+ compare (repeater.itemAt(1).visible, true);
280+ compare (repeater.itemAt(2).visible, true);
281+ compare (repeater.itemAt(3).visible, true);
282+ compare (repeater.itemAt(0).expanded, true);
283+ compare (repeater.itemAt(1).expanded, true);
284+ compare (repeater.itemAt(2).expanded, true);
285+ compare (repeater.itemAt(3).expanded, true);
286+ }
287+
288+ function test_collapse_when_initialized() {
289+ var repeater = findChild(previewExpandable2, "repeater")
290+ compare(repeater.count, 4)
291+
292+ compare (repeater.itemAt(0).visible, true);
293+ compare (repeater.itemAt(1).visible, true);
294+ compare (repeater.itemAt(2).visible, false);
295+ compare (repeater.itemAt(3).visible, false);
296+ compare (repeater.itemAt(0).expanded, false);
297+ compare (repeater.itemAt(1).expanded, false);
298+ compare (repeater.itemAt(2).expanded, false);
299+ compare (repeater.itemAt(3).expanded, false);
300+ }
301+
213302 function test_all_widgets_height() {
214303 previewExpandable.widgetData = allWidgetsData;
215304
tests/qmltests/Panel/Indicators/tst_IndicatorsLight.qml+8−5
@@ -58,7 +58,7 @@ Item {
5858
5959 Component.onCompleted: {
6060 ActionData.data = newMessage;
61− Powerd.status = Powerd.On
61+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
6262 }
6363
6464 RowLayout {
@@ -91,8 +91,11 @@ Item {
9191 Layout.fillWidth: true
9292 text: Powerd.status === Powerd.On ? "Power Off" : "Power On"
9393 onClicked: {
94− if (Powerd.status === Powerd.On) Powerd.status = Powerd.Off;
95− else Powerd.status = Powerd.On;
94+ if (Powerd.status === Powerd.On) {
95+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
96+ } else {
97+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
98+ }
9699 }
97100 }
98101 }
@@ -107,7 +110,7 @@ Item {
107110 ActionData.data = noNewMessage;
108111 loader.sourceComponent = undefined;
109112 loader.sourceComponent = light;
110− Powerd.status = Powerd.On
113+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
111114 }
112115
113116 function test_LightsStatus_data() {
@@ -120,7 +123,7 @@ Item {
120123 }
121124
122125 function test_LightsStatus(data) {
123− Powerd.status = data.powerd;
126+ Powerd.setStatus(data.powerd, Powerd.Unknown);
124127 ActionData.data = data.actionData;
125128
126129 compare(Lights.state, data.expected, "Light does not match expected value");
tests/qmltests/Stages/tst_DesktopStage.qml+10−7
@@ -61,7 +61,6 @@ Item {
6161 Component.onDestruction: {
6262 desktopStageLoader.itemDestroyed = true;
6363 }
64− focus: true
6564 }
6665 }
6766 }
@@ -142,8 +141,8 @@ Item {
142141
143142 function test_appFocusSwitch_data() {
144143 return [
145− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
146− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
144+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
145+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
147146 ]
148147 }
149148
@@ -162,8 +161,8 @@ Item {
162161
163162 function test_tappingOnWindowChangesFocusedApp_data() {
164163 return [
165− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
166− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
164+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
165+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
167166 ]
168167 }
169168
@@ -172,16 +171,20 @@ Item {
172171 for (i = 0; i < data.apps.length; i++) {
173172 startApplication(data.apps[i]);
174173 }
174+ var fromAppId = data.apps[data.focusfrom];
175+ var toAppId = data.apps[data.focusTo]
175176
176− var fromAppWindow = findChild(desktopStage, "appWindow_" + data.apps[data.focusfrom]);
177+ var fromAppWindow = findChild(desktopStage, "appWindow_" + fromAppId);
177178 verify(fromAppWindow);
178179 tap(fromAppWindow);
179180 compare(fromAppWindow.application.session.surface.activeFocus, true);
181+ compare(ApplicationManager.focusedApplicationId, fromAppId);
180182
181− var toAppWindow = findChild(desktopStage, "appWindow_" + data.apps[data.focusTo]);
183+ var toAppWindow = findChild(desktopStage, "appWindow_" + toAppId);
182184 verify(toAppWindow);
183185 tap(toAppWindow);
184186 compare(toAppWindow.application.session.surface.activeFocus, true);
187+ compare(ApplicationManager.focusedApplicationId, toAppId);
185188 }
186189
187190 function test_tappingOnDecorationFocusesApplication_data() {
tests/qmltests/Stages/tst_TabletStage.qml+1−1
@@ -167,7 +167,7 @@ Rectangle {
167167 var lastValue = undefined;
168168 do {
169169 lastValue = targetAppDelegate.animatedProgress;
170− wait(30);
170+ wait(300);
171171 } while (lastValue != targetAppDelegate.animatedProgress);
172172 }
173173
tests/qmltests/tst_OrientedShell.qml+2−2
@@ -296,9 +296,9 @@ Rectangle {
296296 activeFocusOnPress: false
297297 onClicked: {
298298 if (Powerd.status === Powerd.On) {
299− Powerd.status = Powerd.Off;
299+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
300300 } else {
301− Powerd.status = Powerd.On;
301+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
302302 }
303303 }
304304 }
tests/qmltests/tst_Shell.qml+18−4
@@ -590,19 +590,19 @@ Rectangle {
590590
591591 // Display off while call is active...
592592 callManager.foregroundCall = phoneCall;
593− Powerd.status = Powerd.Off;
593+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
594594 tryCompare(greeter, "shown", false);
595595
596596 // Now try again after ending call
597597 callManager.foregroundCall = null;
598− Powerd.status = Powerd.On;
599− Powerd.status = Powerd.Off;
598+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
599+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
600600 tryCompare(greeter, "fullyShown", true);
601601
602602 compare(mainApp.requestedState, ApplicationInfoInterface.RequestedSuspended);
603603
604604 // And wake up
605− Powerd.status = Powerd.On;
605+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
606606 tryCompare(greeter, "fullyShown", true);
607607
608608 // Swipe away greeter to focus app
@@ -795,6 +795,7 @@ Rectangle {
795795 function test_launchedAppHasActiveFocus(data) {
796796 loadShell(data.formFactor);
797797 shell.usageScenario = data.usageScenario;
798+ waitForGreeterToStabilize();
798799 swipeAwayGreeter();
799800
800801 var webApp = ApplicationManager.startApplication("webbrowser-app");
@@ -1104,6 +1105,19 @@ Rectangle {
11041105 compare(tutorialLeft, null); // should be destroyed with tutorial
11051106 }
11061107
1108+ function test_tutorialPausedDuringGreeter() {
1109+ loadShell("phone");
1110+
1111+ var tutorial = findChild(shell, "tutorial");
1112+
1113+ AccountsService.demoEdges = true;
1114+ tryCompare(tutorial, "running", true);
1115+ tryCompare(tutorial, "paused", true);
1116+
1117+ swipeAwayGreeter();
1118+ tryCompare(tutorial, "paused", false);
1119+ }
1120+
11071121 function test_tapOnRightEdgeReachesApplicationSurface() {
11081122 loadShell("phone");
11091123 swipeAwayGreeter();
tests/qmltests/tst_ShellWithPin.qml+2−2
@@ -501,13 +501,13 @@ Item {
501501 var applicationsDisplayLoader = findChild(shell, "applicationsDisplayLoader")
502502
503503 // Put it to sleep
504− Powerd.status = Powerd.Off;
504+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
505505
506506 // If locked, applicationsDisplayLoader.item.suspended should be true
507507 tryCompare(applicationsDisplayLoader.item, "suspended", true);
508508
509509 // And wake up
510− Powerd.status = Powerd.On;
510+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
511511 tryCompare(greeter, "fullyShown", true);
512512
513513 // Swipe away greeter to focus app
tests/uqmlscene/CMakeLists.txt−1
@@ -1,6 +1,5 @@
11add_executable(uqmlscene
22 ${shellapplication_MOC_SRCS}
3− ActiveFocusLogger.cpp
43 main.cpp
54 )
65
tests/uqmlscene/main.cpp−13
@@ -63,12 +63,6 @@
6363#include <QtCore/QTranslator>
6464#include <QtCore/QLibraryInfo>
6565
66−#define UQMLSCENE_DEBUG_ACTIVE_FOCUS 0
67−
68−#if UQMLSCENE_DEBUG_ACTIVE_FOCUS
69− #include "ActiveFocusLogger.h"
70−#endif
71−
7266#ifdef QML_RUNTIME_TESTING
7367class RenderStatistics
7468{
@@ -393,10 +387,6 @@ int main(int argc, char ** argv)
393387{
394388 Options options;
395389
396− #if UQMLSCENE_DEBUG_ACTIVE_FOCUS
397− ActiveFocusLogger activeFocusLogger;
398− #endif
399−
400390 QStringList imports;
401391 QList<QPair<QString, QString> > bundles;
402392 for (int i = 1; i < argc; ++i) {
@@ -515,9 +505,6 @@ int main(int argc, char ** argv)
515505 QQuickItem *contentItem = qobject_cast<QQuickItem *>(topLevel);
516506 if (contentItem) {
517507 qxView = new QQuickView(&engine, nullptr);
518− #if UQMLSCENE_DEBUG_ACTIVE_FOCUS
519− activeFocusLogger.setWindow(qxView);
520− #endif
521508 window = qxView;
522509 // Set window default properties; the qml can still override them
523510 QString oname = contentItem->objectName();