on xenial help sign in
merged parent
commitbfeaf9da34415545f64a743ff50c46d74b2de493 authorNick Dedekind <nick.dedekind@canonical.com> dateFri 24 Mar 2017, 12:33 (10 years ago) parent90d9bd9916a0ea
175 files changed+3220−1324
CMakeLists.txt+1−1 cmake/modules/QmlTest.cmake+1−1 debian/changelog+49 debian/control+4−4 plugins/Cursor/CursorImageProvider.cpp+2 plugins/Greeter/Unity/Launcher/quicklistmodel.cpp+2 plugins/Unity/Launcher/CMakeLists.txt+2 plugins/Unity/Launcher/launcheritem.cpp+30−6 plugins/Unity/Launcher/launcheritem.h+3−2 plugins/Unity/Launcher/launchermodel.cpp+47−14 plugins/Unity/Launcher/launchermodel.h+3−1 plugins/Unity/Launcher/quicklistentry.cpp+11 plugins/Unity/Launcher/quicklistentry.h+4 plugins/Unity/Launcher/quicklistmodel.cpp+9 plugins/Unity/Launcher/quicklistmodel.h+1 plugins/Unity/Session/dbusunitysessionservice.cpp+75−4 plugins/Unity/Session/dbusunitysessionservice.h+18−4 plugins/Utils/CMakeLists.txt+1 plugins/Utils/plugin.cpp+2 plugins/Utils/quicklistproxymodel.cpp+72 plugins/Utils/quicklistproxymodel.h+52 plugins/WindowManager/CMakeLists.txt+2 plugins/WindowManager/TopLevelWindowModel.cpp+65−28 plugins/WindowManager/TopLevelWindowModel.h+9−6 plugins/WindowManager/Window.cpp+32−1 plugins/WindowManager/Window.h+18−2 plugins/WindowManager/WindowManagerGlobal.h+23 plugins/WindowManager/WindowManagerObjects.h+3−1 plugins/WindowManager/Workspace.h+8−3 plugins/WindowManager/WorkspaceManager.h+5−4 po/aa.po+11−11 po/am.po+11−11 po/ar.po+11−11 po/ast.po+11−11 po/az.po+11−11 po/be.po+11−11 po/bg.po+11−11 po/bn.po+11−11 po/br.po+11−11 po/bs.po+11−11 po/ca.po+31−30 po/ca@valencia.po+11−11 po/ce.po+11−11 po/ckb.po+11−11 po/co.po+11−11 po/cs.po+11−11 po/cy.po+11−11 po/da.po+11−11 po/de.po+11−11 po/el.po+11−11 po/en_AU.po+11−11 po/en_GB.po+13−13 po/eo.po+11−11 po/es.po+15−15 po/et.po+11−11 po/eu.po+11−11 po/fa.po+11−11 po/fi.po+11−11 po/fo.po+11−11 po/fr.po+13−13 po/ga.po+11−11 po/gd.po+11−11 po/gl.po+11−11 po/gv.po+11−11 po/he.po+11−11 po/hi.po+11−11 po/hr.po+25−25 po/hu.po+11−11 po/hy.po+11−11 po/ia.po+11−11 po/id.po+11−11 po/is.po+11−11 po/it.po+11−11 po/ja.po+11−11 po/km.po+11−11 po/kn.po+11−11 po/ko.po+11−11 po/ku.po+11−11 po/ky.po+11−11 po/lo.po+11−11 po/lt.po+11−11 po/lv.po+11−11 po/ml.po+11−11 po/mr.po+11−11 po/ms.po+11−11 po/my.po+11−11 po/nb.po+11−11 po/ne.po+11−11 po/nl.po+11−11 po/nn.po+11−11 po/oc.po+11−11 po/or.po+11−11 po/pa.po+11−11 po/pl.po+11−11 po/pt.po+11−11 po/pt_BR.po+11−11 po/ro.po+11−11 po/ru.po+11−11 po/shn.po+11−11 po/si.po+11−11 po/sk.po+11−11 po/sl.po+11−11 po/sq.po+11−11 po/sr.po+11−11 po/sv.po+11−11 po/sw.po+11−11 po/ta.po+11−11 po/te.po+11−11 po/th.po+11−11 po/tr.po+11−11 po/ug.po+11−11 po/uk.po+11−11 po/unity8.pot+9−9 po/ur.po+11−11 po/uz.po+11−11 po/vi.po+11−11 po/wo.po+11−11 po/xh.po+11−11 po/zh_CN.po+11−11 po/zh_HK.po+11−11 po/zh_TW.po+11−11 qml/ApplicationMenus/MenuBar.qml+10−6 qml/ApplicationMenus/MenuPopup.qml+14−6 qml/Components/Dialogs.qml+5−5 qml/Launcher/Drawer.qml+5−1 qml/Launcher/Launcher.qml+18−10 qml/Launcher/LauncherPanel.qml+8−1 qml/Panel/Indicators/client/IndicatorRepresentation.qml+18−5 qml/Panel/MenuContent.qml+2−2 qml/Panel/Panel.qml+42−4 qml/Panel/PanelBar.qml+17−2 qml/Panel/PanelItemRow.qml+35−29 qml/Panel/PanelMenu.qml+37−25 qml/Panel/PanelMenuPage.qml+2−1 qml/Shell.qml+13−2 qml/Stage/ChildWindowTree.qml−4 qml/Stage/DecoratedWindow.qml+5−2 qml/Stage/MoveHandler.qml−5 qml/Stage/Spread/Spread.qml+11 qml/Stage/Stage.qml+25−2 src/CMakeLists.txt+3 src/UnityApplication.cpp+7−2 src/WindowManagementPolicy.h+1−1 src/libunity8-private/wmpolicyinterface.h+3−1 tests/mocks/QMenuModel/unitymenumodel.cpp+28−4 tests/mocks/QMenuModel/unitymenumodel.h+9 tests/mocks/Unity/Application/MirSurface.cpp+4 tests/mocks/Unity/Application/MirSurface.h+4 tests/mocks/Unity/Application/MirSurfaceListModel.cpp+7−7 tests/mocks/Unity/Application/MirSurfaceListModel.h+7−9 tests/mocks/Unity/Launcher/MockLauncherModel.h+1−1 tests/mocks/Unity/Launcher/MockQuickListModel.cpp+3−1 tests/mocks/Unity/Launcher/MockQuickListModel.h+2 tests/mocks/Utils/CMakeLists.txt+2 tests/mocks/Utils/plugin.cpp+2 tests/mocks/WindowManager/WindowManagementPolicy.h+6−6 tests/plugins/CMakeLists.txt+1 tests/plugins/Unity/Launcher/CMakeLists.txt+3 tests/plugins/Unity/Launcher/launchermodeltest.cpp+85−7 tests/plugins/Unity/Session/CMakeLists.txt+13−1 tests/plugins/Unity/Session/LogindServer.cpp+10 tests/plugins/Unity/Session/LogindServer.h+5 tests/plugins/Unity/Session/interfaces.xml+12 tests/plugins/Unity/Session/preload.c+43 tests/plugins/Unity/Session/sessionbackendtest.cpp+130−11 tests/plugins/WindowManager/CMakeLists.txt+38 tests/plugins/WindowManager/UnityApplicationMocks.h+228 tests/plugins/WindowManager/tst_TopLevelWindowModel.cpp+142 tests/qmltests/ApplicationMenus/tst_MenuBar.qml+101 tests/qmltests/ApplicationMenus/tst_MenuPopup.qml+51−23 tests/qmltests/Launcher/tst_Drawer.qml+39 tests/qmltests/Launcher/tst_Launcher.qml+42 tests/qmltests/Panel/tst_Panel.qml+66−5 tests/qmltests/Stage/tst_TabletStage.qml+33−1 tests/qmltests/tst_Shell.qml+227−10
CMakeLists.txt+1−1
@@ -75,7 +75,7 @@ pkg_check_modules(QTMIRSERVER REQUIRED qtmirserver>=0.6.0)
7575pkg_check_modules(GEONAMES REQUIRED geonames>=0.2)
7676pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
7777pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
78−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=11)
78+pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=12)
7979pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
8080pkg_check_modules(GD3 REQUIRED gnome-desktop-3.0)
8181pkg_check_modules(UAL REQUIRED ubuntu-app-launch-3)
cmake/modules/QmlTest.cmake+1−1
@@ -201,7 +201,7 @@ function(add_executable_test COMPONENT_NAME TARGET)
201201 add_qmltest_target(xvfbtest${COMPONENT_NAME} ${TARGET}
202202 COMMAND $<TARGET_FILE:xvfb-run> --server-args "-screen 0 1024x768x24" --auto-servernum ${qmltest_command}
203203 ${depends}
204− ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT} LD_PRELOAD=/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/mesa/libGL.so.1
204+ ENVIRONMENT QML2_IMPORT_PATH=${imports} LD_PRELOAD=/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/mesa/libGL.so.1 ${QMLTEST_ENVIRONMENT}
205205 TARGETS ${xvfb_targets}
206206 )
207207 endif()
debian/changelog+49
@@ -1,3 +1,52 @@
1+unity8 (8.15+17.04.20170321-0ubuntu1) zesty; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Signal aboutToShow (LP: #1664578)
5+ * Support Panel top level items to be disabled (LP: #1670694)
6+ * Improve Launcher ←→ touch menu interaction (LP: #1667620, #1671069)
7+ * Fix real world submenus (e.g. kate) not getting their first item
8+ selected on open (LP: #1666859)
9+
10+ [ Daniel d'Andrada ]
11+ * Really disable the window decoration when in staged mode (LP:
12+ #1670361)
13+ * Don't let clients resize their surfaces while in staged
14+ (phone/tablet) mode (LP: #1670390)
15+ * TopLevelWindowModel: don't put hidden windows in the model (LP:
16+ #1665286)
17+
18+ [ Lukáš Tinkl ]
19+ * Reset always-show-osk gsetting on startup to default value (false
20+ atm)
21+ * Fix the restored-to position with Miral due to the state changes
22+ being async (LP: #1669819)
23+ * Add a cursor name fallback mapping "grabbing" -> "closedhand" for
24+ Breeze
25+ * Fix unsnapping a maximized window from the panel (LP: #1671721)
26+ * Disable altDrag feature outside windowed mode
27+
28+ [ Michael Terry ]
29+ * Don't lock the screen for guest users or users in the nopasswdlogin
30+ group. (LP: #1644237)
31+ * Support GNOME-style logout DBus API (making the Logout, Reboot, and
32+ Shutdown launcher commands work) (LP: #1673229)
33+
34+ [ Michael Zanetti ]
35+ * Add support for closing apps from the spread with "Q" (LP: #1670327)
36+ * hide "private" launcher quicklist entries when the greeter is locked
37+ (LP: #1667649)
38+ * add surface titles to launcher's quicklist (LP: #1661668)
39+ * properly reset the drawer state when cancelling a horizontal drag
40+ (LP: #1669536)
41+ * fix the focus moving correctly between launcher and drawer (LP:
42+ #1669880)
43+ * unfocus the drawer's textfield when it is moved (LP: #1669839)
44+
45+ [ Pete Woods ]
46+ * Fix up indicators-client after refactoring (LP: #1672797)
47+
48+ -- Michał Sawicz <michal.sawicz@canonical.com> Tue, 21 Mar 2017 10:58:13 +0000
49+
150unity8 (8.15+17.04.20170308-0ubuntu1) zesty; urgency=medium
251
352 [ Albert Astals Cid ]
debian/control+4−4
@@ -28,7 +28,7 @@ Build-Depends: cmake,
2828 liblightdm-qt5-3-dev,
2929 libpam0g-dev,
3030 libpulse-dev,
31− libqmenumodel-dev (>= 0.2.11),
31+ libqmenumodel-dev (>= 0.2.12),
3232 libqt5svg5-dev,
3333 libqt5xmlpatterns5-dev,
3434 libqtmirserver-dev (>= 0.6.0),
@@ -39,7 +39,7 @@ Build-Depends: cmake,
3939 libubuntugestures5-private-dev (>= 1.3.2030),
4040 libudev-dev,
4141 libudm-common-dev,
42− libunity-api-dev (>= 8.3),
42+ libunity-api-dev (>= 8.7),
4343 libusermetricsoutput1-dev,
4444# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
4545 libx11-dev[!arm64 !armhf],
@@ -138,7 +138,7 @@ Depends: dmz-cursor-theme,
138138 qtdeclarative5-ubuntu-telephony0.1,
139139 qtmir-desktop (>= 0.6.0) | qtmir-android (>= 0.6.0),
140140 ubuntu-system-settings (>= 0.4),
141− unity-launcher-impl-10,
141+ unity-launcher-impl-12,
142142 unity8-common (= ${source:Version}),
143143 unity8-private (= ${binary:Version}),
144144 unity8-private | unity-launcher-impl,
@@ -241,7 +241,7 @@ Depends: accountsservice-ubuntu-schemas (>= 0.0.7),
241241 ${misc:Depends},
242242 ${shlibs:Depends},
243243Provides: unity-launcher-impl,
244− unity-launcher-impl-10,
244+ unity-launcher-impl-12,
245245Description: Unity 8 private libs
246246 The Unity 8 shell is the primary user interface for Ubuntu devices.
247247 .
plugins/Cursor/CursorImageProvider.cpp+2
@@ -174,6 +174,8 @@ CursorImageProvider::CursorImageProvider()
174174 m_fallbackNames[QStringLiteral("forbidden")].append(QStringLiteral("not-allowed"));
175175 m_fallbackNames[QStringLiteral("forbidden")].append(QStringLiteral("circle"));
176176
177+ m_fallbackNames[QStringLiteral("grabbing")].append(QStringLiteral("closedhand")); // Breeze
178+
177179 m_fallbackNames[QStringLiteral("hand")].append(QStringLiteral("pointing_hand"));
178180 m_fallbackNames[QStringLiteral("hand")].append(QStringLiteral("pointer"));
179181
plugins/Greeter/Unity/Launcher/quicklistmodel.cpp+2
@@ -65,6 +65,8 @@ QVariant QuickListModel::data(const QModelIndex &index, int role) const
6565 return m_list.at(index.row()).icon();
6666 case RoleClickable:
6767 return m_list.at(index.row()).clickable();
68+ case RoleIsPrivate:
69+ return false; // The greeter plugin would just not add any private entries
6870 }
6971 return QVariant();
7072}
plugins/Unity/Launcher/CMakeLists.txt+2
@@ -30,6 +30,8 @@ set(QMLLAUNCHERPLUGIN_SRC
3030 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
3131 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
3232 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceListInterface.h
33+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
34+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
3335 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
3436 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
3537 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/QuickListModelInterface.h
plugins/Unity/Launcher/launcheritem.cpp+30−6
@@ -35,7 +35,6 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
3535 m_countVisible(false),
3636 m_focused(false),
3737 m_alerting(false),
38− m_surfaceCount(0),
3938 m_quickList(new QuickListModel(this))
4039{
4140 Q_ASSERT(parent != nullptr);
@@ -48,11 +47,13 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
4847 QuickListEntry pinningAction;
4948 pinningAction.setActionId(QStringLiteral("pin_item"));
5049 pinningAction.setText(gettext("Pin shortcut"));
50+ pinningAction.setIsPrivate(true);
5151 m_quickList->appendAction(pinningAction);
5252
5353 m_quitAction.setActionId(QStringLiteral("stop_item"));
5454 m_quitAction.setIcon(QStringLiteral("application-exit"));
5555 m_quitAction.setText(gettext("Quit"));
56+ m_quitAction.setIsPrivate(true);
5657}
5758
5859QString LauncherItem::appId() const
@@ -120,6 +121,7 @@ void LauncherItem::setPinned(bool pinned)
120121 QuickListEntry entry;
121122 entry.setActionId(QStringLiteral("pin_item"));
122123 entry.setText(pinned ? gettext("Unpin shortcut") : gettext("Pin shortcut"));
124+ entry.setIsPrivate(true);
123125 m_quickList->updateAction(entry);
124126}
125127
@@ -221,14 +223,36 @@ void LauncherItem::setAlerting(bool alerting)
221223
222224int LauncherItem::surfaceCount() const
223225{
224− return m_surfaceCount;
226+ return m_surfaces.count();
225227}
226228
227−void LauncherItem::setSurfaceCount(int surfaceCount)
229+void LauncherItem::setSurfaces(const QList<QPair<QString, QString> > &surfaces)
228230{
229− if (m_surfaceCount != surfaceCount) {
230− m_surfaceCount = surfaceCount;
231− Q_EMIT surfaceCountChanged(surfaceCount);
231+ if (m_surfaces != surfaces) {
232+ m_surfaces = surfaces;
233+
234+ QList<QuickListEntry> removedEntries;
235+ for (int i = 0; i < m_quickList->rowCount(); ++i) {
236+ QuickListEntry entry = m_quickList->get(i);
237+ if (entry.actionId().startsWith(QStringLiteral("surface_"))) {
238+ removedEntries.append(entry);
239+ }
240+ }
241+ Q_FOREACH (const QuickListEntry &entry, removedEntries) {
242+ m_quickList->removeAction(entry);
243+ }
244+ for (int i = 0; i < surfaces.count(); ++i) {
245+ QuickListEntry entry;
246+ entry.setActionId(QStringLiteral("surface_") + surfaces.at(i).first);
247+ entry.setText(surfaces.at(i).second);
248+ entry.setIsPrivate(true);
249+ if (i == surfaces.count() - 1) {
250+ entry.setHasSeparator(true);
251+ }
252+ m_quickList->insertAction(entry, i + 1);
253+ }
254+
255+ Q_EMIT surfaceCountChanged(m_surfaces.count());
232256 }
233257}
234258
plugins/Unity/Launcher/launcheritem.h+3−2
@@ -23,6 +23,7 @@
2323#include "quicklistmodel.h"
2424
2525#include <unity/shell/launcher/LauncherItemInterface.h>
26+#include <unity/shell/application/MirSurfaceInterface.h>
2627
2728class QuickListModel;
2829
@@ -62,7 +63,7 @@ private:
6263 void setCountVisible(bool countVisible);
6364 void setFocused(bool focused);
6465 void setAlerting(bool alerting);
65− void setSurfaceCount(int surfaceCount);
66+ void setSurfaces(const QList<QPair<QString, QString >> &surfaces);
6667
6768private:
6869 QString m_appId;
@@ -77,7 +78,7 @@ private:
7778 bool m_countVisible;
7879 bool m_focused;
7980 bool m_alerting;
80− int m_surfaceCount;
81+ QList<QPair<QString, QString> > m_surfaces;
8182 QuickListModel *m_quickList;
8283 QuickListEntry m_quitAction;
8384
plugins/Unity/Launcher/launchermodel.cpp+47−14
@@ -23,6 +23,7 @@
2323
2424#include <unity/shell/application/ApplicationInfoInterface.h>
2525#include <unity/shell/application/MirSurfaceListInterface.h>
26+#include <unity/shell/application/MirSurfaceInterface.h>
2627
2728#include <QDesktopServices>
2829#include <QDebug>
@@ -198,12 +199,25 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
198199 } else {
199200 pin(appId);
200201 }
201− } else if (actionId == QLatin1String("launch_item")) {
202+ } else if (actionId == QStringLiteral("launch_item")) {
202203 QDesktopServices::openUrl(getUrlForAppId(appId));
203− } else if (actionId == QLatin1String("stop_item")) { // Quit
204+ } else if (actionId == QStringLiteral("stop_item")) { // Quit
204205 if (m_appManager) {
205206 m_appManager->stopApplication(appId);
206207 }
208+ } else if (actionId.startsWith(QStringLiteral("surface_"))){
209+ ApplicationInfoInterface *appInfo = m_appManager->findApplication(appId);
210+ if (!appInfo) {
211+ qWarning() << "App for" << appId << "not found in launcher. Cannot invoke quicklist action";
212+ }
213+ for (int i = 0; i < appInfo->surfaceList()->count(); ++i) {
214+ MirSurfaceInterface *iface = appInfo->surfaceList()->get(i);
215+ QString id = actionId;
216+ id.remove(QRegExp("^surface_"));
217+ if (id == iface->persistentId()) {
218+ iface->activate();
219+ }
220+ }
207221 // Nope, we don't know this action, let the backend forward it to the application
208222 } else {
209223 // TODO: forward quicklist action to app, possibly via m_dbusIface
@@ -517,40 +531,59 @@ void LauncherModel::applicationAdded(const QModelIndex &parent, int row)
517531 item->setRecent(true);
518532 Q_EMIT dataChanged(index(itemIndex), index(itemIndex), {RoleRecent});
519533 }
520− if (item->surfaceCount() != app->surfaceCount()) {
521− item->setSurfaceCount(app->surfaceCount());
522− Q_EMIT dataChanged(index(itemIndex), index(itemIndex), {RoleSurfaceCount});
523− }
524−
525534 item->setRunning(true);
526535 } else {
527536 LauncherItem *item = new LauncherItem(app->appId(), app->name(), app->icon().toString(), this);
528537 item->setRecent(true);
529538 item->setRunning(true);
530539 item->setFocused(app->focused());
531− item->setSurfaceCount(app->surfaceCount());
532540 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
533541 m_list.append(item);
534542 endInsertRows();
535543 }
536− connect(app, &ApplicationInfoInterface::surfaceCountChanged, this, &LauncherModel::applicationSurfaceCountChanged);
544+ connect(app, &ApplicationInfoInterface::surfaceCountChanged, this, &LauncherModel::updateSurfaceList);
537545 m_asAdapter->syncItems(m_list);
538546 Q_EMIT dataChanged(index(itemIndex), index(itemIndex), {RoleRunning});
539547}
540548
541−void LauncherModel::applicationSurfaceCountChanged(int count)
549+void LauncherModel::updateSurfaceList()
542550{
543551 ApplicationInfoInterface *app = static_cast<ApplicationInfoInterface*>(sender());
552+ updateSurfaceListForApp(app);
553+}
554+
555+void LauncherModel::updateSurfaceListForSurface()
556+{
557+ MirSurfaceInterface *iface = static_cast<MirSurfaceInterface*>(sender());
558+ ApplicationInfoInterface* app = m_appManager->findApplication(iface->appId());
559+ if (!app) {
560+ return;
561+ }
562+ updateSurfaceListForApp(app);
563+}
564+
565+void LauncherModel::updateSurfaceListForApp(ApplicationInfoInterface* app)
566+{
544567 int idx = findApplication(app->appId());
545568 if (idx < 0) {
546569 qWarning() << "Received a surface count changed event from an app that's not in the Launcher model";
547570 return;
548571 }
549572 LauncherItem *item = m_list.at(idx);
550− if (item->surfaceCount() != count) {
551− item->setSurfaceCount(count);
552− Q_EMIT dataChanged(index(idx), index(idx), {RoleSurfaceCount});
573+ QList<QPair<QString, QString> > surfaces;
574+ for (int i = 0; i < app->surfaceList()->count(); ++i) {
575+ MirSurfaceInterface* iface = app->surfaceList()->get(i);
576+ // Avoid duplicate connections, so let's just disconnect first to be sure
577+ disconnect(iface, &MirSurfaceInterface::nameChanged, this, &LauncherModel::updateSurfaceListForSurface);
578+ connect(iface, &MirSurfaceInterface::nameChanged, this, &LauncherModel::updateSurfaceListForSurface);
579+ QString name = iface->name();
580+ if (name.isEmpty()) {
581+ name = app->name();
582+ }
583+ surfaces.append({iface->persistentId(), name});
553584 }
585+ item->setSurfaces(surfaces);
586+ Q_EMIT dataChanged(index(idx), index(idx), {RoleSurfaceCount});
554587}
555588
556589void LauncherModel::applicationRemoved(const QModelIndex &parent, int row)
@@ -571,7 +604,7 @@ void LauncherModel::applicationRemoved(const QModelIndex &parent, int row)
571604 return;
572605 }
573606
574− disconnect(app, &ApplicationInfoInterface::surfaceCountChanged, this, &LauncherModel::applicationSurfaceCountChanged);
607+ disconnect(app, &ApplicationInfoInterface::surfaceCountChanged, this, &LauncherModel::updateSurfaceList);
575608
576609 LauncherItem * item = m_list.at(appIndex);
577610
plugins/Unity/Launcher/launchermodel.h+3−1
@@ -75,7 +75,9 @@ private Q_SLOTS:
7575 void applicationAdded(const QModelIndex &parent, int row);
7676 void applicationRemoved(const QModelIndex &parent, int row);
7777 void focusedAppIdChanged();
78− void applicationSurfaceCountChanged(int);
78+ void updateSurfaceList();
79+ void updateSurfaceListForApp(ApplicationInfoInterface *app);
80+ void updateSurfaceListForSurface();
7981
8082private:
8183 QList<LauncherItem*> m_list;
plugins/Unity/Launcher/quicklistentry.cpp+11
@@ -20,6 +20,7 @@
2020
2121QuickListEntry::QuickListEntry()
2222 : m_hasSeparator(false)
23+ , m_isPrivate(false)
2324{
2425}
2526
@@ -72,3 +73,13 @@ bool QuickListEntry::operator==(const QuickListEntry &other)
7273{
7374 return !other.actionId().isEmpty() && other.actionId() == m_actionId;
7475}
76+
77+bool QuickListEntry::isPrivate() const
78+{
79+ return m_isPrivate;
80+}
81+
82+void QuickListEntry::setIsPrivate(bool isPrivate)
83+{
84+ m_isPrivate = isPrivate;
85+}
plugins/Unity/Launcher/quicklistentry.h+4
@@ -42,11 +42,15 @@ public:
4242
4343 bool operator==(const QuickListEntry & other);
4444
45+ bool isPrivate() const;
46+ void setIsPrivate(bool isPrivate);
47+
4548private:
4649 QString m_actionId;
4750 QString m_text;
4851 QString m_icon;
4952 bool m_hasSeparator;
53+ bool m_isPrivate;
5054};
5155
5256#endif // QUICKLISTENTRY
plugins/Unity/Launcher/quicklistmodel.cpp+9
@@ -37,6 +37,13 @@ void QuickListModel::appendAction(const QuickListEntry &entry)
3737 endInsertRows();
3838}
3939
40+void QuickListModel::insertAction(const QuickListEntry &entry, int index)
41+{
42+ beginInsertRows(QModelIndex(), index, index);
43+ m_list.insert(index, entry);
44+ endInsertRows();
45+}
46+
4047void QuickListModel::updateAction(const QuickListEntry &entry)
4148{
4249 for (int i = 0; i < m_list.count(); ++i) {
@@ -81,6 +88,8 @@ QVariant QuickListModel::data(const QModelIndex &index, int role) const
8188 return m_list.at(index.row()).clickable();
8289 case RoleHasSeparator:
8390 return m_list.at(index.row()).hasSeparator();
91+ case RoleIsPrivate:
92+ return m_list.at(index.row()).isPrivate();
8493 }
8594 return QVariant();
8695}
plugins/Unity/Launcher/quicklistmodel.h+1
@@ -36,6 +36,7 @@ public:
3636 ~QuickListModel();
3737
3838 void appendAction(const QuickListEntry &entry);
39+ void insertAction(const QuickListEntry &entry, int index);
3940
4041 /**
4142 * @brief Update an existing action
plugins/Unity/Session/dbusunitysessionservice.cpp+75−4
@@ -18,6 +18,7 @@
1818#include "dbusunitysessionservice.h"
1919
2020// system
21+#include <grp.h>
2122#include <sys/types.h>
2223#include <unistd.h>
2324#include <pwd.h>
@@ -211,6 +212,23 @@ public:
211212 QDBusConnection::SM_BUSNAME().asyncCall(msg);
212213 }
213214
215+ bool isUserInGroup(const QString &user, const QString &groupName) const
216+ {
217+ auto group = getgrnam(groupName.toUtf8().data());
218+
219+ if (group && group->gr_mem)
220+ {
221+ for (int i = 0; group->gr_mem[i]; ++i)
222+ {
223+ if (g_strcmp0(group->gr_mem[i], user.toUtf8().data()) == 0) {
224+ return true;
225+ }
226+ }
227+ }
228+
229+ return false;
230+ }
231+
214232private Q_SLOTS:
215233 void onPropertiesChanged(const QString &iface, const QVariantMap &changedProps, const QStringList &invalidatedProps)
216234 {
@@ -297,7 +315,13 @@ bool DBusUnitySessionService::CanShutdown() const
297315
298316bool DBusUnitySessionService::CanLock() const
299317{
300− return true; // FIXME
318+ auto user = UserName();
319+ if (user.startsWith(QStringLiteral("guest-")) ||
320+ d->isUserInGroup(user, QStringLiteral("nopasswdlogin"))) {
321+ return false;
322+ } else {
323+ return true;
324+ }
301325}
302326
303327QString DBusUnitySessionService::UserName() const
@@ -335,8 +359,10 @@ void DBusUnitySessionService::PromptLock()
335359 // Prompt as in quick. No locking animation needed. Usually used by
336360 // indicator-session in combination with a switch to greeter or other
337361 // user session.
338− Q_EMIT LockRequested();
339− Q_EMIT lockRequested();
362+ if (CanLock()) {
363+ Q_EMIT LockRequested();
364+ Q_EMIT lockRequested();
365+ }
340366}
341367
342368void DBusUnitySessionService::Lock()
@@ -468,11 +494,56 @@ void performAsyncUnityCall(const QString &method)
468494
469495
470496DBusGnomeSessionManagerWrapper::DBusGnomeSessionManagerWrapper()
497+ : UnityDBusObject(QStringLiteral("/org/gnome/SessionManager"), QStringLiteral("org.gnome.SessionManager"))
498+{
499+}
500+
501+void DBusGnomeSessionManagerWrapper::Logout(quint32 mode)
502+{
503+ auto call = QStringLiteral("RequestLogout");
504+
505+ // These modes are documented as bitwise flags, not an enum, even though
506+ // they only ever seem to be used as enums.
507+
508+ if (mode & 1) // without dialog
509+ call = QStringLiteral("Logout");
510+ if (mode & 2) // without dialog, ignoring inhibitors (which we don't have)
511+ call = QStringLiteral("Logout");
512+
513+ performAsyncUnityCall(call);
514+}
515+
516+void DBusGnomeSessionManagerWrapper::Reboot()
517+{
518+ // GNOME's Reboot means with dialog (they use Request differently than us).
519+ performAsyncUnityCall(QStringLiteral("RequestReboot"));
520+}
521+
522+void DBusGnomeSessionManagerWrapper::RequestReboot()
523+{
524+ // GNOME's RequestReboot means no dialog (they use Request differently than us).
525+ performAsyncUnityCall(QStringLiteral("Reboot"));
526+}
527+
528+void DBusGnomeSessionManagerWrapper::RequestShutdown()
529+{
530+ // GNOME's RequestShutdown means no dialog (they use Request differently than us).
531+ performAsyncUnityCall(QStringLiteral("Shutdown"));
532+}
533+
534+void DBusGnomeSessionManagerWrapper::Shutdown()
535+{
536+ // GNOME's Shutdown means with dialog (they use Request differently than us).
537+ performAsyncUnityCall(QStringLiteral("RequestShutdown"));
538+}
539+
540+
541+DBusGnomeSessionManagerDialogWrapper::DBusGnomeSessionManagerDialogWrapper()
471542 : UnityDBusObject(QStringLiteral("/org/gnome/SessionManager/EndSessionDialog"), QStringLiteral("com.canonical.Unity"))
472543{
473544}
474545
475−void DBusGnomeSessionManagerWrapper::Open(const unsigned type, const unsigned arg_1, const unsigned max_wait, const QList<QDBusObjectPath> &inhibitors)
546+void DBusGnomeSessionManagerDialogWrapper::Open(const unsigned type, const unsigned arg_1, const unsigned max_wait, const QList<QDBusObjectPath> &inhibitors)
476547{
477548 Q_UNUSED(arg_1);
478549 Q_UNUSED(max_wait);
plugins/Unity/Session/dbusunitysessionservice.h+18−4
@@ -270,17 +270,31 @@ private:
270270class DBusGnomeSessionManagerWrapper : public UnityDBusObject
271271{
272272 Q_OBJECT
273− Q_CLASSINFO("D-Bus Interface", "org.gnome.SessionManager.EndSessionDialog")
273+ Q_CLASSINFO("D-Bus Interface", "org.gnome.SessionManager")
274274
275275public:
276276 DBusGnomeSessionManagerWrapper();
277277 ~DBusGnomeSessionManagerWrapper() = default;
278278
279279public Q_SLOTS:
280− Q_SCRIPTABLE void Open(const unsigned int type, const unsigned int arg_1, const unsigned int max_wait, const QList<QDBusObjectPath> &inhibitors);
280+ Q_SCRIPTABLE void Logout(quint32 mode);
281+ Q_SCRIPTABLE void Reboot();
282+ Q_SCRIPTABLE void RequestReboot();
283+ Q_SCRIPTABLE void RequestShutdown();
284+ Q_SCRIPTABLE void Shutdown();
285+};
281286
282−private:
283− void performAsyncCall(const QString &method);
287+class DBusGnomeSessionManagerDialogWrapper : public UnityDBusObject
288+{
289+ Q_OBJECT
290+ Q_CLASSINFO("D-Bus Interface", "org.gnome.SessionManager.EndSessionDialog")
291+
292+public:
293+ DBusGnomeSessionManagerDialogWrapper();
294+ ~DBusGnomeSessionManagerDialogWrapper() = default;
295+
296+public Q_SLOTS:
297+ Q_SCRIPTABLE void Open(const unsigned int type, const unsigned int arg_1, const unsigned int max_wait, const QList<QDBusObjectPath> &inhibitors);
284298};
285299
286300class DBusGnomeScreensaverWrapper: public UnityDBusObject
plugins/Utils/CMakeLists.txt+1
@@ -36,6 +36,7 @@ set(QMLPLUGIN_SRC
3636 URLDispatcher.cpp
3737 tabfocusfence.cpp
3838 expressionfiltermodel.cpp
39+ quicklistproxymodel.cpp
3940 plugin.cpp
4041 )
4142
plugins/Utils/plugin.cpp+2
@@ -42,6 +42,7 @@
4242#include "appdrawerproxymodel.h"
4343#include "tabfocusfence.h"
4444#include "expressionfiltermodel.h"
45+#include "quicklistproxymodel.h"
4546
4647static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
4748{
@@ -88,4 +89,5 @@ void UtilsPlugin::registerTypes(const char *uri)
8889 qmlRegisterType<AppDrawerProxyModel>(uri, 0, 1, "AppDrawerProxyModel");
8990 qmlRegisterType<TabFocusFenceItem>(uri, 0, 1, "TabFocusFence");
9091 qmlRegisterType<ExpressionFilterModel>(uri, 0, 1, "ExpressionFilterModel");
92+ qmlRegisterType<QuickListProxyModel>(uri, 0, 1, "QuickListProxyModel");
9193}
plugins/Utils/quicklistproxymodel.cppnew file+72
@@ -0,0 +1,72 @@
1+/*
2+ * Copyright (C) 2017 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 "quicklistproxymodel.h"
18+
19+#include <QDebug>
20+
21+QuickListProxyModel::QuickListProxyModel(QObject *parent):
22+ QSortFilterProxyModel(parent)
23+{
24+ connect(this, &QAbstractListModel::rowsInserted, this, &QuickListProxyModel::countChanged);
25+ connect(this, &QAbstractListModel::rowsRemoved, this, &QuickListProxyModel::countChanged);
26+ connect(this, &QAbstractListModel::layoutChanged, this, &QuickListProxyModel::countChanged);
27+}
28+
29+QAbstractItemModel *QuickListProxyModel::source() const
30+{
31+ return m_source;
32+}
33+
34+bool QuickListProxyModel::privateMode() const
35+{
36+ return m_privateMode;
37+}
38+
39+void QuickListProxyModel::setPrivateMode(bool privateMode)
40+{
41+ if (m_privateMode != privateMode) {
42+ m_privateMode = privateMode;
43+ invalidateFilter();
44+ Q_EMIT privateModeChanged();
45+ }
46+}
47+
48+void QuickListProxyModel::setSource(QAbstractItemModel *source)
49+{
50+ if (m_source != source) {
51+ m_source = source;
52+ setSourceModel(m_source);
53+ connect(m_source, &QAbstractItemModel::rowsRemoved, this, &QuickListProxyModel::invalidate);
54+ connect(m_source, &QAbstractItemModel::rowsInserted, this, &QuickListProxyModel::invalidate);
55+ Q_EMIT sourceChanged();
56+ }
57+}
58+
59+int QuickListProxyModel::count() const
60+{
61+ return rowCount();
62+}
63+
64+bool QuickListProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
65+{
66+ Q_UNUSED(source_parent)
67+
68+ if (m_privateMode) {
69+ return !m_source->data(m_source->index(source_row, 0), QuickListModelInterface::RoleIsPrivate).toBool();
70+ }
71+ return true;
72+}
plugins/Utils/quicklistproxymodel.hnew file+52
@@ -0,0 +1,52 @@
1+/*
2+ * Copyright (C) 2017 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 <QSortFilterProxyModel>
18+
19+#include <unity/shell/launcher/QuickListModelInterface.h>
20+
21+using namespace unity::shell::launcher;
22+
23+class QuickListProxyModel: public QSortFilterProxyModel
24+{
25+ Q_OBJECT
26+ Q_PROPERTY(QAbstractItemModel* source READ source WRITE setSource NOTIFY sourceChanged)
27+ Q_PROPERTY(bool privateMode READ privateMode WRITE setPrivateMode NOTIFY privateModeChanged)
28+ Q_PROPERTY(int count READ count NOTIFY countChanged)
29+
30+public:
31+ QuickListProxyModel(QObject* parent = nullptr);
32+
33+ QAbstractItemModel* source() const;
34+ void setSource(QAbstractItemModel* source);
35+
36+ bool privateMode() const;
37+ void setPrivateMode(bool privateMode);
38+
39+ int count() const;
40+
41+protected:
42+ bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
43+
44+Q_SIGNALS:
45+ void sourceChanged();
46+ void privateModeChanged();
47+ void countChanged();
48+
49+private:
50+ QAbstractItemModel* m_source = nullptr;
51+ bool m_privateMode;
52+};
plugins/WindowManager/CMakeLists.txt+2
@@ -29,6 +29,8 @@ set(WINDOWMANAGER_SRC
2929 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/SurfaceManagerInterface.h
3030)
3131
32+add_definitions(-DWINDOWMANAGERQML_LIBRARY)
33+
3234add_library(windowmanager-qml SHARED ${WINDOWMANAGER_SRC})
3335
3436target_link_libraries(windowmanager-qml
plugins/WindowManager/TopLevelWindowModel.cpp+65−28
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2016 Canonical, Ltd.
2+ * Copyright (C) 2016-2017 Canonical, Ltd.
33 *
44 * This program is free software: you can redistribute it and/or modify it under
55 * the terms of the GNU Lesser General Public License version 3, as published by
@@ -120,7 +120,6 @@ void TopLevelWindowModel::setSurfaceManager(unityapi::SurfaceManagerInterface *s
120120 m_surfaceManager = surfaceManager;
121121
122122 if (m_surfaceManager) {
123− connect(m_surfaceManager, &unityapi::SurfaceManagerInterface::surfaceCreated, this, &TopLevelWindowModel::onSurfaceCreated);
124123 connect(m_surfaceManager, &unityapi::SurfaceManagerInterface::surfacesRaised, this, &TopLevelWindowModel::onSurfacesRaised);
125124 connect(m_surfaceManager, &unityapi::SurfaceManagerInterface::modificationsStarted, this, &TopLevelWindowModel::onModificationsStarted);
126125 connect(m_surfaceManager, &unityapi::SurfaceManagerInterface::modificationsEnded, this, &TopLevelWindowModel::onModificationsEnded);
@@ -155,7 +154,7 @@ void TopLevelWindowModel::removeApplication(unityapi::ApplicationInfoInterface *
155154 int i = 0;
156155 while (i < m_windowModel.count()) {
157156 if (m_windowModel.at(i).application == application) {
158− removeAt(i);
157+ deleteAt(i);
159158 } else {
160159 ++i;
161160 }
@@ -173,13 +172,14 @@ void TopLevelWindowModel::prependSurface(unityapi::MirSurfaceInterface *surface,
173172{
174173 Q_ASSERT(surface != nullptr);
175174
175+ connectSurface(surface);
176+ m_allSurfaces.insert(surface);
177+
176178 bool filledPlaceholder = false;
177179 for (int i = 0; i < m_windowModel.count() && !filledPlaceholder; ++i) {
178180 ModelEntry &entry = m_windowModel[i];
179181 if (entry.application == application && entry.window->surface() == nullptr) {
180182 entry.window->setSurface(surface);
181− m_allSurfaces.insert(surface);
182− connectSurface(surface);
183183 INFO_MSG << " appId=" << application->appId() << " surface=" << surface
184184 << ", filling out placeholder. after: " << toString();
185185 filledPlaceholder = true;
@@ -193,6 +193,34 @@ void TopLevelWindowModel::prependSurface(unityapi::MirSurfaceInterface *surface,
193193}
194194
195195void TopLevelWindowModel::prependSurfaceHelper(unityapi::MirSurfaceInterface *surface, unityapi::ApplicationInfoInterface *application)
196+{
197+
198+ Window *window = createWindow(surface);
199+
200+ connect(window, &Window::stateChanged, this, [=](Mir::State newState) {
201+ if (newState == Mir::HiddenState) {
202+ // Comply, removing it from our model. Just as if it didn't exist anymore.
203+ removeAt(indexForId(window->id()));
204+ } else {
205+ if (indexForId(window->id()) == -1) {
206+ // was probably hidden before. put it back on the list
207+ auto *application = m_applicationManager->findApplicationWithSurface(window->surface());
208+ Q_ASSERT(application);
209+ prependWindow(window, application);
210+ }
211+ }
212+ });
213+
214+ prependWindow(window, application);
215+
216+ if (!surface) {
217+ activateEmptyWindow(window);
218+ }
219+
220+ INFO_MSG << " after " << toString();
221+}
222+
223+void TopLevelWindowModel::prependWindow(Window *window, unityapi::ApplicationInfoInterface *application)
196224{
197225 if (m_modelState == IdleState) {
198226 m_modelState = InsertingState;
@@ -202,13 +230,7 @@ void TopLevelWindowModel::prependSurfaceHelper(unityapi::MirSurfaceInterface *su
202230 // No point in signaling anything if we're resetting the whole model
203231 }
204232
205− Window *window = createWindow(surface);
206−
207233 m_windowModel.prepend(ModelEntry(window, application));
208− if (surface) {
209− m_allSurfaces.insert(surface);
210− connectSurface(surface);
211− }
212234
213235 if (m_modelState == InsertingState) {
214236 endInsertRows();
@@ -216,12 +238,6 @@ void TopLevelWindowModel::prependSurfaceHelper(unityapi::MirSurfaceInterface *su
216238 Q_EMIT listChanged();
217239 m_modelState = IdleState;
218240 }
219−
220− if (!surface) {
221− activateEmptyWindow(window);
222− }
223−
224− INFO_MSG << " after " << toString();
225241}
226242
227243void TopLevelWindowModel::connectWindow(Window *window)
@@ -269,6 +285,13 @@ void TopLevelWindowModel::connectWindow(Window *window)
269285 connect(window, &Window::emptyWindowActivated, this, [this, window]() {
270286 activateEmptyWindow(window);
271287 });
288+
289+ connect(window, &Window::liveChanged, this, [this, window](bool isAlive) {
290+ if (!isAlive && window->state() == Mir::HiddenState) {
291+ // Hidden windows are not in the model. So just delete it right away.
292+ delete window;
293+ }
294+ });
272295}
273296
274297void TopLevelWindowModel::activateEmptyWindow(Window *window)
@@ -334,7 +357,7 @@ void TopLevelWindowModel::onSurfaceDestroyed(unityapi::MirSurfaceInterface *surf
334357 }
335358
336359 if (m_windowModel[i].removeOnceSurfaceDestroyed) {
337− removeAt(i);
360+ deleteAt(i);
338361 } else {
339362 auto window = m_windowModel[i].window;
340363 window->setSurface(nullptr);
@@ -355,11 +378,6 @@ Window *TopLevelWindowModel::createWindow(unityapi::MirSurfaceInterface *surface
355378 return qmlWindow;
356379}
357380
358−
359−void TopLevelWindowModel::onSurfaceCreated(unityapi::MirSurfaceInterface */*surface*/)
360−{
361−}
362−
363381void TopLevelWindowModel::onSurfacesAddedToWorkspace(const std::shared_ptr<miral::Workspace>& workspace,
364382 const QVector<unity::shell::application::MirSurfaceInterface*> surfaces)
365383{
@@ -383,7 +401,16 @@ void TopLevelWindowModel::onSurfacesAddedToWorkspace(const std::shared_ptr<miral
383401 } else {
384402 auto *application = m_applicationManager->findApplicationWithSurface(surface);
385403 if (application) {
386− prependSurface(surface, application);
404+ if (surface->state() == Mir::HiddenState) {
405+ // Ignore it until it's finally shown
406+ connect(surface, &unityapi::MirSurfaceInterface::stateChanged, this, [=](Mir::State newState) {
407+ Q_ASSERT(newState != Mir::HiddenState);
408+ disconnect(surface, &unityapi::MirSurfaceInterface::stateChanged, this, 0);
409+ prependSurface(surface, application);
410+ });
411+ } else {
412+ prependSurface(surface, application);
413+ }
387414 } else {
388415 // Must be a prompt session. No need to do add it as a prompt surface is not top-level.
389416 // It will show up in the ApplicationInfoInterface::promptSurfaceList of some application.
@@ -452,6 +479,17 @@ void TopLevelWindowModel::onSurfacesAboutToBeRemovedFromWorkspace(const std::sha
452479 }
453480}
454481
482+void TopLevelWindowModel::deleteAt(int index)
483+{
484+ auto window = m_windowModel[index].window;
485+
486+ removeAt(index);
487+
488+ window->setSurface(nullptr);
489+
490+ delete window;
491+}
492+
455493void TopLevelWindowModel::removeAt(int index)
456494{
457495 if (m_modelState == IdleState) {
@@ -465,8 +503,9 @@ void TopLevelWindowModel::removeAt(int index)
465503 auto window = m_windowModel[index].window;
466504 auto surface = window->surface();
467505
468− window->setSurface(nullptr);
469− window->setFocused(false);
506+ if (!window->surface()) {
507+ window->setFocused(false);
508+ }
470509
471510 m_windowModel.removeAt(index);
472511 m_allSurfaces.remove(surface);
@@ -478,12 +517,10 @@ void TopLevelWindowModel::removeAt(int index)
478517 m_modelState = IdleState;
479518 }
480519
481− disconnect(window, 0, this, 0);
482520 if (m_focusedWindow == window) {
483521 setFocusedWindow(nullptr);
484522 m_focusedWindowCleared = false;
485523 }
486− delete window;
487524
488525 INFO_MSG << " after " << toString();
489526}
plugins/WindowManager/TopLevelWindowModel.h+9−6
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2016 Canonical, Ltd.
2+ * Copyright (C) 2016-2017 Canonical, Ltd.
33 *
44 * This program is free software: you can redistribute it and/or modify it under
55 * the terms of the GNU Lesser General Public License version 3, as published by
@@ -22,6 +22,8 @@
2222
2323#include <memory>
2424
25+#include "WindowManagerGlobal.h"
26+
2527Q_DECLARE_LOGGING_CATEGORY(TOPLEVELWINDOWMODEL)
2628
2729class Window;
@@ -52,7 +54,7 @@ namespace unity {
5254 * As applications can have multiple surfaces and you can also have entries without surfaces at all,
5355 * the only way to unambiguously refer to an entry in this model is through its id.
5456 */
55−class TopLevelWindowModel : public QAbstractListModel
57+class WINDOWMANAGERQML_EXPORT TopLevelWindowModel : public QAbstractListModel
5658{
5759 Q_OBJECT
5860
@@ -152,6 +154,9 @@ public:
152154 */
153155 Q_INVOKABLE void raiseId(int id);
154156
157+ void setApplicationManager(unity::shell::application::ApplicationManagerInterface*);
158+ void setSurfaceManager(unity::shell::application::SurfaceManagerInterface*);
159+
155160Q_SIGNALS:
156161 void countChanged();
157162 void inputMethodSurfaceChanged(unity::shell::application::MirSurfaceInterface* inputMethodSurface);
@@ -167,10 +172,6 @@ Q_SIGNALS:
167172 void nextIdChanged();
168173
169174private Q_SLOTS:
170− void setApplicationManager(unity::shell::application::ApplicationManagerInterface*);
171− void setSurfaceManager(unity::shell::application::SurfaceManagerInterface*);
172−
173− void onSurfaceCreated(unity::shell::application::MirSurfaceInterface *surface);
174175 void onSurfacesAddedToWorkspace(const std::shared_ptr<miral::Workspace>& workspace,
175176 const QVector<unity::shell::application::MirSurfaceInterface*> surfaces);
176177 void onSurfacesAboutToBeRemovedFromWorkspace(const std::shared_ptr<miral::Workspace>& workspace,
@@ -192,6 +193,7 @@ private:
192193 void setFocusedWindow(Window *window);
193194 void removeInputMethodWindow();
194195 int findIndexOf(const unity::shell::application::MirSurfaceInterface *surface) const;
196+ void deleteAt(int index);
195197 void removeAt(int index);
196198
197199 void addApplication(unity::shell::application::ApplicationInfoInterface *application);
@@ -202,6 +204,7 @@ private:
202204 unity::shell::application::ApplicationInfoInterface *application);
203205 void prependSurfaceHelper(unity::shell::application::MirSurfaceInterface *surface,
204206 unity::shell::application::ApplicationInfoInterface *application);
207+ void prependWindow(Window *window, unity::shell::application::ApplicationInfoInterface *application);
205208
206209 void connectWindow(Window *window);
207210 void connectSurface(unity::shell::application::MirSurfaceInterface *surface);
plugins/WindowManager/Window.cpp+32−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2016 Canonical, Ltd.
2+ * Copyright (C) 2016-2017 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -67,6 +67,23 @@ void Window::setRequestedPosition(const QPoint &value)
6767 }
6868}
6969
70+bool Window::allowClientResize() const
71+{
72+ return m_allowClientResize;
73+}
74+
75+void Window::setAllowClientResize(bool value)
76+{
77+ if (value != m_allowClientResize) {
78+ DEBUG_MSG << "("<<value<<")";
79+ m_allowClientResize = value;
80+ if (m_surface) {
81+ m_surface->setAllowClientResize(value);
82+ }
83+ Q_EMIT allowClientResizeChanged(m_allowClientResize);
84+ }
85+}
86+
7087Mir::State Window::state() const
7188{
7289 return m_state;
@@ -154,6 +171,19 @@ void Window::setSurface(unityapi::MirSurfaceInterface *surface)
154171 updateFocused();
155172 });
156173
174+ connect(surface, &unityapi::MirSurfaceInterface::allowClientResizeChanged, this, [this]() {
175+ if (m_surface->allowClientResize() != m_allowClientResize) {
176+ m_allowClientResize = m_surface->allowClientResize();
177+ Q_EMIT allowClientResizeChanged(m_allowClientResize);
178+ }
179+ });
180+
181+ connect(surface, &unityapi::MirSurfaceInterface::liveChanged, this, &Window::liveChanged);
182+
183+ connect(surface, &QObject::destroyed, this, [this]() {
184+ setSurface(nullptr);
185+ });
186+
157187 // bring it up to speed
158188 if (m_positionRequested) {
159189 m_surface->setRequestedPosition(m_requestedPosition);
@@ -161,6 +191,7 @@ void Window::setSurface(unityapi::MirSurfaceInterface *surface)
161191 if (m_stateRequested && m_surface->state() == Mir::RestoredState) {
162192 m_surface->requestState(m_state);
163193 }
194+ m_surface->setAllowClientResize(m_allowClientResize);
164195
165196 // and sync with surface
166197 updatePosition();
plugins/WindowManager/Window.h+18−2
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2016 Canonical, Ltd.
2+ * Copyright (C) 2016-2017 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -24,6 +24,8 @@
2424// Unity API
2525#include <unity/shell/application/Mir.h>
2626
27+#include "WindowManagerGlobal.h"
28+
2729namespace unity {
2830 namespace shell {
2931 namespace application {
@@ -42,7 +44,7 @@ Q_DECLARE_LOGGING_CATEGORY(UNITY_WINDOW)
4244 was killed to free up memory, as it should still remain in the window list since the user
4345 did not explicitly close it).
4446 */
45−class Window : public QObject
47+class WINDOWMANAGERQML_EXPORT Window : public QObject
4648{
4749 Q_OBJECT
4850
@@ -89,6 +91,13 @@ class Window : public QObject
8991 */
9092 Q_PROPERTY(unity::shell::application::MirSurfaceInterface* surface READ surface NOTIFY surfaceChanged)
9193
94+ /**
95+ * @brief Whether to comply to resize requests coming from the client side
96+ *
97+ * It's true by default
98+ */
99+ Q_PROPERTY(bool allowClientResize READ allowClientResize WRITE setAllowClientResize NOTIFY allowClientResizeChanged)
100+
92101public:
93102 Window(int id, QObject *parent = nullptr);
94103 virtual ~Window();
@@ -104,6 +113,9 @@ public:
104113 void setSurface(unity::shell::application::MirSurfaceInterface *surface);
105114 void setFocused(bool value);
106115
116+ bool allowClientResize() const;
117+ void setAllowClientResize(bool);
118+
107119 QString toString() const;
108120
109121public Q_SLOTS:
@@ -133,6 +145,8 @@ Q_SIGNALS:
133145 void focusedChanged(bool value);
134146 void confinesMousePointerChanged(bool value);
135147 void surfaceChanged(unity::shell::application::MirSurfaceInterface *surface);
148+ void allowClientResizeChanged(bool value);
149+ void liveChanged(bool value);
136150
137151 /**
138152 * @brief Emitted when focus for this window is requested by an external party
@@ -152,6 +166,8 @@ private:
152166 Mir::State m_state{Mir::RestoredState};
153167 bool m_stateRequested{false};
154168 unity::shell::application::MirSurfaceInterface *m_surface{nullptr};
169+
170+ bool m_allowClientResize{true};
155171};
156172
157173QDebug operator<<(QDebug dbg, const Window *window);
plugins/WindowManager/WindowManagerGlobal.hnew file+23
@@ -0,0 +1,23 @@
1+/*
2+ * Copyright (C) 2017 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 <QtCore/QtGlobal>
18+
19+#if defined(WINDOWMANAGERQML_LIBRARY)
20+# define WINDOWMANAGERQML_EXPORT Q_DECL_EXPORT
21+#else
22+# define WINDOWMANAGERQML_EXPORT Q_DECL_IMPORT
23+#endif
plugins/WindowManager/WindowManagerObjects.h+3−1
@@ -19,6 +19,8 @@
1919
2020#include <QObject>
2121
22+#include "WindowManagerGlobal.h"
23+
2224namespace unity {
2325 namespace shell {
2426 namespace application {
@@ -28,7 +30,7 @@ namespace unity {
2830 }
2931}
3032
31−class WindowManagerObjects : public QObject
33+class WINDOWMANAGERQML_EXPORT WindowManagerObjects : public QObject
3234{
3335 Q_OBJECT
3436
plugins/WindowManager/Workspace.h+8−3
@@ -25,6 +25,8 @@
2525#include <memory>
2626#include <functional>
2727
28+#include "WindowManagerGlobal.h"
29+
2830class WorkspaceModel;
2931class TopLevelWindowModel;
3032
@@ -38,7 +40,7 @@ namespace unity {
3840 }
3941}
4042
41−class Workspace : public QObject
43+class WINDOWMANAGERQML_EXPORT Workspace : public QObject
4244{
4345 Q_OBJECT
4446 Q_PROPERTY(bool active READ isActive NOTIFY activeChanged)
@@ -72,10 +74,9 @@ protected:
7274 WorkspaceModel* m_model;
7375};
7476
75−class ConcreteWorkspace : public Workspace
77+class WINDOWMANAGERQML_EXPORT ConcreteWorkspace : public Workspace
7678{
7779public:
78− explicit ConcreteWorkspace(QObject *parent = nullptr);
7980 ~ConcreteWorkspace();
8081
8182 bool isActive() const override { return m_active; }
@@ -83,8 +84,12 @@ public:
8384 void activate() override;
8485
8586private:
87+ explicit ConcreteWorkspace(QObject *parent = nullptr);
88+
8689 bool m_active;
8790 const QScopedPointer<TopLevelWindowModel> m_windowModel;
91+
92+ friend class WorkspaceManager;
8893};
8994
9095class ProxyWorkspace : public Workspace
plugins/WindowManager/WorkspaceManager.h+5−4
@@ -17,9 +17,11 @@
1717#ifndef WORKSPACEMANAGER_H
1818#define WORKSPACEMANAGER_H
1919
20−#include "WorkspaceModel.h"
2120#include <QQmlListProperty>
2221
22+#include "WindowManagerGlobal.h"
23+#include "WorkspaceModel.h"
24+
2325class Workspace;
2426
2527namespace unity {
@@ -31,12 +33,13 @@ namespace unity {
3133 }
3234}
3335
34−class WorkspaceManager : public QObject
36+class WINDOWMANAGERQML_EXPORT WorkspaceManager : public QObject
3537{
3638 Q_OBJECT
3739 Q_PROPERTY(Workspace* activeWorkspace READ activeWorkspace WRITE setActiveWorkspace2 NOTIFY activeWorkspaceChanged)
3840
3941public:
42+ WorkspaceManager();
4043 static WorkspaceManager* instance();
4144
4245 Workspace* activeWorkspace() const;
@@ -56,8 +59,6 @@ Q_SIGNALS:
5659 void activeWorkspaceChanged(Workspace*);
5760
5861private:
59− WorkspaceManager();
60−
6162 void setActiveWorkspace2(Workspace* workspace);
6263
6364 QSet<Workspace*> m_allWorkspaces;
po/aa.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-02-12 10:18+0000\n"
1212"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
1313"Language-Team: Afar <aa@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr "Kat"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Eweq"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Koflis"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/am.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-01-26 15:04+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "መግቢያ"
5050msgid "Guest Session"
5151msgstr "የ እንግዳ ክፍለ ጊዜ"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "አቋራጭ ማጣበቂያ"
5757
@@ -59,20 +59,20 @@ msgstr "አቋራጭ ማጣበቂያ"
5959msgid "Quit"
6060msgstr "ማጥፊያ"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "አቋራጭ መለያያ"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "መውጫ"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "በእርግጥ መውጣት ይፈልጋሉ?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "መቆለፊያ"
@@ -519,11 +519,11 @@ msgstr "ማለፊያ ኮድ"
519519msgid "Select desktop environment"
520520msgstr "የ ዴስክቶፕ አይነት ይምረጡ"
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr "መፈለጊያ..."
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr "A-Z"
po/ar.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-01-14 05:20+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "تثبيت الاختصار"
5858
@@ -60,20 +60,20 @@ msgstr "تثبيت الاختصار"
6060msgid "Quit"
6161msgstr "خروج"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "إزالة تثبيت الاختصار"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "خروج"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "هل أنت متأكد من رغبتك في تسجيل الخروج؟"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "أوصِد"
@@ -526,11 +526,11 @@ msgstr ""
526526msgid "Select desktop environment"
527527msgstr ""
528528
529−#: qml/Launcher/Drawer.qml:92
529+#: qml/Launcher/Drawer.qml:93
530530msgid "Search…"
531531msgstr ""
532532
533−#: qml/Launcher/Drawer.qml:127
533+#: qml/Launcher/Drawer.qml:128
534534msgctxt "Apps sorted alphabetically"
535535msgid "A-Z"
536536msgstr ""
po/ast.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-12-16 02:13+0000\n"
1212"Last-Translator: enolp <enolp@softastur.org>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Anclar atayu"
5757
@@ -59,20 +59,20 @@ msgstr "Anclar atayu"
5959msgid "Quit"
6060msgstr "Colar"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Desanclar atayu"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Zarrar sesión"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "¿De xuru que quies zarrar la sesión?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Bloquiar"
@@ -522,11 +522,11 @@ msgstr "Códigu de pasu"
522522msgid "Select desktop environment"
523523msgstr "Esbillar entornu d'escritoriu"
524524
525−#: qml/Launcher/Drawer.qml:92
525+#: qml/Launcher/Drawer.qml:93
526526msgid "Search…"
527527msgstr "Guetar..."
528528
529−#: qml/Launcher/Drawer.qml:127
529+#: qml/Launcher/Drawer.qml:128
530530msgctxt "Apps sorted alphabetically"
531531msgid "A-Z"
532532msgstr "A-Z"
po/az.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-09-03 16:39+0000\n"
1212"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Pin qısayolu"
5757
@@ -59,20 +59,20 @@ msgstr "Pin qısayolu"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Açma qısayolu"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Çıxmaq istәdiyinizdәn әminsiniz?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/be.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-12-13 13:12+0000\n"
1212"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
1313"Language-Team: Belarusian <be@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Замацаваць кнопку"
5858
@@ -60,20 +60,20 @@ msgstr "Замацаваць кнопку"
6060msgid "Quit"
6161msgstr "Выйсці"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Адмацаваць кнопку"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Выйсці"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Вы ўпэўненыя, што хочаце выйсці?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Заблакаваць"
@@ -524,11 +524,11 @@ msgstr ""
524524msgid "Select desktop environment"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:92
527+#: qml/Launcher/Drawer.qml:93
528528msgid "Search…"
529529msgstr ""
530530
531−#: qml/Launcher/Drawer.qml:127
531+#: qml/Launcher/Drawer.qml:128
532532msgctxt "Apps sorted alphabetically"
533533msgid "A-Z"
534534msgstr ""
po/bg.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-04-12 14:43+0000\n"
1212"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
1313"Language-Team: Bulgarian <bg@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -519,11 +519,11 @@ msgstr ""
519519msgid "Select desktop environment"
520520msgstr ""
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr ""
po/bn.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-11-27 19:38+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bengali <bn@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "পিন"
5757
@@ -59,20 +59,20 @@ msgstr "পিন"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "আনপিন"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "আপনি কি লগ আউট করতে চান?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "লক করুন"
@@ -519,11 +519,11 @@ msgstr ""
519519msgid "Select desktop environment"
520520msgstr ""
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr ""
po/br.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-08-29 11:37+0000\n"
1212"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
1313"Language-Team: Breton <br@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Spilhennañ ar verradenn"
5757
@@ -59,20 +59,20 @@ msgstr "Spilhennañ ar verradenn"
5959msgid "Quit"
6060msgstr "Mont kuit"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Dispilhennañ ar verradenn"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Digevreañ"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Ha sur oc'h e fell deoc'h digevreañ ?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Prennañ"
@@ -528,11 +528,11 @@ msgstr "Kod-tremen"
528528msgid "Select desktop environment"
529529msgstr "Diuzañ endro ar burev"
530530
531−#: qml/Launcher/Drawer.qml:92
531+#: qml/Launcher/Drawer.qml:93
532532msgid "Search…"
533533msgstr ""
534534
535−#: qml/Launcher/Drawer.qml:127
535+#: qml/Launcher/Drawer.qml:128
536536msgctxt "Apps sorted alphabetically"
537537msgid "A-Z"
538538msgstr ""
po/bs.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-12-01 20:06+0000\n"
1212"Last-Translator: Kenan Gutić <Unknown>\n"
1313"Language-Team: Bosnian <bs@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Prikačite prečicu"
5858
@@ -60,20 +60,20 @@ msgstr "Prikačite prečicu"
6060msgid "Quit"
6161msgstr "Napusti"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Otkačite prečicu"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Odjavite se"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Da li ste sigurni da se želite odjaviti?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Zaključaj"
@@ -523,11 +523,11 @@ msgstr ""
523523msgid "Select desktop environment"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:92
526+#: qml/Launcher/Drawer.qml:93
527527msgid "Search…"
528528msgstr ""
529529
530−#: qml/Launcher/Drawer.qml:127
530+#: qml/Launcher/Drawer.qml:128
531531msgctxt "Apps sorted alphabetically"
532532msgid "A-Z"
533533msgstr ""
po/ca.po+31−30
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-11-11 06:30+0000\n"
1212"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -24,15 +24,15 @@ msgstr "Contrasenya: "
2424
2525#: plugins/LightDM/Greeter.cpp:203
2626msgid "Username"
27−msgstr ""
27+msgstr "Nom d'usuari"
2828
2929#: plugins/LightDM/Greeter.cpp:242
3030msgid "Failed to authenticate"
31−msgstr ""
31+msgstr "Ha fallat l'autenticació"
3232
3333#: plugins/LightDM/Greeter.cpp:244
3434msgid "Invalid password, please try again"
35−msgstr ""
35+msgstr "La contrasenya no és vàlida, torneu-ho a provar"
3636
3737#: plugins/LightDM/Greeter.cpp:254
3838msgid "Log In"
@@ -44,14 +44,14 @@ msgstr "Torna-ho a provar"
4444
4545#: plugins/LightDM/UsersModel.cpp:152
4646msgid "Login"
47−msgstr ""
47+msgstr "Inicia la sessió"
4848
4949#: plugins/LightDM/UsersModel.cpp:160
5050msgid "Guest Session"
51−msgstr ""
51+msgstr "Sessió de convidat"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Enganxa la drecera"
5757
@@ -59,20 +59,20 @@ msgstr "Enganxa la drecera"
5959msgid "Quit"
6060msgstr "Surt"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Desenganxa la drecera"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Surt"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Segur que voleu sortir?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Bloca"
@@ -151,7 +151,7 @@ msgstr "Alt + ImprPant"
151151
152152#: qml/Components/KeyboardShortcutsOverlay.qml:80
153153msgid "Takes a screenshot of the current window."
154−msgstr ""
154+msgstr "Feu una captura de pantalla de la finestra actual."
155155
156156#: qml/Components/KeyboardShortcutsOverlay.qml:88
157157msgid "Super + Space"
@@ -199,7 +199,7 @@ msgstr "Commuta les aplicacions mitjançant el llançador."
199199
200200#: qml/Components/KeyboardShortcutsOverlay.qml:164
201201msgid "Super + 1 to 0"
202−msgstr ""
202+msgstr "Súper +1 a 0"
203203
204204#: qml/Components/KeyboardShortcutsOverlay.qml:169
205205msgid "Same as clicking on a launcher icon."
@@ -207,11 +207,11 @@ msgstr "El mateix que clicar sobre una icona del llançador."
207207
208208#: qml/Components/KeyboardShortcutsOverlay.qml:177
209209msgid "Super + A"
210−msgstr ""
210+msgstr "Súper + A"
211211
212212#: qml/Components/KeyboardShortcutsOverlay.qml:182
213213msgid "Opens the Application Drawer."
214−msgstr ""
214+msgstr "Obre el calaix d'aplicacions."
215215
216216#: qml/Components/KeyboardShortcutsOverlay.qml:194
217217msgid "Scopes"
@@ -361,19 +361,19 @@ msgstr ""
361361
362362#: qml/Components/VirtualTouchPad.qml:327
363363msgid "Tap left button to click."
364−msgstr ""
364+msgstr "Feu un toc al botó esquerre per clicar."
365365
366366#: qml/Components/VirtualTouchPad.qml:339
367367msgid "Tap right button to right click."
368−msgstr ""
368+msgstr "Feu un toc al botó dret per clicar amb el botó dret."
369369
370370#: qml/Components/VirtualTouchPad.qml:351
371371msgid "Swipe with two fingers to scroll."
372−msgstr ""
372+msgstr "Llisqueu amb dos dites per fer un desplaçament."
373373
374374#: qml/Components/VirtualTouchPad.qml:396
375375msgid "Find more settings in the system settings."
376−msgstr ""
376+msgstr "Trobeu més configuracions als paràmetres del sistema."
377377
378378#: qml/Dash/DashPageHeader.qml:361
379379msgctxt "Button: Open the Ubuntu Store"
@@ -505,11 +505,11 @@ msgstr "Torna-ho a provar"
505505
506506#: qml/Greeter/Greeter.qml:562
507507msgid "Enter passphrase to unlock"
508−msgstr ""
508+msgstr "Introduïu la contrasenya per desbloquejar"
509509
510510#: qml/Greeter/Greeter.qml:563
511511msgid "Enter passcode to unlock"
512−msgstr ""
512+msgstr "Entreu el codi per desbloquejar"
513513
514514#: qml/Greeter/NarrowView.qml:242
515515msgid "Emergency"
@@ -527,18 +527,18 @@ msgstr "Codi d'accés"
527527msgid "Select desktop environment"
528528msgstr "Seleccioneu l'entorn d'escriptori"
529529
530−#: qml/Launcher/Drawer.qml:92
530+#: qml/Launcher/Drawer.qml:93
531531msgid "Search…"
532−msgstr ""
532+msgstr "Cerca…"
533533
534−#: qml/Launcher/Drawer.qml:127
534+#: qml/Launcher/Drawer.qml:128
535535msgctxt "Apps sorted alphabetically"
536536msgid "A-Z"
537−msgstr ""
537+msgstr "A-Z"
538538
539539#: qml/Launcher/MoreAppsHeader.qml:55
540540msgid "More apps in the store"
541−msgstr ""
541+msgstr "Més aplicacions a la botiga"
542542
543543#: qml/Notifications/NotificationMenuItemFactory.qml:124
544544msgid "Show password"
@@ -629,7 +629,7 @@ msgstr "Retorna la trucada"
629629
630630#: qml/Panel/PanelMenuPage.qml:92
631631msgid "Back"
632−msgstr ""
632+msgstr "Enrere"
633633
634634#: qml/Stage/SideStage.qml:76
635635msgid "Drag using 3 fingers any application from one window to the other"
@@ -639,6 +639,7 @@ msgstr ""
639639#: qml/Tutorial/TutorialLeftLong.qml:49
640640msgid "Long swipe from the left edge to open the Application Drawer"
641641msgstr ""
642+"Llisqueu llarg des de la vora esquerra per obrir al Calaix d'aplicacions"
642643
643644#: qml/Tutorial/TutorialLeft.qml:47
644645msgid "Short swipe from the left edge to open the launcher"
po/ca@valencia.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-02-22 15:22+0000\n"
1212"Last-Translator: David Planella <david.planella@gmail.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Apega la drecera"
5757
@@ -59,20 +59,20 @@ msgstr "Apega la drecera"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Desenganxa la drecera"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Segur que voleu eixir?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -523,11 +523,11 @@ msgstr ""
523523msgid "Select desktop environment"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:92
526+#: qml/Launcher/Drawer.qml:93
527527msgid "Search…"
528528msgstr ""
529529
530−#: qml/Launcher/Drawer.qml:127
530+#: qml/Launcher/Drawer.qml:128
531531msgctxt "Apps sorted alphabetically"
532532msgid "A-Z"
533533msgstr ""
po/ce.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-02-15 04:01+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Chechen <ce@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/ckb.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-01-21 11:05+0000\n"
1212"Last-Translator: Aras <aras.noori@gmail.com>\n"
1313"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/co.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-05-24 10:40+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Corsican <co@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Fissà l'accurtatoghju"
5757
@@ -59,20 +59,20 @@ msgstr "Fissà l'accurtatoghju"
5959msgid "Quit"
6060msgstr "Abbandunà"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Toglie l'accurtatoghju"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Escì"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Site sicuri di vulè escì?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Bluccà"
@@ -527,11 +527,11 @@ msgstr ""
527527msgid "Select desktop environment"
528528msgstr ""
529529
530−#: qml/Launcher/Drawer.qml:92
530+#: qml/Launcher/Drawer.qml:93
531531msgid "Search…"
532532msgstr ""
533533
534−#: qml/Launcher/Drawer.qml:127
534+#: qml/Launcher/Drawer.qml:128
535535msgctxt "Apps sorted alphabetically"
536536msgid "A-Z"
537537msgstr ""
po/cs.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-07 10:44+0000\n"
1212"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
1313"Language-Team: Czech <cs@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020"Language: cs\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Připíchnout zkratku"
5858
@@ -60,20 +60,20 @@ msgstr "Připíchnout zkratku"
6060msgid "Quit"
6161msgstr ""
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Odpíchnout zkratku"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Odhlásit se"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Jste si jistí, že se chcete odhlásit?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Uzamknout"
@@ -523,11 +523,11 @@ msgstr ""
523523msgid "Select desktop environment"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:92
526+#: qml/Launcher/Drawer.qml:93
527527msgid "Search…"
528528msgstr ""
529529
530−#: qml/Launcher/Drawer.qml:127
530+#: qml/Launcher/Drawer.qml:128
531531msgctxt "Apps sorted alphabetically"
532532msgid "A-Z"
533533msgstr ""
po/cy.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-31 13:21+0000\n"
1212"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
1313"Language-Team: Welsh <cy@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Pinio llwybr byr"
5858
@@ -60,20 +60,20 @@ msgstr "Pinio llwybr byr"
6060msgid "Quit"
6161msgstr ""
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Dadbinio llwybr byr"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Allgofnodi"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Ydych chi'n sicr eich bod am allgofnodi?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Cloi"
@@ -524,11 +524,11 @@ msgstr ""
524524msgid "Select desktop environment"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:92
527+#: qml/Launcher/Drawer.qml:93
528528msgid "Search…"
529529msgstr ""
530530
531−#: qml/Launcher/Drawer.qml:127
531+#: qml/Launcher/Drawer.qml:128
532532msgctxt "Apps sorted alphabetically"
533533msgid "A-Z"
534534msgstr ""
po/da.po+11−11
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
11+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1212"PO-Revision-Date: 2015-07-06 12:05+0000\n"
1313"Last-Translator: Folmer Fredslund <Unknown>\n"
1414"Language-Team: Danish <dansk@dansk-gruppen.dk>\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: 2017-03-14 07:12+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Fastgør genvej"
5858
@@ -60,20 +60,20 @@ msgstr "Fastgør genvej"
6060msgid "Quit"
6161msgstr ""
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Gør genvej flytbar"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Log af"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Vil du logge ud?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Lås"
@@ -524,11 +524,11 @@ msgstr ""
524524msgid "Select desktop environment"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:92
527+#: qml/Launcher/Drawer.qml:93
528528msgid "Search…"
529529msgstr ""
530530
531−#: qml/Launcher/Drawer.qml:127
531+#: qml/Launcher/Drawer.qml:128
532532msgctxt "Apps sorted alphabetically"
533533msgid "A-Z"
534534msgstr ""
po/de.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-01-18 22:45+0000\n"
1212"Last-Translator: Torsten Franz <Unknown>\n"
1313"Language-Team: German <de@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Verknüpfung anheften"
5757
@@ -59,20 +59,20 @@ msgstr "Verknüpfung anheften"
5959msgid "Quit"
6060msgstr "Beenden"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Verknüpfung entfernen"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Abmelden"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Sind Sie sicher, dass Sie sich abmelden wollen?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Sperren"
@@ -527,11 +527,11 @@ msgstr "PIN"
527527msgid "Select desktop environment"
528528msgstr "Arbeitsumgebung auswählen"
529529
530−#: qml/Launcher/Drawer.qml:92
530+#: qml/Launcher/Drawer.qml:93
531531msgid "Search…"
532532msgstr "Suchen …"
533533
534−#: qml/Launcher/Drawer.qml:127
534+#: qml/Launcher/Drawer.qml:128
535535msgctxt "Apps sorted alphabetically"
536536msgid "A-Z"
537537msgstr "A-Z"
po/el.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-04-25 16:24+0000\n"
1212"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
1313"Language-Team: Greek <el@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Καρφίτσωμα συντόμευσης"
5757
@@ -59,20 +59,20 @@ msgstr "Καρφίτσωμα συντόμευσης"
5959msgid "Quit"
6060msgstr "Έξοδος"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Ξεκαρφίτσωμα συντόμευσης"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Αποσύνδεση"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Επιθυμείτε σίγουρα να αποσυνδεθείτε;"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Κλείδωμα"
@@ -527,11 +527,11 @@ msgstr "Κωδικός"
527527msgid "Select desktop environment"
528528msgstr "Επιλέξτε περιβάλλον εργασίας"
529529
530−#: qml/Launcher/Drawer.qml:92
530+#: qml/Launcher/Drawer.qml:93
531531msgid "Search…"
532532msgstr ""
533533
534−#: qml/Launcher/Drawer.qml:127
534+#: qml/Launcher/Drawer.qml:128
535535msgctxt "Apps sorted alphabetically"
536536msgid "A-Z"
537537msgstr ""
po/en_AU.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-03-27 10:09+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Pin shortcut"
5757
@@ -59,20 +59,20 @@ msgstr "Pin shortcut"
5959msgid "Quit"
6060msgstr "Quit"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Unpin shortcut"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Log out"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Are you sure you want to log out?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Lock"
@@ -521,11 +521,11 @@ msgstr ""
521521msgid "Select desktop environment"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr ""
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr ""
po/en_GB.po+13−13
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-07-05 00:37+0000\n"
1212"Last-Translator: Andi Chandler <Unknown>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "Login"
5050msgid "Guest Session"
5151msgstr "Guest Session"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Pin shortcut"
5757
@@ -59,20 +59,20 @@ msgstr "Pin shortcut"
5959msgid "Quit"
6060msgstr "Quit"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Unpin shortcut"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Log out"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Are you sure you want to log out?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Lock"
@@ -199,7 +199,7 @@ msgstr "Switches applications via the launcher."
199199
200200#: qml/Components/KeyboardShortcutsOverlay.qml:164
201201msgid "Super + 1 to 0"
202−msgstr ""
202+msgstr "Super + 1 to 0"
203203
204204#: qml/Components/KeyboardShortcutsOverlay.qml:169
205205msgid "Same as clicking on a launcher icon."
@@ -521,11 +521,11 @@ msgstr "Passcode"
521521msgid "Select desktop environment"
522522msgstr "Select desktop environment"
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr "Search…"
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr "A-Z"
@@ -623,7 +623,7 @@ msgstr "Call back"
623623
624624#: qml/Panel/PanelMenuPage.qml:92
625625msgid "Back"
626−msgstr ""
626+msgstr "Back"
627627
628628#: qml/Stage/SideStage.qml:76
629629msgid "Drag using 3 fingers any application from one window to the other"
po/eo.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-06-06 23:37+0000\n"
1212"Last-Translator: Eliovir <Unknown>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr "Ĉesi"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Elsaluti"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Ĉu vi certas, ke vi volas elsaluti?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Ŝlosi"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/es.po+15−15
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-03-05 14:59+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "Acceder"
5050msgid "Guest Session"
5151msgstr "Sesión de invitado"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Anclar"
5757
@@ -59,20 +59,20 @@ msgstr "Anclar"
5959msgid "Quit"
6060msgstr "Salir"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Desanclar"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Cerrar la sesión"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "¿Confirma que quiere cerrar la sesión?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Bloquear"
@@ -199,7 +199,7 @@ msgstr "Recorre las aplicaciones del Lanzador."
199199
200200#: qml/Components/KeyboardShortcutsOverlay.qml:164
201201msgid "Super + 1 to 0"
202−msgstr ""
202+msgstr "Super + 1 a 0"
203203
204204#: qml/Components/KeyboardShortcutsOverlay.qml:169
205205msgid "Same as clicking on a launcher icon."
@@ -504,11 +504,11 @@ msgstr "Pruebe de nuevo"
504504
505505#: qml/Greeter/Greeter.qml:562
506506msgid "Enter passphrase to unlock"
507−msgstr ""
507+msgstr "Introduzca la contraseña para desbloquear"
508508
509509#: qml/Greeter/Greeter.qml:563
510510msgid "Enter passcode to unlock"
511−msgstr ""
511+msgstr "Introduzca el código para desbloquear"
512512
513513#: qml/Greeter/NarrowView.qml:242
514514msgid "Emergency"
@@ -526,11 +526,11 @@ msgstr "Código"
526526msgid "Select desktop environment"
527527msgstr "Seleccionar entorno de escritorio"
528528
529−#: qml/Launcher/Drawer.qml:92
529+#: qml/Launcher/Drawer.qml:93
530530msgid "Search…"
531531msgstr "Buscar…"
532532
533−#: qml/Launcher/Drawer.qml:127
533+#: qml/Launcher/Drawer.qml:128
534534msgctxt "Apps sorted alphabetically"
535535msgid "A-Z"
536536msgstr "A-Z"
@@ -628,7 +628,7 @@ msgstr "Devolver llamada"
628628
629629#: qml/Panel/PanelMenuPage.qml:92
630630msgid "Back"
631−msgstr ""
631+msgstr "Atrás"
632632
633633#: qml/Stage/SideStage.qml:76
634634msgid "Drag using 3 fingers any application from one window to the other"
po/et.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-12-28 06:29+0000\n"
1212"Last-Translator: Karlis <Unknown>\n"
1313"Language-Team: Estonian <et@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr "Välju"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Logi välja"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/eu.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-13 23:29+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Ainguratu lasterbidea"
5757
@@ -59,20 +59,20 @@ msgstr "Ainguratu lasterbidea"
5959msgid "Quit"
6060msgstr "Irten"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Askatu lasterbidea"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Amaitu saioa"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Ziur saioa amaitu nahi duzula?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Blokeatu"
@@ -520,11 +520,11 @@ msgstr ""
520520msgid "Select desktop environment"
521521msgstr ""
522522
523−#: qml/Launcher/Drawer.qml:92
523+#: qml/Launcher/Drawer.qml:93
524524msgid "Search…"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:127
527+#: qml/Launcher/Drawer.qml:128
528528msgctxt "Apps sorted alphabetically"
529529msgid "A-Z"
530530msgstr ""
po/fa.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-10-18 07:03+0000\n"
1212"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
1313"Language-Team: Persian <fa@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "سنجاق کردن میانبر"
5757
@@ -59,20 +59,20 @@ msgstr "سنجاق کردن میانبر"
5959msgid "Quit"
6060msgstr "خروج"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "برداشتن سنجاق میانبر"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "خروج از حساب"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "مطمئنید که می‌خواهید از حساب خارج شوید"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "قفل"
@@ -522,11 +522,11 @@ msgstr "رمزعبور"
522522msgid "Select desktop environment"
523523msgstr "گزینش محیط میزکار"
524524
525−#: qml/Launcher/Drawer.qml:92
525+#: qml/Launcher/Drawer.qml:93
526526msgid "Search…"
527527msgstr ""
528528
529−#: qml/Launcher/Drawer.qml:127
529+#: qml/Launcher/Drawer.qml:128
530530msgctxt "Apps sorted alphabetically"
531531msgid "A-Z"
532532msgstr ""
po/fi.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-04 18:32+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "Kirjaudu"
5050msgid "Guest Session"
5151msgstr "Vierasistunto"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Kiinnitä pikakuvake"
5757
@@ -59,20 +59,20 @@ msgstr "Kiinnitä pikakuvake"
5959msgid "Quit"
6060msgstr "Lopeta"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Poista pikakuvakkeen kiinnitys"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Kirjaudu ulos"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Haluatko varmasti kirjautua ulos?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Lukitse"
@@ -525,11 +525,11 @@ msgstr "Suojakoodi"
525525msgid "Select desktop environment"
526526msgstr "Valitse työpöytäympäristö"
527527
528−#: qml/Launcher/Drawer.qml:92
528+#: qml/Launcher/Drawer.qml:93
529529msgid "Search…"
530530msgstr "Etsi…"
531531
532−#: qml/Launcher/Drawer.qml:127
532+#: qml/Launcher/Drawer.qml:128
533533msgctxt "Apps sorted alphabetically"
534534msgid "A-Z"
535535msgstr "A-Ö"
po/fo.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-01-14 20:08+0000\n"
1212"Last-Translator: Jógvan Olsen <jo@jebster.net>\n"
1313"Language-Team: Faroese <fo@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Heft snarveg"
5757
@@ -59,20 +59,20 @@ msgstr "Heft snarveg"
5959msgid "Quit"
6060msgstr "Gevst"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Óheft snarveg"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Útrita"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Ert tú vísur ið tú vilt rita út?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Læs"
@@ -521,11 +521,11 @@ msgstr ""
521521msgid "Select desktop environment"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr ""
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr ""
po/fr.po+13−13
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-02-07 18:31+0000\n"
1212"Last-Translator: Anne017 <anneonyme017@openmailbox.org>\n"
1313"Language-Team: French <fr@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "Se connecter"
5050msgid "Guest Session"
5151msgstr "Session d'invité"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Épingler le raccourci"
5757
@@ -59,20 +59,20 @@ msgstr "Épingler le raccourci"
5959msgid "Quit"
6060msgstr "Quitter"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Détacher le raccourci"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Fermer la session"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Êtes-vous sûr de vouloir vous déconnecter ?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Verrouiller"
@@ -199,7 +199,7 @@ msgstr "Bascule les applications via le lanceur."
199199
200200#: qml/Components/KeyboardShortcutsOverlay.qml:164
201201msgid "Super + 1 to 0"
202−msgstr ""
202+msgstr "Super + 1 à 0"
203203
204204#: qml/Components/KeyboardShortcutsOverlay.qml:169
205205msgid "Same as clicking on a launcher icon."
@@ -529,11 +529,11 @@ msgstr "Code"
529529msgid "Select desktop environment"
530530msgstr "Sélectionner l'environnement de bureau"
531531
532−#: qml/Launcher/Drawer.qml:92
532+#: qml/Launcher/Drawer.qml:93
533533msgid "Search…"
534534msgstr "Rechercher..."
535535
536−#: qml/Launcher/Drawer.qml:127
536+#: qml/Launcher/Drawer.qml:128
537537msgctxt "Apps sorted alphabetically"
538538msgid "A-Z"
539539msgstr "A-Z"
@@ -631,7 +631,7 @@ msgstr "Rappeler"
631631
632632#: qml/Panel/PanelMenuPage.qml:92
633633msgid "Back"
634−msgstr ""
634+msgstr "Retour"
635635
636636#: qml/Stage/SideStage.qml:76
637637msgid "Drag using 3 fingers any application from one window to the other"
po/ga.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-01-25 11:33+0000\n"
1212"Last-Translator: Joshua Kiley <Unknown>\n"
1313"Language-Team: Irish <ga@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Cruthaigh Aicearra Leis An Bharra"
5757
@@ -59,20 +59,20 @@ msgstr "Cruthaigh Aicearra Leis An Bharra"
5959msgid "Quit"
6060msgstr "Éirigh as"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Bain Aicearra Den Bharra"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Logáil Amach"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "An bhfuil tú cinnte gur mhaith leat lógáil amach?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Cuir Faoi Ghlas"
@@ -518,11 +518,11 @@ msgstr ""
518518msgid "Select desktop environment"
519519msgstr ""
520520
521−#: qml/Launcher/Drawer.qml:92
521+#: qml/Launcher/Drawer.qml:93
522522msgid "Search…"
523523msgstr ""
524524
525−#: qml/Launcher/Drawer.qml:127
525+#: qml/Launcher/Drawer.qml:128
526526msgctxt "Apps sorted alphabetically"
527527msgid "A-Z"
528528msgstr ""
po/gd.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-04-08 18:34+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Fòram na Gàidhlig\n"
@@ -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: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121"Language: gd\n"
2222
2323#: plugins/LightDM/Greeter.cpp:188
@@ -52,8 +52,8 @@ msgstr ""
5252msgid "Guest Session"
5353msgstr ""
5454
55−#: plugins/Unity/Launcher/launcheritem.cpp:50
56−#: plugins/Unity/Launcher/launcheritem.cpp:122
55+#: plugins/Unity/Launcher/launcheritem.cpp:49
56+#: plugins/Unity/Launcher/launcheritem.cpp:123
5757msgid "Pin shortcut"
5858msgstr "Prìnich ath-ghoirid"
5959
@@ -61,20 +61,20 @@ msgstr "Prìnich ath-ghoirid"
6161msgid "Quit"
6262msgstr "Fàg an-seo"
6363
64−#: plugins/Unity/Launcher/launcheritem.cpp:122
64+#: plugins/Unity/Launcher/launcheritem.cpp:123
6565msgid "Unpin shortcut"
6666msgstr "Neo-phrìnich an ath-ghoirid"
6767
68−#: qml/Components/Dialogs.qml:177
68+#: qml/Components/Dialogs.qml:176
6969msgctxt "Title: Lock/Log out dialog"
7070msgid "Log out"
7171msgstr "Clàraich a-mach"
7272
73−#: qml/Components/Dialogs.qml:178
73+#: qml/Components/Dialogs.qml:177
7474msgid "Are you sure you want to log out?"
7575msgstr "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?"
7676
77−#: qml/Components/Dialogs.qml:181
77+#: qml/Components/Dialogs.qml:180
7878msgctxt "Button: Lock the system"
7979msgid "Lock"
8080msgstr "Glais"
@@ -532,11 +532,11 @@ msgstr "Còd-faire"
532532msgid "Select desktop environment"
533533msgstr "Tagh àrainneachd an deasga"
534534
535−#: qml/Launcher/Drawer.qml:92
535+#: qml/Launcher/Drawer.qml:93
536536msgid "Search…"
537537msgstr ""
538538
539−#: qml/Launcher/Drawer.qml:127
539+#: qml/Launcher/Drawer.qml:128
540540msgctxt "Apps sorted alphabetically"
541541msgid "A-Z"
542542msgstr ""
po/gl.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-02-02 07:25+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "Iniciar sesión"
5050msgid "Guest Session"
5151msgstr "Sesión de convidado"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Fixar o atallo"
5757
@@ -59,20 +59,20 @@ msgstr "Fixar o atallo"
5959msgid "Quit"
6060msgstr "Saír"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Eliminar o atallo"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Saír"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Desexa pechar a sesión?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Bloquear"
@@ -521,11 +521,11 @@ msgstr "Clave"
521521msgid "Select desktop environment"
522522msgstr "Seleccione o ambiente de escritorio"
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr "Buscar..."
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr "A-Z"
po/gv.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-04-02 14:24+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Manx <gv@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Jean freenaghey yn cassan er lheh"
5757
@@ -59,20 +59,20 @@ msgstr "Jean freenaghey yn cassan er lheh"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Jean neu-freenaghey yn cassan er lheh"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Vel oo shickyr dy vel oo laccal loggal magh?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -524,11 +524,11 @@ msgstr ""
524524msgid "Select desktop environment"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:92
527+#: qml/Launcher/Drawer.qml:93
528528msgid "Search…"
529529msgstr ""
530530
531−#: qml/Launcher/Drawer.qml:127
531+#: qml/Launcher/Drawer.qml:128
532532msgctxt "Apps sorted alphabetically"
533533msgid "A-Z"
534534msgstr ""
po/he.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-12 08:47+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "הצמדת קיצור דרך"
5757
@@ -59,20 +59,20 @@ msgstr "הצמדת קיצור דרך"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "הפרדת קיצור הדרך"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "יציאה"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "האם אכן לצאת מהמערכת?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "נעילה"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/hi.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-01-15 01:49+0000\n"
1212"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/hr.po+25−25
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-05-04 17:52+0000\n"
1212"Last-Translator: gogo <trebelnik2@gmail.com>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr "Prijava"
5151msgid "Guest Session"
5252msgstr "Prijava gosta"
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Pričvrsti kraticu"
5858
@@ -60,20 +60,20 @@ msgstr "Pričvrsti kraticu"
6060msgid "Quit"
6161msgstr "Zatvori"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Ukloni kraticu"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Odjava"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Sigurno se želite odjaviti?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Zaključaj"
@@ -200,7 +200,7 @@ msgstr "Prebacuje aplikacije putem pokretača."
200200
201201#: qml/Components/KeyboardShortcutsOverlay.qml:164
202202msgid "Super + 1 to 0"
203−msgstr ""
203+msgstr "Super + 1 do 0"
204204
205205#: qml/Components/KeyboardShortcutsOverlay.qml:169
206206msgid "Same as clicking on a launcher icon."
@@ -208,11 +208,11 @@ msgstr "Isto kao i klikanje na ikonu pokretača."
208208
209209#: qml/Components/KeyboardShortcutsOverlay.qml:177
210210msgid "Super + A"
211−msgstr ""
211+msgstr "Super + A"
212212
213213#: qml/Components/KeyboardShortcutsOverlay.qml:182
214214msgid "Opens the Application Drawer."
215−msgstr ""
215+msgstr "Otvara pretinac aplikacija."
216216
217217#: qml/Components/KeyboardShortcutsOverlay.qml:194
218218msgid "Scopes"
@@ -362,19 +362,19 @@ msgstr ""
362362
363363#: qml/Components/VirtualTouchPad.qml:327
364364msgid "Tap left button to click."
365−msgstr ""
365+msgstr "Dotaknite lijevu tipku za klik."
366366
367367#: qml/Components/VirtualTouchPad.qml:339
368368msgid "Tap right button to right click."
369−msgstr ""
369+msgstr "Dotaknite desnu tipku za klik."
370370
371371#: qml/Components/VirtualTouchPad.qml:351
372372msgid "Swipe with two fingers to scroll."
373−msgstr ""
373+msgstr "Povucite s dva prsta za pomicanje."
374374
375375#: qml/Components/VirtualTouchPad.qml:396
376376msgid "Find more settings in the system settings."
377−msgstr ""
377+msgstr "Potražite više postavki u postavkama sustava."
378378
379379#: qml/Dash/DashPageHeader.qml:361
380380msgctxt "Button: Open the Ubuntu Store"
@@ -503,11 +503,11 @@ msgstr "Pokušaj ponovno"
503503
504504#: qml/Greeter/Greeter.qml:562
505505msgid "Enter passphrase to unlock"
506−msgstr ""
506+msgstr "Upišite lozinku za otključavanje"
507507
508508#: qml/Greeter/Greeter.qml:563
509509msgid "Enter passcode to unlock"
510−msgstr ""
510+msgstr "Upišite kôd za otključavanje"
511511
512512#: qml/Greeter/NarrowView.qml:242
513513msgid "Emergency"
@@ -525,18 +525,18 @@ msgstr "Kôd"
525525msgid "Select desktop environment"
526526msgstr "Odaberi okruženje radne površine"
527527
528−#: qml/Launcher/Drawer.qml:92
528+#: qml/Launcher/Drawer.qml:93
529529msgid "Search…"
530−msgstr ""
530+msgstr "Pretraži…"
531531
532−#: qml/Launcher/Drawer.qml:127
532+#: qml/Launcher/Drawer.qml:128
533533msgctxt "Apps sorted alphabetically"
534534msgid "A-Z"
535−msgstr ""
535+msgstr "A-Ž"
536536
537537#: qml/Launcher/MoreAppsHeader.qml:55
538538msgid "More apps in the store"
539−msgstr ""
539+msgstr "Više aplikacija u trgovini"
540540
541541#: qml/Notifications/NotificationMenuItemFactory.qml:124
542542msgid "Show password"
@@ -630,7 +630,7 @@ msgstr "Uzvrati poziv"
630630
631631#: qml/Panel/PanelMenuPage.qml:92
632632msgid "Back"
633−msgstr ""
633+msgstr "Natrag"
634634
635635#: qml/Stage/SideStage.qml:76
636636msgid "Drag using 3 fingers any application from one window to the other"
@@ -639,7 +639,7 @@ msgstr ""
639639
640640#: qml/Tutorial/TutorialLeftLong.qml:49
641641msgid "Long swipe from the left edge to open the Application Drawer"
642−msgstr ""
642+msgstr "Duže povucite s lijevog ruba za otvaranje pretinca aplikacija"
643643
644644#: qml/Tutorial/TutorialLeft.qml:47
645645msgid "Short swipe from the left edge to open the launcher"
po/hu.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-08-17 10:53+0000\n"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Indító rögzítése"
5757
@@ -59,20 +59,20 @@ msgstr "Indító rögzítése"
5959msgid "Quit"
6060msgstr "Kilépés"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Indító feloldása"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Kijelentkezés"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Biztos benne, hogy kijelentkezik?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Zárolás"
@@ -523,11 +523,11 @@ msgstr "Jelkód"
523523msgid "Select desktop environment"
524524msgstr "Asztali-környezet kiválasztása"
525525
526−#: qml/Launcher/Drawer.qml:92
526+#: qml/Launcher/Drawer.qml:93
527527msgid "Search…"
528528msgstr ""
529529
530−#: qml/Launcher/Drawer.qml:127
530+#: qml/Launcher/Drawer.qml:128
531531msgctxt "Apps sorted alphabetically"
532532msgid "A-Z"
533533msgstr ""
po/hy.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-10-28 06:34+0000\n"
1212"Last-Translator: Vahan Harutyunyan <Unknown>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Փակցնել պիտակը"
5757
@@ -59,20 +59,20 @@ msgstr "Փակցնել պիտակը"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Հեռացնել պիտակը"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Դուք համոզվա՞ծ եք, որ ցանկանում եք դուրս գալ համակարգից"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -521,11 +521,11 @@ msgstr ""
521521msgid "Select desktop environment"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr ""
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr ""
po/ia.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-08-25 19:31+0000\n"
1212"Last-Translator: karm <melo@carmu.com>\n"
1313"Language-Team: Interlingua <ia@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Via-breve a pin"
5757
@@ -59,20 +59,20 @@ msgstr "Via-breve a pin"
5959msgid "Quit"
6060msgstr "Quitar"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Via-breve a levar pin"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Clauder de session"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Desira tu vermente Clauder le Session"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Blocar"
@@ -523,11 +523,11 @@ msgstr "Codice-contrasigno"
523523msgid "Select desktop environment"
524524msgstr "Seliger le ambiente del scriptorio"
525525
526−#: qml/Launcher/Drawer.qml:92
526+#: qml/Launcher/Drawer.qml:93
527527msgid "Search…"
528528msgstr ""
529529
530−#: qml/Launcher/Drawer.qml:127
530+#: qml/Launcher/Drawer.qml:128
531531msgctxt "Apps sorted alphabetically"
532532msgid "A-Z"
533533msgstr ""
po/id.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Indonesian <id@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Paku pintasan"
5757
@@ -59,20 +59,20 @@ msgstr "Paku pintasan"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Lepas pintasan"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Anda yakin ingin log keluar?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -520,11 +520,11 @@ msgstr ""
520520msgid "Select desktop environment"
521521msgstr ""
522522
523−#: qml/Launcher/Drawer.qml:92
523+#: qml/Launcher/Drawer.qml:93
524524msgid "Search…"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:127
527+#: qml/Launcher/Drawer.qml:128
528528msgctxt "Apps sorted alphabetically"
529529msgid "A-Z"
530530msgstr ""
po/is.po+11−11
@@ -9,7 +9,7 @@ msgid ""
99msgstr ""
1010"Project-Id-Version: po_unity8-is\n"
1111"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
12+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1313"PO-Revision-Date: 2014-11-13 09:32+0000\n"
1414"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
1515"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
@@ -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: 2017-03-14 07:13+0000\n"
21−"X-Generator: Launchpad (build 18331)\n"
20+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
21+"X-Generator: Launchpad (build 18334)\n"
2222"Language: is\n"
2323
2424#: plugins/LightDM/Greeter.cpp:188
@@ -53,8 +53,8 @@ msgstr ""
5353msgid "Guest Session"
5454msgstr ""
5555
56−#: plugins/Unity/Launcher/launcheritem.cpp:50
57−#: plugins/Unity/Launcher/launcheritem.cpp:122
56+#: plugins/Unity/Launcher/launcheritem.cpp:49
57+#: plugins/Unity/Launcher/launcheritem.cpp:123
5858msgid "Pin shortcut"
5959msgstr "Pinna flýtilykil"
6060
@@ -62,20 +62,20 @@ msgstr "Pinna flýtilykil"
6262msgid "Quit"
6363msgstr ""
6464
65−#: plugins/Unity/Launcher/launcheritem.cpp:122
65+#: plugins/Unity/Launcher/launcheritem.cpp:123
6666msgid "Unpin shortcut"
6767msgstr "Losa flýtilykil"
6868
69−#: qml/Components/Dialogs.qml:177
69+#: qml/Components/Dialogs.qml:176
7070msgctxt "Title: Lock/Log out dialog"
7171msgid "Log out"
7272msgstr ""
7373
74−#: qml/Components/Dialogs.qml:178
74+#: qml/Components/Dialogs.qml:177
7575msgid "Are you sure you want to log out?"
7676msgstr "Ertu viss um að þú viljir skrá þig út?"
7777
78−#: qml/Components/Dialogs.qml:181
78+#: qml/Components/Dialogs.qml:180
7979msgctxt "Button: Lock the system"
8080msgid "Lock"
8181msgstr ""
@@ -526,11 +526,11 @@ msgstr ""
526526msgid "Select desktop environment"
527527msgstr ""
528528
529−#: qml/Launcher/Drawer.qml:92
529+#: qml/Launcher/Drawer.qml:93
530530msgid "Search…"
531531msgstr ""
532532
533−#: qml/Launcher/Drawer.qml:127
533+#: qml/Launcher/Drawer.qml:128
534534msgctxt "Apps sorted alphabetically"
535535msgid "A-Z"
536536msgstr ""
po/it.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-02-14 10:03+0000\n"
1212"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "Accesso"
5050msgid "Guest Session"
5151msgstr "Sessione ospite"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Blocca scorciatoia"
5757
@@ -59,20 +59,20 @@ msgstr "Blocca scorciatoia"
5959msgid "Quit"
6060msgstr "Esci"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Sblocca scorciatoia"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Termina sessione"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Terminare veramente la sessione?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Blocca"
@@ -527,11 +527,11 @@ msgstr "Codice"
527527msgid "Select desktop environment"
528528msgstr "Seleziona l'ambiente grafico"
529529
530−#: qml/Launcher/Drawer.qml:92
530+#: qml/Launcher/Drawer.qml:93
531531msgid "Search…"
532532msgstr "Cerca…"
533533
534−#: qml/Launcher/Drawer.qml:127
534+#: qml/Launcher/Drawer.qml:128
535535msgctxt "Apps sorted alphabetically"
536536msgid "A-Z"
537537msgstr "A-Z"
po/ja.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-10-05 10:05+0000\n"
1212"Last-Translator: Kentaro Kazuhama <Unknown>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "ショートカットを追加する"
5757
@@ -59,20 +59,20 @@ msgstr "ショートカットを追加する"
5959msgid "Quit"
6060msgstr "終了"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "ショートカットを削除する"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "ログアウト"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "本当にログアウトしますか?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "ロック"
@@ -516,11 +516,11 @@ msgstr ""
516516msgid "Select desktop environment"
517517msgstr ""
518518
519−#: qml/Launcher/Drawer.qml:92
519+#: qml/Launcher/Drawer.qml:93
520520msgid "Search…"
521521msgstr ""
522522
523−#: qml/Launcher/Drawer.qml:127
523+#: qml/Launcher/Drawer.qml:128
524524msgctxt "Apps sorted alphabetically"
525525msgid "A-Z"
526526msgstr ""
po/km.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-08-20 02:48+0000\n"
1212"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
1313"Language-Team: Khmer <km@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "ភ្ជាប់​ផ្លូវកាត់"
5757
@@ -59,20 +59,20 @@ msgstr "ភ្ជាប់​ផ្លូវកាត់"
5959msgid "Quit"
6060msgstr "ចាកចេញ"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "ចេញ"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "តើ​អ្នក​ពិតជា​ចង់​ចេញ​មែន​ឬ?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "ចាក់សោ"
@@ -519,11 +519,11 @@ msgstr ""
519519msgid "Select desktop environment"
520520msgstr ""
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr ""
po/kn.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-06-27 05:43+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kannada <kn@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/ko.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-08-19 13:02+0000\n"
1212"Last-Translator: MinSik CHO <Unknown>\n"
1313"Language-Team: Korean <ko@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "바로 가기를 고정"
5757
@@ -59,20 +59,20 @@ msgstr "바로 가기를 고정"
5959msgid "Quit"
6060msgstr "끝내기"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "바로 가기를 고정 해제"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "로그아웃"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "정말 로그아웃하시겠습니까?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "잠그기"
@@ -516,11 +516,11 @@ msgstr ""
516516msgid "Select desktop environment"
517517msgstr ""
518518
519−#: qml/Launcher/Drawer.qml:92
519+#: qml/Launcher/Drawer.qml:93
520520msgid "Search…"
521521msgstr ""
522522
523−#: qml/Launcher/Drawer.qml:127
523+#: qml/Launcher/Drawer.qml:128
524524msgctxt "Apps sorted alphabetically"
525525msgid "A-Z"
526526msgstr ""
po/ku.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-09-10 13:14+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Kurdish <ku@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr "Têkevê"
5050msgid "Guest Session"
5151msgstr "Danişîna Mêvanî"
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Kurteriyê pêveke"
5757
@@ -59,20 +59,20 @@ msgstr "Kurteriyê pêveke"
5959msgid "Quit"
6060msgstr "Derkeve"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Derzîdanka kurteriyê rake"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Derkeve"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Ji dil dixwazî derkevî?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Qufl Bike"
@@ -519,11 +519,11 @@ msgstr ""
519519msgid "Select desktop environment"
520520msgstr "Derdora sermaseyê hilbijêre"
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr ""
po/ky.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-06-27 06:17+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kirghiz <ky@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/lo.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-10-02 10:00+0000\n"
1212"Last-Translator: Anousak <anousak@gmail.com>\n"
1313"Language-Team: Lao <lo@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/lt.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-05-19 17:15+0000\n"
1212"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
1313"Language-Team: Lithuanian <lt@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr ""
5858
@@ -60,20 +60,20 @@ msgstr ""
6060msgid "Quit"
6161msgstr ""
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr ""
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr ""
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr ""
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr ""
@@ -518,11 +518,11 @@ msgstr ""
518518msgid "Select desktop environment"
519519msgstr ""
520520
521−#: qml/Launcher/Drawer.qml:92
521+#: qml/Launcher/Drawer.qml:93
522522msgid "Search…"
523523msgstr ""
524524
525−#: qml/Launcher/Drawer.qml:127
525+#: qml/Launcher/Drawer.qml:128
526526msgctxt "Apps sorted alphabetically"
527527msgid "A-Z"
528528msgstr ""
po/lv.po+11−11
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
11+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1212"PO-Revision-Date: 2015-11-22 19:13+0000\n"
1313"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
1414"Language-Team: Latvian <lata-l10n@googlegroups.com>\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=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121"Language: lv\n"
2222
2323#: plugins/LightDM/Greeter.cpp:188
@@ -52,8 +52,8 @@ msgstr ""
5252msgid "Guest Session"
5353msgstr ""
5454
55−#: plugins/Unity/Launcher/launcheritem.cpp:50
56−#: plugins/Unity/Launcher/launcheritem.cpp:122
55+#: plugins/Unity/Launcher/launcheritem.cpp:49
56+#: plugins/Unity/Launcher/launcheritem.cpp:123
5757msgid "Pin shortcut"
5858msgstr "Piespraust īsceļu"
5959
@@ -61,20 +61,20 @@ msgstr "Piespraust īsceļu"
6161msgid "Quit"
6262msgstr "Iziet"
6363
64−#: plugins/Unity/Launcher/launcheritem.cpp:122
64+#: plugins/Unity/Launcher/launcheritem.cpp:123
6565msgid "Unpin shortcut"
6666msgstr "Noņemt īsceļu"
6767
68−#: qml/Components/Dialogs.qml:177
68+#: qml/Components/Dialogs.qml:176
6969msgctxt "Title: Lock/Log out dialog"
7070msgid "Log out"
7171msgstr "Izrakstīties"
7272
73−#: qml/Components/Dialogs.qml:178
73+#: qml/Components/Dialogs.qml:177
7474msgid "Are you sure you want to log out?"
7575msgstr "Vai tiešām vēlaties izrakstīties?"
7676
77−#: qml/Components/Dialogs.qml:181
77+#: qml/Components/Dialogs.qml:180
7878msgctxt "Button: Lock the system"
7979msgid "Lock"
8080msgstr "Bloķēt"
@@ -522,11 +522,11 @@ msgstr ""
522522msgid "Select desktop environment"
523523msgstr ""
524524
525−#: qml/Launcher/Drawer.qml:92
525+#: qml/Launcher/Drawer.qml:93
526526msgid "Search…"
527527msgstr ""
528528
529−#: qml/Launcher/Drawer.qml:127
529+#: qml/Launcher/Drawer.qml:128
530530msgctxt "Apps sorted alphabetically"
531531msgid "A-Z"
532532msgstr ""
po/ml.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-11-23 11:44+0000\n"
1212"Last-Translator: ST Alfas <Unknown>\n"
1313"Language-Team: Malayalam <ml@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/mr.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-01-14 19:54+0000\n"
1212"Last-Translator: Rohan Deshmukh <Unknown>\n"
1313"Language-Team: Marathi <mr@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "लॉक करा"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/ms.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-12-20 14:02+0000\n"
1212"Last-Translator: abuyop <Unknown>\n"
1313"Language-Team: Malay <ms@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Cemat pintasan"
5757
@@ -59,20 +59,20 @@ msgstr "Cemat pintasan"
5959msgid "Quit"
6060msgstr "Keluar"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Nyahcemat pintasan"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Daftar keluar"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Anda pasti mahu mendaftar keluar?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Kunci"
@@ -521,11 +521,11 @@ msgstr "Kod laluan"
521521msgid "Select desktop environment"
522522msgstr "Pilih persekitaran desktop"
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr "Gelintar..."
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr "A-Z"
po/my.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-12-12 11:12+0000\n"
1212"Last-Translator: Pyae Sone <Unknown>\n"
1313"Language-Team: Burmese <my@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "ထွက်"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "သော့ခတ်"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/nb.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-01-27 07:01+0000\n"
1212"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Fest snarvei"
5757
@@ -59,20 +59,20 @@ msgstr "Fest snarvei"
5959msgid "Quit"
6060msgstr "Avslutt"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Fjern snarvei"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Logg ut"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Er du sikker på at du vil logge ut?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Lås"
@@ -525,11 +525,11 @@ msgstr "Kode"
525525msgid "Select desktop environment"
526526msgstr "Velg skrivebordsmiljø"
527527
528−#: qml/Launcher/Drawer.qml:92
528+#: qml/Launcher/Drawer.qml:93
529529msgid "Search…"
530530msgstr "Søk …"
531531
532−#: qml/Launcher/Drawer.qml:127
532+#: qml/Launcher/Drawer.qml:128
533533msgctxt "Apps sorted alphabetically"
534534msgid "A-Z"
535535msgstr "A-Å"
po/ne.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-12-06 15:11+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Nepali <ne@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr "बन्द गर्नुहोस्"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "लग आउट"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "ताला लगाउने"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/nl.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-11-01 08:29+0000\n"
1212"Last-Translator: Hannie Dumoleyn <Unknown>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Snelkoppeling vastzetten"
5757
@@ -59,20 +59,20 @@ msgstr "Snelkoppeling vastzetten"
5959msgid "Quit"
6060msgstr "Afsluiten"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Snelkoppeling losmaken"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Afmelden"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Weet u zeker dat u zich wilt afmelden?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Vergrendelen"
@@ -528,11 +528,11 @@ msgstr "Toegangscode"
528528msgid "Select desktop environment"
529529msgstr "Bureaubladomgeving selecteren"
530530
531−#: qml/Launcher/Drawer.qml:92
531+#: qml/Launcher/Drawer.qml:93
532532msgid "Search…"
533533msgstr ""
534534
535−#: qml/Launcher/Drawer.qml:127
535+#: qml/Launcher/Drawer.qml:128
536536msgctxt "Apps sorted alphabetically"
537537msgid "A-Z"
538538msgstr ""
po/nn.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-05-12 11:32+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/oc.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-10-27 13:43+0000\n"
1212"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
1313"Language-Team: Occitan (post 1500) <oc@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Espingolar l'acorchi"
5757
@@ -59,20 +59,20 @@ msgstr "Espingolar l'acorchi"
5959msgid "Quit"
6060msgstr "Quitar"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Destacar l'acorchi"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Tampar la session"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Sètz segur que vos volètz desconnectar ?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Verrolhar"
@@ -528,11 +528,11 @@ msgstr "Còdi"
528528msgid "Select desktop environment"
529529msgstr "Seleccionar l'environament de burèu"
530530
531−#: qml/Launcher/Drawer.qml:92
531+#: qml/Launcher/Drawer.qml:93
532532msgid "Search…"
533533msgstr ""
534534
535−#: qml/Launcher/Drawer.qml:127
535+#: qml/Launcher/Drawer.qml:128
536536msgctxt "Apps sorted alphabetically"
537537msgid "A-Z"
538538msgstr ""
po/or.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-03-21 05:28+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Oriya <or@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/pa.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-04-24 04:29+0000\n"
1212"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
1313"Language-Team: Punjabi <pa@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "ਸ਼ਾਰਟਕੱਟ ਪਿੰਨ ਲਗਾਓ"
5757
@@ -59,20 +59,20 @@ msgstr "ਸ਼ਾਰਟਕੱਟ ਪਿੰਨ ਲਗਾਓ"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "ਸ਼ਾਰਟਕੱਟ ਪਿੰਨ ਹਟਾਓ"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "ਲਾਗ ਆਉਟ"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "ਕੀ ਤੁਸੀਂ ਲਾਗ ਆਉਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "ਲਾਕ"
@@ -519,11 +519,11 @@ msgstr ""
519519msgid "Select desktop environment"
520520msgstr ""
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr ""
po/pl.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-11-01 15:06+0000\n"
1212"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
1313"Language-Team: Polish <pl@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Przypnij skrót"
5858
@@ -60,20 +60,20 @@ msgstr "Przypnij skrót"
6060msgid "Quit"
6161msgstr "Zakończ"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Odepnij skrót"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Wylogowanie"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Wylogować?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Blokada"
@@ -522,11 +522,11 @@ msgstr "Kod"
522522msgid "Select desktop environment"
523523msgstr "Wybierz środowisko graficzne"
524524
525−#: qml/Launcher/Drawer.qml:92
525+#: qml/Launcher/Drawer.qml:93
526526msgid "Search…"
527527msgstr ""
528528
529−#: qml/Launcher/Drawer.qml:127
529+#: qml/Launcher/Drawer.qml:128
530530msgctxt "Apps sorted alphabetically"
531531msgid "A-Z"
532532msgstr ""
po/pt.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-06-20 11:37+0000\n"
1212"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
1313"Language-Team: Portuguese <pt@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:13+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Fixar atalho"
5757
@@ -59,20 +59,20 @@ msgstr "Fixar atalho"
5959msgid "Quit"
6060msgstr "Sair"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Remover atalho"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Terminar a sessão"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Quer mesmo sair?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Bloquear"
@@ -526,11 +526,11 @@ msgstr "Código"
526526msgid "Select desktop environment"
527527msgstr "Selecione o ambiente de trabalho"
528528
529−#: qml/Launcher/Drawer.qml:92
529+#: qml/Launcher/Drawer.qml:93
530530msgid "Search…"
531531msgstr ""
532532
533−#: qml/Launcher/Drawer.qml:127
533+#: qml/Launcher/Drawer.qml:128
534534msgctxt "Apps sorted alphabetically"
535535msgid "A-Z"
536536msgstr ""
po/pt_BR.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-08-05 04:40+0000\n"
1212"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Fixar atalho"
5757
@@ -59,20 +59,20 @@ msgstr "Fixar atalho"
5959msgid "Quit"
6060msgstr "Sair"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Desafixar atalho"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Sair"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Você tem certeza que deseja sair?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Travar"
@@ -521,11 +521,11 @@ msgstr ""
521521msgid "Select desktop environment"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr ""
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr ""
po/ro.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-06 17:47+0000\n"
1212"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Fixează scurtătura"
5858
@@ -60,20 +60,20 @@ msgstr "Fixează scurtătura"
6060msgid "Quit"
6161msgstr ""
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Eliberează scurtătura"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Închide sesiunea"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Sunteți sigur că doriți să închideți sesiunea?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Blocare"
@@ -524,11 +524,11 @@ msgstr ""
524524msgid "Select desktop environment"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:92
527+#: qml/Launcher/Drawer.qml:93
528528msgid "Search…"
529529msgstr ""
530530
531−#: qml/Launcher/Drawer.qml:127
531+#: qml/Launcher/Drawer.qml:128
532532msgctxt "Apps sorted alphabetically"
533533msgid "A-Z"
534534msgstr ""
po/ru.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-06 05:33+0000\n"
1212"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr "Гостевой сеанс"
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Закрепить ярлык"
5858
@@ -60,20 +60,20 @@ msgstr "Закрепить ярлык"
6060msgid "Quit"
6161msgstr "Завершить"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Открепить ярлык"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Завершение сеанса"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Завершить сеанс?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Заблокировать"
@@ -525,11 +525,11 @@ msgstr "Секретный код"
525525msgid "Select desktop environment"
526526msgstr "Выберите окружение рабочего стола"
527527
528−#: qml/Launcher/Drawer.qml:92
528+#: qml/Launcher/Drawer.qml:93
529529msgid "Search…"
530530msgstr "Найти..."
531531
532−#: qml/Launcher/Drawer.qml:127
532+#: qml/Launcher/Drawer.qml:128
533533msgctxt "Apps sorted alphabetically"
534534msgid "A-Z"
535535msgstr ""
po/shn.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-11-10 12:09+0000\n"
1212"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
1313"Language-Team: Shan <shn@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr "ဢိုတ်း"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/si.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Sinhalese <si@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -519,11 +519,11 @@ msgstr ""
519519msgid "Select desktop environment"
520520msgstr ""
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr ""
po/sk.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-09-28 04:43+0000\n"
1212"Last-Translator: P_E_T_O <Unknown>\n"
1313"Language-Team: Slovak <sk@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020"Language: sk\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Pripnúť odkaz"
5858
@@ -60,20 +60,20 @@ msgstr "Pripnúť odkaz"
6060msgid "Quit"
6161msgstr "Ukončiť"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Odopnúť odkaz"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Odhlásiť sa"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Ste si istý, že sa chcete odhlásiť?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Zamknúť"
@@ -528,11 +528,11 @@ msgstr "Heslo"
528528msgid "Select desktop environment"
529529msgstr "Vybrať pracovné prostredie"
530530
531−#: qml/Launcher/Drawer.qml:92
531+#: qml/Launcher/Drawer.qml:93
532532msgid "Search…"
533533msgstr ""
534534
535−#: qml/Launcher/Drawer.qml:127
535+#: qml/Launcher/Drawer.qml:128
536536msgctxt "Apps sorted alphabetically"
537537msgid "A-Z"
538538msgstr ""
po/sl.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-01-31 18:34+0000\n"
1212"Last-Translator: Bernard Banko <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Pripni bližnjico"
5858
@@ -60,20 +60,20 @@ msgstr "Pripni bližnjico"
6060msgid "Quit"
6161msgstr "Končaj"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Odpni bližnjico"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Odjava"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Ali ste prepričani, da se želite odjaviti?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Zakleni"
@@ -526,11 +526,11 @@ msgstr ""
526526msgid "Select desktop environment"
527527msgstr "Izberite namizno okolje"
528528
529−#: qml/Launcher/Drawer.qml:92
529+#: qml/Launcher/Drawer.qml:93
530530msgid "Search…"
531531msgstr ""
532532
533−#: qml/Launcher/Drawer.qml:127
533+#: qml/Launcher/Drawer.qml:128
534534msgctxt "Apps sorted alphabetically"
535535msgid "A-Z"
536536msgstr ""
po/sq.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-04-21 06:03+0000\n"
1212"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
1313"Language-Team: sq\n"
@@ -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: 2017-03-14 07:12+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:12+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020"Language: sq\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr ""
5858
@@ -60,20 +60,20 @@ msgstr ""
6060msgid "Quit"
6161msgstr "Dil"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr ""
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Dalja"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr ""
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Kyç"
@@ -518,11 +518,11 @@ msgstr ""
518518msgid "Select desktop environment"
519519msgstr ""
520520
521−#: qml/Launcher/Drawer.qml:92
521+#: qml/Launcher/Drawer.qml:93
522522msgid "Search…"
523523msgstr ""
524524
525−#: qml/Launcher/Drawer.qml:127
525+#: qml/Launcher/Drawer.qml:128
526526msgctxt "Apps sorted alphabetically"
527527msgid "A-Z"
528528msgstr ""
po/sr.po+11−11
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
11+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1212"PO-Revision-Date: 2016-08-22 20:43+0000\n"
1313"Last-Translator: Bojan Bogdanović <Unknown>\n"
1414"Language-Team: српски <xfce4@xfce4.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
21−"X-Generator: Launchpad (build 18331)\n"
20+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
21+"X-Generator: Launchpad (build 18334)\n"
2222"Language: sr\n"
2323
2424#: plugins/LightDM/Greeter.cpp:188
@@ -53,8 +53,8 @@ msgstr ""
5353msgid "Guest Session"
5454msgstr ""
5555
56−#: plugins/Unity/Launcher/launcheritem.cpp:50
57−#: plugins/Unity/Launcher/launcheritem.cpp:122
56+#: plugins/Unity/Launcher/launcheritem.cpp:49
57+#: plugins/Unity/Launcher/launcheritem.cpp:123
5858msgid "Pin shortcut"
5959msgstr "Прикачи пречицу"
6060
@@ -62,20 +62,20 @@ msgstr "Прикачи пречицу"
6262msgid "Quit"
6363msgstr "Напусти"
6464
65−#: plugins/Unity/Launcher/launcheritem.cpp:122
65+#: plugins/Unity/Launcher/launcheritem.cpp:123
6666msgid "Unpin shortcut"
6767msgstr "Откачи пречицу"
6868
69−#: qml/Components/Dialogs.qml:177
69+#: qml/Components/Dialogs.qml:176
7070msgctxt "Title: Lock/Log out dialog"
7171msgid "Log out"
7272msgstr "Одјава"
7373
74−#: qml/Components/Dialogs.qml:178
74+#: qml/Components/Dialogs.qml:177
7575msgid "Are you sure you want to log out?"
7676msgstr "Сигурно желите да се одјавите?"
7777
78−#: qml/Components/Dialogs.qml:181
78+#: qml/Components/Dialogs.qml:180
7979msgctxt "Button: Lock the system"
8080msgid "Lock"
8181msgstr "Закључај"
@@ -525,11 +525,11 @@ msgstr "Приступни код"
525525msgid "Select desktop environment"
526526msgstr ""
527527
528−#: qml/Launcher/Drawer.qml:92
528+#: qml/Launcher/Drawer.qml:93
529529msgid "Search…"
530530msgstr ""
531531
532−#: qml/Launcher/Drawer.qml:127
532+#: qml/Launcher/Drawer.qml:128
533533msgctxt "Apps sorted alphabetically"
534534msgid "A-Z"
535535msgstr ""
po/sv.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-06-19 19:31+0000\n"
1212"Last-Translator: Josef Andersson <Unknown>\n"
1313"Language-Team: Swedish\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020"Language: sv\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Fäst genväg"
5858
@@ -60,20 +60,20 @@ msgstr "Fäst genväg"
6060msgid "Quit"
6161msgstr "Avsluta"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Släpp genväg"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Logga ut"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Är du säker på att du vill logga ut?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Lås"
@@ -523,11 +523,11 @@ msgstr "Lösenkod"
523523msgid "Select desktop environment"
524524msgstr "Välj skrivbordsmiljö"
525525
526−#: qml/Launcher/Drawer.qml:92
526+#: qml/Launcher/Drawer.qml:93
527527msgid "Search…"
528528msgstr ""
529529
530−#: qml/Launcher/Drawer.qml:127
530+#: qml/Launcher/Drawer.qml:128
531531msgctxt "Apps sorted alphabetically"
532532msgid "A-Z"
533533msgstr ""
po/sw.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-17 20:02+0000\n"
1212"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
1313"Language-Team: Swahili <sw@li.org>\n"
@@ -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: 2017-03-14 07:13+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Njia ya mkato ya nambari ya siri"
5757
@@ -59,20 +59,20 @@ msgstr "Njia ya mkato ya nambari ya siri"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Toa njia ya mkato ya nambari ya siri"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Logi nje"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Una uhakika unataka kulogi nje?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Funga"
@@ -519,11 +519,11 @@ msgstr ""
519519msgid "Select desktop environment"
520520msgstr ""
521521
522−#: qml/Launcher/Drawer.qml:92
522+#: qml/Launcher/Drawer.qml:93
523523msgid "Search…"
524524msgstr ""
525525
526−#: qml/Launcher/Drawer.qml:127
526+#: qml/Launcher/Drawer.qml:128
527527msgctxt "Apps sorted alphabetically"
528528msgid "A-Z"
529529msgstr ""
po/ta.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-03-02 04:54+0000\n"
1212"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
1313"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020"Language: ta\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr ""
5858
@@ -60,20 +60,20 @@ msgstr ""
6060msgid "Quit"
6161msgstr ""
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr ""
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr ""
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "நீங்கள் வெளியேற விரும்புகிறேர்களா ?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "பூட்டுக"
@@ -520,11 +520,11 @@ msgstr ""
520520msgid "Select desktop environment"
521521msgstr ""
522522
523−#: qml/Launcher/Drawer.qml:92
523+#: qml/Launcher/Drawer.qml:93
524524msgid "Search…"
525525msgstr ""
526526
527−#: qml/Launcher/Drawer.qml:127
527+#: qml/Launcher/Drawer.qml:128
528528msgctxt "Apps sorted alphabetically"
529529msgid "A-Z"
530530msgstr ""
po/te.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-07-19 10:04+0000\n"
1212"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/th.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-10-02 04:55+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Thai <th@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/tr.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-03-22 15:56+0000\n"
1212"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Kısayolu iğnele"
5757
@@ -59,20 +59,20 @@ msgstr "Kısayolu iğnele"
5959msgid "Quit"
6060msgstr "Çıkış"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Kısayol iğnesini kaldır"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Oturumu kapat"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Oturumu kapatmak istediğinize emin misiniz?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Kilitle"
@@ -521,11 +521,11 @@ msgstr "Parola"
521521msgid "Select desktop environment"
522522msgstr "Masaüstü ortamını seçin"
523523
524−#: qml/Launcher/Drawer.qml:92
524+#: qml/Launcher/Drawer.qml:93
525525msgid "Search…"
526526msgstr ""
527527
528−#: qml/Launcher/Drawer.qml:127
528+#: qml/Launcher/Drawer.qml:128
529529msgctxt "Apps sorted alphabetically"
530530msgid "A-Z"
531531msgstr ""
po/ug.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-07-03 13:56+0000\n"
1212"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
1313"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "تېزلەتمىنى قوي"
5757
@@ -59,20 +59,20 @@ msgstr "تېزلەتمىنى قوي"
5959msgid "Quit"
6060msgstr "چېكىن"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "تېزلەتمىنى ئېلىۋەت"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "تىزىمدىن چىق"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "راستلا چىقىپ كېتەمسىز؟"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "قۇلۇپلا"
@@ -518,11 +518,11 @@ msgstr ""
518518msgid "Select desktop environment"
519519msgstr ""
520520
521−#: qml/Launcher/Drawer.qml:92
521+#: qml/Launcher/Drawer.qml:93
522522msgid "Search…"
523523msgstr ""
524524
525−#: qml/Launcher/Drawer.qml:127
525+#: qml/Launcher/Drawer.qml:128
526526msgctxt "Apps sorted alphabetically"
527527msgid "A-Z"
528528msgstr ""
po/uk.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2017-01-17 10:58+0000\n"
1212"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
20−"X-Generator: Launchpad (build 18331)\n"
19+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
20+"X-Generator: Launchpad (build 18334)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
2323msgid "Password: "
@@ -51,8 +51,8 @@ msgstr ""
5151msgid "Guest Session"
5252msgstr ""
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "Заблокувати кнопку"
5858
@@ -60,20 +60,20 @@ msgstr "Заблокувати кнопку"
6060msgid "Quit"
6161msgstr "Вийти"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "Розблокувати кнопку"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "Вийти"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "Ви справді хочете вийти?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "Заблокувати"
@@ -529,11 +529,11 @@ msgstr "Код-пароль"
529529msgid "Select desktop environment"
530530msgstr "Виберіть стільничне середовище"
531531
532−#: qml/Launcher/Drawer.qml:92
532+#: qml/Launcher/Drawer.qml:93
533533msgid "Search…"
534534msgstr "Пошук…"
535535
536−#: qml/Launcher/Drawer.qml:127
536+#: qml/Launcher/Drawer.qml:128
537537msgctxt "Apps sorted alphabetically"
538538msgid "A-Z"
539539msgstr "А-Я"
po/unity8.pot+9−9
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
11+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/ur.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-05-05 03:12+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Urdu <ur@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/uz.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-07-04 16:03+0000\n"
1212"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
1313"Language-Team: Uzbek <uz@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/vi.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-01-15 01:19+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Vietnamese <vi@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/wo.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2015-10-29 11:16+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Wolof <wo@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "Kepp"
5757
@@ -59,20 +59,20 @@ msgstr "Kepp"
5959msgid "Quit"
6060msgstr "Génn"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "Dindi"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "Génn"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "Wóor na ne danga bëgg a génn?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "Tëj"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/xh.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2013-09-28 13:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Xhosa <xh@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr ""
5757
@@ -59,20 +59,20 @@ msgstr ""
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr ""
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/zh_CN.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-04-13 06:27+0000\n"
1212"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "固定快捷方式"
5757
@@ -59,20 +59,20 @@ msgstr "固定快捷方式"
5959msgid "Quit"
6060msgstr "退出"
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "取消固定快捷方式"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr "退出"
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr "您确定要注销?"
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr "锁定"
@@ -518,11 +518,11 @@ msgstr ""
518518msgid "Select desktop environment"
519519msgstr ""
520520
521−#: qml/Launcher/Drawer.qml:92
521+#: qml/Launcher/Drawer.qml:93
522522msgid "Search…"
523523msgstr ""
524524
525−#: qml/Launcher/Drawer.qml:127
525+#: qml/Launcher/Drawer.qml:128
526526msgctxt "Apps sorted alphabetically"
527527msgid "A-Z"
528528msgstr ""
po/zh_HK.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2014-08-10 11:45+0000\n"
1212"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
1313"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:188
2222msgid "Password: "
@@ -50,8 +50,8 @@ msgstr ""
5050msgid "Guest Session"
5151msgstr ""
5252
53−#: plugins/Unity/Launcher/launcheritem.cpp:50
54−#: plugins/Unity/Launcher/launcheritem.cpp:122
53+#: plugins/Unity/Launcher/launcheritem.cpp:49
54+#: plugins/Unity/Launcher/launcheritem.cpp:123
5555msgid "Pin shortcut"
5656msgstr "釘住捷徑"
5757
@@ -59,20 +59,20 @@ msgstr "釘住捷徑"
5959msgid "Quit"
6060msgstr ""
6161
62−#: plugins/Unity/Launcher/launcheritem.cpp:122
62+#: plugins/Unity/Launcher/launcheritem.cpp:123
6363msgid "Unpin shortcut"
6464msgstr "取消捷徑釘選"
6565
66−#: qml/Components/Dialogs.qml:177
66+#: qml/Components/Dialogs.qml:176
6767msgctxt "Title: Lock/Log out dialog"
6868msgid "Log out"
6969msgstr ""
7070
71−#: qml/Components/Dialogs.qml:178
71+#: qml/Components/Dialogs.qml:177
7272msgid "Are you sure you want to log out?"
7373msgstr ""
7474
75−#: qml/Components/Dialogs.qml:181
75+#: qml/Components/Dialogs.qml:180
7676msgctxt "Button: Lock the system"
7777msgid "Lock"
7878msgstr ""
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr ""
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr ""
po/zh_TW.po+11−11
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-03-08 09:56+0000\n"
10+"POT-Creation-Date: 2017-03-21 10:58+0000\n"
1111"PO-Revision-Date: 2016-02-24 04:40+0000\n"
1212"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -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: 2017-03-14 07:14+0000\n"
19−"X-Generator: Launchpad (build 18331)\n"
18+"X-Launchpad-Export-Date: 2017-03-24 06:14+0000\n"
19+"X-Generator: Launchpad (build 18334)\n"
2020"Language: zh_TW\n"
2121
2222#: plugins/LightDM/Greeter.cpp:188
@@ -51,8 +51,8 @@ msgstr "登入"
5151msgid "Guest Session"
5252msgstr "訪客作業階段"
5353
54−#: plugins/Unity/Launcher/launcheritem.cpp:50
55−#: plugins/Unity/Launcher/launcheritem.cpp:122
54+#: plugins/Unity/Launcher/launcheritem.cpp:49
55+#: plugins/Unity/Launcher/launcheritem.cpp:123
5656msgid "Pin shortcut"
5757msgstr "釘住捷徑"
5858
@@ -60,20 +60,20 @@ msgstr "釘住捷徑"
6060msgid "Quit"
6161msgstr "結束"
6262
63−#: plugins/Unity/Launcher/launcheritem.cpp:122
63+#: plugins/Unity/Launcher/launcheritem.cpp:123
6464msgid "Unpin shortcut"
6565msgstr "取消捷徑釘選"
6666
67−#: qml/Components/Dialogs.qml:177
67+#: qml/Components/Dialogs.qml:176
6868msgctxt "Title: Lock/Log out dialog"
6969msgid "Log out"
7070msgstr "登出"
7171
72−#: qml/Components/Dialogs.qml:178
72+#: qml/Components/Dialogs.qml:177
7373msgid "Are you sure you want to log out?"
7474msgstr "確定要登出?"
7575
76−#: qml/Components/Dialogs.qml:181
76+#: qml/Components/Dialogs.qml:180
7777msgctxt "Button: Lock the system"
7878msgid "Lock"
7979msgstr "上鎖"
@@ -517,11 +517,11 @@ msgstr ""
517517msgid "Select desktop environment"
518518msgstr ""
519519
520−#: qml/Launcher/Drawer.qml:92
520+#: qml/Launcher/Drawer.qml:93
521521msgid "Search…"
522522msgstr "搜尋..."
523523
524−#: qml/Launcher/Drawer.qml:127
524+#: qml/Launcher/Drawer.qml:128
525525msgctxt "Apps sorted alphabetically"
526526msgid "A-Z"
527527msgstr "A-Z"
qml/ApplicationMenus/MenuBar.qml+10−6
@@ -45,14 +45,14 @@ Item {
4545 implicitWidth: row.width
4646 height: parent.height
4747
48− function select(index) {
49− d.select(index);
50− }
51−
5248 function dismiss() {
5349 d.dismissAll();
5450 }
5551
52+ function invokeMenu(mouseEvent) {
53+ mouseArea.onClicked(mouseEvent);
54+ }
55+
5656 GlobalShortcut {
5757 shortcut: Qt.Key_Alt|Qt.AltModifier
5858 active: enableKeyFilter
@@ -133,17 +133,20 @@ Item {
133133
134134 function show() {
135135 if (!__popup) {
136+ root.unityMenuModel.aboutToShow(visualItem.__ownIndex);
136137 __popup = menuComponent.createObject(root,
137138 {
138139 objectName: visualItem.objectName + "-menu",
139140 desiredX: Qt.binding(function() { return visualItem.x - units.gu(1); }),
140141 desiredY: Qt.binding(function() { return root.height; }),
141− unityMenuModel: Qt.binding(function() { return root.unityMenuModel.submenu(visualItem.__ownIndex); })
142+ unityMenuModel: Qt.binding(function() { return root.unityMenuModel.submenu(visualItem.__ownIndex); }),
143+ selectFirstOnCountChange: false
142144 });
143145 __popup.reset();
144146 __popup.childActivated.connect(dismiss);
145147 // force the current item to be the newly popped up menu
146− } else {
148+ } else if (!__popup.visible) {
149+ root.unityMenuModel.aboutToShow(visualItem.__ownIndex);
147150 __popup.show();
148151 }
149152 d.currentItem = visualItem;
@@ -227,6 +230,7 @@ Item {
227230 } // Row
228231
229232 MouseArea {
233+ id: mouseArea
230234 anchors.fill: parent
231235 hoverEnabled: d.currentItem
232236
qml/ApplicationMenus/MenuPopup.qml+14−6
@@ -34,6 +34,8 @@ UbuntuShape {
3434 // if they don't fit when growing right
3535 property bool substractWidth: false
3636
37+ property bool selectFirstOnCountChange: true
38+
3739 property real desiredX
3840 x: {
3941 var dummy = visible; // force recalc when shown/hidden
@@ -74,8 +76,8 @@ UbuntuShape {
7476 d.currentItem = null;
7577 }
7678
77− function select(index) {
78− d.select(index)
79+ function selectFirstIndex() {
80+ d.selectNext(-1);
7981 }
8082
8183 function reset() {
@@ -303,6 +305,7 @@ UbuntuShape {
303305
304306 if (hasSubmenu) {
305307 if (!popup) {
308+ root.unityMenuModel.aboutToShow(__ownIndex);
306309 var model = root.unityMenuModel.submenu(__ownIndex);
307310 popup = submenuComponent.createObject(focusScope, {
308311 objectName: parent.objectName + "-",
@@ -324,8 +327,10 @@ UbuntuShape {
324327 popup = null;
325328 root.childActivated();
326329 });
327− } else if (popup) {
330+ } else if (!popup.visible) {
331+ root.unityMenuModel.aboutToShow(__ownIndex);
328332 popup.visible = true;
333+ popup.item.selectFirstIndex();
329334 }
330335 } else {
331336 root.unityMenuModel.activate(__ownIndex);
@@ -359,6 +364,12 @@ UbuntuShape {
359364 Repeater {
360365 id: repeater
361366
367+ onCountChanged: {
368+ if (root.selectFirstOnCountChange && !d.currentItem && count > 0) {
369+ root.selectFirstIndex();
370+ }
371+ }
372+
362373 Loader {
363374 id: loader
364375 objectName: root.objectName + "-item" + __ownIndex
@@ -486,9 +497,6 @@ UbuntuShape {
486497 target: item
487498 onChildActivated: childActivated();
488499 }
489−
490− Component.onCompleted: item.select(0);
491− onVisibleChanged: if (visible) { item.select(0); }
492500 }
493501 }
494502 }
qml/Components/Dialogs.qml+5−5
@@ -22,7 +22,6 @@ import GlobalShortcut 1.0
2222import Ubuntu.Components 1.3
2323import Unity.Platform 1.0
2424import Utils 0.1
25−import "../Greeter"
2625
2726MouseArea {
2827 id: root
@@ -116,17 +115,17 @@ MouseArea {
116115
117116 GlobalShortcut { // lock screen
118117 shortcut: Qt.Key_ScreenSaver
119− onTriggered: LightDMService.greeter.showGreeter()
118+ onTriggered: root.unitySessionService.PromptLock()
120119 }
121120
122121 GlobalShortcut { // lock screen
123122 shortcut: Qt.ControlModifier|Qt.AltModifier|Qt.Key_L
124− onTriggered: LightDMService.greeter.showGreeter()
123+ onTriggered: root.unitySessionService.PromptLock()
125124 }
126125
127126 GlobalShortcut { // lock screen
128127 shortcut: Qt.MetaModifier|Qt.Key_L
129− onTriggered: LightDMService.greeter.showGreeter()
128+ onTriggered: root.unitySessionService.PromptLock()
130129 }
131130
132131 QtObject {
@@ -179,8 +178,9 @@ MouseArea {
179178 Button {
180179 width: parent.width
181180 text: i18n.ctr("Button: Lock the system", "Lock")
181+ visible: root.unitySessionService.CanLock()
182182 onClicked: {
183− LightDMService.greeter.showGreeter()
183+ root.unitySessionService.PromptLock();
184184 logoutDialog.hide();
185185 }
186186 Component.onCompleted: if (root.hasKeyboard) forceActiveFocus(Qt.TabFocusReason)
qml/Launcher/Drawer.qml+5−1
@@ -27,6 +27,7 @@ FocusScope {
2727
2828 property int panelWidth: 0
2929 readonly property bool moving: listLoader.item && listLoader.item.moving
30+ readonly property Item searchTextField: searchField
3031
3132 signal applicationSelected(string appId)
3233
@@ -212,13 +213,16 @@ FocusScope {
212213 root.dragDistance += diff;
213214 oldX = mouseX
214215 }
215− onReleased: {
216+ onReleased: reset();
217+ onCanceled: reset();
218+ function reset() {
216219 if (root.draggingHorizontally) {
217220 root.draggingHorizontally = false;
218221 parent.interactive = true;
219222 }
220223 reactivateTimer.start();
221224 }
225+
222226 Timer {
223227 id: reactivateTimer
224228 interval: 0
qml/Launcher/Launcher.qml+18−10
@@ -33,6 +33,7 @@ FocusScope {
3333 property Item blurSource: null
3434 property int topPanelHeight: 0
3535 property bool drawerEnabled: true
36+ property alias privateMode: panel.privateMode
3637
3738 property int panelWidth: units.gu(10)
3839 property int dragAreaWidth: units.gu(1)
@@ -119,7 +120,14 @@ FocusScope {
119120 }
120121 return;
121122 }
122− switchToNextState("")
123+ if (root.lockedVisible) {
124+ // Due to binding updates when switching between modes
125+ // it could happen that our request to show will be overwritten
126+ // with a hide request. Rewrite it when we know hiding is not allowed.
127+ switchToNextState("visible")
128+ } else {
129+ switchToNextState("")
130+ }
123131 }
124132
125133 function fadeOut() {
@@ -155,6 +163,7 @@ FocusScope {
155163
156164 function openForKeyboardNavigation() {
157165 panel.highlightIndex = -1; // The BFB
166+ drawer.focus = false;
158167 root.focus = true;
159168 switchToNextState("visible")
160169 }
@@ -257,13 +266,6 @@ FocusScope {
257266 interval: 1
258267 property string nextState: ""
259268 onTriggered: {
260− if (root.lockedVisible && nextState == "") {
261− // Due to binding updates when switching between modes
262− // it could happen that our request to show will be overwritten
263− // with a hide request. Rewrite it when we know hiding is not allowed.
264− nextState = "visible"
265− }
266−
267269 // switching to an intermediate state here to make sure all the
268270 // values are restored, even if we were already in the target state
269271 root.state = "tmp"
@@ -362,6 +364,13 @@ FocusScope {
362364 topMargin: root.inverted ? root.topPanelHeight : 0
363365 bottom: parent.bottom
364366 right: parent.left
367+ onRightMarginChanged: {
368+ // Remove (and put back) the focus for the searchfield in
369+ // order to hide the copy/paste popover when we move the drawer
370+ var hadFocus = drawer.searchTextField.focus;
371+ drawer.searchTextField.focus = false;
372+ drawer.searchTextField.focus = hadFocus;
373+ }
365374 }
366375 width: Math.min(root.width, units.gu(90)) * .9
367376 panelWidth: panel.width
@@ -382,8 +391,7 @@ FocusScope {
382391 }
383392
384393 Keys.onEscapePressed: {
385− switchToNextState("");
386− root.focus = false;
394+ root.hide()
387395 }
388396
389397 onDragDistanceChanged: {
qml/Launcher/LauncherPanel.qml+8−1
@@ -19,6 +19,7 @@ import QtQml.StateMachine 1.0 as DSM
1919import Ubuntu.Components 1.3
2020import Unity.Launcher 0.1
2121import Ubuntu.Components.Popups 1.3
22+import Utils 0.1
2223import "../Components"
2324
2425Rectangle {
@@ -29,6 +30,7 @@ Rectangle {
2930
3031 property var model
3132 property bool inverted: false
33+ property bool privateMode: false
3234 property bool dragging: false
3335 property bool moving: launcherListView.moving || launcherListView.flicking
3436 property bool preventHiding: moving || dndArea.draggedIndex >= 0 || quickList.state === "open" || dndArea.pressed
@@ -811,7 +813,11 @@ Rectangle {
811813
812814 Repeater {
813815 id: popoverRepeater
814− model: quickList.model
816+ objectName: "popoverRepeater"
817+ model: QuickListProxyModel {
818+ source: quickList.model
819+ privateMode: root.privateMode
820+ }
815821
816822 ListItem {
817823 objectName: "quickListEntry" + index
@@ -835,6 +841,7 @@ Rectangle {
835841 fontSize: index == 0 ? "medium" : "small"
836842 font.weight: index == 0 ? Font.Medium : Font.Light
837843 color: model.clickable ? theme.palette.normal.backgroundText : theme.palette.disabled.backgroundText
844+ elide: Text.ElideRight
838845 }
839846
840847 onClicked: {
qml/Panel/Indicators/client/IndicatorRepresentation.qml+18−5
@@ -20,6 +20,7 @@
2020
2121import QtQuick 2.4
2222import Ubuntu.Components 1.3
23+import ".."
2324import "../.."
2425
2526Page {
@@ -77,11 +78,23 @@ Page {
7778
7879 Component {
7980 id: page
80− IndicatorPage {
81− identifier: model.identifier
82− busName: indicatorProperties.busName
83− actionsObjectPath: indicatorProperties.actionsObjectPath
84− menuObjectPath: indicatorProperties.menuObjectPath
81+ PanelMenuPage {
82+ objectName: model.identifier + "-page"
83+ submenuIndex: 0
84+
85+ menuModel: delegate.menuModel
86+
87+ factory: IndicatorMenuItemFactory {
88+ indicator: model.identifier
89+ rootModel: delegate.menuModel
90+ }
91+
92+ IndicatorDelegate {
93+ id: delegate
94+ busName: indicatorProperties.busName
95+ actionsObjectPath: indicatorProperties.actionsObjectPath
96+ menuObjectPath: indicatorProperties.menuObjectPath
97+ }
8598 }
8699 }
87100 Component {
qml/Panel/MenuContent.qml+2−2
@@ -44,9 +44,9 @@ Rectangle {
4444 anchors.fill: parent
4545 model: content.model
4646
47− highlightFollowsCurrentItem: true
47+ highlightFollowsCurrentItem: false
48+ contentX: currentIndex * width
4849 interactive: false
49− highlightMoveDuration: 0
5050 orientation: ListView.Horizontal
5151 // Load all the indicator menus (a big number)
5252 cacheBuffer: 1073741823
qml/Panel/Panel.qml+42−4
@@ -38,6 +38,7 @@ Item {
3838 property real expandedPanelHeight: units.gu(7)
3939 property real indicatorMenuWidth: width
4040 property real applicationMenuWidth: width
41+ property alias applicationMenuContentX: __applicationMenus.menuContentX
4142
4243 property alias applicationMenus: __applicationMenus
4344 property alias indicators: __indicators
@@ -175,6 +176,10 @@ Item {
175176 // let it fall through to the window decoration of the maximized window behind, if any
176177 mouse.accepted = false;
177178 }
179+ var menubar = menuBarLoader.item;
180+ if (menubar) {
181+ menubar.invokeMenu(mouse);
182+ }
178183 }
179184
180185 Row {
@@ -201,16 +206,17 @@ Item {
201206
202207 Loader {
203208 id: menuBarLoader
209+ objectName: "menuBarLoader"
204210 height: parent.height
205211 enabled: d.enablePointerMenu
206212 opacity: d.showPointerMenu ? 1 : 0
207213 visible: opacity != 0
208214 Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
209− active: __applicationMenus.model
215+ active: __applicationMenus.model && !callHint.visible
210216
211217 width: parent.width - windowControlButtons.width - units.gu(2) - __indicators.barWidth
212218
213− property bool menusRequested: menuBarLoader.item ? menuBarLoader.item.showRequested : false
219+ readonly property bool menusRequested: menuBarLoader.item ? menuBarLoader.item.showRequested : false
214220
215221 sourceComponent: MenuBar {
216222 id: bar
@@ -233,6 +239,7 @@ Item {
233239 }
234240
235241 onDoubleClicked: panelState.restoreClicked()
242+ onPressed: mouse.accepted = false // let the parent mouse area handle this, so it can both unsnap window and show menu
236243 }
237244 }
238245 }
@@ -252,6 +259,7 @@ Item {
252259 PanelMenu {
253260 id: __applicationMenus
254261
262+ x: menuContentX
255263 model: registeredMenuModel.model
256264 width: root.applicationMenuWidth
257265 minimizedPanelHeight: root.minimizedPanelHeight
@@ -260,6 +268,7 @@ Item {
260268 alignment: Qt.AlignLeft
261269 enableHint: !callHint.active && !fullscreenMode
262270 showOnClick: false
271+ adjustDragHandleSizeToContents: false
263272 panelColor: panelAreaBackground.color
264273
265274 onShowTapped: {
@@ -268,12 +277,12 @@ Item {
268277 }
269278 }
270279
271− showRowTitle: !expanded
272− rowTitle: panelState.title
280+ hideRow: !expanded
273281 rowItemDelegate: ActionItem {
274282 id: actionItem
275283 property int ownIndex: index
276284 objectName: "appMenuItem"+index
285+ enabled: model.sensitive
277286
278287 width: _title.width + units.gu(2)
279288 height: parent.height
@@ -292,6 +301,13 @@ Item {
292301 }
293302
294303 pageDelegate: PanelMenuPage {
304+ readonly property bool isCurrent: modelIndex == __applicationMenus.currentMenuIndex
305+ onIsCurrentChanged: {
306+ if (isCurrent && menuModel) {
307+ menuModel.aboutToShow(modelIndex);
308+ }
309+ }
310+
295311 menuModel: __applicationMenus.model
296312 submenuIndex: modelIndex
297313
@@ -310,6 +326,28 @@ Item {
310326 }
311327 }
312328
329+ Label {
330+ id: rowLabel
331+ objectName: "panelTitle"
332+ anchors {
333+ left: parent.left
334+ leftMargin: units.gu(1)
335+ right: __indicators.left
336+ rightMargin: units.gu(1)
337+ }
338+ height: root.minimizedPanelHeight
339+ verticalAlignment: Text.AlignVCenter
340+ elide: Text.ElideRight
341+ maximumLineCount: 1
342+ fontSize: "medium"
343+ font.weight: Font.Medium
344+ color: Theme.palette.selected.backgroundText
345+ opacity: __applicationMenus.visible && !__applicationMenus.expanded ? 1 : 0
346+ visible: opacity != 0
347+ Behavior on opacity { NumberAnimation { duration: UbuntuAnimation.SnapDuration } }
348+ text: PanelState.title
349+ }
350+
313351 PanelMenu {
314352 id: __indicators
315353 objectName: "indicators"
qml/Panel/PanelBar.qml+17−2
@@ -30,8 +30,7 @@ Item {
3030 property real lateralPosition: -1
3131 property int alignment: Qt.AlignRight
3232
33− property alias showRowTitle: row.showRowTitle
34− property alias rowTitle: row.rowTitle
33+ property alias hideRow: row.hideRow
3534 property alias rowItemDelegate: row.delegate
3635
3736 implicitWidth: flickable.contentWidth
@@ -44,6 +43,22 @@ Item {
4443 row.selectItemAt(mapped.x);
4544 }
4645
46+ function selectPreviousItem() {
47+ if (!expanded) {
48+ row.resetCurrentItem();
49+ }
50+ row.selectPreviousItem();
51+ d.alignIndicators();
52+ }
53+
54+ function selectNextItem() {
55+ if (!expanded) {
56+ row.resetCurrentItem();
57+ }
58+ row.selectNextItem();
59+ d.alignIndicators();
60+ }
61+
4762 function setCurrentItemIndex(index) {
4863 if (!expanded) {
4964 row.resetCurrentItem();
qml/Panel/PanelItemRow.qml+35−29
@@ -20,11 +20,10 @@ import "../Components"
2020
2121Item {
2222 id: root
23− implicitWidth: showRowTitle && !expanded ? rowTitle != "" ? rowLabel.width : 0 : row.width
23+ implicitWidth: row.width
2424 implicitHeight: units.gu(3)
2525
26− property bool showRowTitle: false
27− property alias rowTitle: rowLabel.text
26+ property bool hideRow: false
2827 property QtObject model: null
2928 property real overFlowWidth: width
3029 property bool expanded: false
@@ -96,31 +95,57 @@ Item {
9695 row.currentIndex = -1;
9796 }
9897
98+ function selectPreviousItem() {
99+ var indexToSelect = currentItemIndex - 1;
100+ while (indexToSelect >= 0) {
101+ if (setCurrentItemIndex(indexToSelect))
102+ return;
103+ indexToSelect = indexToSelect - 1;
104+ }
105+ }
106+
107+ function selectNextItem() {
108+ var indexToSelect = currentItemIndex + 1;
109+ while (indexToSelect < row.contentItem.children.length) {
110+ if (setCurrentItemIndex(indexToSelect))
111+ return;
112+ indexToSelect = indexToSelect + 1;
113+ }
114+ }
115+
99116 function setCurrentItemIndex(index) {
100117 for (var i = 0; i < row.contentItem.children.length; i++) {
101118 var item = row.contentItem.children[i];
102− if (item.hasOwnProperty("ownIndex") && item.ownIndex === index) {
103− if (currentItem !== item) row.currentIndex = index;
104− break;
119+ if (item.hasOwnProperty("ownIndex") && item.ownIndex === index && item.enabled) {
120+ if (currentItem !== item) {
121+ row.currentIndex = index;
122+ }
123+ return true;
105124 }
106125 }
126+ return false;
107127 }
108128
109129 function selectItemAt(lateralPosition) {
110130 var item = indicatorAt(lateralPosition, 0);
111− if (item && item.opacity > 0) {
131+ if (item && item.opacity > 0 && item.enabled) {
112132 row.currentIndex = item.ownIndex;
113133 } else {
114134 // Select default item.
115135 var searchIndex = lateralPosition >= width ? row.count - 1 : 0;
116136
117137 for (var i = 0; i < row.contentItem.children.length; i++) {
118− if (row.contentItem.children[i].hasOwnProperty("ownIndex") && row.contentItem.children[i].ownIndex === searchIndex) {
138+ if (row.contentItem.children[i].hasOwnProperty("ownIndex") &&
139+ row.contentItem.children[i].ownIndex === searchIndex &&
140+ row.contentItem.children[i].enabled)
141+ {
119142 item = row.contentItem.children[i];
120143 break;
121144 }
122145 }
123− if (currentItem !== item) row.currentIndex = item ? item.ownIndex : -1;
146+ if (item && currentItem !== item) {
147+ row.currentIndex = item.ownIndex;
148+ }
124149 }
125150 }
126151
@@ -138,31 +163,12 @@ Item {
138163 d.previousItem = currentItem;
139164 }
140165
141− Label {
142− id: rowLabel
143− objectName: "panelTitle"
144− anchors {
145− left: parent.left
146− leftMargin: units.gu(1)
147− verticalCenter: parent.verticalCenter
148− }
149− width: implicitWidth + units.gu(2)
150− elide: Text.ElideRight
151− maximumLineCount: 1
152− fontSize: "medium"
153− font.weight: Font.Medium
154− color: Theme.palette.selected.backgroundText
155− opacity: showRowTitle ? 1 : 0
156− visible: opacity != 0
157− Behavior on opacity { NumberAnimation { duration: UbuntuAnimation.SnapDuration } }
158− }
159−
160166 ListView {
161167 id: row
162168 objectName: "panelRow"
163169 orientation: ListView.Horizontal
164170 model: root.model
165− opacity: showRowTitle ? 0 : 1
171+ opacity: hideRow ? 0 : 1
166172 // dont set visible on basis of opacity; otherwise width will not be calculated correctly
167173 anchors {
168174 top: parent.top
qml/Panel/PanelMenu.qml+37−25
@@ -32,11 +32,12 @@ Showable {
3232 property real openedHeight: units.gu(71)
3333 property bool enableHint: true
3434 property bool showOnClick: true
35+ property bool adjustDragHandleSizeToContents: true
3536 property color panelColor: theme.palette.normal.background
37+ property real menuContentX: 0
3638
3739 property alias alignment: bar.alignment
38− property alias rowTitle: bar.rowTitle
39− property alias showRowTitle: bar.showRowTitle
40+ property alias hideRow: bar.hideRow
4041 property alias rowItemDelegate: bar.rowItemDelegate
4142 property alias pageDelegate: content.pageDelegate
4243
@@ -45,7 +46,8 @@ Showable {
4546 readonly property bool partiallyOpened: unitProgress > 0 && unitProgress < 1.0
4647 readonly property bool fullyClosed: unitProgress == 0
4748 readonly property alias expanded: bar.expanded
48− readonly property int barWidth: Math.min(bar.width, bar.implicitWidth)
49+ readonly property int barWidth: adjustDragHandleSizeToContents ? Math.min(bar.width, bar.implicitWidth) : bar.width
50+ readonly property alias currentMenuIndex: bar.currentItemIndex
4951
5052 signal showTapped()
5153
@@ -77,33 +79,42 @@ Showable {
7779
7880 shown: false
7981 height: minimizedPanelHeight
80− clip: root.partiallyOpened
8182
8283 onUnitProgressChanged: d.updateState()
8384
84− // eater
85− MouseArea {
86− anchors.fill: content
87− hoverEnabled: true
88− acceptedButtons: Qt.AllButtons
89− onWheel: wheel.accepted = true;
90− enabled: root.state != "initial"
91− visible: content.visible
92− }
93−
94− MenuContent {
95− id: content
96− objectName: "menuContent"
97−
85+ Item {
9886 anchors {
9987 left: parent.left
10088 right: parent.right
10189 top: bar.bottom
90+ bottom: parent.bottom
91+ }
92+ clip: root.partiallyOpened
93+
94+ // eater
95+ MouseArea {
96+ anchors.fill: content
97+ hoverEnabled: true
98+ acceptedButtons: Qt.AllButtons
99+ onWheel: wheel.accepted = true;
100+ enabled: root.state != "initial"
101+ visible: content.visible
102+ }
103+
104+ MenuContent {
105+ id: content
106+ objectName: "menuContent"
107+
108+ anchors {
109+ left: parent.left
110+ right: parent.right
111+ top: parent.top
112+ }
113+ height: openedHeight - bar.height - handle.height
114+ model: root.model
115+ visible: root.unitProgress > 0
116+ currentMenuIndex: bar.currentItemIndex
102117 }
103− height: openedHeight - bar.height - handle.height
104− model: root.model
105− visible: root.unitProgress > 0
106− currentMenuIndex: bar.currentItemIndex
107118 }
108119
109120 Handle {
@@ -142,10 +153,10 @@ Showable {
142153
143154 Keys.onPressed: {
144155 if (event.key === Qt.Key_Left) {
145− bar.setCurrentItemIndex(bar.currentItemIndex - 1);
156+ bar.selectPreviousItem();
146157 event.accepted = true;
147158 } else if (event.key === Qt.Key_Right) {
148− bar.setCurrentItemIndex(bar.currentItemIndex + 1);
159+ bar.selectNextItem();
149160 event.accepted = true;
150161 } else if (event.key === Qt.Key_Escape) {
151162 root.hide();
@@ -217,8 +228,9 @@ Showable {
217228 objectName: "showDragHandle"
218229 anchors.bottom: parent.bottom
219230 anchors.left: alignment == Qt.AlignLeft ? parent.left : undefined
231+ anchors.leftMargin: -root.menuContentX
220232 anchors.right: alignment == Qt.AlignRight ? parent.right : undefined
221− width: root.barWidth // show handle should only cover panel items.
233+ width: root.barWidth + root.menuContentX // show handle should only cover panel items.
222234 height: minimizedPanelHeight
223235 direction: Direction.Downwards
224236 enabled: !root.shown && root.available
qml/Panel/PanelMenuPage.qml+2−1
@@ -63,7 +63,7 @@ PageStack {
6363 if (model) {
6464 push(pageComponent, { "menuModel": model });
6565 }
66− } else {
66+ } else if (root.currentPage) {
6767 root.currentPage.reset();
6868 }
6969 }
@@ -192,6 +192,7 @@ PageStack {
192192 if (item.hasOwnProperty("clicked")) {
193193 item.clicked.connect(function() {
194194 if (model.hasSubmenu) {
195+ page.menuModel.aboutToShow(modelIndex);
195196 root.push(pageComponent, {
196197 "isSubmenu": true,
197198 "title": model.label.replace(/_|&/, ""),
qml/Shell.qml+13−2
@@ -440,7 +440,9 @@ StyledItem {
440440 id: showGreeterDelayed
441441 interval: 1
442442 onTriggered: {
443− greeter.forceShow();
443+ // Go through the dbus service, because it has checks for whether
444+ // we are even allowed to lock or not.
445+ DBusUnitySessionService.PromptLock();
444446 }
445447 }
446448
@@ -514,6 +516,7 @@ StyledItem {
514516 expandedPanelHeight: units.gu(7)
515517 indicatorMenuWidth: parent.width > units.gu(60) ? units.gu(40) : parent.width
516518 applicationMenuWidth: parent.width > units.gu(60) ? units.gu(40) : parent.width
519+ applicationMenuContentX: launcher.lockedVisible ? launcher.panelWidth : 0
517520
518521 indicators {
519522 hides: [launcher]
@@ -574,6 +577,7 @@ StyledItem {
574577 blurSource: greeter.shown ? greeter : stages
575578 topPanelHeight: panel.panelHeight
576579 drawerEnabled: !greeter.active
580+ privateMode: greeter.active
577581
578582 onShowDashHome: showHome()
579583 onLauncherApplicationSelected: {
@@ -582,7 +586,14 @@ StyledItem {
582586 }
583587 onShownChanged: {
584588 if (shown) {
585− panel.indicators.hide()
589+ panel.indicators.hide();
590+ panel.applicationMenus.hide();
591+ }
592+ }
593+ onDrawerShownChanged: {
594+ if (drawerShown) {
595+ panel.indicators.hide();
596+ panel.applicationMenus.hide();
586597 }
587598 }
588599 onFocusChanged: {
qml/Stage/ChildWindowTree.qml−4
@@ -60,10 +60,6 @@ Item {
6060 property real windowedX: x
6161 property real windowedY: y
6262
63−
64− property real restoredX
65− property real restoredY
66−
6763 state: "restored"
6864 // end of API expected by MoveHandler
6965 ////
qml/Stage/DecoratedWindow.qml+5−2
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014-2016 Canonical, Ltd.
2+ * Copyright (C) 2014-2017 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -38,6 +38,7 @@ FocusScope {
3838 property alias maximizeButtonShown: decoration.maximizeButtonShown
3939 property alias interactive: applicationWindow.interactive
4040 readonly property alias orientationChangesEnabled: applicationWindow.orientationChangesEnabled
41+ property PanelState panelState
4142
4243 // Changing this will actually add/remove a decoration, meaning, requestedHeight will take the decoration into account.
4344 property bool hasDecoration: true
@@ -72,7 +73,7 @@ FocusScope {
7273
7374 readonly property Item clientAreaItem: applicationWindow
7475
75− property PanelState panelState
76+ property alias altDragEnabled: altDragHandler.enabled
7677
7778 signal closeClicked()
7879 signal maximizeClicked()
@@ -215,6 +216,7 @@ FocusScope {
215216
216217 opacity: root.hasDecoration ? Math.min(1, root.showDecoration) : 0
217218 Behavior on opacity { UbuntuNumberAnimation { } }
219+ visible: opacity > 0 // don't eat input when decoration is fully translucent
218220
219221 onPressed: root.decorationPressed();
220222 onPressedChanged: moveHandler.handlePressedChanged(pressed, pressedButtons, mouseX, mouseY)
@@ -269,6 +271,7 @@ FocusScope {
269271 acceptedButtons: Qt.LeftButton
270272 property bool dragging: false
271273 cursorShape: undefined // don't interfere with the cursor shape set by the underlying MirSurfaceItem
274+ visible: enabled
272275 onPressed: {
273276 if (mouse.button == Qt.LeftButton && mouse.modifiers == Qt.AltModifier) {
274277 root.decorationPressed(); // to raise it
qml/Stage/MoveHandler.qml−5
@@ -188,11 +188,6 @@ QtObject {
188188 priv.progress = 0;
189189 priv.resetEdges();
190190 }
191− if ((target.state == "normal" || target.state == "restored") && priv.progress == 0) {
192− // save the x/y to restore to
193− target.restoredX = target.x;
194− target.restoredY = target.y;
195− }
196191 }
197192
198193 function cancelDrag() {
qml/Stage/Spread/Spread.qml+11
@@ -40,6 +40,7 @@ Item {
4040 property real rightEdgeBreakPoint: Math.min(units.gu(40) / root.width, .35)
4141
4242 signal leaveSpread()
43+ signal closeCurrentApp();
4344
4445 // Calculated stuff
4546 readonly property int totalItemCount: model.count
@@ -118,6 +119,13 @@ Item {
118119 Behavior on opacity { UbuntuNumberAnimation { } }
119120 }
120121
122+ readonly property int itemCount: root.model.count
123+ onItemCountChanged: {
124+ if (highlightedIndex >= itemCount) {
125+ highlightedIndex = itemCount - 1
126+ }
127+ }
128+
121129 Keys.onPressed: {
122130 switch (event.key) {
123131 case Qt.Key_Left:
@@ -130,6 +138,9 @@ Item {
130138 selectNext(event.isAutoRepeat)
131139 event.accepted = true;
132140 break;
141+ case Qt.Key_Q:
142+ closeCurrentApp();
143+ break;
133144 case Qt.Key_Escape:
134145 highlightedIndex = -1
135146 // Falling through intentionally
qml/Stage/Stage.qml+25−2
@@ -576,6 +576,12 @@ FocusScope {
576576 onLeaveSpread: {
577577 priv.goneToSpread = false;
578578 }
579+
580+ onCloseCurrentApp: {
581+ if (!appRepeater.itemAt(highlightedIndex).isDash) {
582+ appRepeater.itemAt(highlightedIndex).close();
583+ }
584+ }
579585 }
580586
581587 Connections {
@@ -754,6 +760,14 @@ FocusScope {
754760 normalHeight = appDelegate.height;
755761 }
756762 }
763+ function updateRestoredGeometry() {
764+ if (appDelegate.state == "normal" || appDelegate.state == "restored") {
765+ // save the x/y to restore to
766+ restoredX = appDelegate.x;
767+ restoredY = appDelegate.y;
768+ }
769+ }
770+
757771 Connections {
758772 target: appDelegate
759773 onXChanged: appDelegate.updateNormalGeometry();
@@ -1303,6 +1317,10 @@ FocusScope {
13031317 target: stageMaths
13041318 animateX: !focusAnimation.running && itemIndex !== spreadItem.highlightedIndex
13051319 }
1320+ PropertyChanges {
1321+ target: appDelegate.window
1322+ allowClientResize: false
1323+ }
13061324 },
13071325 State {
13081326 name: "stagedWithSideStage"; when: root.state == "stagedWithSideStage"
@@ -1328,6 +1346,10 @@ FocusScope {
13281346 target: resizeArea
13291347 enabled: false
13301348 }
1349+ PropertyChanges {
1350+ target: appDelegate.window
1351+ allowClientResize: false
1352+ }
13311353 },
13321354 State {
13331355 name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
@@ -1600,6 +1622,7 @@ FocusScope {
16001622 highlightSize: windowInfoItem.iconMargin / 2
16011623 boundsItem: boundariesForWindowPlacement
16021624 panelState: root.panelState
1625+ altDragEnabled: root.mode == "windowed"
16031626
16041627 requestedWidth: appDelegate.requestedWidth
16051628 requestedHeight: appDelegate.requestedHeight
@@ -1628,7 +1651,7 @@ FocusScope {
16281651 }
16291652 onMinimizeClicked: { appDelegate.requestMinimize(); }
16301653 onDecorationPressed: { appDelegate.activate(); }
1631− onDecorationReleased: fakeRectangle.commit();
1654+ onDecorationReleased: fakeRectangle.visible ? fakeRectangle.commit() : appDelegate.updateRestoredGeometry()
16321655
16331656 property real angle: 0
16341657 Behavior on angle { enabled: priv.closingIndex >= 0; UbuntuNumberAnimation {} }
@@ -1672,7 +1695,7 @@ FocusScope {
16721695 onFakeMaximizeBottomLeftAnimationRequested: if (!appDelegate.maximizedBottomLeft) fakeRectangle.maximizeBottomLeft(amount, true);
16731696 onFakeMaximizeBottomRightAnimationRequested: if (!appDelegate.maximizedBottomRight) fakeRectangle.maximizeBottomRight(amount, true);
16741697 onStopFakeAnimation: fakeRectangle.stop();
1675− onDragReleased: fakeRectangle.commit();
1698+ onDragReleased: fakeRectangle.visible ? fakeRectangle.commit() : appDelegate.updateRestoredGeometry()
16761699 }
16771700
16781701 WindowedFullscreenPolicy {
src/CMakeLists.txt+3
@@ -1,11 +1,13 @@
11add_subdirectory(libunity8-private)
22
33pkg_check_modules(CONNECTIVITY REQUIRED connectivity-qt1)
4+pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
45
56include_directories(
67 SYSTEM
78 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
89 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
10+ ${GSETTINGS_QT_INCLUDE_DIRS}
911 ${CONNECTIVITY_INCLUDE_DIRS}
1012 ${QTMIRSERVER_INCLUDE_DIRS}
1113)
@@ -49,6 +51,7 @@ if (NOT "${ANDROID_PROPERTIES_INCLUDE_DIRS}" STREQUAL "")
4951endif()
5052target_link_libraries(${SHELL_APP}
5153 ${ANDROID_PROPERTIES_LDFLAGS}
54+ ${GSETTINGS_QT_LDFLAGS}
5255 ${QTMIRSERVER_LDFLAGS}
5356 UbuntuGestures
5457 connectivity-qt1
src/UnityApplication.cpp+7−2
@@ -23,6 +23,8 @@
2323#include <QQmlContext>
2424#include <QQmlComponent>
2525
26+#include <QGSettings>
27+
2628#include <libintl.h>
2729
2830// libandroid-properties
@@ -74,8 +76,9 @@ UnityApplication::UnityApplication(int & argc, char ** argv)
7476 bindtextdomain("unity8", translationDirectory().toUtf8().data());
7577 textdomain("unity8");
7678
77− m_qmlEngine->rootContext()->setContextProperty(QStringLiteral("applicationArguments"), &m_qmlArgs);
78− m_qmlEngine->rootContext()->setContextProperty("DebuggingController", new DebuggingController(this));
79+ QScopedPointer<QGSettings> gSettings(new QGSettings("com.canonical.Unity8"));
80+ gSettings->reset(QStringLiteral("alwaysShowOsk"));
81+
7982
8083 QByteArray pxpguEnv = qgetenv("GRID_UNIT_PX");
8184 bool ok;
@@ -84,6 +87,8 @@ UnityApplication::UnityApplication(int & argc, char ** argv)
8487 pxpgu = 8;
8588 }
8689 m_qmlEngine->rootContext()->setContextProperty("internalGu", pxpgu);
90+ m_qmlEngine->rootContext()->setContextProperty(QStringLiteral("applicationArguments"), &m_qmlArgs);
91+ m_qmlEngine->rootContext()->setContextProperty("DebuggingController", new DebuggingController(this));
8792
8893 auto component(new QQmlComponent(m_qmlEngine, m_qmlArgs.qmlfie()));
8994 component->create();
src/WindowManagementPolicy.h+1−1
@@ -35,7 +35,7 @@ public:
3535
3636 void releaseWorkspace(const std::shared_ptr<miral::Workspace> &workspace) override;
3737
38− void setActiveWorkspace(const std::shared_ptr<miral::Workspace>& workspace) override;
38+ void setActiveWorkspace(const std::shared_ptr<miral::Workspace> &workspace) override;
3939
4040private:
4141 std::weak_ptr<miral::Workspace> m_activeWorkspace;
src/libunity8-private/wmpolicyinterface.h+3−1
@@ -30,13 +30,15 @@ class Window;
3030class Q_DECL_EXPORT WMPolicyInterface
3131{
3232public:
33+ virtual ~WMPolicyInterface() {}
34+
3335 static WMPolicyInterface *instance();
3436
3537 virtual std::shared_ptr<miral::Workspace> createWorkspace() = 0;
3638
3739 virtual void releaseWorkspace(const std::shared_ptr<miral::Workspace> &workspace) = 0;
3840
39− virtual void setActiveWorkspace(const std::shared_ptr<miral::Workspace>& workspace) = 0;
41+ virtual void setActiveWorkspace(const std::shared_ptr<miral::Workspace> &workspace) = 0;
4042};
4143
4244extern Q_DECL_EXPORT WMPolicyInterface* wmPolicyInterface;
tests/mocks/QMenuModel/unitymenumodel.cpp+28−4
@@ -18,6 +18,8 @@
1818
1919#include "unitymenumodel.h"
2020
21+#include <QTimer>
22+
2123enum MenuRoles {
2224 LabelRole = Qt::DisplayRole + 1,
2325 SensitiveRole,
@@ -35,7 +37,8 @@ enum MenuRoles {
3537};
3638
3739UnityMenuModel::UnityMenuModel(QObject *parent)
38−: QAbstractListModel(parent)
40+ : QAbstractListModel(parent)
41+ , m_rowCountStatus(NoRequestMade)
3942{
4043}
4144
@@ -60,7 +63,7 @@ void UnityMenuModel::setModelData(const QVariant& data)
6063
6164void UnityMenuModel::insertRow(int row, const QVariant& data)
6265{
63− row = qMin(row, rowCount());
66+ row = qMin(row, m_modelData.count());
6467
6568 beginInsertRows(QModelIndex(), row, row);
6669
@@ -71,12 +74,12 @@ void UnityMenuModel::insertRow(int row, const QVariant& data)
7174
7275void UnityMenuModel::appendRow(const QVariant& data)
7376{
74− insertRow(rowCount(), data);
77+ insertRow(m_modelData.count(), data);
7578}
7679
7780void UnityMenuModel::removeRow(int row)
7881{
79− if (row < 0 || rowCount() <= row) {
82+ if (row < 0 || m_modelData.count() <= row) {
8083 return;
8184 }
8285
@@ -133,6 +136,22 @@ QString UnityMenuModel::nameOwner() const
133136
134137int UnityMenuModel::rowCount(const QModelIndex&) const
135138{
139+ // Fake the rowCount to be 0 for a while (100ms)
140+ // This emulates menus in real world that don't load immediately
141+ if (m_rowCountStatus == TimerRunning)
142+ return 0;
143+
144+ if (m_rowCountStatus == NoRequestMade) {
145+ UnityMenuModel *that = const_cast<UnityMenuModel*>(this);
146+ that->m_rowCountStatus = TimerRunning;
147+ QTimer::singleShot(100, that, [that] {
148+ that->beginInsertRows(QModelIndex(), 0, that->m_modelData.count() - 1);
149+ that->m_rowCountStatus = TimerFinished;
150+ that->endInsertRows();
151+ });
152+ return 0;
153+ }
154+
136155 return m_modelData.count();
137156}
138157
@@ -273,6 +292,11 @@ void UnityMenuModel::activate(int row, const QVariant&)
273292 Q_EMIT activated(rd[roleNames()[ActionRole]].toString());
274293}
275294
295+void UnityMenuModel::aboutToShow(int index)
296+{
297+ Q_EMIT aboutToShowCalled(index);
298+}
299+
276300void UnityMenuModel::changeState(int, const QVariant&)
277301{
278302}
tests/mocks/QMenuModel/unitymenumodel.h+9
@@ -73,6 +73,7 @@ public:
7373 Q_INVOKABLE QVariant get(int row, const QByteArray &role);
7474
7575 Q_INVOKABLE void activate(int index, const QVariant& parameter = QVariant());
76+ Q_INVOKABLE void aboutToShow(int index);
7677 Q_INVOKABLE void changeState(int index, const QVariant& parameter);
7778
7879 void registerAction(UnityMenuAction* action);
@@ -87,6 +88,7 @@ Q_SIGNALS:
8788
8889 // Internal mock usage
8990 void modelDataChanged();
91+ void aboutToShowCalled(int index);
9092
9193 void activated(const QString& action);
9294
@@ -101,6 +103,13 @@ private:
101103 QByteArray m_busName;
102104 QVariantMap m_actions;
103105 QByteArray m_menuObjectPath;
106+
107+ enum RowCountStatus {
108+ NoRequestMade,
109+ TimerRunning,
110+ TimerFinished
111+ };
112+ RowCountStatus m_rowCountStatus;
104113};
105114
106115#endif // MOCK_UNITYMENUMODEL_H
tests/mocks/Unity/Application/MirSurface.cpp+4
@@ -127,6 +127,10 @@ QString MirSurface::persistentId() const
127127 return m_name+"Id";
128128}
129129
130+QString MirSurface::appId() const
131+{
132+ return m_name+"appId";
133+}
130134Mir::Type MirSurface::type() const
131135{
132136 return m_type;
tests/mocks/Unity/Application/MirSurface.h+4
@@ -58,6 +58,7 @@ public:
5858 QString name() const override;
5959
6060 QString persistentId() const override;
61+ QString appId() const override;
6162
6263 QPoint position() const override { return m_position; }
6364
@@ -92,6 +93,9 @@ public:
9293
9394 bool confinesMousePointer() const override { return false; }
9495
96+ bool allowClientResize() const override { return true; }
97+ void setAllowClientResize(bool) override {}
98+
9599 QPoint requestedPosition() const override { return m_requestedPosition; }
96100 void setRequestedPosition(const QPoint &) override;
97101
tests/mocks/Unity/Application/MirSurfaceListModel.cpp+7−7
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2016 Canonical, Ltd.
2+ * Copyright (C) 2016-2017 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
1717#include "MirSurfaceListModel.h"
1818#include "ApplicationInfo.h"
1919
20−#include "MirSurface.h"
20+#include <unity/shell/application/MirSurfaceInterface.h>
2121
2222#define MIRSURFACELISTMODEL_DEBUG 0
2323
@@ -46,14 +46,14 @@ QVariant MirSurfaceListModel::data(const QModelIndex& index, int role) const
4646 return QVariant();
4747
4848 if (role == SurfaceRole) {
49− MirSurface *surface = m_surfaceList.at(index.row());
49+ MirSurfaceInterface *surface = m_surfaceList.at(index.row());
5050 return QVariant::fromValue(static_cast<unity::shell::application::MirSurfaceInterface*>(surface));
5151 } else {
5252 return QVariant();
5353 }
5454}
5555
56−void MirSurfaceListModel::raise(MirSurface *surface)
56+void MirSurfaceListModel::raise(MirSurfaceInterface *surface)
5757{
5858 DEBUG_MSG("(" << surface << ")");
5959 int i = m_surfaceList.indexOf(surface);
@@ -62,7 +62,7 @@ void MirSurfaceListModel::raise(MirSurface *surface)
6262 }
6363}
6464
65−void MirSurfaceListModel::addSurface(MirSurface *surface)
65+void MirSurfaceListModel::addSurface(MirSurfaceInterface *surface)
6666{
6767 DEBUG_MSG("(" << surface << ")");
6868 beginInsertRows(QModelIndex(), 0, 0);
@@ -73,7 +73,7 @@ void MirSurfaceListModel::addSurface(MirSurface *surface)
7373 Q_EMIT firstChanged();
7474}
7575
76−void MirSurfaceListModel::connectSurface(MirSurface *surface)
76+void MirSurfaceListModel::connectSurface(MirSurfaceInterface *surface)
7777{
7878 connect(surface, &QObject::destroyed, this, [this, surface](){ this->removeSurface(surface); });
7979 connect(surface, &MirSurfaceInterface::focusedChanged, this, [this, surface](bool surfaceFocused){
@@ -83,7 +83,7 @@ void MirSurfaceListModel::connectSurface(MirSurface *surface)
8383 });
8484}
8585
86−void MirSurfaceListModel::removeSurface(MirSurface *surface)
86+void MirSurfaceListModel::removeSurface(MirSurfaceInterface *surface)
8787{
8888 int i = m_surfaceList.indexOf(surface);
8989 if (i != -1) {
tests/mocks/Unity/Application/MirSurfaceListModel.h+7−9
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2016 Canonical, Ltd.
2+ * Copyright (C) 2016-2017 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -23,8 +23,6 @@
2323#include <QAbstractListModel>
2424#include <QList>
2525
26−class MirSurface;
27−
2826class MirSurfaceListModel : public unity::shell::application::MirSurfaceListInterface
2927{
3028 Q_OBJECT
@@ -38,17 +36,17 @@ public:
3836 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
3937 QVariant data(const QModelIndex& index, int role) const override;
4038
41− void addSurface(MirSurface *surface);
42− void removeSurface(MirSurface *surface);
39+ void addSurface(unity::shell::application::MirSurfaceInterface *surface);
40+ void removeSurface(unity::shell::application::MirSurfaceInterface *surface);
4341
44− bool contains(MirSurface *surface) const { return m_surfaceList.contains(surface); }
42+ bool contains(unity::shell::application::MirSurfaceInterface *surface) const { return m_surfaceList.contains(surface); }
4543
4644private:
47− void raise(MirSurface *surface);
45+ void raise(unity::shell::application::MirSurfaceInterface *surface);
4846 void moveSurface(int from, int to);
49− void connectSurface(MirSurface *surface);
47+ void connectSurface(unity::shell::application::MirSurfaceInterface *surface);
5048
51− QList<MirSurface*> m_surfaceList;
49+ QList<unity::shell::application::MirSurfaceInterface*> m_surfaceList;
5250};
5351
5452Q_DECLARE_METATYPE(MirSurfaceListModel*)
tests/mocks/Unity/Launcher/MockLauncherModel.h+1−1
@@ -28,7 +28,7 @@ using namespace unity::shell::launcher;
2828
2929class MockLauncherModel: public LauncherModelInterface
3030{
31− Q_OBJECT
31+ Q_OBJECT
3232
3333public:
3434 MockLauncherModel(QObject* parent = 0);
tests/mocks/Unity/Launcher/MockQuickListModel.cpp+3−1
@@ -39,6 +39,8 @@ QVariant MockQuickListModel::data(const QModelIndex &index, int role) const
3939 return index.row() == 1 ? false : true;
4040 case RoleHasSeparator:
4141 return index.row() <= 1 ? true : false;
42+ case RoleIsPrivate:
43+ return index.row() == 4 ? true : false;
4244 }
4345 return QVariant();
4446}
@@ -46,5 +48,5 @@ QVariant MockQuickListModel::data(const QModelIndex &index, int role) const
4648int MockQuickListModel::rowCount(const QModelIndex &parent) const
4749{
4850 Q_UNUSED(parent)
49− return 4;
51+ return 5;
5052}
tests/mocks/Unity/Launcher/MockQuickListModel.h+2
@@ -27,6 +27,8 @@ using namespace unity::shell::launcher;
2727class MockQuickListModel: public QuickListModelInterface
2828{
2929 Q_OBJECT
30+ Q_PROPERTY(int count READ rowCount)
31+
3032public:
3133 MockQuickListModel(QObject *parent = 0);
3234
tests/mocks/Utils/CMakeLists.txt+2
@@ -27,6 +27,7 @@ set(QMLPLUGIN_SRC
2727 ${CMAKE_SOURCE_DIR}/plugins/Utils/appdrawerproxymodel.cpp
2828 ${CMAKE_SOURCE_DIR}/plugins/Utils/tabfocusfence.cpp
2929 ${CMAKE_SOURCE_DIR}/plugins/Utils/expressionfiltermodel.cpp
30+ ${CMAKE_SOURCE_DIR}/plugins/Utils/quicklistproxymodel.cpp
3031 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
3132 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
3233 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
@@ -35,6 +36,7 @@ set(QMLPLUGIN_SRC
3536 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/AppDrawerModelInterface.h
3637 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
3738 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
39+ ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/QuickListModelInterface.h
3840 constants.cpp
3941 plugin.cpp
4042 windowstatestorage.cpp
tests/mocks/Utils/plugin.cpp+2
@@ -43,6 +43,7 @@
4343#include <appdrawerproxymodel.h>
4444#include <tabfocusfence.h>
4545#include <expressionfiltermodel.h>
46+#include <quicklistproxymodel.h>
4647
4748static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
4849{
@@ -88,4 +89,5 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
8889 qmlRegisterType<AppDrawerProxyModel>(uri, 0, 1, "AppDrawerProxyModel");
8990 qmlRegisterType<TabFocusFenceItem>(uri, 0, 1, "TabFocusFence");
9091 qmlRegisterType<ExpressionFilterModel>(uri, 0, 1, "ExpressionFilterModel");
92+ qmlRegisterType<QuickListProxyModel>(uri, 0, 1, "QuickListProxyModel");
9193}
tests/mocks/WindowManager/WindowManagementPolicy.h+6−6
@@ -44,18 +44,18 @@ public:
4444
4545 // From WMPolicyInterface
4646 std::shared_ptr<miral::Workspace> createWorkspace() override;
47− void releaseWorkspace(const std::shared_ptr<miral::Workspace>& workspace) override;
48− void setActiveWorkspace(const std::shared_ptr<miral::Workspace>& workspace) override;
47+ void releaseWorkspace(const std::shared_ptr<miral::Workspace> &workspace) override;
48+ void setActiveWorkspace(const std::shared_ptr<miral::Workspace> &workspace) override;
4949
5050 void addWindow(const miral::Window& window);
5151
52− void forEachWindowInWorkspace(std::shared_ptr<miral::Workspace> const& workspace,
53− std::function<void(miral::Window const&)> const& callback);
52+ void forEachWindowInWorkspace(std::shared_ptr<miral::Workspace> const &workspace,
53+ std::function<void(miral::Window const&)> const &callback);
5454
5555 void moveWindowToWorkspace(const miral::Window &window, const std::shared_ptr<miral::Workspace> &workspace);
5656
57− void moveWorkspaceContentToWorkspace(const std::shared_ptr<miral::Workspace>& to,
58− const std::shared_ptr<miral::Workspace>& from);
57+ void moveWorkspaceContentToWorkspace(const std::shared_ptr<miral::Workspace> &to,
58+ const std::shared_ptr<miral::Workspace> &from);
5959
6060Q_SIGNALS:
6161 void windowAdded(const miral::Window& window);
tests/plugins/CMakeLists.txt+1
@@ -9,4 +9,5 @@ add_subdirectory(SessionBroadcast)
99add_subdirectory(Ubuntu)
1010add_subdirectory(Unity)
1111add_subdirectory(Utils)
12+add_subdirectory(WindowManager)
1213add_subdirectory(Wizard)
tests/plugins/Unity/Launcher/CMakeLists.txt+3
@@ -34,6 +34,9 @@ add_executable(launchermodeltestExec
3434 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
3535 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/QuickListModelInterface.h
3636 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
37+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceListInterface.h
38+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
39+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
3740 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
3841 )
3942target_link_libraries(launchermodeltestExec
tests/plugins/Unity/Launcher/launchermodeltest.cpp+85−7
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013-2016 Canonical Ltd.
2+ * Copyright 2013-2017 Canonical Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU Lesser General Public License as published by
@@ -17,6 +17,7 @@
1717// unity-api
1818#include <unity/shell/launcher/LauncherModelInterface.h>
1919#include <unity/shell/application/ApplicationInfoInterface.h>
20+#include <unity/shell/application/MirSurfaceListInterface.h>
2021
2122#include "launcheritem.h"
2223#include "launchermodel.h"
@@ -37,11 +38,76 @@
3738namespace unityapi = unity::shell::application;
3839
3940// This is a mock, specifically to test the LauncherModel
41+class MockSurface: public unity::shell::application::MirSurfaceInterface
42+{
43+ Q_OBJECT
44+public:
45+ MockSurface(const QString &id, const QString &appId, QObject* parent): unityapi::MirSurfaceInterface(parent), m_id(id), m_appId(appId) {}
46+ Mir::Type type() const override { return Mir::NormalType;}
47+ QString name() const override { return QStringLiteral("mock surface"); }
48+ QString persistentId() const override { return m_id; }
49+ QString appId() const override { return m_appId; }
50+ QPoint position() const override { return QPoint(); }
51+ QSize size() const override { return QSize(); }
52+ void resize(const QSize &size) override { Q_UNUSED(size) }
53+ void resize(int width, int height) override { Q_UNUSED(width); Q_UNUSED(height) }
54+ Mir::State state() const override { return Mir::RestoredState; }
55+ bool live() const override { return true; }
56+ bool visible() const override { return true; }
57+ Mir::OrientationAngle orientationAngle() const override { return Mir::Angle0; }
58+ void setOrientationAngle(Mir::OrientationAngle angle) override { Q_UNUSED(angle); }
59+ int minimumWidth() const override { return 0; }
60+ int minimumHeight() const override { return 0; }
61+ int maximumWidth() const override { return 0; }
62+ int maximumHeight() const override { return 0; }
63+ int widthIncrement() const override { return 0; }
64+ int heightIncrement() const override { return 0; }
65+ void setKeymap(const QString &) override {}
66+ Mir::ShellChrome shellChrome() const override { return Mir::NormalChrome; }
67+ QString keymap() const override { return QStringLiteral("de_DE"); }
68+ bool focused() const override { return true; }
69+ QRect inputBounds() const override { return QRect(); }
70+ bool confinesMousePointer() const override { return false; }
71+ bool allowClientResize() const override { return true; }
72+ void setAllowClientResize(bool) override {}
73+ QPoint requestedPosition() const override { return QPoint(); }
74+ void setRequestedPosition(const QPoint &) override {}
75+ MirSurfaceInterface* parentSurface() const override { return nullptr; }
76+ MirSurfaceListInterface* childSurfaceList() const override { return nullptr; }
77+ void close() override {}
78+ void activate() override {}
79+ void requestState(Mir::State) override {}
80+
81+private:
82+ QString m_id;
83+ QString m_appId;
84+};
85+
86+class MockSurfaceList: public unity::shell::application::MirSurfaceListInterface
87+{
88+ Q_OBJECT
89+public:
90+ MockSurfaceList(QObject *parent): unityapi::MirSurfaceListInterface(parent) {}
91+ int rowCount(const QModelIndex & = QModelIndex()) const override { return m_list.count(); }
92+ QVariant data(const QModelIndex &, int) const override { return QVariant(); }
93+ Q_INVOKABLE MirSurfaceInterface* get(int index) override { return m_list.at(index); }
94+ void append(MirSurfaceInterface* surface) {
95+ beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
96+ m_list.append(surface);
97+ endInsertRows();
98+ }
99+private:
100+ QList<MirSurfaceInterface*> m_list;
101+
102+};
103+
40104class MockApp: public unity::shell::application::ApplicationInfoInterface
41105{
42106 Q_OBJECT
43107public:
44− MockApp(const QString &appId, QObject *parent = 0): ApplicationInfoInterface(appId, parent), m_appId(appId), m_focused(false) { }
108+ MockApp(const QString &appId, QObject *parent = 0): ApplicationInfoInterface(appId, parent), m_appId(appId), m_focused(false) {
109+ m_surfaces = new MockSurfaceList(this);
110+ }
45111
46112 RequestedState requestedState() const override { return RequestedRunning; }
47113 void setRequestedState(RequestedState) override {}
@@ -64,10 +130,10 @@ public:
64130 void setExemptFromLifecycle(bool) override {}
65131 QSize initialSurfaceSize() const override { return QSize(); }
66132 void setInitialSurfaceSize(const QSize &) override {}
67− MirSurfaceListInterface* surfaceList() const override { return nullptr; }
133+ MirSurfaceListInterface* surfaceList() const override { return m_surfaces; }
68134 MirSurfaceListInterface* promptSurfaceList() const override { return nullptr; }
69− int surfaceCount() const override { return m_surfaceCount; }
70− void setSurfaceCount(int count) { m_surfaceCount = count; Q_EMIT surfaceCountChanged(count); }
135+ int surfaceCount() const override { return m_surfaces->count(); }
136+ void setSurfaces(MockSurfaceList* surfaces) { m_surfaces = surfaces; Q_EMIT surfaceCountChanged(m_surfaces->count()); }
71137 void close() override {}
72138
73139 // Methods used for mocking (not in the interface)
@@ -75,7 +141,7 @@ public:
75141private:
76142 QString m_appId;
77143 bool m_focused;
78− int m_surfaceCount = 0;
144+ MockSurfaceList *m_surfaces;
79145};
80146
81147// This is a mock, specifically to test the LauncherModel
@@ -748,8 +814,20 @@ private Q_SLOTS:
748814
749815 QCOMPARE(launcherModel->get(0)->surfaceCount(), 0);
750816 MockApp *app = qobject_cast<MockApp*>(appManager->findApplication(appId));
751− app->setSurfaceCount(1);
817+ MockSurfaceList* surfaces = new MockSurfaceList(appManager);
818+ surfaces->append(new MockSurface("foobar", "foobar", surfaces));
819+ app->setSurfaces(surfaces);
752820 QCOMPARE(launcherModel->get(0)->surfaceCount(), 1);
821+
822+ // Make sure the new surface appears in the quicklist
823+ QuickListModel *quickList = qobject_cast<QuickListModel*>(launcherModel->get(0)->quickList());
824+ bool found = false;
825+ for (int i = 0; i < quickList->rowCount(); ++i) {
826+ if (quickList->get(i).actionId() == "surface_foobar") {
827+ found = true;
828+ }
829+ }
830+ QCOMPARE(found, true);
753831 }
754832};
755833
tests/plugins/Unity/Session/CMakeLists.txt+13−1
@@ -33,6 +33,17 @@ install(TARGETS LightDMServer
3333 DESTINATION "${SHELL_PRIVATE_LIBDIR}/tests/plugins/Unity/Session"
3434 )
3535
36+### Preload
37+add_library(SessionBackendTestPreload SHARED
38+ preload.c
39+)
40+target_link_libraries(SessionBackendTestPreload
41+ ${GLIB_LIBRARIES}
42+ )
43+install(TARGETS SessionBackendTestPreload
44+ DESTINATION "${SHELL_PRIVATE_LIBDIR}/tests/plugins/Unity/Session"
45+ )
46+
3647### SessionBackendTest
3748add_executable(sessionbackendtestExec
3849 sessionbackendtest.cpp
@@ -48,7 +59,8 @@ install(TARGETS sessionbackendtestExec
4859)
4960
5061add_unity8_unittest(SessionBackend dbus-test-runner
51− ENVIRONMENT XDG_SESSION_PATH=/session
62+ ENVIRONMENT LD_PRELOAD=$<TARGET_FILE:SessionBackendTestPreload>
63+ XDG_SESSION_PATH=/session
5264 ARG_PREFIX "--parameter"
5365 ARGS
5466 --task $<TARGET_FILE:LightDMServer>
tests/plugins/Unity/Session/LogindServer.cpp+10
@@ -27,6 +27,16 @@ QDBusObjectPath LogindServer::GetSessionByPID(quint32)
2727 return QDBusObjectPath("/logindsession");
2828}
2929
30+void LogindServer::Reboot(bool interactive)
31+{
32+ Q_EMIT RebootCalled(interactive);
33+}
34+
35+void LogindServer::PowerOff(bool interactive)
36+{
37+ Q_EMIT PowerOffCalled(interactive);
38+}
39+
3040void LogindServer::MockEmitUnlock()
3141{
3242 Q_EMIT Unlock();
tests/plugins/Unity/Session/LogindServer.h+5
@@ -31,6 +31,8 @@ public:
3131
3232public Q_SLOTS:
3333 QDBusObjectPath GetSessionByPID(quint32 pid);
34+ void Reboot(bool interactive);
35+ void PowerOff(bool interactive);
3436
3537 void MockEmitUnlock(); // only in mock
3638
@@ -38,6 +40,9 @@ Q_SIGNALS:
3840 void Lock();
3941 void Unlock();
4042 void PrepareForSleep();
43+
44+ void RebootCalled(bool interactive); // only in mock
45+ void PowerOffCalled(bool interactive); // only in mock
4146};
4247
4348#endif
tests/plugins/Unity/Session/interfaces.xml+12
@@ -7,6 +7,18 @@
77 <arg name="pid" type="u" direction="in" />
88 <arg name="session" type="o" direction="out" />
99 </method>
10+ <method name="Reboot">
11+ <arg name="interactive" type="b" direction="in" />
12+ </method>
13+ <method name="PowerOff">
14+ <arg name="interactive" type="b" direction="in" />
15+ </method>
16+ <signal name="RebootCalled">
17+ <arg name="interactive" type="b" direction="out" />
18+ </signal>
19+ <signal name="PowerOffCalled">
20+ <arg name="interactive" type="b" direction="out" />
21+ </signal>
1022 <signal name="PrepareForSleep" />
1123 </interface>
1224 <interface name="org.freedesktop.login1.Session">
tests/plugins/Unity/Session/preload.cnew file+43
@@ -0,0 +1,43 @@
1+/*
2+ * Copyright © 2017 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 version 3 as
6+ * published by the Free Software Foundation.
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+
18+#include <glib.h>
19+#include <grp.h>
20+#include <stdlib.h>
21+
22+const gchar *g_get_user_name(void)
23+{
24+ // The normal glib version parses pwent entries
25+ return g_getenv("TEST_USER");
26+}
27+
28+struct group *getgrnam(const char *group_name)
29+{
30+ static struct group rv = {NULL, NULL, 0, NULL};
31+
32+ g_free(rv.gr_name);
33+ g_strfreev(rv.gr_mem);
34+
35+ rv.gr_name = g_strdup(group_name);
36+ rv.gr_passwd = NULL;
37+ rv.gr_gid = 9999;
38+ rv.gr_mem = NULL;
39+ if (g_strcmp0(group_name, "nopasswdlogin") == 0) {
40+ rv.gr_mem = g_strsplit(g_getenv("TEST_NOPASSWD_USERS"), ",", 0);
41+ }
42+ return &rv;
43+}
tests/plugins/Unity/Session/sessionbackendtest.cpp+130−11
@@ -53,6 +53,11 @@ private Q_SLOTS:
5353 QDBusConnection::sessionBus());
5454 }
5555
56+ void init() {
57+ qputenv("TEST_USER", "testuser");
58+ qputenv("TEST_NOPASSWD_USERS", "");
59+ }
60+
5661 void testUnitySessionLogoutRequested_data() {
5762 QTest::addColumn<QString>("method");
5863 QTest::addColumn<QString>("signal");
@@ -81,7 +86,99 @@ private Q_SLOTS:
8186 QTRY_COMPARE(spy.count(), 1);
8287 }
8388
84− void testGnomeSessionWrapper_data() {
89+ void testGnomeSessionWrapperWithoutConfirmation_data() {
90+ QTest::addColumn<QString>("method");
91+ QTest::addColumn<QString>("signal");
92+
93+ QTest::newRow("Reboot") << "RequestReboot" << SIGNAL(RebootCalled(bool));
94+ QTest::newRow("Shutdown") << "RequestShutdown" << SIGNAL(PowerOffCalled(bool));
95+ }
96+
97+ void testGnomeSessionWrapperWithoutConfirmation() {
98+ QFETCH(QString, method);
99+ QFETCH(QString, signal);
100+
101+ DBusUnitySessionService dbusUnitySessionService;
102+ DBusGnomeSessionManagerWrapper dbusGnomeSessionManagerWrapper;
103+ QCoreApplication::processEvents(); // to let the services register on DBus
104+
105+ QDBusInterface login1Interface("org.freedesktop.login1",
106+ "/logindsession",
107+ "org.freedesktop.login1.Manager");
108+ QSignalSpy spy(&login1Interface, signal.toUtf8().data());
109+
110+ QDBusInterface dbusGnomeSessionWrapper("org.gnome.SessionManager",
111+ "/org/gnome/SessionManager",
112+ "org.gnome.SessionManager",
113+ QDBusConnection::sessionBus());
114+ QVERIFY(dbusGnomeSessionWrapper.isValid());
115+
116+ QDBusReply<void> reply = dbusGnomeSessionWrapper.call(method);
117+ QVERIFY(reply.isValid());
118+ QTRY_COMPARE(spy.count(), 1);
119+ }
120+
121+ void testGnomeSessionWrapperWithConfirmation_data() {
122+ QTest::addColumn<QString>("method");
123+ QTest::addColumn<QString>("signal");
124+
125+ QTest::newRow("Reboot") << "Reboot" << SIGNAL(RebootRequested(bool));
126+ QTest::newRow("Shutdown") << "Shutdown" << SIGNAL(ShutdownRequested(bool));
127+ }
128+
129+ void testGnomeSessionWrapperWithConfirmation() {
130+ QFETCH(QString, method);
131+ QFETCH(QString, signal);
132+
133+ DBusUnitySessionService dbusUnitySessionService;
134+ DBusGnomeSessionManagerWrapper dbusGnomeSessionManagerWrapper;
135+ QCoreApplication::processEvents(); // to let the services register on DBus
136+
137+ QSignalSpy spy(&dbusUnitySessionService, signal.toUtf8().data());
138+
139+ QDBusInterface dbusGnomeSessionWrapper("org.gnome.SessionManager",
140+ "/org/gnome/SessionManager",
141+ "org.gnome.SessionManager",
142+ QDBusConnection::sessionBus());
143+ QVERIFY(dbusGnomeSessionWrapper.isValid());
144+
145+ QDBusReply<void> reply = dbusGnomeSessionWrapper.call(method);
146+ QVERIFY(reply.isValid());
147+ QCOMPARE(spy.count(), 1);
148+ }
149+
150+ void testGnomeSessionWrapperLogout_data() {
151+ QTest::addColumn<int>("mode");
152+ QTest::addColumn<QString>("signal");
153+
154+ QTest::newRow("Logout") << 0 << SIGNAL(LogoutRequested(bool));
155+ QTest::newRow("LogoutNoDialog") << 1 << SIGNAL(LogoutReady());
156+ QTest::newRow("LogoutNoInhibits") << 2 << SIGNAL(LogoutReady());
157+ QTest::newRow("LogoutNoDialogNoInhibits") << 3 << SIGNAL(LogoutReady());
158+ }
159+
160+ void testGnomeSessionWrapperLogout() {
161+ QFETCH(int, mode);
162+ QFETCH(QString, signal);
163+
164+ DBusUnitySessionService dbusUnitySessionService;
165+ DBusGnomeSessionManagerWrapper dbusGnomeSessionManagerWrapper;
166+ QCoreApplication::processEvents(); // to let the services register on DBus
167+
168+ QSignalSpy spy(&dbusUnitySessionService, signal.toUtf8().data());
169+
170+ QDBusInterface dbusGnomeSessionWrapper("org.gnome.SessionManager",
171+ "/org/gnome/SessionManager",
172+ "org.gnome.SessionManager",
173+ QDBusConnection::sessionBus());
174+ QVERIFY(dbusGnomeSessionWrapper.isValid());
175+
176+ QDBusReply<void> reply = dbusGnomeSessionWrapper.call("Logout", (quint32)mode);
177+ QVERIFY(reply.isValid());
178+ QCOMPARE(spy.count(), 1);
179+ }
180+
181+ void testGnomeSessionDialogWrapper_data() {
85182 QTest::addColumn<uint>("method");
86183 QTest::addColumn<QString>("signal");
87184
@@ -90,7 +187,7 @@ private Q_SLOTS:
90187 QTest::newRow("Reboot") << (uint)Action::REBOOT << "RebootRequested(bool)";
91188 }
92189
93− void testGnomeSessionWrapper() {
190+ void testGnomeSessionDialogWrapper() {
94191 QFETCH(uint, method);
95192 QFETCH(QString, signal);
96193
@@ -102,7 +199,7 @@ private Q_SLOTS:
102199 // .. because QSignalSpy checks the signal signature like this: "if (((aSignal[0] - '0') & 0x03) != QSIGNAL_CODE)"
103200 QSignalSpy spy(&dbusUnitySessionService, qPrintable(signal.prepend(QSIGNAL_CODE)));
104201
105− DBusGnomeSessionManagerWrapper dbusGnomeSessionManagerWrapper;
202+ DBusGnomeSessionManagerDialogWrapper dbusGnomeSessionManagerDialogWrapper;
106203 QCoreApplication::processEvents(); // to let the service register on DBus
107204
108205 QDBusInterface dbusGnomeSessionWrapper("com.canonical.Unity",
@@ -138,14 +235,7 @@ private Q_SLOTS:
138235
139236 void testUserName() {
140237 DBusUnitySessionService dbusUnitySessionService;
141− QCoreApplication::processEvents(); // to let the service register on DBus
142−
143− QProcess * proc = new QProcess(this);
144− proc->start("id -un", QProcess::ReadOnly);
145− proc->waitForFinished();
146− const QByteArray out = proc->readAll().trimmed();
147−
148− QCOMPARE(dbusUnitySessionService.UserName(), QString::fromUtf8(out));
238+ QCOMPARE(dbusUnitySessionService.UserName(), QString("testuser"));
149239 }
150240
151241 void testRealName() {
@@ -162,6 +252,35 @@ private Q_SLOTS:
162252 }
163253 }
164254
255+ void testCanLock() {
256+ DBusUnitySessionService dbusUnitySessionService;
257+
258+ qputenv("TEST_USER", "testuser");
259+ QVERIFY(dbusUnitySessionService.CanLock());
260+
261+ qputenv("TEST_USER", "guest-abcdef"); // guest-* can't lock
262+ QVERIFY(!dbusUnitySessionService.CanLock());
263+
264+ qputenv("TEST_USER", "testuser");
265+ qputenv("TEST_NOPASSWD_USERS", "testuser"); // nopasswdlogin can't lock
266+ QVERIFY(!dbusUnitySessionService.CanLock());
267+ }
268+
269+ void testPromptLockRespectsCanLock() {
270+ DBusUnitySessionService dbusUnitySessionService;
271+
272+ QSignalSpy spy(&dbusUnitySessionService, SIGNAL(lockRequested()));
273+ QVERIFY(dbusUnitySessionService.CanLock());
274+ dbusUnitySessionService.PromptLock();
275+ QCOMPARE(spy.count(), 1);
276+
277+ spy.clear();
278+ qputenv("TEST_USER", "guest-abcdef");
279+ QVERIFY(!dbusUnitySessionService.CanLock());
280+ dbusUnitySessionService.PromptLock();
281+ QCOMPARE(spy.count(), 0);
282+ }
283+
165284private:
166285 QDBusInterface *dbusUnitySession;
167286};
tests/plugins/WindowManager/CMakeLists.txtnew file+38
@@ -0,0 +1,38 @@
1+include_directories(
2+ ${CMAKE_SOURCE_DIR}/plugins/WindowManager
3+ ${CMAKE_CURRENT_BINARY_DIR}
4+ ${CMAKE_SOURCE_DIR}/tests/mocks
5+ ${libunity8-private_SOURCE_DIR}
6+ )
7+
8+add_executable(TopLevelWindowModelTestExec
9+ tst_TopLevelWindowModel.cpp
10+ UnityApplicationMocks.h
11+
12+ ${CMAKE_SOURCE_DIR}/tests/mocks/Unity/Application/MirSurfaceListModel.cpp
13+
14+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
15+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
16+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
17+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
18+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceListInterface.h
19+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/SurfaceManagerInterface.h
20+ )
21+qt5_use_modules(TopLevelWindowModelTestExec Test Core Gui Qml Quick)
22+
23+target_link_libraries(TopLevelWindowModelTestExec
24+ windowmanager-qml
25+ unity8-private
26+ )
27+
28+install(TARGETS TopLevelWindowModelTestExec
29+ DESTINATION "${SHELL_PRIVATE_LIBDIR}/tests/plugins/WindowManager"
30+)
31+
32+# To find libwindowmanager-qml.so
33+set_target_properties(TopLevelWindowModelTestExec PROPERTIES
34+ INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}")
35+
36+add_unity8_unittest(TopLevelWindowModel TopLevelWindowModelTestExec
37+ ENVIRONMENT LD_LIBRARY_PATH=${UNITY_PLUGINPATH}/WindowManager
38+)
tests/plugins/WindowManager/UnityApplicationMocks.hnew file+228
@@ -0,0 +1,228 @@
1+/*
2+ * Copyright (C) 2017 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 UNITYAPPLICATIONMOCKS_H
18+#define UNITYAPPLICATIONMOCKS_H
19+
20+#include <unity/shell/application/ApplicationInfoInterface.h>
21+#include <unity/shell/application/ApplicationManagerInterface.h>
22+#include <unity/shell/application/MirSurfaceInterface.h>
23+#include <unity/shell/application/SurfaceManagerInterface.h>
24+
25+// from tests/mocks
26+#include <Unity/Application/MirSurfaceListModel.h>
27+
28+#include "wmpolicyinterface.h"
29+
30+using namespace unity::shell::application;
31+
32+class MirSurface : public MirSurfaceInterface
33+{
34+ Q_OBJECT
35+public:
36+ Mir::Type type() const override { return m_type; }
37+ QString name() const override { return QString("foo"); }
38+ QString persistentId() const override { return QString("a-b-c-my-id"); }
39+ QString appId() const override { return QString(); }
40+ QPoint position() const override { return QPoint(); }
41+ QSize size() const override { return QSize(); }
42+ void resize(int, int) override {}
43+ void resize(const QSize &) override {}
44+ Mir::State state() const override { return m_state; }
45+ bool live() const override { return m_live; }
46+ bool visible() const override { return true; }
47+ Mir::OrientationAngle orientationAngle() const override { return Mir::Angle0; }
48+ void setOrientationAngle(Mir::OrientationAngle) override {}
49+
50+ int minimumWidth() const override { return 0; }
51+ int minimumHeight() const override { return 0; }
52+ int maximumWidth() const override { return 0; }
53+ int maximumHeight() const override { return 0; }
54+ int widthIncrement() const override { return 0; }
55+ int heightIncrement() const override { return 0; }
56+
57+ void setKeymap(const QString &) override {}
58+ QString keymap() const override { return QString(); }
59+ Mir::ShellChrome shellChrome() const override { return Mir::NormalChrome; }
60+ bool focused() const override { return true; }
61+ QRect inputBounds() const override { return QRect(); }
62+ bool confinesMousePointer() const override { return false; }
63+ bool allowClientResize() const override { return true; }
64+ void setAllowClientResize(bool) override {}
65+ QPoint requestedPosition() const override { return QPoint(); }
66+ void setRequestedPosition(const QPoint &) override {}
67+ MirSurfaceInterface* parentSurface() const override { return nullptr; }
68+ unity::shell::application::MirSurfaceListInterface* childSurfaceList() const override { return nullptr; }
69+ void close() override {}
70+ void activate() override {}
71+
72+public Q_SLOTS:
73+ void requestState(Mir::State value) override
74+ {
75+ if (m_state != value) {
76+ m_state = value;
77+ Q_EMIT stateChanged(m_state);
78+ }
79+ }
80+
81+public:
82+ Mir::Type m_type { Mir::NormalType };
83+ Mir::State m_state { Mir::RestoredState };
84+ bool m_live { true };
85+};
86+
87+class SurfaceManager : public SurfaceManagerInterface
88+{
89+ Q_OBJECT
90+
91+public:
92+ void forEachSurfaceInWorkspace(const std::shared_ptr<miral::Workspace>&,
93+ const std::function<void(unity::shell::application::MirSurfaceInterface*)>&) override {}
94+ void moveSurfaceToWorkspace(unity::shell::application::MirSurfaceInterface*,
95+ const std::shared_ptr<miral::Workspace>&) override {}
96+ void moveWorkspaceContentToWorkspace(const std::shared_ptr<miral::Workspace>&,
97+ const std::shared_ptr<miral::Workspace>&) override {}
98+
99+ void raise(MirSurfaceInterface *) override {}
100+ void activate(MirSurfaceInterface *) override {}
101+};
102+
103+class Application : public ApplicationInfoInterface
104+{
105+ Q_OBJECT
106+public:
107+ Application(QString appId) : ApplicationInfoInterface(appId, nullptr), m_appId(std::move(appId)) {}
108+
109+ void close() override {}
110+ QString appId() const override { return m_appId;}
111+ QString name() const override { return "foo"; }
112+ QString comment() const override { return "bar"; }
113+ QUrl icon() const override { return QUrl(); }
114+ State state() const override { return m_state; }
115+ RequestedState requestedState() const override { return m_requestedState; }
116+ void setRequestedState(RequestedState value) override
117+ {
118+ if (value != m_requestedState) {
119+ m_requestedState = value;
120+ Q_EMIT requestedStateChanged(value);
121+ }
122+ }
123+ bool focused() const override { return false; }
124+ QString splashTitle() const override { return QString(); }
125+ QUrl splashImage() const override { return QUrl(); }
126+ bool splashShowHeader() const override { return false; }
127+ QColor splashColor() const override { return QColor(); }
128+ QColor splashColorHeader() const override { return QColor(); }
129+ QColor splashColorFooter() const override { return QColor(); }
130+ Qt::ScreenOrientations supportedOrientations() const override { return Qt::LandscapeOrientation; }
131+ bool rotatesWindowContents() const override { return false; }
132+ bool isTouchApp() const override { return false; }
133+ bool exemptFromLifecycle() const override { return false; }
134+ void setExemptFromLifecycle(bool) override {}
135+ QSize initialSurfaceSize() const override { return QSize(); }
136+ void setInitialSurfaceSize(const QSize &) override {}
137+ MirSurfaceListInterface* surfaceList() const override { return &m_surfaceList; }
138+ MirSurfaceListInterface* promptSurfaceList() const override { return nullptr; }
139+ int surfaceCount() const override { return 0; }
140+
141+ QString m_appId;
142+ State m_state;
143+ RequestedState m_requestedState;
144+ mutable MirSurfaceListModel m_surfaceList;
145+};
146+
147+class ApplicationManager : public ApplicationManagerInterface
148+{
149+ Q_OBJECT
150+
151+public:
152+
153+ int rowCount(const QModelIndex &) const override
154+ {
155+ return m_applications.count();
156+ }
157+
158+ QVariant data(const QModelIndex &/*index*/, int /*role*/) const override
159+ {
160+ return QVariant();
161+ }
162+
163+ QString focusedApplicationId() const override {return QString();}
164+
165+ ApplicationInfoInterface *get(int index) const override
166+ {
167+ return m_applications[index];
168+ }
169+
170+ ApplicationInfoInterface *findApplication(const QString &appId) const override
171+ {
172+ Q_UNUSED(appId);
173+ return nullptr;
174+ }
175+
176+ ApplicationInfoInterface *findApplicationWithSurface(MirSurfaceInterface* surface) const override
177+ {
178+ for (int i = 0; i < m_applications.count(); ++i) {
179+ if (m_applications[i]->m_surfaceList.contains(surface)) {
180+ return m_applications[i];
181+ }
182+ }
183+ return nullptr;
184+ }
185+
186+ bool requestFocusApplication(const QString &appId) override
187+ {
188+ Q_UNUSED(appId);
189+ return false;
190+ }
191+
192+ ApplicationInfoInterface *startApplication(const QString &appId, const QStringList &/*arguments*/) override
193+ {
194+ Application *application = new Application(appId);
195+ prepend(application);
196+ return application;
197+ }
198+
199+ bool stopApplication(const QString &) override { return true; }
200+
201+private:
202+ void prepend(Application *application)
203+ {
204+ beginInsertRows(QModelIndex(), 0 /*first*/, 0 /*last*/);
205+ m_applications.append(application);
206+ endInsertRows();
207+ }
208+
209+ QList<Application*> m_applications;
210+};
211+
212+namespace miral {
213+class Workspace {};
214+}
215+
216+class WindowManagementPolicy : public WMPolicyInterface
217+{
218+public:
219+ WindowManagementPolicy() {}
220+
221+ std::shared_ptr<miral::Workspace> createWorkspace() override { return std::make_shared<miral::Workspace>(); }
222+
223+ void releaseWorkspace(const std::shared_ptr<miral::Workspace>&) override {}
224+
225+ void setActiveWorkspace(const std::shared_ptr<miral::Workspace>&) override {}
226+};
227+
228+#endif // UNITYAPPLICATIONMOCKS_H
tests/plugins/WindowManager/tst_TopLevelWindowModel.cppnew file+142
@@ -0,0 +1,142 @@
1+/*
2+ * Copyright (C) 2017 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 <QtTest/QtTest>
18+
19+// WindowManager plugin
20+#include <TopLevelWindowModel.h>
21+#include <Window.h>
22+#include <WindowManagerObjects.h>
23+#include <Workspace.h>
24+#include <WorkspaceManager.h>
25+
26+#include "UnityApplicationMocks.h"
27+#include "wmpolicyinterface.h"
28+
29+
30+class tst_TopLevelWindowModel : public QObject
31+{
32+ Q_OBJECT
33+
34+private Q_SLOTS:
35+ void init(); // called right before each and every test function is executed
36+ void cleanup(); // called right after each and every test function is executed
37+
38+ void singleSurfaceStartsHidden();
39+ void secondSurfaceIsHidden();
40+
41+private:
42+ Workspace* workspace{nullptr};
43+ ApplicationManager *applicationManager{nullptr};
44+ SurfaceManager *surfaceManager{nullptr};
45+ TopLevelWindowModel *topLevelWindowModel{nullptr};
46+};
47+
48+void tst_TopLevelWindowModel::init()
49+{
50+ wmPolicyInterface = new WindowManagementPolicy();
51+
52+ applicationManager = new ApplicationManager;
53+ surfaceManager = new SurfaceManager;
54+ WindowManagerObjects::instance()->setApplicationManager(applicationManager);
55+ WindowManagerObjects::instance()->setSurfaceManager(surfaceManager);
56+
57+ workspace = WorkspaceManager::instance()->createWorkspace();
58+ topLevelWindowModel = workspace->windowModel();
59+}
60+
61+void tst_TopLevelWindowModel::cleanup()
62+{
63+ delete workspace;
64+ workspace = nullptr;
65+
66+ delete surfaceManager;
67+ surfaceManager = nullptr;
68+
69+ delete applicationManager;
70+ applicationManager = nullptr;
71+
72+ delete wmPolicyInterface;
73+ wmPolicyInterface = nullptr;
74+}
75+
76+void tst_TopLevelWindowModel::singleSurfaceStartsHidden()
77+{
78+ QCOMPARE(topLevelWindowModel->rowCount(), 0);
79+
80+ auto application = static_cast<Application*>(applicationManager->startApplication(QString("hello-world"), QStringList()));
81+
82+ QCOMPARE(topLevelWindowModel->rowCount(), 1);
83+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)nullptr);
84+
85+ auto surface = new MirSurface;
86+ surface->m_state = Mir::HiddenState;
87+ application->m_surfaceList.addSurface(surface);
88+ Q_EMIT surfaceManager->surfacesAddedToWorkspace(workspace->workspace(), {surface});
89+
90+ QCOMPARE(topLevelWindowModel->rowCount(), 1);
91+ // not showing the surface as it's still hidden
92+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)nullptr);
93+
94+ surface->requestState(Mir::RestoredState);
95+
96+ QCOMPARE(topLevelWindowModel->rowCount(), 1);
97+ // Now that the surface is no longer hidden, TopLevelWindowModel should expose it.
98+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)surface);
99+}
100+
101+void tst_TopLevelWindowModel::secondSurfaceIsHidden()
102+{
103+ QCOMPARE(topLevelWindowModel->rowCount(), 0);
104+
105+ auto application = static_cast<Application*>(applicationManager->startApplication(QString("hello-world"), QStringList()));
106+
107+ QCOMPARE(topLevelWindowModel->rowCount(), 1);
108+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)nullptr);
109+
110+ auto firstSurface = new MirSurface;
111+ application->m_surfaceList.addSurface(firstSurface);
112+ Q_EMIT surfaceManager->surfacesAddedToWorkspace(workspace->workspace(), {firstSurface});
113+
114+ QCOMPARE(topLevelWindowModel->rowCount(), 1);
115+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)firstSurface);
116+
117+ auto secondSurface = new MirSurface;
118+ secondSurface->m_state = Mir::HiddenState;
119+ application->m_surfaceList.addSurface(secondSurface);
120+ Q_EMIT surfaceManager->surfacesAddedToWorkspace(workspace->workspace(), {secondSurface});
121+
122+ // still only the first surface is exposed by TopLevelWindowModel
123+ QCOMPARE(topLevelWindowModel->rowCount(), 1);
124+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)firstSurface);
125+
126+ secondSurface->requestState(Mir::RestoredState);
127+
128+ // now the second surface finally shows up
129+ QCOMPARE(topLevelWindowModel->rowCount(), 2);
130+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)secondSurface);
131+ QCOMPARE((void*)topLevelWindowModel->windowAt(1)->surface(), (void*)firstSurface);
132+
133+ secondSurface->requestState(Mir::HiddenState);
134+
135+ // and it's gone again
136+ QCOMPARE(topLevelWindowModel->rowCount(), 1);
137+ QCOMPARE((void*)topLevelWindowModel->windowAt(0)->surface(), (void*)firstSurface);
138+}
139+
140+QTEST_MAIN(tst_TopLevelWindowModel)
141+
142+#include "tst_TopLevelWindowModel.moc"
tests/qmltests/ApplicationMenus/tst_MenuBar.qml+101
@@ -74,6 +74,12 @@ Item {
7474 signalName: "activated"
7575 }
7676
77+ SignalSpy {
78+ id: aboutToShowCalledSpy
79+ target: menuBackend
80+ signalName: "aboutToShowCalled"
81+ }
82+
7783 UnityTestCase {
7884 id: testCase
7985 name: "MenuBar"
@@ -113,6 +119,43 @@ Item {
113119 compare(menuItem0.popupVisible, true, "Popup should be visible");
114120 }
115121
122+ function test_aboutToShow() {
123+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
124+ wait(50) // wait for row to build
125+ var priv = findInvisibleChild(menuBar, "d");
126+
127+ var menuItem0 = findChild(menuBar, "menuBar-item0");
128+ var menuItem1 = findChild(menuBar, "menuBar-item1");
129+
130+ aboutToShowCalledSpy.clear();
131+ menuItem0.show();
132+ compare(aboutToShowCalledSpy.count, 1);
133+
134+ menuItem0.show();
135+ // It's already shown so nothing happens
136+ compare(aboutToShowCalledSpy.count, 1);
137+
138+ menuItem0.hide();
139+ menuItem0.show();
140+ compare(aboutToShowCalledSpy.count, 2);
141+
142+ menuItem0.dismiss();
143+ menuItem0.show();
144+ compare(aboutToShowCalledSpy.count, 3);
145+
146+ menuItem1.show();
147+ compare(aboutToShowCalledSpy.count, 4);
148+
149+ menuItem0.show();
150+ compare(aboutToShowCalledSpy.count, 5);
151+
152+ compare(aboutToShowCalledSpy.signalArguments[0][0], 0);
153+ compare(aboutToShowCalledSpy.signalArguments[1][0], 0);
154+ compare(aboutToShowCalledSpy.signalArguments[2][0], 0);
155+ compare(aboutToShowCalledSpy.signalArguments[3][0], 1);
156+ compare(aboutToShowCalledSpy.signalArguments[4][0], 0);
157+ }
158+
116159 function test_keyboardNavigation_RightKeySelectsNextMenuItem(data) {
117160 menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
118161 var priv = findInvisibleChild(menuBar, "d");
@@ -181,6 +224,30 @@ Item {
181224 keyRelease(data.tag, Qt.AltModifier, 100);
182225 }
183226
227+ function test_disabledTopLevel() {
228+ var modelData = appMenuData.generateTestData(3,3,0,0,"menu");
229+ modelData[1].rowData.sensitive = false;
230+ menuBackend.modelData = modelData;
231+
232+ var priv = findInvisibleChild(menuBar, "d");
233+
234+ var menuItem0 = findChild(menuBar, "menuBar-item0"); verify(menuItem0);
235+ var menuItem2 = findChild(menuBar, "menuBar-item2"); verify(menuItem2);
236+
237+ menuItem0.show();
238+ compare(menuItem0.popupVisible, true, "Popup should be visible");
239+
240+ keyClick(Qt.Key_Right);
241+ compare(priv.currentItem, menuItem2);
242+ compare(menuItem2.popupVisible, true);
243+ compare(menuItem0.popupVisible, false);
244+
245+ keyClick(Qt.Key_Left);
246+ compare(priv.currentItem, menuItem0);
247+ compare(menuItem2.popupVisible, false);
248+ compare(menuItem0.popupVisible, true);
249+ }
250+
184251 function test_menuActivateClosesMenu() {
185252 menuBackend.modelData = appMenuData.generateTestData(3,3,0,0,"menu");
186253 var priv = findInvisibleChild(menuBar, "d");
@@ -269,5 +336,39 @@ Item {
269336 return false;
270337 }, true);
271338 }
339+
340+ function test_firstDisabled() {
341+ var data = appMenuData.generateTestData(10,5,2,3);
342+ data[0].submenu[1].submenu[0].rowData.sensitive = false;
343+ menuBackend.modelData = data;
344+
345+ var menuItem = findChild(menuBar, "menuBar-item0");
346+ menuItem.show();
347+
348+ // waits for item to be created so the keyclick actually works
349+ findChild(menuBar, "menuBar-item0-menu-item1-actionItem");
350+
351+ keyClick(Qt.Key_Down);
352+ keyClick(Qt.Key_Down);
353+ keyClick(Qt.Key_Right);
354+
355+ var submenu = findChild(menuBar, "menuBar-item0-menu-item1-menu");
356+ var priv = findInvisibleChild(submenu, "d");
357+ var subActionItem1 = findChild(submenu, "menuBar-item0-menu-item1-menu-item1-actionItem");
358+ compare(priv.currentItem.item, subActionItem1);
359+
360+ keyClick(Qt.Key_Down);
361+ var subActionItem3 = findChild(submenu, "menuBar-item0-menu-item1-menu-item3-actionItem");
362+ compare(priv.currentItem.item, subActionItem3);
363+
364+ // now move mouse over to a different item and back to exercise a different codepath
365+ var actionItem0 = findChild(menuBar, "menuBar-item0-menu-item0-actionItem");
366+ mouseMove(actionItem0, actionItem0.width/2, actionItem0.height/2);
367+
368+ var actionItem1 = findChild(menuBar, "menuBar-item0-menu-item1-actionItem");
369+ mouseMove(actionItem1, actionItem1.width/2, actionItem1.height/2);
370+
371+ tryCompareFunction(function() { return priv.currentItem.item == subActionItem1; }, true);
372+ }
272373 }
273374}
tests/qmltests/ApplicationMenus/tst_MenuPopup.qml+51−23
@@ -59,18 +59,13 @@ Item {
5959 }}
6060 ]
6161 }
62−
63− Binding {
64− target: activatedSpy
65− property: "target"
66− value: unityMenuModel
67− }
6862 }
6963 }
7064
7165 SignalSpy {
72− id: activatedSpy
73− signalName: "activated"
66+ id: aboutToShowCalledSpy
67+ target: loader.item ? loader.item.unityMenuModel : undefined
68+ signalName: "aboutToShowCalled"
7469 }
7570
7671 UnityTestCase {
@@ -88,7 +83,6 @@ Item {
8883 function cleanup() {
8984 menu.reset();
9085 wait(100); // let the page dismiss
91− activatedSpy.clear();
9286
9387 loader.active = false;
9488 tryCompare(loader, "item", null);
@@ -159,9 +153,6 @@ Item {
159153
160154 var priv = findInvisibleChild(menu, "d");
161155
162− keyClick(Qt.Key_Down, Qt.NoModifier);
163− compare(priv.currentItem, item0, "CurrentItem should have moved to item 0");
164−
165156 keyClick(Qt.Key_Down, Qt.NoModifier);
166157 compare(priv.currentItem, item1, "CurrentItem should have moved to item 1");
167158
@@ -170,6 +161,9 @@ Item {
170161
171162 keyClick(Qt.Key_Down, Qt.NoModifier);
172163 compare(priv.currentItem, item0, "CurrentItem should have moved to item 0");
164+
165+ keyClick(Qt.Key_Down, Qt.NoModifier);
166+ compare(priv.currentItem, item1, "CurrentItem should have moved to item 1");
173167 }
174168
175169 function test_keyboardNavigation_UpKeySelectsAndOpensPreviousMenuItemAndRotates() {
@@ -181,17 +175,48 @@ Item {
181175
182176 var priv = findInvisibleChild(menu, "d");
183177
184− keyClick(Qt.Key_Down, Qt.NoModifier);
185− compare(priv.currentItem, item0, "CurrentItem should have moved to item 2");
178+ keyClick(Qt.Key_Up, Qt.NoModifier);
179+ compare(priv.currentItem, item2, "CurrentItem should have moved to item 2");
186180
187− keyClick(Qt.Key_Down, Qt.NoModifier);
181+ keyClick(Qt.Key_Up, Qt.NoModifier);
188182 compare(priv.currentItem, item1, "CurrentItem should have moved to item 1");
189183
190− keyClick(Qt.Key_Down, Qt.NoModifier);
191− compare(priv.currentItem, item2, "CurrentItem should have moved to item 0");
184+ keyClick(Qt.Key_Up, Qt.NoModifier);
185+ compare(priv.currentItem, item0, "CurrentItem should have moved to item 0");
192186
193− keyClick(Qt.Key_Down, Qt.NoModifier);
194− compare(priv.currentItem, item0, "CurrentItem should have moved to item 2");
187+ keyClick(Qt.Key_Up, Qt.NoModifier);
188+ compare(priv.currentItem, item2, "CurrentItem should have moved to item 2");
189+ }
190+
191+ function test_aboutToShow() {
192+ menu.unityMenuModel.modelData = appMenuData.generateTestData(3,3,1,0,"menu",false);
193+
194+ var item0 = findChild(menu, "menu-item0");
195+ var item1 = findChild(menu, "menu-item1");
196+ var item2 = findChild(menu, "menu-item2");
197+
198+ aboutToShowCalledSpy.clear();
199+
200+ mouseMove(item0, item0.width/2, item0.height/2);
201+ tryCompare(aboutToShowCalledSpy, "count", 1);
202+
203+ mouseMove(item1, item0.width/2, item0.height/2);
204+ tryCompare(aboutToShowCalledSpy, "count", 2);
205+
206+ mouseMove(item2, item0.width/2, item0.height/2);
207+ tryCompare(aboutToShowCalledSpy, "count", 3);
208+
209+ mouseMove(item0, item0.width/2, item0.height/2);
210+ tryCompare(aboutToShowCalledSpy, "count", 4);
211+
212+ item0.item.trigger();
213+ // it's already visible
214+ tryCompare(aboutToShowCalledSpy, "count", 4);
215+
216+ compare(aboutToShowCalledSpy.signalArguments[0][0], 0);
217+ compare(aboutToShowCalledSpy.signalArguments[1][0], 1);
218+ compare(aboutToShowCalledSpy.signalArguments[2][0], 2);
219+ compare(aboutToShowCalledSpy.signalArguments[3][0], 0);
195220 }
196221
197222 function test_keyboardNavigation_RightKeyEntersSubMenu() {
@@ -217,7 +242,7 @@ Item {
217242
218243 var menuItem = findChild(menu, "menu-item0"); verify(menuItem);
219244 mouseClick(menuItem, menuItem.width/2, menuItem.height/2);
220− tryCompareFunction(function() { return menuItem.popup !== null && menuItem.popup.visible }, true);
245+ tryCompareFunction(function() { return menuItem.popup !== null && findInvisibleChild(menuItem.popup, "d").currentItem !== null }, true);
221246
222247 keyClick(Qt.Key_Left, Qt.NoModifier);
223248 tryCompareFunction(function() { return menuItem.popup !== null && menuItem.popup.visible }, false);
@@ -245,13 +270,16 @@ Item {
245270
246271 menu.unityMenuModel.modelData = differentSizesMenu;
247272
248− waitForRendering(menu);
273+ // Wait for the two items to be there
274+ tryCompareFunction(function() { return findChild(menu, "menu-item1") !== null; }, true);
249275 var longWidth = menu.width;
276+
277+ // Now pop one item and make sure it's smaller
250278 differentSizesMenu.pop();
251279 menu.unityMenuModel.modelData = differentSizesMenu;
252280
253− waitForRendering(menu);
254− verify(menu.width < longWidth);
281+ tryCompareFunction(function() { return findChild(menu, "menu-item0") !== null; }, true);
282+ tryCompareFunction(function() { return menu.width < longWidth; }, true);
255283 }
256284
257285 function test_minimumWidth() {
tests/qmltests/Launcher/tst_Drawer.qml+39
@@ -328,5 +328,44 @@ StyledItem {
328328
329329 tryCompare(launcher, "state", "visibleTemporary");
330330 }
331+
332+ function test_focusMovesCorrectlyBetweenLauncherAndDrawer() {
333+ var panel = findChild(launcher, "launcherPanel");
334+ var drawer = findChild(launcher, "drawer");
335+ var searchField = findChild(drawer, "searchField");
336+
337+ launcher.openForKeyboardNavigation();
338+ tryCompare(panel, "highlightIndex", -1);
339+ keyClick(Qt.Key_Down);
340+ tryCompare(panel, "highlightIndex", 0);
341+
342+ launcher.openDrawer(true);
343+ tryCompare(searchField, "focus", true);
344+
345+ keyClick(Qt.Key_Escape);
346+
347+ launcher.openForKeyboardNavigation();
348+ tryCompare(panel, "highlightIndex", -1);
349+ keyClick(Qt.Key_Down);
350+ tryCompare(panel, "highlightIndex", 0);
351+ }
352+
353+ function test_closeWhileDragging() {
354+ launcher.openDrawer(true);
355+ waitForRendering(launcher);
356+ waitUntilTransitionsEnd(launcher);
357+
358+ var drawer = findChild(launcher, "drawer");
359+ tryCompare(drawer.anchors, "rightMargin", -drawer.width);
360+
361+ mousePress(drawer, drawer.width / 2, drawer.height / 2);
362+ mouseMove(drawer, drawer.width / 4, drawer.height / 2);
363+ tryCompare(drawer, "draggingHorizontally", true);
364+
365+ keyPress(Qt.Key_Escape);
366+
367+ tryCompare(launcher, "state", "");
368+ tryCompare(drawer, "draggingHorizontally", false);
369+ }
331370 }
332371}
tests/qmltests/Launcher/tst_Launcher.qml+42
@@ -95,6 +95,11 @@ Rectangle {
9595 property: "lockedVisible"
9696 value: lockedVisibleCheckBox.checked
9797 }
98+ Binding {
99+ target: launcherLoader.item
100+ property: "privateMode"
101+ value: privateModeCheckBox.checked
102+ }
98103 Binding {
99104 target: launcherLoader.item
100105 property: "panelWidth"
@@ -120,6 +125,20 @@ Rectangle {
120125 }
121126 }
122127
128+ RowLayout {
129+ CheckBox {
130+ id: privateModeCheckBox
131+ checked: false
132+ }
133+ Label {
134+ text: "Private mode (lockscreen locked)"
135+ AbstractButton {
136+ anchors.fill: parent
137+ onClicked: privateModeCheckBox.checked = !privateModeCheckBox.checked
138+ }
139+ }
140+ }
141+
123142 Slider {
124143 id: widthSlider
125144 Layout.fillWidth: true
@@ -1242,6 +1261,7 @@ Rectangle {
12421261 keyClick(Qt.Key_Down);
12431262 keyClick(Qt.Key_Down);
12441263 keyClick(Qt.Key_Down);
1264+ keyClick(Qt.Key_Down);
12451265 tryCompare(quickList, "selectedIndex", 0)
12461266
12471267 // Left gets us back to the launcher
@@ -1493,6 +1513,28 @@ Rectangle {
14931513 compare(launcher.state, "visibleTemporary");
14941514 }
14951515
1516+ function test_hideQuicklistItemsInPrivateModel_data() {
1517+ return [
1518+ { tag: "private mode", private: true },
1519+ { tag: "normal mode", private: false }
1520+ ];
1521+ }
1522+
1523+ function test_hideQuicklistItemsInPrivateModel(data) {
1524+ privateModeCheckBox.checked = data.private;
1525+
1526+ revealByEdgePush();
1527+
1528+ var item = findChild(launcher, "launcherDelegate4");
1529+ var quickListShape = findChild(launcher, "quickListShape")
1530+
1531+ mousePress(item)
1532+ tryCompare(quickListShape, "visible", true)
1533+
1534+ var repeater = findChild(launcher, "popoverRepeater");
1535+ tryCompare(repeater, "count", LauncherModel.get(4).quickList.count - (data.private ? 1 : 0))
1536+ }
1537+
14961538 function test_hintOnSizeChange() {
14971539 var oldSize = launcher.panelWidth;
14981540 launcher.maxPanelX = -launcher.panelWidth;
tests/qmltests/Panel/tst_Panel.qml+66−5
@@ -57,6 +57,11 @@ PanelTest {
5757 color: "darkgrey"
5858 }
5959
60+ SignalSpy {
61+ id: aboutToShowCalledSpy
62+ signalName: "aboutToShowCalled"
63+ }
64+
6065 RowLayout {
6166 anchors.fill: parent
6267 anchors.margins: units.gu(1)
@@ -315,12 +320,15 @@ PanelTest {
315320 tryCompare(panel.indicators, "fullyOpened", true);
316321 }
317322
318− function pullDownApplicationsMenu() {
323+ function pullDownApplicationsMenu(xPos) {
319324 var showDragHandle = findChild(panel.applicationMenus, "showDragHandle");
325+ if (xPos === undefined) {
326+ xPos = showDragHandle.width / 2;
327+ }
320328 touchFlick(showDragHandle,
321− showDragHandle.width / 2,
329+ xPos,
322330 showDragHandle.height / 2,
323− showDragHandle.width / 2,
331+ xPos,
324332 showDragHandle.height / 2 + (showDragHandle.autoCompleteDragThreshold * 1.1));
325333 tryCompare(panel.applicationMenus, "fullyOpened", true);
326334 }
@@ -769,7 +777,7 @@ PanelTest {
769777 panel.mode = "staged";
770778 mouseEmulation.checked = false;
771779
772− var appTitle = findChild(panel.applicationMenus, "panelTitle"); verify(appTitle);
780+ var appTitle = findChild(panel, "panelTitle"); verify(appTitle);
773781 var appMenuRow = findChild(panel.applicationMenus, "panelRow"); verify(appMenuRow);
774782 var appMenuBar = findChild(panel, "menuBar"); verify(appMenuBar);
775783
@@ -787,7 +795,7 @@ PanelTest {
787795 panel.mode = "windowed";
788796 mouseEmulation.checked = false;
789797
790− var appTitle = findChild(panel.applicationMenus, "panelTitle"); verify(appTitle);
798+ var appTitle = findChild(panel, "panelTitle"); verify(appTitle);
791799 var appMenuRow = findChild(panel.applicationMenus, "panelRow"); verify(appMenuRow);
792800 var appMenuBar = findChild(panel, "menuBar"); verify(appMenuBar);
793801
@@ -838,5 +846,58 @@ PanelTest {
838846 keyClick(Qt.Key_Escape);
839847 tryCompare(panel.indicators, "fullyClosed", true);
840848 }
849+
850+ function test_aboutToShowMenu() {
851+ waitForRendering(panel);
852+
853+ aboutToShowCalledSpy.target = panel.applicationMenus.model
854+ aboutToShowCalledSpy.clear();
855+
856+ var indicatorsBar = findChild(panel.applicationMenus, "indicatorsBar");
857+
858+ PanelState.title = "Fake Title"
859+ pullDownApplicationsMenu(0 /*xPos*/);
860+ compare(aboutToShowCalledSpy.count, 1);
861+
862+ keyClick(Qt.Key_Right);
863+ tryCompare(indicatorsBar, "currentItemIndex", 1);
864+ compare(aboutToShowCalledSpy.count, 2);
865+
866+ compare(aboutToShowCalledSpy.signalArguments[0][0], 0);
867+ compare(aboutToShowCalledSpy.signalArguments[1][0], 1);
868+
869+ keyClick(Qt.Key_Tab);
870+ keyClick(Qt.Key_Tab);
871+
872+ aboutToShowCalledSpy.target = panel.applicationMenus.model.submenu(1);
873+ aboutToShowCalledSpy.clear();
874+
875+ keyClick(Qt.Key_Enter);
876+ compare(aboutToShowCalledSpy.count, 1);
877+ }
878+
879+ function test_disabledTopLevel() {
880+ var modelData = appMenuData.generateTestData(3,3,0,0,"menu");
881+ modelData[1].rowData.sensitive = false;
882+ panel.applicationMenus.model.modelData = modelData;
883+
884+ waitForRendering(panel);
885+
886+ aboutToShowCalledSpy.target = panel.applicationMenus.model
887+ aboutToShowCalledSpy.clear();
888+
889+ var indicatorsBar = findChild(panel.applicationMenus, "indicatorsBar");
890+
891+ PanelState.title = "Fake Title"
892+ pullDownApplicationsMenu(0 /*xPos*/);
893+
894+ tryCompare(indicatorsBar, "currentItemIndex", 0);
895+
896+ keyClick(Qt.Key_Right);
897+ tryCompare(indicatorsBar, "currentItemIndex", 2);
898+
899+ keyClick(Qt.Key_Left);
900+ tryCompare(indicatorsBar, "currentItemIndex", 0);
901+ }
841902 }
842903}
tests/qmltests/Stage/tst_TabletStage.qml+33−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015-2016 Canonical, Ltd.
2+ * Copyright (C) 2015-2017 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -759,6 +759,38 @@ Rectangle {
759759 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
760760 }
761761
762+ /*
763+ Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1670361
764+
765+ Clicks near the top window edge (but still inside the window boundaries) should go to
766+ the window (and not get eaten by some translucent decoration like in that bug).
767+ */
768+ function test_clickNearTopEdgeGoesToWindow() {
769+ compare(topLevelSurfaceList.count, 1); // assume unity8-dash is already there
770+
771+ var appDelegate = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(0));
772+ verify(appDelegate);
773+
774+ var surfaceItem = findChild(appDelegate, "surfaceItem");
775+ verify(surfaceItem);
776+
777+ compare(surfaceItem.mousePressCount, 0);
778+ compare(surfaceItem.mouseReleaseCount, 0);
762779
780+ mouseClick(appDelegate, 1, 1); // near top left
781+
782+ compare(surfaceItem.mousePressCount, 1);
783+ compare(surfaceItem.mouseReleaseCount, 1);
784+
785+ mouseClick(appDelegate, appDelegate.width / 2, 1); // near top
786+
787+ compare(surfaceItem.mousePressCount, 2);
788+ compare(surfaceItem.mouseReleaseCount, 2);
789+
790+ mouseClick(appDelegate, appDelegate.width - 1, 1); // near top right
791+
792+ compare(surfaceItem.mousePressCount, 3);
793+ compare(surfaceItem.mouseReleaseCount, 3);
794+ }
763795 }
764796}
tests/qmltests/tst_Shell.qml+227−10
@@ -2518,27 +2518,44 @@ Rectangle {
25182518 tryCompare(app2Surface, "keymap", "fr");
25192519 }
25202520
2521− function test_dragPanelToRestoreMaximizedWindow() {
2521+ function test_dragPanelToRestoreMaximizedWindow_data() {
2522+ return [
2523+ { tag: "with mouse", mouse: true },
2524+ { tag: "with touch", mouse: false }
2525+ ]
2526+ }
2527+
2528+ function test_dragPanelToRestoreMaximizedWindow(data) {
25222529 loadShell("desktop");
25232530 shell.usageScenario = "desktop";
25242531 waitForRendering(shell);
25252532 var panel = findChild(shell, "windowControlArea");
25262533 verify(panel);
25272534
2528− var appSurfaceId = topLevelSurfaceList.nextId;
2529− var app = ApplicationManager.startApplication("dialer-app")
2530− waitUntilAppWindowIsFullyLoaded(appSurfaceId);
2531−
25322535 // start dialer, maximize it
2533− var appContainer = findChild(shell, "appContainer");
2534− var appDelegate = findChild(appContainer, "appDelegate_" + appSurfaceId);
2536+ var appDelegate = startApplication("dialer-app");
25352537 verify(appDelegate);
2538+
25362539 var maximizeButton = findChild(appDelegate, "maximizeWindowButton");
2537− mouseClick(maximizeButton);
2540+ if (data.mouse) {
2541+ mouseClick(maximizeButton);
2542+ } else {
2543+ tap(maximizeButton);
2544+ }
25382545
2546+ waitUntilTransitionsEnd(appDelegate);
25392547 tryCompare(appDelegate, "state", "maximized");
25402548
2541− mouseDrag(panel, panel.width/2, panel.height/2, 0, shell.height/3, Qt.LeftButton, Qt.NoModifier, 500);
2549+ if (data.mouse) {
2550+ mouseMove(panel, panel.width/2, panel.panelHeight/2); // to reveal the menus
2551+ var menuBarLoader = findInvisibleChild(panel, "menuBarLoader");
2552+ verify(menuBarLoader);
2553+ tryCompare(menuBarLoader.item, "visible", true);
2554+ mouseDrag(panel, panel.width/2, panel.height/2, 0, shell.height/3, Qt.LeftButton, Qt.NoModifier, 500);
2555+ } else {
2556+ touchFlick(panel, panel.width/2, panel.panelHeight/2, panel.width/2, shell.height/3);
2557+ }
2558+
25422559 tryCompare(appDelegate, "state", "restored");
25432560 }
25442561
@@ -2853,7 +2870,7 @@ Rectangle {
28532870 loadShell(data.tag);
28542871
28552872 var panel = findChild(shell, "panel"); verify(panel);
2856− var panelTitle = findChild(panel.applicationMenus, "panelTitle"); verify(panelTitle);
2873+ var panelTitle = findChild(panel, "panelTitle"); verify(panelTitle);
28572874 compare(panelTitle.visible, false, "Panel title should not be visible when greeter is shown");
28582875
28592876 swipeAwayGreeter();
@@ -2918,6 +2935,86 @@ Rectangle {
29182935 tryCompare(appDelegate, "state", "maximizedRight");
29192936 }
29202937
2938+
2939+ function test_closeAppsInSpreadWithQ() {
2940+ loadShell("desktop");
2941+ shell.usageScenario = "desktop";
2942+ waitForRendering(shell);
2943+ swipeAwayGreeter();
2944+
2945+ var appSurfaceId = topLevelSurfaceList.nextId;
2946+ var app = ApplicationManager.startApplication("dialer-app")
2947+ waitUntilAppWindowIsFullyLoaded(appSurfaceId);
2948+
2949+ appSurfaceId = topLevelSurfaceList.nextId;
2950+ app = ApplicationManager.startApplication("calendar-app")
2951+ waitUntilAppWindowIsFullyLoaded(appSurfaceId);
2952+
2953+ keyPress(Qt.Key_Alt);
2954+ keyClick(Qt.Key_Tab);
2955+
2956+ var stage = findChild(shell, "stage");
2957+ var spread = findChild(stage, "spreadItem");
2958+ var appRepeater = findChild(stage, "appRepeater");
2959+
2960+ tryCompare(stage, "state", "spread");
2961+
2962+ tryCompare(ApplicationManager, "count", 3);
2963+ tryCompareFunction(function() {return appRepeater.itemAt(spread.highlightedIndex).appId == "dialer-app"}, true);
2964+
2965+ // Close one app with Q while in spread
2966+ keyClick(Qt.Key_Q);
2967+
2968+ tryCompare(ApplicationManager, "count", 2);
2969+
2970+ // Now the dash should be highlighted
2971+ tryCompareFunction(function() {return appRepeater.itemAt(spread.highlightedIndex).appId == "unity8-dash"}, true);
2972+
2973+ keyClick(Qt.Key_Q);
2974+
2975+ // Dash is not closeable, should still be 2
2976+ tryCompare(ApplicationManager, "count", 2);
2977+
2978+ // Move to the next one, should be closable again
2979+ keyClick(Qt.Key_Tab);
2980+ tryCompareFunction(function() {return appRepeater.itemAt(spread.highlightedIndex).appId == "calendar-app"}, true);
2981+
2982+ // close it
2983+ keyClick(Qt.Key_Q);
2984+ tryCompare(ApplicationManager, "count", 1);
2985+
2986+ keyRelease(Qt.Key_Alt);
2987+
2988+ // Now start the apps again
2989+ appSurfaceId = topLevelSurfaceList.nextId;
2990+ app = ApplicationManager.startApplication("dialer-app");
2991+ waitUntilAppWindowIsFullyLoaded(appSurfaceId);
2992+
2993+ appSurfaceId = topLevelSurfaceList.nextId;
2994+ app = ApplicationManager.startApplication("calendar-app");
2995+ waitUntilAppWindowIsFullyLoaded(appSurfaceId);
2996+
2997+ // First focus the dash so it'll be the leftmost in the spread
2998+ ApplicationManager.requestFocusApplication("unity8-dash");
2999+
3000+ keyPress(Qt.Key_Alt);
3001+ keyClick(Qt.Key_Tab);
3002+ tryCompare(stage, "state", "spread");
3003+
3004+ // Move to the last one
3005+ keyClick(Qt.Key_Tab);
3006+
3007+ // Close the last one, make sure the highlight fixes itself to stick within the list
3008+ tryCompare(spread, "highlightedIndex", ApplicationManager.count - 1);
3009+ var oldHighlighted = spread.highlightedIndex;
3010+
3011+ keyClick(Qt.Key_Q);
3012+ tryCompare(spread, "highlightedIndex", oldHighlighted - 1);
3013+
3014+ keyRelease(Qt.Key_Alt);
3015+
3016+ }
3017+
29213018 function test_altTabToMinimizedApp() {
29223019 loadShell("desktop");
29233020 shell.usageScenario = "desktop";
@@ -2946,6 +3043,61 @@ Rectangle {
29463043 tryCompare(topLevelSurfaceList.applicationAt(0), "appId", "dialer-app");
29473044 }
29483045
3046+ function test_touchMenuPosition_data() {
3047+ return [
3048+ { tag: "launcher locked", lockLauncher: true },
3049+ { tag: "launcher not locked", lockLauncher: false }
3050+ ];
3051+ }
3052+
3053+ function test_touchMenuPosition(data) {
3054+ loadShell("desktop");
3055+ shell.usageScenario = "desktop";
3056+ waitForRendering(shell);
3057+ swipeAwayGreeter();
3058+
3059+ var panel = findChild(shell, "panel");
3060+ var launcher = testCase.findChild(shell, "launcher");
3061+ launcher.lockedVisible = data.lockLauncher;
3062+ if (data.lockLauncher) {
3063+ compare(panel.applicationMenus.x, launcher.panelWidth);
3064+ } else {
3065+ compare(panel.applicationMenus.x, 0);
3066+ }
3067+ }
3068+
3069+ function test_touchMenuHidesOnLauncherAppDrawer_data() {
3070+ return [
3071+ { tag: "launcher locked", lockLauncher: true },
3072+ { tag: "launcher not locked", lockLauncher: false }
3073+ ];
3074+ }
3075+
3076+ function test_touchMenuHidesOnLauncherAppDrawer(data) {
3077+ loadShell("desktop");
3078+ shell.usageScenario = "desktop";
3079+ waitForRendering(shell);
3080+ swipeAwayGreeter();
3081+
3082+ var panel = findChild(shell, "panel");
3083+ var launcher = testCase.findChild(shell, "launcher");
3084+ launcher.lockedVisible = data.lockLauncher;
3085+
3086+ waitForRendering(panel.applicationMenus);
3087+
3088+ if (data.lockLauncher) {
3089+ panel.applicationMenus.show();
3090+ tryCompare(panel.applicationMenus, "fullyOpened", true);
3091+ launcher.openDrawer();
3092+ } else {
3093+ tryCompare(launcher, "shown", false);
3094+ panel.applicationMenus.show();
3095+ tryCompare(panel.applicationMenus, "fullyOpened", true);
3096+ launcher.switchToNextState("visible");
3097+ }
3098+ tryCompare(panel.applicationMenus, "fullyClosed", true);
3099+ }
3100+
29493101 function test_doubleClickPanelRestoresWindow() {
29503102 loadShell("desktop");
29513103 shell.usageScenario = "desktop";
@@ -2969,5 +3121,70 @@ Rectangle {
29693121 mouseDoubleClickSequence(panel, panel.width/2, PanelState.panelHeight/2, Qt.LeftButton, Qt.NoModifier, 300);
29703122 tryCompare(appDelegate, "state", "restored");
29713123 }
3124+
3125+ function test_noMenusWithActiveCall() {
3126+ loadShell("desktop");
3127+ shell.usageScenario = "desktop";
3128+ waitForRendering(shell);
3129+ swipeAwayGreeter();
3130+
3131+ // start music-app, maximize it
3132+ var appDelegate = startApplication("music-app")
3133+ verify(appDelegate);
3134+ appDelegate.requestMaximize();
3135+
3136+ // move the mouse over panel to reveal the menus
3137+ var panel = findChild(shell, "panel");
3138+ verify(panel);
3139+ mouseMove(panel, panel.width/2, panel.panelHeight/2); // to reveal the menus
3140+ var menuBarLoader = findInvisibleChild(panel, "menuBarLoader");
3141+ verify(menuBarLoader);
3142+ tryCompare(menuBarLoader.item, "visible", true);
3143+
3144+ // place a phone call
3145+ callManager.foregroundCall = phoneCall;
3146+
3147+ // menu bar should be hidden
3148+ tryCompare(menuBarLoader, "active", false);
3149+ tryCompare(menuBarLoader, "item", null);
3150+
3151+ // remove call
3152+ callManager.foregroundCall = null;
3153+
3154+ // menu bar should be revealed
3155+ tryCompare(menuBarLoader, "active", true);
3156+ tryCompare(menuBarLoader.item, "visible", true);
3157+ }
3158+
3159+ function test_maximizedWindowAndMenuInPanel() {
3160+ loadShell("desktop");
3161+ shell.usageScenario = "desktop";
3162+ waitForRendering(shell);
3163+ swipeAwayGreeter();
3164+
3165+ // start music-app, maximize it
3166+ var appDelegate = startApplication("music-app")
3167+ verify(appDelegate);
3168+ appDelegate.requestMaximize();
3169+ tryCompare(appDelegate, "state", "maximized");
3170+
3171+ // move the mouse over panel to reveal the menus
3172+ var panel = findChild(shell, "panel");
3173+ verify(panel);
3174+ mouseMove(panel, panel.width/2, panel.panelHeight/2); // to reveal the menus
3175+ var menuBar = findChild(panel, "menuBar");
3176+ verify(menuBar);
3177+ tryCompare(menuBar, "visible", true);
3178+
3179+ // check that the menu popup appears
3180+ var priv = findInvisibleChild(menuBar, "d");
3181+ var menuItem0 = findChild(menuBar, "menuBar-item0");
3182+ verify(menuItem0);
3183+ mouseMove(menuItem0, menuItem0.width/2, menuItem0.height/2, 200);
3184+ tryCompare(menuItem0, "visible", true);
3185+ mouseClick(menuItem0);
3186+ tryCompare(priv, "currentItem", menuItem0);
3187+ tryCompare(priv.currentItem, "popupVisible", true);
3188+ }
29723189 }
29733190}