on xenial help sign in
Merge trunk
bde717cJosh Arenson
CMakeLists.txt+2−1
@@ -70,10 +70,11 @@ find_package(Qt5DBus 5.6 REQUIRED)
70find_package(Qt5Concurrent 5.6 REQUIRED)
70find_package(Qt5Concurrent 5.6 REQUIRED)
71find_package(Qt5Sql 5.6 REQUIRED)
71find_package(Qt5Sql 5.6 REQUIRED)
72
72
73−pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=25)
73+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=26)
74pkg_check_modules(GEONAMES REQUIRED geonames>=0.2)
74pkg_check_modules(GEONAMES REQUIRED geonames>=0.2)
75pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
75pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
76pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
76pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
77+pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=11)
77pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
78pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
78pkg_check_modules(GD3 REQUIRED gnome-desktop-3.0)
79pkg_check_modules(GD3 REQUIRED gnome-desktop-3.0)
79pkg_check_modules(UAL REQUIRED ubuntu-app-launch-2)
80pkg_check_modules(UAL REQUIRED ubuntu-app-launch-2)
debian/changelog+56
@@ -1,3 +1,59 @@
1+unity8 (8.15+17.04.20170216.1-0ubuntu1) zesty; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Make menus items close the menu when clicking on them (LP: #1657082,
5+ #1657399)
6+ * Clicking on an open menu closes it + test
7+ * Make the menus and submenus do not go outside the screen when
8+ popping out
9+ * Auto open submenus on hover (LP: #1657085)
10+ * Make the double click on a menu not be maximize the window below
11+ (LP: #1657079)
12+ * Make the MenuBar InverseMouseArea eat hover events when there's a
13+ popup open (LP: #1657763)
14+ * Make double click on the window decoration maximize (LP: #1657758)
15+ * Eat hover events when the launcher quicklist is open (LP: #1640776)
16+ * Remove TODO now that we require Qt > 5.5
17+ * Serialize two make targets that want to cp to the same target file
18+ (LP: #1660576)
19+ * Remove variable that is always false (LP: #1585910)
20+
21+ [ Daniel d'Andrada ]
22+ * Consolidate launcher API checks
23+
24+ [ Lukáš Tinkl ]
25+ * Fixes for activating minimized windows and restoring fullscreen ones
26+ (LP: #1656808, #1658937, #1658938)
27+
28+ [ Michael Zanetti ]
29+ * move right edge push area up some levels so it can be used on top of
30+ the indicators
31+ * fix minimizing/restoring transitions (LP: #1658936)
32+ * fix some glitches with spread positioning
33+ * fix jumpy animation when closing an item from the spread
34+ * Show the wallpaper while the focused app is moving in staged mode
35+ (LP: #1648251)
36+ * Update the tutorial to mention the app drawer instead of the dash on
37+ long left edge swipe (LP: #1658932)
38+ * prevent hiding the launcher when the mouse hover event is eaten by
39+ the EdgePushArea (LP: #1657045)
40+ * properly invalidate the whole model (LP: #1658190)
41+ * stabilize OrientedShell test (LP: #1658994)
42+
43+ [ Nick Dedekind ]
44+ * Added overflow support to application menus.
45+ * Updated menu colors
46+
47+ -- Michał Sawicz <michal.sawicz@canonical.com> Thu, 16 Feb 2017 13:49:18 +0000
48+
49+unity8 (8.15+17.04.20170206-0ubuntu1) zesty; urgency=medium
50+
51+ [ Daniel d'Andrada ]
52+ * Initial support for child windows (menus, dialogs, tooltips) (LP:
53+ #1543467, #1591384, #1656727)
54+
55+ -- Albert Astals Cid <albert.astals@canonical.com> Mon, 06 Feb 2017 09:12:23 +0000
56+
1unity8 (8.15+17.04.20170131.1-0ubuntu1) zesty; urgency=medium
57unity8 (8.15+17.04.20170131.1-0ubuntu1) zesty; urgency=medium
2
58
3 [ Rodney Dawes ]
59 [ Rodney Dawes ]
debian/control+3−3
@@ -38,7 +38,7 @@ Build-Depends: cmake,
38 libubuntugestures5-private-dev (>= 1.3.2030),
38 libubuntugestures5-private-dev (>= 1.3.2030),
39 libudev-dev,
39 libudev-dev,
40 libudm-common-dev,
40 libudm-common-dev,
41− libunity-api-dev (>= 8.1),
41+ libunity-api-dev (>= 8.2),
42 libusermetricsoutput1-dev,
42 libusermetricsoutput1-dev,
43# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
43# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
44 libx11-dev[!arm64 !armhf],
44 libx11-dev[!arm64 !armhf],
@@ -162,7 +162,7 @@ Depends: qml-module-qtquick-layouts,
162 qttranslations5-l10n,
162 qttranslations5-l10n,
163 ubuntu-thumbnailer-impl-0,
163 ubuntu-thumbnailer-impl-0,
164 ubuntu-wallpapers,
164 ubuntu-wallpapers,
165− unity-application-impl-23,
165+ unity-application-impl-26,
166 unity-notifications-impl-3,
166 unity-notifications-impl-3,
167 unity-plugin-scopes | unity-scopes-impl,
167 unity-plugin-scopes | unity-scopes-impl,
168 unity-scopes-impl-12,
168 unity-scopes-impl-12,
@@ -212,7 +212,7 @@ Depends: dbus-test-runner,
212 ${misc:Depends},
212 ${misc:Depends},
213 ${shlibs:Depends},
213 ${shlibs:Depends},
214Provides: unity-application-impl,
214Provides: unity-application-impl,
215− unity-application-impl-23,
215+ unity-application-impl-26,
216 unity8-fake-env,
216 unity8-fake-env,
217Replaces: unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1),
217Replaces: unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1),
218 unity8-fake-env,
218 unity8-fake-env,
plugins/Greeter/Unity/Launcher/CMakeLists.txt−1
@@ -1,4 +1,3 @@
1−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=11)
2pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
1pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
3
2
4add_definitions(-DSM_BUSNAME=systemBus)
3add_definitions(-DSM_BUSNAME=systemBus)
plugins/Ubuntu/Gestures/TouchGestureArea.cpp−5
@@ -735,7 +735,6 @@ void TouchGestureArea::resyncCachedTouchPoints()
735 bool added = false;
735 bool added = false;
736 bool ended = false;
736 bool ended = false;
737 bool moved = false;
737 bool moved = false;
738− bool wantsDrag = false;
739
738
740 // list of deletes
739 // list of deletes
741 QMutableHashIterator<int, GestureTouchPoint*> removeIter(m_cachedTouchPoints);
740 QMutableHashIterator<int, GestureTouchPoint*> removeIter(m_cachedTouchPoints);
@@ -765,10 +764,6 @@ void TouchGestureArea::resyncCachedTouchPoints()
765 }
764 }
766 }
765 }
767
766
768− if (wantsDrag && !dragging()) {
769− setDragging(true);
770− }
771−
772 if (ended) {
767 if (ended) {
773 if (m_cachedTouchPoints.isEmpty()) {
768 if (m_cachedTouchPoints.isEmpty()) {
774 if (!dragging()) Q_EMIT clicked();
769 if (!dragging()) Q_EMIT clicked();
plugins/Unity/Launcher/CMakeLists.txt−1
@@ -1,4 +1,3 @@
1−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=11)
2pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
1pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
3
2
4add_definitions(-DSM_BUSNAME=systemBus)
3add_definitions(-DSM_BUSNAME=systemBus)
plugins/Utils/CMakeLists.txt+1
@@ -35,6 +35,7 @@ set(QMLPLUGIN_SRC
35 globalfunctions.cpp
35 globalfunctions.cpp
36 URLDispatcher.cpp
36 URLDispatcher.cpp
37 tabfocusfence.cpp
37 tabfocusfence.cpp
38+ expressionfiltermodel.cpp
38 plugin.cpp
39 plugin.cpp
39 )
40 )
40
41
plugins/Utils/appdrawerproxymodel.cpp+2−2
@@ -43,8 +43,8 @@ void AppDrawerProxyModel::setSource(QAbstractItemModel *source)
43 m_source = source;
43 m_source = source;
44 setSourceModel(m_source);
44 setSourceModel(m_source);
45 setSortRole(m_sortBy == SortByAToZ ? AppDrawerModelInterface::RoleName : AppDrawerModelInterface::RoleUsage);
45 setSortRole(m_sortBy == SortByAToZ ? AppDrawerModelInterface::RoleName : AppDrawerModelInterface::RoleUsage);
46− connect(m_source, &QAbstractItemModel::rowsRemoved, this, &AppDrawerProxyModel::invalidateFilter);
46+ connect(m_source, &QAbstractItemModel::rowsRemoved, this, &AppDrawerProxyModel::invalidate);
47− connect(m_source, &QAbstractItemModel::rowsInserted, this, &AppDrawerProxyModel::invalidateFilter);
47+ connect(m_source, &QAbstractItemModel::rowsInserted, this, &AppDrawerProxyModel::invalidate);
48 Q_EMIT sourceChanged();
48 Q_EMIT sourceChanged();
49 }
49 }
50}
50}
plugins/Utils/expressionfiltermodel.cppnew file+49
@@ -0,0 +1,49 @@
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 "expressionfiltermodel.h"
18+
19+ExpressionFilterModel::ExpressionFilterModel(QObject *parent)
20+ : UnitySortFilterProxyModelQML(parent)
21+{
22+}
23+
24+QJSValue ExpressionFilterModel::matchExpression() const
25+{
26+ return m_matchExpression;
27+}
28+
29+void ExpressionFilterModel::setMatchExpression(const QJSValue &value)
30+{
31+ m_matchExpression = value;
32+ invalidateFilter();
33+}
34+
35+bool
36+ExpressionFilterModel::filterAcceptsRow(int sourceRow,
37+ const QModelIndex &sourceParent) const
38+{
39+ if (m_matchExpression.isCallable()) {
40+ QJSValueList args;
41+ args << sourceRow;
42+ QJSValue ret = m_matchExpression.call(args);
43+ if (ret.isBool()) {
44+ return ret.toBool();
45+ }
46+ }
47+
48+ return UnitySortFilterProxyModelQML::filterAcceptsRow(sourceRow, sourceParent);
49+}
plugins/Utils/expressionfiltermodel.hnew file+42
@@ -0,0 +1,42 @@
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 EXPRESSIONFILTERMODEL_H
18+#define EXPRESSIONFILTERMODEL_H
19+
20+#include "unitysortfilterproxymodelqml.h"
21+#include <QJSValue>
22+
23+class ExpressionFilterModel : public UnitySortFilterProxyModelQML
24+{
25+ Q_OBJECT
26+ Q_PROPERTY(QJSValue matchExpression READ matchExpression WRITE setMatchExpression NOTIFY matchExpressionChanged)
27+public:
28+ explicit ExpressionFilterModel(QObject *parent = 0);
29+
30+ bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
31+
32+ QJSValue matchExpression() const;
33+ void setMatchExpression(const QJSValue& value);
34+
35+Q_SIGNALS:
36+ void matchExpressionChanged();
37+
38+private:
39+ mutable QJSValue m_matchExpression;
40+};
41+
42+#endif // EXPRESSIONFILTERMODEL_H
plugins/Utils/plugin.cpp+2
@@ -41,6 +41,7 @@
41#include "URLDispatcher.h"
41#include "URLDispatcher.h"
42#include "appdrawerproxymodel.h"
42#include "appdrawerproxymodel.h"
43#include "tabfocusfence.h"
43#include "tabfocusfence.h"
44+#include "expressionfiltermodel.h"
44
45
45static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
46static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
46{
47{
@@ -86,4 +87,5 @@ void UtilsPlugin::registerTypes(const char *uri)
86 qmlRegisterType<URLDispatcher>(uri, 0, 1, "URLDispatcher");
87 qmlRegisterType<URLDispatcher>(uri, 0, 1, "URLDispatcher");
87 qmlRegisterType<AppDrawerProxyModel>(uri, 0, 1, "AppDrawerProxyModel");
88 qmlRegisterType<AppDrawerProxyModel>(uri, 0, 1, "AppDrawerProxyModel");
88 qmlRegisterType<TabFocusFenceItem>(uri, 0, 1, "TabFocusFence");
89 qmlRegisterType<TabFocusFenceItem>(uri, 0, 1, "TabFocusFence");
90+ qmlRegisterType<ExpressionFilterModel>(uri, 0, 1, "ExpressionFilterModel");
89}
91}
plugins/WindowManager/TopLevelWindowModel.cpp+36−28
@@ -176,18 +176,13 @@ void TopLevelWindowModel::prependSurfaceHelper(unityapi::MirSurfaceInterface *su
176 // No point in signaling anything if we're resetting the whole model
176 // No point in signaling anything if we're resetting the whole model
177 }
177 }
178
178
179− int id = generateId();
180− Window *window = new Window(id, this);
179+ Window *window = createWindow(surface);
181− if (surface) {
180+
182− window->setSurface(surface);
183− }
184 m_windowModel.prepend(ModelEntry(window, application));
181 m_windowModel.prepend(ModelEntry(window, application));
185 if (surface) {
182 if (surface) {
186 connectSurface(surface);
183 connectSurface(surface);
187 }
184 }
188
185
189− connectWindow(window);
190−
191 if (m_modelState == InsertingState) {
186 if (m_modelState == InsertingState) {
192 endInsertRows();
187 endInsertRows();
193 Q_EMIT countChanged();
188 Q_EMIT countChanged();
@@ -322,34 +317,47 @@ void TopLevelWindowModel::onSurfaceDestroyed(unityapi::MirSurfaceInterface *surf
322 }
317 }
323}
318}
324
319
320+Window *TopLevelWindowModel::createWindow(unityapi::MirSurfaceInterface *surface)
321+{
322+ int id = generateId();
323+ Window *qmlWindow = new Window(id, this);
324+ connectWindow(qmlWindow);
325+ if (surface) {
326+ qmlWindow->setSurface(surface);
327+ }
328+ return qmlWindow;
329+}
330+
325void TopLevelWindowModel::onSurfaceCreated(unityapi::MirSurfaceInterface *surface)
331void TopLevelWindowModel::onSurfaceCreated(unityapi::MirSurfaceInterface *surface)
326{
332{
327 DEBUG_MSG << "(" << surface << ")";
333 DEBUG_MSG << "(" << surface << ")";
328− if (surface->type() == Mir::InputMethodType) {
334+
329− int id = generateId();
335+ if (surface->parentSurface()) {
330− Window *qmlWindow = new Window(id, this);
336+ // Wrap it in a Window so that we keep focusedWindow() up to date.
331− connectWindow(qmlWindow);
337+ Window *window = createWindow(surface);
338+ connect(surface, &QObject::destroyed, window, [=](){
332− qmlWindow->setSurface(surface);
339+ window->setSurface(nullptr);
333− setInputMethodWindow(qmlWindow);
340+ window->deleteLater();
341+ });
334 } else {
342 } else {
335− auto application = m_applicationManager->findApplicationWithSurface(surface);
343+ if (surface->type() == Mir::InputMethodType) {
336− if (application) {
344+ setInputMethodWindow(createWindow(surface));
337− prependSurface(surface, application);
338 } else {
345 } else {
346+ auto *application = m_applicationManager->findApplicationWithSurface(surface);
347+ if (application) {
348+ prependSurface(surface, application);
349+ } else {
339− // Must be a prompt session. No need to do add it as a prompt surface is not top-level.
350+ // Must be a prompt session. No need to do add it as a prompt surface is not top-level.
340− // It will show up in the ApplicationInfoInterface::promptSurfaceList of some application.
351+ // It will show up in the ApplicationInfoInterface::promptSurfaceList of some application.
341− // Still wrap it in a Window though, so that we keep focusedWindow() up to date.
352+ // Still wrap it in a Window though, so that we keep focusedWindow() up to date.
342− int id = generateId();
343− Window *promptWindow = new Window(id, this);
353+ Window *promptWindow = createWindow(surface);
344− connectWindow(promptWindow);
345− promptWindow->setSurface(surface);
346− connect(surface, &QObject::destroyed, promptWindow, [=](){
354+ connect(surface, &QObject::destroyed, promptWindow, [=](){
347− promptWindow->setSurface(nullptr);
355+ promptWindow->setSurface(nullptr);
348− promptWindow->deleteLater();
356+ promptWindow->deleteLater();
349− });
357+ });
358+ }
350 }
359 }
351 }
360 }
352− // TODO: handle surfaces that are neither top-level windows nor input method. eg: child dialogs, popups, menus
353}
361}
354
362
355void TopLevelWindowModel::removeAt(int index)
363void TopLevelWindowModel::removeAt(int index)
plugins/WindowManager/TopLevelWindowModel.h+2
@@ -220,6 +220,8 @@ private:
220
220
221 void activateTopMostWindowWithoutId(int forbiddenId);
221 void activateTopMostWindowWithoutId(int forbiddenId);
222
222
223+ Window *createWindow(unity::shell::application::MirSurfaceInterface *surface);
224+
223 struct ModelEntry {
225 struct ModelEntry {
224 ModelEntry() {}
226 ModelEntry() {}
225 ModelEntry(Window *window,
227 ModelEntry(Window *window,
plugins/WindowManager/Window.h−1
@@ -32,7 +32,6 @@ namespace unity {
32 }
32 }
33}
33}
34
34
35−
36Q_DECLARE_LOGGING_CATEGORY(UNITY_WINDOW)
35Q_DECLARE_LOGGING_CATEGORY(UNITY_WINDOW)
37
36
38/**
37/**
po/aa.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
13"Language-Team: Afar <aa@li.org>\n"
13"Language-Team: Afar <aa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/am.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2017-01-26 15:04+0000\n"
11"PO-Revision-Date: 2017-01-26 15:04+0000\n"
12"Last-Translator: samson <Unknown>\n"
12"Last-Translator: samson <Unknown>\n"
13"Language-Team: Amharic <am@li.org>\n"
13"Language-Team: Amharic <am@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr "የ ዴስክቶፕ አይነት ይምረጡ"
523msgid "Search…"
523msgid "Search…"
524msgstr "መፈለጊያ..."
524msgstr "መፈለጊያ..."
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr "A-Z"
529msgstr "A-Z"
@@ -624,8 +624,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr "መጎተቻ 3 ጣቶች በ መጠቀም ማንኛውንም መተግበሪያ ከ አንድ መስኮት ወደ ሌላ"
624msgstr "መጎተቻ 3 ጣቶች በ መጠቀም ማንኛውንም መተግበሪያ ከ አንድ መስኮት ወደ ሌላ"
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628−msgstr "በ ረጅሙ ከ ግራ ጠርዝ በኩል ይጥረጉ የ ዛሬን ክልል ለ መክፈት"
628+msgstr "በረጅሙ ይጥረጉ ከ ግራ ጠርዝ በኩል መተግበሪያ ለ መክፈት ከ መሳቢያ ውስጥ"
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
631msgid "Short swipe from the left edge to open the launcher"
631msgid "Short swipe from the left edge to open the launcher"
@@ -1351,6 +1351,9 @@ msgstr "በጣም ደካማ የ መግቢያ ቃል"
1351#~ msgid "Short or long swipe from the right edge to view your open apps"
1351#~ msgid "Short or long swipe from the right edge to view your open apps"
1352#~ msgstr "በ አጭሩ ወይንም በ ረጅሙ ይጥረጉ ከ ቀኝ ጠረዝ በኩል የ ተከፈቱ መተግበሪያዎችን ለማየት"
1352#~ msgstr "በ አጭሩ ወይንም በ ረጅሙ ይጥረጉ ከ ቀኝ ጠረዝ በኩል የ ተከፈቱ መተግበሪያዎችን ለማየት"
1353
1353
1354+#~ msgid "Long swipe from the left edge to open the Today scope"
1355+#~ msgstr "በ ረጅሙ ከ ግራ ጠርዝ በኩል ይጥረጉ የ ዛሬን ክልል ለ መክፈት"
1356+
1354#~ msgid "Swipe from the left edge to open the launcher"
1357#~ msgid "Swipe from the left edge to open the launcher"
1355#~ msgstr "ከ ግራ ጠርዝ በኩል ይጥረጉ ማስጀመሪያውን ለ መክፈት"
1358#~ msgstr "ከ ግራ ጠርዝ በኩል ይጥረጉ ማስጀመሪያውን ለ መክፈት"
1356
1359
po/ar.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2017-01-14 05:20+0000\n"
11"PO-Revision-Date: 2017-01-14 05:20+0000\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"
13"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -530,7 +530,7 @@ msgstr ""
530msgid "Search…"
530msgid "Search…"
531msgstr ""
531msgstr ""
532
532
533−#: qml/Launcher/Drawer.qml:123
533+#: qml/Launcher/Drawer.qml:127
534msgctxt "Apps sorted alphabetically"
534msgctxt "Apps sorted alphabetically"
535msgid "A-Z"
535msgid "A-Z"
536msgstr ""
536msgstr ""
@@ -643,7 +643,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
643msgstr ""
643msgstr ""
644
644
645#: qml/Tutorial/TutorialLeftLong.qml:49
645#: qml/Tutorial/TutorialLeftLong.qml:49
646−msgid "Long swipe from the left edge to open the Today scope"
646+msgid "Long swipe from the left edge to open the Application Drawer"
647msgstr ""
647msgstr ""
648
648
649#: qml/Tutorial/TutorialLeft.qml:47
649#: qml/Tutorial/TutorialLeft.qml:47
po/ast.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-12-16 02:13+0000\n"
11"PO-Revision-Date: 2016-12-16 02:13+0000\n"
12"Last-Translator: enolp <enolp@softastur.org>\n"
12"Last-Translator: enolp <enolp@softastur.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -526,7 +526,7 @@ msgstr "Esbillar entornu d'escritoriu"
526msgid "Search…"
526msgid "Search…"
527msgstr "Guetar..."
527msgstr "Guetar..."
528
528
529−#: qml/Launcher/Drawer.qml:123
529+#: qml/Launcher/Drawer.qml:127
530msgctxt "Apps sorted alphabetically"
530msgctxt "Apps sorted alphabetically"
531msgid "A-Z"
531msgid "A-Z"
532msgstr "A-Z"
532msgstr "A-Z"
@@ -627,8 +627,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
627msgstr "Abasnar cualquier aplicación d'una ventana a otra usando 3 deos"
627msgstr "Abasnar cualquier aplicación d'una ventana a otra usando 3 deos"
628
628
629#: qml/Tutorial/TutorialLeftLong.qml:49
629#: qml/Tutorial/TutorialLeftLong.qml:49
630−msgid "Long swipe from the left edge to open the Today scope"
630+msgid "Long swipe from the left edge to open the Application Drawer"
631−msgstr "Eslizamientu llargu dende'l berbesu izquierdu pa ver el scope Güei"
631+msgstr ""
632
632
633#: qml/Tutorial/TutorialLeft.qml:47
633#: qml/Tutorial/TutorialLeft.qml:47
634msgid "Short swipe from the left edge to open the launcher"
634msgid "Short swipe from the left edge to open the launcher"
@@ -1377,5 +1377,8 @@ msgstr "Contraseña feble enforma"
1377#~ msgid "Swipe up to create a message"
1377#~ msgid "Swipe up to create a message"
1378#~ msgstr "Eslizar pa crear un mensaxe"
1378#~ msgstr "Eslizar pa crear un mensaxe"
1379
1379
1380+#~ msgid "Long swipe from the left edge to open the Today scope"
1381+#~ msgstr "Eslizamientu llargu dende'l berbesu izquierdu pa ver el scope Güei"
1382+
1380#~ msgid "Takes a screenshot of a window."
1383#~ msgid "Takes a screenshot of a window."
1381#~ msgstr "Saca una imaxe d'una ventana."
1384#~ msgstr "Saca una imaxe d'una ventana."
po/az.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/be.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
13"Language-Team: Belarusian <be@li.org>\n"
13"Language-Team: Belarusian <be@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -528,7 +528,7 @@ msgstr ""
528msgid "Search…"
528msgid "Search…"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Launcher/Drawer.qml:123
531+#: qml/Launcher/Drawer.qml:127
532msgctxt "Apps sorted alphabetically"
532msgctxt "Apps sorted alphabetically"
533msgid "A-Z"
533msgid "A-Z"
534msgstr ""
534msgstr ""
@@ -632,7 +632,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
632msgstr ""
632msgstr ""
633
633
634#: qml/Tutorial/TutorialLeftLong.qml:49
634#: qml/Tutorial/TutorialLeftLong.qml:49
635−msgid "Long swipe from the left edge to open the Today scope"
635+msgid "Long swipe from the left edge to open the Application Drawer"
636msgstr ""
636msgstr ""
637
637
638#: qml/Tutorial/TutorialLeft.qml:47
638#: qml/Tutorial/TutorialLeft.qml:47
po/bg.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr ""
523msgid "Search…"
523msgid "Search…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr ""
529msgstr ""
@@ -624,7 +624,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr ""
624msgstr ""
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628msgstr ""
628msgstr ""
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
po/bn.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bengali <bn@li.org>\n"
13"Language-Team: Bengali <bn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr ""
523msgid "Search…"
523msgid "Search…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr ""
529msgstr ""
@@ -624,7 +624,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr ""
624msgstr ""
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628msgstr ""
628msgstr ""
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
po/br.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-08-29 11:37+0000\n"
11"PO-Revision-Date: 2016-08-29 11:37+0000\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -532,7 +532,7 @@ msgstr "Diuzañ endro ar burev"
532msgid "Search…"
532msgid "Search…"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Launcher/Drawer.qml:123
535+#: qml/Launcher/Drawer.qml:127
536msgctxt "Apps sorted alphabetically"
536msgctxt "Apps sorted alphabetically"
537msgid "A-Z"
537msgid "A-Z"
538msgstr ""
538msgstr ""
@@ -633,9 +633,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
633msgstr "Riklit forzh peseurt arload gant tri biz eus an eil prenestr d'egile"
633msgstr "Riklit forzh peseurt arload gant tri biz eus an eil prenestr d'egile"
634
634
635#: qml/Tutorial/TutorialLeftLong.qml:49
635#: qml/Tutorial/TutorialLeftLong.qml:49
636−msgid "Long swipe from the left edge to open the Today scope"
636+msgid "Long swipe from the left edge to open the Application Drawer"
637msgstr ""
637msgstr ""
638−"Rikladenn hir adalek ar bord kleiz evit digeriñ ar c'heflusker enklask Hiziv"
639
638
640#: qml/Tutorial/TutorialLeft.qml:47
639#: qml/Tutorial/TutorialLeft.qml:47
641msgid "Short swipe from the left edge to open the launcher"
640msgid "Short swipe from the left edge to open the launcher"
@@ -1360,3 +1359,7 @@ msgstr "Ger-tremen diasur-kenañ"
1360
1359
1361#~ msgid "Takes a screenshot of a window."
1360#~ msgid "Takes a screenshot of a window."
1362#~ msgstr "Tapout ur skeudenn eus ur prenestr"
1361#~ msgstr "Tapout ur skeudenn eus ur prenestr"
1362+
1363+#~ msgid "Long swipe from the left edge to open the Today scope"
1364+#~ msgstr ""
1365+#~ "Rikladenn hir adalek ar bord kleiz evit digeriñ ar c'heflusker enklask Hiziv"
po/bs.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -527,7 +527,7 @@ msgstr ""
527msgid "Search…"
527msgid "Search…"
528msgstr ""
528msgstr ""
529
529
530−#: qml/Launcher/Drawer.qml:123
530+#: qml/Launcher/Drawer.qml:127
531msgctxt "Apps sorted alphabetically"
531msgctxt "Apps sorted alphabetically"
532msgid "A-Z"
532msgid "A-Z"
533msgstr ""
533msgstr ""
@@ -631,7 +631,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
631msgstr ""
631msgstr ""
632
632
633#: qml/Tutorial/TutorialLeftLong.qml:49
633#: qml/Tutorial/TutorialLeftLong.qml:49
634−msgid "Long swipe from the left edge to open the Today scope"
634+msgid "Long swipe from the left edge to open the Application Drawer"
635msgstr ""
635msgstr ""
636
636
637#: qml/Tutorial/TutorialLeft.qml:47
637#: qml/Tutorial/TutorialLeft.qml:47
po/ca.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-11-11 06:30+0000\n"
11"PO-Revision-Date: 2016-11-11 06:30+0000\n"
12"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
12"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -531,7 +531,7 @@ msgstr "Seleccioneu l'entorn d'escriptori"
531msgid "Search…"
531msgid "Search…"
532msgstr ""
532msgstr ""
533
533
534−#: qml/Launcher/Drawer.qml:123
534+#: qml/Launcher/Drawer.qml:127
535msgctxt "Apps sorted alphabetically"
535msgctxt "Apps sorted alphabetically"
536msgid "A-Z"
536msgid "A-Z"
537msgstr ""
537msgstr ""
@@ -633,9 +633,8 @@ msgstr ""
633"Arrossegueu usant 3 dits qualsevol aplicació d'una finestra a una altra"
633"Arrossegueu usant 3 dits qualsevol aplicació d'una finestra a una altra"
634
634
635#: qml/Tutorial/TutorialLeftLong.qml:49
635#: qml/Tutorial/TutorialLeftLong.qml:49
636−msgid "Long swipe from the left edge to open the Today scope"
636+msgid "Long swipe from the left edge to open the Application Drawer"
637msgstr ""
637msgstr ""
638−"Feu una lliscada llarga des de la vora esquerra per obrir l'àmbit Avui"
639
638
640#: qml/Tutorial/TutorialLeft.qml:47
639#: qml/Tutorial/TutorialLeft.qml:47
641msgid "Short swipe from the left edge to open the launcher"
640msgid "Short swipe from the left edge to open the launcher"
@@ -1398,6 +1397,10 @@ msgstr "La contrasenya és molt dèbil"
1398#~ msgid "Swipe up to manage the app"
1397#~ msgid "Swipe up to manage the app"
1399#~ msgstr "Llisqueu cap amunt per gestionar l'aplicació"
1398#~ msgstr "Llisqueu cap amunt per gestionar l'aplicació"
1400
1399
1400+#~ msgid "Long swipe from the left edge to open the Today scope"
1401+#~ msgstr ""
1402+#~ "Feu una lliscada llarga des de la vora esquerra per obrir l'àmbit Avui"
1403+
1401#~ msgid "Swipe up to add a contact"
1404#~ msgid "Swipe up to add a contact"
1402#~ msgstr "Llisqueu per afegir un contacte"
1405#~ msgstr "Llisqueu per afegir un contacte"
1403
1406
po/ca@valencia.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-02-22 15:22+0000\n"
11"PO-Revision-Date: 2015-02-22 15:22+0000\n"
12"Last-Translator: David Planella <david.planella@gmail.com>\n"
12"Last-Translator: David Planella <david.planella@gmail.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -527,7 +527,7 @@ msgstr ""
527msgid "Search…"
527msgid "Search…"
528msgstr ""
528msgstr ""
529
529
530−#: qml/Launcher/Drawer.qml:123
530+#: qml/Launcher/Drawer.qml:127
531msgctxt "Apps sorted alphabetically"
531msgctxt "Apps sorted alphabetically"
532msgid "A-Z"
532msgid "A-Z"
533msgstr ""
533msgstr ""
@@ -628,7 +628,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
628msgstr ""
628msgstr ""
629
629
630#: qml/Tutorial/TutorialLeftLong.qml:49
630#: qml/Tutorial/TutorialLeftLong.qml:49
631−msgid "Long swipe from the left edge to open the Today scope"
631+msgid "Long swipe from the left edge to open the Application Drawer"
632msgstr ""
632msgstr ""
633
633
634#: qml/Tutorial/TutorialLeft.qml:47
634#: qml/Tutorial/TutorialLeft.qml:47
po/ce.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Chechen <ce@li.org>\n"
13"Language-Team: Chechen <ce@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/ckb.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/co.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-05-24 10:40+0000\n"
11"PO-Revision-Date: 2016-05-24 10:40+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Corsican <co@li.org>\n"
13"Language-Team: Corsican <co@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -531,7 +531,7 @@ msgstr ""
531msgid "Search…"
531msgid "Search…"
532msgstr ""
532msgstr ""
533
533
534−#: qml/Launcher/Drawer.qml:123
534+#: qml/Launcher/Drawer.qml:127
535msgctxt "Apps sorted alphabetically"
535msgctxt "Apps sorted alphabetically"
536msgid "A-Z"
536msgid "A-Z"
537msgstr ""
537msgstr ""
@@ -633,8 +633,8 @@ msgstr ""
633"Trascinà cù 3 dite qualichissia applicazione da una finestra à un'antra"
633"Trascinà cù 3 dite qualichissia applicazione da una finestra à un'antra"
634
634
635#: qml/Tutorial/TutorialLeftLong.qml:49
635#: qml/Tutorial/TutorialLeftLong.qml:49
636−msgid "Long swipe from the left edge to open the Today scope"
636+msgid "Long swipe from the left edge to open the Application Drawer"
637−msgstr "Scorre longu da mancina versu diritta per aprì u pannellu Oghje"
637+msgstr ""
638
638
639#: qml/Tutorial/TutorialLeft.qml:47
639#: qml/Tutorial/TutorialLeft.qml:47
640msgid "Short swipe from the left edge to open the launcher"
640msgid "Short swipe from the left edge to open the launcher"
@@ -1019,6 +1019,9 @@ msgstr "Parolla d'ordine moltu debule"
1019#~ msgid "Swipe up to create a message"
1019#~ msgid "Swipe up to create a message"
1020#~ msgstr "Scorre versu l'altu per creà un messaggiu"
1020#~ msgstr "Scorre versu l'altu per creà un messaggiu"
1021
1021
1022+#~ msgid "Long swipe from the left edge to open the Today scope"
1023+#~ msgstr "Scorre longu da mancina versu diritta per aprì u pannellu Oghje"
1024+
1022#~ msgid "Short or long swipe from the right edge to view your open apps"
1025#~ msgid "Short or long swipe from the right edge to view your open apps"
1023#~ msgstr ""
1026#~ msgstr ""
1024#~ "Scorre cortu o longu da diritta versu mancina per vede e applicazioni aperte"
1027#~ "Scorre cortu o longu da diritta versu mancina per vede e applicazioni aperte"
po/cs.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
13"Language-Team: Czech <cs@li.org>\n"
13"Language-Team: Czech <cs@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20"Language: cs\n"
20"Language: cs\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
@@ -527,7 +527,7 @@ msgstr ""
527msgid "Search…"
527msgid "Search…"
528msgstr ""
528msgstr ""
529
529
530−#: qml/Launcher/Drawer.qml:123
530+#: qml/Launcher/Drawer.qml:127
531msgctxt "Apps sorted alphabetically"
531msgctxt "Apps sorted alphabetically"
532msgid "A-Z"
532msgid "A-Z"
533msgstr ""
533msgstr ""
@@ -631,7 +631,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
631msgstr ""
631msgstr ""
632
632
633#: qml/Tutorial/TutorialLeftLong.qml:49
633#: qml/Tutorial/TutorialLeftLong.qml:49
634−msgid "Long swipe from the left edge to open the Today scope"
634+msgid "Long swipe from the left edge to open the Application Drawer"
635msgstr ""
635msgstr ""
636
636
637#: qml/Tutorial/TutorialLeft.qml:47
637#: qml/Tutorial/TutorialLeft.qml:47
po/cy.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
13"Language-Team: Welsh <cy@li.org>\n"
13"Language-Team: Welsh <cy@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
18"2 : 3;\n"
18"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -528,7 +528,7 @@ msgstr ""
528msgid "Search…"
528msgid "Search…"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Launcher/Drawer.qml:123
531+#: qml/Launcher/Drawer.qml:127
532msgctxt "Apps sorted alphabetically"
532msgctxt "Apps sorted alphabetically"
533msgid "A-Z"
533msgid "A-Z"
534msgstr ""
534msgstr ""
@@ -635,7 +635,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
635msgstr ""
635msgstr ""
636
636
637#: qml/Tutorial/TutorialLeftLong.qml:49
637#: qml/Tutorial/TutorialLeftLong.qml:49
638−msgid "Long swipe from the left edge to open the Today scope"
638+msgid "Long swipe from the left edge to open the Application Drawer"
639msgstr ""
639msgstr ""
640
640
641#: qml/Tutorial/TutorialLeft.qml:47
641#: qml/Tutorial/TutorialLeft.qml:47
po/da.po+5−5
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
11+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -528,7 +528,7 @@ msgstr ""
528msgid "Search…"
528msgid "Search…"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Launcher/Drawer.qml:123
531+#: qml/Launcher/Drawer.qml:127
532msgctxt "Apps sorted alphabetically"
532msgctxt "Apps sorted alphabetically"
533msgid "A-Z"
533msgid "A-Z"
534msgstr ""
534msgstr ""
@@ -629,7 +629,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
629msgstr ""
629msgstr ""
630
630
631#: qml/Tutorial/TutorialLeftLong.qml:49
631#: qml/Tutorial/TutorialLeftLong.qml:49
632−msgid "Long swipe from the left edge to open the Today scope"
632+msgid "Long swipe from the left edge to open the Application Drawer"
633msgstr ""
633msgstr ""
634
634
635#: qml/Tutorial/TutorialLeft.qml:47
635#: qml/Tutorial/TutorialLeft.qml:47
po/de.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2017-01-18 22:45+0000\n"
11"PO-Revision-Date: 2017-01-18 22:45+0000\n"
12"Last-Translator: Torsten Franz <Unknown>\n"
12"Last-Translator: Torsten Franz <Unknown>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -531,7 +531,7 @@ msgstr "Arbeitsumgebung auswählen"
531msgid "Search…"
531msgid "Search…"
532msgstr "Suchen …"
532msgstr "Suchen …"
533
533
534−#: qml/Launcher/Drawer.qml:123
534+#: qml/Launcher/Drawer.qml:127
535msgctxt "Apps sorted alphabetically"
535msgctxt "Apps sorted alphabetically"
536msgid "A-Z"
536msgid "A-Z"
537msgstr "A-Z"
537msgstr "A-Z"
@@ -632,9 +632,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
632msgstr "Eine Anwendung mit 3 Fingern von einem Fenster zum anderen ziehen"
632msgstr "Eine Anwendung mit 3 Fingern von einem Fenster zum anderen ziehen"
633
633
634#: qml/Tutorial/TutorialLeftLong.qml:49
634#: qml/Tutorial/TutorialLeftLong.qml:49
635−msgid "Long swipe from the left edge to open the Today scope"
635+msgid "Long swipe from the left edge to open the Application Drawer"
636msgstr ""
636msgstr ""
637−"Langgezogene Wischgeste von der linken Kante, um den Heute-Scope zu öffnen"
638
637
639#: qml/Tutorial/TutorialLeft.qml:47
638#: qml/Tutorial/TutorialLeft.qml:47
640msgid "Short swipe from the left edge to open the launcher"
639msgid "Short swipe from the left edge to open the launcher"
@@ -1369,6 +1368,10 @@ msgstr "Sehr schwaches Passwort"
1369#~ msgid "Swipe up to add a contact"
1368#~ msgid "Swipe up to add a contact"
1370#~ msgstr "Aufwärts wischen, um einen Kontakt hinzuzufügen"
1369#~ msgstr "Aufwärts wischen, um einen Kontakt hinzuzufügen"
1371
1370
1371+#~ msgid "Long swipe from the left edge to open the Today scope"
1372+#~ msgstr ""
1373+#~ "Langgezogene Wischgeste von der linken Kante, um den Heute-Scope zu öffnen"
1374+
1372#~ msgid "Swipe from the left edge to open the launcher"
1375#~ msgid "Swipe from the left edge to open the launcher"
1373#~ msgstr "Von der linken Kante wischen, um den Starter zu öffnen"
1376#~ msgstr "Von der linken Kante wischen, um den Starter zu öffnen"
1374
1377
po/el.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-04-25 16:24+0000\n"
11"PO-Revision-Date: 2016-04-25 16:24+0000\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -531,7 +531,7 @@ msgstr "Επιλέξτε περιβάλλον εργασίας"
531msgid "Search…"
531msgid "Search…"
532msgstr ""
532msgstr ""
533
533
534−#: qml/Launcher/Drawer.qml:123
534+#: qml/Launcher/Drawer.qml:127
535msgctxt "Apps sorted alphabetically"
535msgctxt "Apps sorted alphabetically"
536msgid "A-Z"
536msgid "A-Z"
537msgstr ""
537msgstr ""
@@ -634,9 +634,8 @@ msgstr ""
634"άλλο"
634"άλλο"
635
635
636#: qml/Tutorial/TutorialLeftLong.qml:49
636#: qml/Tutorial/TutorialLeftLong.qml:49
637−msgid "Long swipe from the left edge to open the Today scope"
637+msgid "Long swipe from the left edge to open the Application Drawer"
638msgstr ""
638msgstr ""
639−"Παρατεταμμένο σύρσιμο από την αριστερή άκρη εμφανίζει το scope \"Σήμερα\""
640
639
641#: qml/Tutorial/TutorialLeft.qml:47
640#: qml/Tutorial/TutorialLeft.qml:47
642msgid "Short swipe from the left edge to open the launcher"
641msgid "Short swipe from the left edge to open the launcher"
@@ -1364,3 +1363,7 @@ msgstr "Πολύ αδύμανος κωδικός"
1364#~ msgstr ""
1363#~ msgstr ""
1365#~ "Εάν το συνθηματικό που θα εισάγετε είναι μη έγκυρο, το τηλέφωνο σας θα κάνει "
1364#~ "Εάν το συνθηματικό που θα εισάγετε είναι μη έγκυρο, το τηλέφωνο σας θα κάνει "
1366#~ "επαναφορά των εργοστασιακών ρυθμίσεων και όλα τα δεδομένα σας θα διαγραφούν."
1365#~ "επαναφορά των εργοστασιακών ρυθμίσεων και όλα τα δεδομένα σας θα διαγραφούν."
1366+
1367+#~ msgid "Long swipe from the left edge to open the Today scope"
1368+#~ msgstr ""
1369+#~ "Παρατεταμμένο σύρσιμο από την αριστερή άκρη εμφανίζει το scope \"Σήμερα\""
po/en_AU.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-03-27 10:09+0000\n"
11"PO-Revision-Date: 2016-03-27 10:09+0000\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -525,7 +525,7 @@ msgstr ""
525msgid "Search…"
525msgid "Search…"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531msgstr ""
531msgstr ""
@@ -626,8 +626,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
626msgstr "Drag using 3 fingers any application from one window to the other"
626msgstr "Drag using 3 fingers any application from one window to the other"
627
627
628#: qml/Tutorial/TutorialLeftLong.qml:49
628#: qml/Tutorial/TutorialLeftLong.qml:49
629−msgid "Long swipe from the left edge to open the Today scope"
629+msgid "Long swipe from the left edge to open the Application Drawer"
630−msgstr "Long swipe from the left edge to open the Today scope"
630+msgstr ""
631
631
632#: qml/Tutorial/TutorialLeft.qml:47
632#: qml/Tutorial/TutorialLeft.qml:47
633msgid "Short swipe from the left edge to open the launcher"
633msgid "Short swipe from the left edge to open the launcher"
@@ -1364,3 +1364,6 @@ msgstr "Very weak password"
1364
1364
1365#~ msgid "Swipe up to create a message"
1365#~ msgid "Swipe up to create a message"
1366#~ msgstr "Swipe up to create a message"
1366#~ msgstr "Swipe up to create a message"
1367+
1368+#~ msgid "Long swipe from the left edge to open the Today scope"
1369+#~ msgstr "Long swipe from the left edge to open the Today scope"
po/en_GB.po+26−23
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-07-05 00:37+0000\n"
11"PO-Revision-Date: 2016-07-05 00:37+0000\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -24,15 +24,15 @@ msgstr "Password: "
24
24
25#: plugins/LightDM/Greeter.cpp:203
25#: plugins/LightDM/Greeter.cpp:203
26msgid "Username"
26msgid "Username"
27−msgstr ""
27+msgstr "Username"
28
28
29#: plugins/LightDM/Greeter.cpp:242
29#: plugins/LightDM/Greeter.cpp:242
30msgid "Failed to authenticate"
30msgid "Failed to authenticate"
31−msgstr ""
31+msgstr "Failed to authenticate"
32
32
33#: plugins/LightDM/Greeter.cpp:244
33#: plugins/LightDM/Greeter.cpp:244
34msgid "Invalid password, please try again"
34msgid "Invalid password, please try again"
35−msgstr ""
35+msgstr "Invalid password, please try again"
36
36
37#: plugins/LightDM/Greeter.cpp:254
37#: plugins/LightDM/Greeter.cpp:254
38msgid "Log In"
38msgid "Log In"
@@ -44,11 +44,11 @@ msgstr "Retry"
44
44
45#: plugins/LightDM/UsersModel.cpp:152
45#: plugins/LightDM/UsersModel.cpp:152
46msgid "Login"
46msgid "Login"
47−msgstr ""
47+msgstr "Login"
48
48
49#: plugins/LightDM/UsersModel.cpp:160
49#: plugins/LightDM/UsersModel.cpp:160
50msgid "Guest Session"
50msgid "Guest Session"
51−msgstr ""
51+msgstr "Guest Session"
52
52
53#: plugins/Unity/Launcher/launcheritem.cpp:50
53#: plugins/Unity/Launcher/launcheritem.cpp:50
54#: plugins/Unity/Launcher/launcheritem.cpp:122
54#: plugins/Unity/Launcher/launcheritem.cpp:122
@@ -151,7 +151,7 @@ msgstr "Alt + PrtScr"
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:80
152#: qml/Components/KeyboardShortcutsOverlay.qml:80
153msgid "Takes a screenshot of the current window."
153msgid "Takes a screenshot of the current window."
154−msgstr ""
154+msgstr "Takes a screenshot of the current window."
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:88
156#: qml/Components/KeyboardShortcutsOverlay.qml:88
157msgid "Super + Space"
157msgid "Super + Space"
@@ -207,11 +207,11 @@ msgstr "Same as clicking on a launcher icon."
207
207
208#: qml/Components/KeyboardShortcutsOverlay.qml:177
208#: qml/Components/KeyboardShortcutsOverlay.qml:177
209msgid "Super + A"
209msgid "Super + A"
210−msgstr ""
210+msgstr "Super + A"
211
211
212#: qml/Components/KeyboardShortcutsOverlay.qml:182
212#: qml/Components/KeyboardShortcutsOverlay.qml:182
213msgid "Opens the Application Drawer."
213msgid "Opens the Application Drawer."
214−msgstr ""
214+msgstr "Opens the Application Drawer."
215
215
216#: qml/Components/KeyboardShortcutsOverlay.qml:194
216#: qml/Components/KeyboardShortcutsOverlay.qml:194
217msgid "Scopes"
217msgid "Scopes"
@@ -359,19 +359,19 @@ msgstr ""
359
359
360#: qml/Components/VirtualTouchPad.qml:327
360#: qml/Components/VirtualTouchPad.qml:327
361msgid "Tap left button to click."
361msgid "Tap left button to click."
362−msgstr ""
362+msgstr "Tap left button to click."
363
363
364#: qml/Components/VirtualTouchPad.qml:339
364#: qml/Components/VirtualTouchPad.qml:339
365msgid "Tap right button to right click."
365msgid "Tap right button to right click."
366−msgstr ""
366+msgstr "Tap right button to right click."
367
367
368#: qml/Components/VirtualTouchPad.qml:351
368#: qml/Components/VirtualTouchPad.qml:351
369msgid "Swipe with two fingers to scroll."
369msgid "Swipe with two fingers to scroll."
370−msgstr ""
370+msgstr "Swipe with two fingers to scroll."
371
371
372#: qml/Components/VirtualTouchPad.qml:396
372#: qml/Components/VirtualTouchPad.qml:396
373msgid "Find more settings in the system settings."
373msgid "Find more settings in the system settings."
374−msgstr ""
374+msgstr "Find more settings in the system settings."
375
375
376#: qml/Dash/DashPageHeader.qml:361
376#: qml/Dash/DashPageHeader.qml:361
377msgctxt "Button: Open the Ubuntu Store"
377msgctxt "Button: Open the Ubuntu Store"
@@ -499,11 +499,11 @@ msgstr "Try again"
499
499
500#: qml/Greeter/Greeter.qml:562
500#: qml/Greeter/Greeter.qml:562
501msgid "Enter passphrase to unlock"
501msgid "Enter passphrase to unlock"
502−msgstr ""
502+msgstr "Enter passphrase to unlock"
503
503
504#: qml/Greeter/Greeter.qml:563
504#: qml/Greeter/Greeter.qml:563
505msgid "Enter passcode to unlock"
505msgid "Enter passcode to unlock"
506−msgstr ""
506+msgstr "Enter passcode to unlock"
507
507
508#: qml/Greeter/NarrowView.qml:242
508#: qml/Greeter/NarrowView.qml:242
509msgid "Emergency"
509msgid "Emergency"
@@ -523,16 +523,16 @@ msgstr "Select desktop environment"
523
523
524#: qml/Launcher/Drawer.qml:92
524#: qml/Launcher/Drawer.qml:92
525msgid "Search…"
525msgid "Search…"
526−msgstr ""
526+msgstr "Search…"
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531−msgstr ""
531+msgstr "A-Z"
532
532
533#: qml/Launcher/MoreAppsHeader.qml:39
533#: qml/Launcher/MoreAppsHeader.qml:39
534msgid "More apps in the store"
534msgid "More apps in the store"
535−msgstr ""
535+msgstr "More apps in the store"
536
536
537#: qml/Notifications/NotificationMenuItemFactory.qml:124
537#: qml/Notifications/NotificationMenuItemFactory.qml:124
538msgid "Show password"
538msgid "Show password"
@@ -626,8 +626,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
626msgstr "Drag using 3 fingers any application from one window to the other"
626msgstr "Drag using 3 fingers any application from one window to the other"
627
627
628#: qml/Tutorial/TutorialLeftLong.qml:49
628#: qml/Tutorial/TutorialLeftLong.qml:49
629−msgid "Long swipe from the left edge to open the Today scope"
629+msgid "Long swipe from the left edge to open the Application Drawer"
630−msgstr "Long swipe from the left edge to open the Today scope"
630+msgstr ""
631
631
632#: qml/Tutorial/TutorialLeft.qml:47
632#: qml/Tutorial/TutorialLeft.qml:47
633msgid "Short swipe from the left edge to open the launcher"
633msgid "Short swipe from the left edge to open the launcher"
@@ -1367,6 +1367,9 @@ msgstr "Very weak password"
1367#~ msgid "Short or long swipe from the right edge to view your open apps"
1367#~ msgid "Short or long swipe from the right edge to view your open apps"
1368#~ msgstr "Short or long swipe from the right edge to view your open apps"
1368#~ msgstr "Short or long swipe from the right edge to view your open apps"
1369
1369
1370+#~ msgid "Long swipe from the left edge to open the Today scope"
1371+#~ msgstr "Long swipe from the left edge to open the Today scope"
1372+
1370#~ msgid "Swipe from the left edge to open the launcher"
1373#~ msgid "Swipe from the left edge to open the launcher"
1371#~ msgstr "Swipe from the left edge to open the launcher"
1374#~ msgstr "Swipe from the left edge to open the launcher"
1372
1375
po/eo.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
12"Last-Translator: Eliovir <Unknown>\n"
12"Last-Translator: Eliovir <Unknown>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/es.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-03-25 12:02+0000\n"
11"PO-Revision-Date: 2016-03-25 12:02+0000\n"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -530,7 +530,7 @@ msgstr "Seleccionar entorno de escritorio"
530msgid "Search…"
530msgid "Search…"
531msgstr ""
531msgstr ""
532
532
533−#: qml/Launcher/Drawer.qml:123
533+#: qml/Launcher/Drawer.qml:127
534msgctxt "Apps sorted alphabetically"
534msgctxt "Apps sorted alphabetically"
535msgid "A-Z"
535msgid "A-Z"
536msgstr ""
536msgstr ""
@@ -632,8 +632,8 @@ msgstr ""
632"Arrastrar con tres dedos cualquier aplicación desde una ventana a la otra"
632"Arrastrar con tres dedos cualquier aplicación desde una ventana a la otra"
633
633
634#: qml/Tutorial/TutorialLeftLong.qml:49
634#: qml/Tutorial/TutorialLeftLong.qml:49
635−msgid "Long swipe from the left edge to open the Today scope"
635+msgid "Long swipe from the left edge to open the Application Drawer"
636−msgstr "Deslice largo desde el borde izquierdo para ver el scope Hoy"
636+msgstr ""
637
637
638#: qml/Tutorial/TutorialLeft.qml:47
638#: qml/Tutorial/TutorialLeft.qml:47
639msgid "Short swipe from the left edge to open the launcher"
639msgid "Short swipe from the left edge to open the launcher"
@@ -1387,5 +1387,8 @@ msgstr "Contraseña muy débil"
1387#~ msgid "Short or long swipe from the right edge to view your open apps"
1387#~ msgid "Short or long swipe from the right edge to view your open apps"
1388#~ msgstr "Deslice desde el borde derecho para ver las aplis abiertas"
1388#~ msgstr "Deslice desde el borde derecho para ver las aplis abiertas"
1389
1389
1390+#~ msgid "Long swipe from the left edge to open the Today scope"
1391+#~ msgstr "Deslice largo desde el borde izquierdo para ver el scope Hoy"
1392+
1390#~ msgid "Takes a screenshot of a window."
1393#~ msgid "Takes a screenshot of a window."
1391#~ msgstr "Captura una ventana."
1394#~ msgstr "Captura una ventana."
po/et.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-12-28 06:29+0000\n"
11"PO-Revision-Date: 2016-12-28 06:29+0000\n"
12"Last-Translator: Karlis <Unknown>\n"
12"Last-Translator: Karlis <Unknown>\n"
13"Language-Team: Estonian <et@li.org>\n"
13"Language-Team: Estonian <et@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/eu.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -524,7 +524,7 @@ msgstr ""
524msgid "Search…"
524msgid "Search…"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Launcher/Drawer.qml:123
527+#: qml/Launcher/Drawer.qml:127
528msgctxt "Apps sorted alphabetically"
528msgctxt "Apps sorted alphabetically"
529msgid "A-Z"
529msgid "A-Z"
530msgstr ""
530msgstr ""
@@ -625,7 +625,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
625msgstr ""
625msgstr ""
626
626
627#: qml/Tutorial/TutorialLeftLong.qml:49
627#: qml/Tutorial/TutorialLeftLong.qml:49
628−msgid "Long swipe from the left edge to open the Today scope"
628+msgid "Long swipe from the left edge to open the Application Drawer"
629msgstr ""
629msgstr ""
630
630
631#: qml/Tutorial/TutorialLeft.qml:47
631#: qml/Tutorial/TutorialLeft.qml:47
po/fa.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-10-18 07:03+0000\n"
11"PO-Revision-Date: 2016-10-18 07:03+0000\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
13"Language-Team: Persian <fa@li.org>\n"
13"Language-Team: Persian <fa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -526,7 +526,7 @@ msgstr "گزینش محیط میزکار"
526msgid "Search…"
526msgid "Search…"
527msgstr ""
527msgstr ""
528
528
529−#: qml/Launcher/Drawer.qml:123
529+#: qml/Launcher/Drawer.qml:127
530msgctxt "Apps sorted alphabetically"
530msgctxt "Apps sorted alphabetically"
531msgid "A-Z"
531msgid "A-Z"
532msgstr ""
532msgstr ""
@@ -624,8 +624,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr "هر پنجره‌ای را با کشیدن سه‌انگشت از پنجره‌ای به ینجرهٔ دیگر ببرید"
624msgstr "هر پنجره‌ای را با کشیدن سه‌انگشت از پنجره‌ای به ینجرهٔ دیگر ببرید"
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628−msgstr "برای گشودن حوزهٔ امروز، از لبهٔ چپ طولانی بکشید"
628+msgstr ""
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
631msgid "Short swipe from the left edge to open the launcher"
631msgid "Short swipe from the left edge to open the launcher"
@@ -1374,5 +1374,8 @@ msgstr "گذرواژهٔ خیلی ضعیف"
1374#~ msgid "Swipe up to create a message"
1374#~ msgid "Swipe up to create a message"
1375#~ msgstr "برای ایجاد پیام، به بالا بکشید"
1375#~ msgstr "برای ایجاد پیام، به بالا بکشید"
1376
1376
1377+#~ msgid "Long swipe from the left edge to open the Today scope"
1378+#~ msgstr "برای گشودن حوزهٔ امروز، از لبهٔ چپ طولانی بکشید"
1379+
1377#~ msgid "Takes a screenshot of a window."
1380#~ msgid "Takes a screenshot of a window."
1378#~ msgstr "نماگرفت از یک پنجره"
1381#~ msgstr "نماگرفت از یک پنجره"
po/fi.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -529,7 +529,7 @@ msgstr "Valitse työpöytäympäristö"
529msgid "Search…"
529msgid "Search…"
530msgstr ""
530msgstr ""
531
531
532−#: qml/Launcher/Drawer.qml:123
532+#: qml/Launcher/Drawer.qml:127
533msgctxt "Apps sorted alphabetically"
533msgctxt "Apps sorted alphabetically"
534msgid "A-Z"
534msgid "A-Z"
535msgstr ""
535msgstr ""
@@ -630,8 +630,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
630msgstr "Vedä kolmea sormea käyttäen mikä tahansa sovellus ikkunasta toiseen"
630msgstr "Vedä kolmea sormea käyttäen mikä tahansa sovellus ikkunasta toiseen"
631
631
632#: qml/Tutorial/TutorialLeftLong.qml:49
632#: qml/Tutorial/TutorialLeftLong.qml:49
633−msgid "Long swipe from the left edge to open the Today scope"
633+msgid "Long swipe from the left edge to open the Application Drawer"
634−msgstr "Tee pitkä veto vasemmasta reunasta avataksesi Tänään-näkymän"
634+msgstr ""
635
635
636#: qml/Tutorial/TutorialLeft.qml:47
636#: qml/Tutorial/TutorialLeft.qml:47
637msgid "Short swipe from the left edge to open the launcher"
637msgid "Short swipe from the left edge to open the launcher"
@@ -1364,6 +1364,9 @@ msgstr "Erittäin heikko salasana"
1364#~ msgid "Swipe up to add a contact"
1364#~ msgid "Swipe up to add a contact"
1365#~ msgstr "Vedä ylös lisätäksesi yhteystiedon"
1365#~ msgstr "Vedä ylös lisätäksesi yhteystiedon"
1366
1366
1367+#~ msgid "Long swipe from the left edge to open the Today scope"
1368+#~ msgstr "Tee pitkä veto vasemmasta reunasta avataksesi Tänään-näkymän"
1369+
1367#~ msgid "Swipe from the top right edge to open the notification bar"
1370#~ msgid "Swipe from the top right edge to open the notification bar"
1368#~ msgstr "Vedä oikeasta yläreunasta avataksesi ilmoituspalkin"
1371#~ msgstr "Vedä oikeasta yläreunasta avataksesi ilmoituspalkin"
1369
1372
po/fo.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
12"Last-Translator: Jógvan Olsen <jo@jebster.net>\n"
12"Last-Translator: Jógvan Olsen <jo@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -525,7 +525,7 @@ msgstr ""
525msgid "Search…"
525msgid "Search…"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531msgstr ""
531msgstr ""
@@ -626,7 +626,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeftLong.qml:49
628#: qml/Tutorial/TutorialLeftLong.qml:49
629−msgid "Long swipe from the left edge to open the Today scope"
629+msgid "Long swipe from the left edge to open the Application Drawer"
630msgstr ""
630msgstr ""
631
631
632#: qml/Tutorial/TutorialLeft.qml:47
632#: qml/Tutorial/TutorialLeft.qml:47
po/fr.po+21−16
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11−"PO-Revision-Date: 2016-12-17 14:32+0000\n"
11+"PO-Revision-Date: 2017-02-07 18:31+0000\n"
12"Last-Translator: Anne017 <anneonyme017@openmailbox.org>\n"
12"Last-Translator: Anne017 <anneonyme017@openmailbox.org>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -24,15 +24,15 @@ msgstr "Mot de passe : "
24
24
25#: plugins/LightDM/Greeter.cpp:203
25#: plugins/LightDM/Greeter.cpp:203
26msgid "Username"
26msgid "Username"
27−msgstr ""
27+msgstr "Nom d’utilisateur"
28
28
29#: plugins/LightDM/Greeter.cpp:242
29#: plugins/LightDM/Greeter.cpp:242
30msgid "Failed to authenticate"
30msgid "Failed to authenticate"
31−msgstr ""
31+msgstr "Échec de l'authentification"
32
32
33#: plugins/LightDM/Greeter.cpp:244
33#: plugins/LightDM/Greeter.cpp:244
34msgid "Invalid password, please try again"
34msgid "Invalid password, please try again"
35−msgstr ""
35+msgstr "Mot de passe non valide, veuillez réessayer"
36
36
37#: plugins/LightDM/Greeter.cpp:254
37#: plugins/LightDM/Greeter.cpp:254
38msgid "Log In"
38msgid "Log In"
@@ -44,11 +44,11 @@ msgstr "Réessayer"
44
44
45#: plugins/LightDM/UsersModel.cpp:152
45#: plugins/LightDM/UsersModel.cpp:152
46msgid "Login"
46msgid "Login"
47−msgstr ""
47+msgstr "Se connecter"
48
48
49#: plugins/LightDM/UsersModel.cpp:160
49#: plugins/LightDM/UsersModel.cpp:160
50msgid "Guest Session"
50msgid "Guest Session"
51−msgstr ""
51+msgstr "Session d'invité"
52
52
53#: plugins/Unity/Launcher/launcheritem.cpp:50
53#: plugins/Unity/Launcher/launcheritem.cpp:50
54#: plugins/Unity/Launcher/launcheritem.cpp:122
54#: plugins/Unity/Launcher/launcheritem.cpp:122
@@ -151,7 +151,7 @@ msgstr "Alt + Impécr"
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:80
152#: qml/Components/KeyboardShortcutsOverlay.qml:80
153msgid "Takes a screenshot of the current window."
153msgid "Takes a screenshot of the current window."
154−msgstr ""
154+msgstr "Prend une capture d'écran de la fenêtre actuelle."
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:88
156#: qml/Components/KeyboardShortcutsOverlay.qml:88
157msgid "Super + Space"
157msgid "Super + Space"
@@ -507,11 +507,11 @@ msgstr "Réessayer"
507
507
508#: qml/Greeter/Greeter.qml:562
508#: qml/Greeter/Greeter.qml:562
509msgid "Enter passphrase to unlock"
509msgid "Enter passphrase to unlock"
510−msgstr ""
510+msgstr "Saisir la phrase de passe pour déverrouiller"
511
511
512#: qml/Greeter/Greeter.qml:563
512#: qml/Greeter/Greeter.qml:563
513msgid "Enter passcode to unlock"
513msgid "Enter passcode to unlock"
514−msgstr ""
514+msgstr "Saisissez votre mot de passe pour déverrouiller"
515
515
516#: qml/Greeter/NarrowView.qml:242
516#: qml/Greeter/NarrowView.qml:242
517msgid "Emergency"
517msgid "Emergency"
@@ -533,7 +533,7 @@ msgstr "Sélectionner l'environnement de bureau"
533msgid "Search…"
533msgid "Search…"
534msgstr "Rechercher..."
534msgstr "Rechercher..."
535
535
536−#: qml/Launcher/Drawer.qml:123
536+#: qml/Launcher/Drawer.qml:127
537msgctxt "Apps sorted alphabetically"
537msgctxt "Apps sorted alphabetically"
538msgid "A-Z"
538msgid "A-Z"
539msgstr "A-Z"
539msgstr "A-Z"
@@ -636,10 +636,10 @@ msgstr ""
636"l'autre"
636"l'autre"
637
637
638#: qml/Tutorial/TutorialLeftLong.qml:49
638#: qml/Tutorial/TutorialLeftLong.qml:49
639−msgid "Long swipe from the left edge to open the Today scope"
639+msgid "Long swipe from the left edge to open the Application Drawer"
640msgstr ""
640msgstr ""
641−"Faites glisser à partir du bord gauche jusqu'au bord droit pour ouvrir le "
641+"Faites un glissement long à partir du bord gauche pour ouvrir le tiroir des "
642−"moteur de recherche Aujourd'hui"
642+"applications"
643
643
644#: qml/Tutorial/TutorialLeft.qml:47
644#: qml/Tutorial/TutorialLeft.qml:47
645msgid "Short swipe from the left edge to open the launcher"
645msgid "Short swipe from the left edge to open the launcher"
@@ -1416,5 +1416,10 @@ msgstr "Mot de passe très faible"
1416#~ msgid "Swipe up for favorite calculations"
1416#~ msgid "Swipe up for favorite calculations"
1417#~ msgstr "Faites glisser vers le haut pour afficher les calculs favoris"
1417#~ msgstr "Faites glisser vers le haut pour afficher les calculs favoris"
1418
1418
1419+#~ msgid "Long swipe from the left edge to open the Today scope"
1420+#~ msgstr ""
1421+#~ "Faites glisser à partir du bord gauche jusqu'au bord droit pour ouvrir le "
1422+#~ "moteur de recherche Aujourd'hui"
1423+
1419#~ msgid "Takes a screenshot of a window."
1424#~ msgid "Takes a screenshot of a window."
1420#~ msgstr "Prends une capture d'écran d'une fenêtre."
1425#~ msgstr "Prends une capture d'écran d'une fenêtre."
po/ga.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
13"Language-Team: Irish <ga@li.org>\n"
13"Language-Team: Irish <ga@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -522,7 +522,7 @@ msgstr ""
522msgid "Search…"
522msgid "Search…"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Launcher/Drawer.qml:123
525+#: qml/Launcher/Drawer.qml:127
526msgctxt "Apps sorted alphabetically"
526msgctxt "Apps sorted alphabetically"
527msgid "A-Z"
527msgid "A-Z"
528msgstr ""
528msgstr ""
@@ -626,7 +626,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeftLong.qml:49
628#: qml/Tutorial/TutorialLeftLong.qml:49
629−msgid "Long swipe from the left edge to open the Today scope"
629+msgid "Long swipe from the left edge to open the Application Drawer"
630msgstr ""
630msgstr ""
631
631
632#: qml/Tutorial/TutorialLeft.qml:47
632#: qml/Tutorial/TutorialLeft.qml:47
po/gd.po+10−7
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-04-08 18:34+0000\n"
11"PO-Revision-Date: 2016-04-08 18:34+0000\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
13"Language-Team: Fòram na Gàidhlig\n"
13"Language-Team: Fòram na Gàidhlig\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18"(n > 2 && n < 20) ? 2 : 3;\n"
18"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21"Language: gd\n"
21"Language: gd\n"
22
22
23#: plugins/LightDM/Greeter.cpp:188
23#: plugins/LightDM/Greeter.cpp:188
@@ -536,7 +536,7 @@ msgstr "Tagh àrainneachd an deasga"
536msgid "Search…"
536msgid "Search…"
537msgstr ""
537msgstr ""
538
538
539−#: qml/Launcher/Drawer.qml:123
539+#: qml/Launcher/Drawer.qml:127
540msgctxt "Apps sorted alphabetically"
540msgctxt "Apps sorted alphabetically"
541msgid "A-Z"
541msgid "A-Z"
542msgstr ""
542msgstr ""
@@ -645,10 +645,8 @@ msgstr ""
645"eile"
645"eile"
646
646
647#: qml/Tutorial/TutorialLeftLong.qml:49
647#: qml/Tutorial/TutorialLeftLong.qml:49
648−msgid "Long swipe from the left edge to open the Today scope"
648+msgid "Long swipe from the left edge to open the Application Drawer"
649msgstr ""
649msgstr ""
650−"Dèan grad-shlaighdeadh a-steach on oir chlì gus breath an latha an-diugh "
651−"fhosgladh"
652
650
653#: qml/Tutorial/TutorialLeft.qml:47
651#: qml/Tutorial/TutorialLeft.qml:47
654msgid "Short swipe from the left edge to open the launcher"
652msgid "Short swipe from the left edge to open the launcher"
@@ -1410,6 +1408,11 @@ msgstr "Facal-faire glè lag"
1410#~ msgid "Swipe up to add a contact"
1408#~ msgid "Swipe up to add a contact"
1411#~ msgstr "Dèan grad-shlaighdeadh suas airson neach-aithne a chur ris"
1409#~ msgstr "Dèan grad-shlaighdeadh suas airson neach-aithne a chur ris"
1412
1410
1411+#~ msgid "Long swipe from the left edge to open the Today scope"
1412+#~ msgstr ""
1413+#~ "Dèan grad-shlaighdeadh a-steach on oir chlì gus breath an latha an-diugh "
1414+#~ "fhosgladh"
1415+
1413#~ msgid "Swipe from the top right edge to open the notification bar"
1416#~ msgid "Swipe from the top right edge to open the notification bar"
1414#~ msgstr ""
1417#~ msgstr ""
1415#~ "Dèan grad-shlaighdeadh a-nuas on oir dheas a dh’fhosgladh bàr nam brathan"
1418#~ "Dèan grad-shlaighdeadh a-nuas on oir dheas a dh’fhosgladh bàr nam brathan"
po/gl.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2017-02-02 07:25+0000\n"
11"PO-Revision-Date: 2017-02-02 07:25+0000\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -525,7 +525,7 @@ msgstr "Seleccione o ambiente de escritorio"
525msgid "Search…"
525msgid "Search…"
526msgstr "Buscar..."
526msgstr "Buscar..."
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531msgstr "A-Z"
531msgstr "A-Z"
@@ -626,8 +626,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
626msgstr "Arrastre con 3 dedos calquera aplicativo dunha xanela á outra"
626msgstr "Arrastre con 3 dedos calquera aplicativo dunha xanela á outra"
627
627
628#: qml/Tutorial/TutorialLeftLong.qml:49
628#: qml/Tutorial/TutorialLeftLong.qml:49
629−msgid "Long swipe from the left edge to open the Today scope"
629+msgid "Long swipe from the left edge to open the Application Drawer"
630−msgstr "Esvare longo desde o bordo esquerdo para abrir o ámbito Hoxe"
630+msgstr ""
631
631
632#: qml/Tutorial/TutorialLeft.qml:47
632#: qml/Tutorial/TutorialLeft.qml:47
633msgid "Short swipe from the left edge to open the launcher"
633msgid "Short swipe from the left edge to open the launcher"
@@ -1376,6 +1376,9 @@ msgstr "O contrasinal é moi feble"
1376#~ msgid "Short or long swipe from the right edge to view your open apps"
1376#~ msgid "Short or long swipe from the right edge to view your open apps"
1377#~ msgstr "Esvare desde o bordo dereito para ver os aplicativos abertos"
1377#~ msgstr "Esvare desde o bordo dereito para ver os aplicativos abertos"
1378
1378
1379+#~ msgid "Long swipe from the left edge to open the Today scope"
1380+#~ msgstr "Esvare longo desde o bordo esquerdo para abrir o ámbito Hoxe"
1381+
1379#~ msgid "Swipe from the left edge to open the launcher"
1382#~ msgid "Swipe from the left edge to open the launcher"
1380#~ msgstr "Esvare desde o bordo esquerdo para abrir o Iniciador"
1383#~ msgstr "Esvare desde o bordo esquerdo para abrir o Iniciador"
1381
1384
po/gv.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Manx <gv@li.org>\n"
13"Language-Team: Manx <gv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
17"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -528,7 +528,7 @@ msgstr ""
528msgid "Search…"
528msgid "Search…"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Launcher/Drawer.qml:123
531+#: qml/Launcher/Drawer.qml:127
532msgctxt "Apps sorted alphabetically"
532msgctxt "Apps sorted alphabetically"
533msgid "A-Z"
533msgid "A-Z"
534msgstr ""
534msgstr ""
@@ -629,7 +629,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
629msgstr ""
629msgstr ""
630
630
631#: qml/Tutorial/TutorialLeftLong.qml:49
631#: qml/Tutorial/TutorialLeftLong.qml:49
632−msgid "Long swipe from the left edge to open the Today scope"
632+msgid "Long swipe from the left edge to open the Application Drawer"
633msgstr ""
633msgstr ""
634
634
635#: qml/Tutorial/TutorialLeft.qml:47
635#: qml/Tutorial/TutorialLeft.qml:47
po/he.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/hi.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
13"Language-Team: Hindi <hi@li.org>\n"
13"Language-Team: Hindi <hi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/hr.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-05-04 17:52+0000\n"
11"PO-Revision-Date: 2016-05-04 17:52+0000\n"
12"Last-Translator: gogo <trebelnik2@gmail.com>\n"
12"Last-Translator: gogo <trebelnik2@gmail.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -529,7 +529,7 @@ msgstr "Odaberi okruženje radne površine"
529msgid "Search…"
529msgid "Search…"
530msgstr ""
530msgstr ""
531
531
532−#: qml/Launcher/Drawer.qml:123
532+#: qml/Launcher/Drawer.qml:127
533msgctxt "Apps sorted alphabetically"
533msgctxt "Apps sorted alphabetically"
534msgid "A-Z"
534msgid "A-Z"
535msgstr ""
535msgstr ""
@@ -634,8 +634,8 @@ msgstr ""
634"Povucite pomoću 3 prsta bilo koju aplikaciju iz jednog prozora u drugi"
634"Povucite pomoću 3 prsta bilo koju aplikaciju iz jednog prozora u drugi"
635
635
636#: qml/Tutorial/TutorialLeftLong.qml:49
636#: qml/Tutorial/TutorialLeftLong.qml:49
637−msgid "Long swipe from the left edge to open the Today scope"
637+msgid "Long swipe from the left edge to open the Application Drawer"
638−msgstr "Dulje povucite od lijevog ruba za otvaranje današnjeg djelokruga"
638+msgstr ""
639
639
640#: qml/Tutorial/TutorialLeft.qml:47
640#: qml/Tutorial/TutorialLeft.qml:47
641msgid "Short swipe from the left edge to open the launcher"
641msgid "Short swipe from the left edge to open the launcher"
@@ -1341,6 +1341,9 @@ msgstr "Vrlo slaba lozinka"
1341#~ msgid "Swipe up to add a contact"
1341#~ msgid "Swipe up to add a contact"
1342#~ msgstr "Povucite prema gore za dodavanje kontakta"
1342#~ msgstr "Povucite prema gore za dodavanje kontakta"
1343
1343
1344+#~ msgid "Long swipe from the left edge to open the Today scope"
1345+#~ msgstr "Dulje povucite od lijevog ruba za otvaranje današnjeg djelokruga"
1346+
1344#~ msgid "Please re-enter"
1347#~ msgid "Please re-enter"
1345#~ msgstr "Ponovno upišite"
1348#~ msgstr "Ponovno upišite"
1346
1349
po/hu.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-08-17 10:53+0000\n"
11"PO-Revision-Date: 2016-08-17 10:53+0000\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -527,7 +527,7 @@ msgstr "Asztali-környezet kiválasztása"
527msgid "Search…"
527msgid "Search…"
528msgstr ""
528msgstr ""
529
529
530−#: qml/Launcher/Drawer.qml:123
530+#: qml/Launcher/Drawer.qml:127
531msgctxt "Apps sorted alphabetically"
531msgctxt "Apps sorted alphabetically"
532msgid "A-Z"
532msgid "A-Z"
533msgstr ""
533msgstr ""
@@ -629,8 +629,8 @@ msgstr ""
629"Az alkalmazások 3 ujjal megragadva húzhatóak egyik ablakból a másikba"
629"Az alkalmazások 3 ujjal megragadva húzhatóak egyik ablakból a másikba"
630
630
631#: qml/Tutorial/TutorialLeftLong.qml:49
631#: qml/Tutorial/TutorialLeftLong.qml:49
632−msgid "Long swipe from the left edge to open the Today scope"
632+msgid "Long swipe from the left edge to open the Application Drawer"
633−msgstr "Hosszan csúsztasson balról a Ma lencse eléréséhez"
633+msgstr ""
634
634
635#: qml/Tutorial/TutorialLeft.qml:47
635#: qml/Tutorial/TutorialLeft.qml:47
636msgid "Short swipe from the left edge to open the launcher"
636msgid "Short swipe from the left edge to open the launcher"
@@ -1382,6 +1382,9 @@ msgstr "Nagyon gyenge jelszó"
1382#~ msgstr ""
1382#~ msgstr ""
1383#~ "Csúsztasson röviden vagy hosszan jobbról a nyitott alkalmazások eléréshez"
1383#~ "Csúsztasson röviden vagy hosszan jobbról a nyitott alkalmazások eléréshez"
1384
1384
1385+#~ msgid "Long swipe from the left edge to open the Today scope"
1386+#~ msgstr "Hosszan csúsztasson balról a Ma lencse eléréséhez"
1387+
1385#~ msgid "Swipe from the left edge to open the launcher"
1388#~ msgid "Swipe from the left edge to open the launcher"
1386#~ msgstr "Csúsztasson balról az indító eléréshez"
1389#~ msgstr "Csúsztasson balról az indító eléréshez"
1387
1390
po/hy.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -525,7 +525,7 @@ msgstr ""
525msgid "Search…"
525msgid "Search…"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531msgstr ""
531msgstr ""
@@ -626,7 +626,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeftLong.qml:49
628#: qml/Tutorial/TutorialLeftLong.qml:49
629−msgid "Long swipe from the left edge to open the Today scope"
629+msgid "Long swipe from the left edge to open the Application Drawer"
630msgstr ""
630msgstr ""
631
631
632#: qml/Tutorial/TutorialLeft.qml:47
632#: qml/Tutorial/TutorialLeft.qml:47
po/ia.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
12"Last-Translator: karm <melo@carmu.com>\n"
12"Last-Translator: karm <melo@carmu.com>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -527,7 +527,7 @@ msgstr "Seliger le ambiente del scriptorio"
527msgid "Search…"
527msgid "Search…"
528msgstr ""
528msgstr ""
529
529
530−#: qml/Launcher/Drawer.qml:123
530+#: qml/Launcher/Drawer.qml:127
531msgctxt "Apps sorted alphabetically"
531msgctxt "Apps sorted alphabetically"
532msgid "A-Z"
532msgid "A-Z"
533msgstr ""
533msgstr ""
@@ -628,8 +628,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
628msgstr "Tirar per 3 digitos qualcunque application ab un fenestra al altere"
628msgstr "Tirar per 3 digitos qualcunque application ab un fenestra al altere"
629
629
630#: qml/Tutorial/TutorialLeftLong.qml:49
630#: qml/Tutorial/TutorialLeftLong.qml:49
631−msgid "Long swipe from the left edge to open the Today scope"
631+msgid "Long swipe from the left edge to open the Application Drawer"
632−msgstr "Striar ab le bordo sinistre pro aperir le campo Hodie"
632+msgstr ""
633
633
634#: qml/Tutorial/TutorialLeft.qml:47
634#: qml/Tutorial/TutorialLeft.qml:47
635msgid "Short swipe from the left edge to open the launcher"
635msgid "Short swipe from the left edge to open the launcher"
@@ -1367,6 +1367,9 @@ msgstr "Contrasigno troppo debile"
1367#~ msgid "Swipe up to add a contact"
1367#~ msgid "Swipe up to add a contact"
1368#~ msgstr "Striar in alto pro adder un contacto"
1368#~ msgstr "Striar in alto pro adder un contacto"
1369
1369
1370+#~ msgid "Long swipe from the left edge to open the Today scope"
1371+#~ msgstr "Striar ab le bordo sinistre pro aperir le campo Hodie"
1372+
1370#~ msgid "Swipe from the top right edge to open the notification bar"
1373#~ msgid "Swipe from the top right edge to open the notification bar"
1371#~ msgstr "Stria ab le bordo alte dextre pro aperir le barra del notificationes"
1374#~ msgstr "Stria ab le bordo alte dextre pro aperir le barra del notificationes"
1372
1375
po/id.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -524,7 +524,7 @@ msgstr ""
524msgid "Search…"
524msgid "Search…"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Launcher/Drawer.qml:123
527+#: qml/Launcher/Drawer.qml:127
528msgctxt "Apps sorted alphabetically"
528msgctxt "Apps sorted alphabetically"
529msgid "A-Z"
529msgid "A-Z"
530msgstr ""
530msgstr ""
@@ -625,7 +625,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
625msgstr ""
625msgstr ""
626
626
627#: qml/Tutorial/TutorialLeftLong.qml:49
627#: qml/Tutorial/TutorialLeftLong.qml:49
628−msgid "Long swipe from the left edge to open the Today scope"
628+msgid "Long swipe from the left edge to open the Application Drawer"
629msgstr ""
629msgstr ""
630
630
631#: qml/Tutorial/TutorialLeft.qml:47
631#: qml/Tutorial/TutorialLeft.qml:47
po/is.po+5−5
@@ -9,7 +9,7 @@ msgid ""
9msgstr ""
9msgstr ""
10"Project-Id-Version: po_unity8-is\n"
10"Project-Id-Version: po_unity8-is\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
12+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
13"PO-Revision-Date: 2014-11-13 09:32+0000\n"
13"PO-Revision-Date: 2014-11-13 09:32+0000\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
@@ -17,8 +17,8 @@ msgstr ""
17"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"
18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
20+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
21−"X-Generator: Launchpad (build 18322)\n"
21+"X-Generator: Launchpad (build 18326)\n"
22"Language: is\n"
22"Language: is\n"
23
23
24#: plugins/LightDM/Greeter.cpp:188
24#: plugins/LightDM/Greeter.cpp:188
@@ -530,7 +530,7 @@ msgstr ""
530msgid "Search…"
530msgid "Search…"
531msgstr ""
531msgstr ""
532
532
533−#: qml/Launcher/Drawer.qml:123
533+#: qml/Launcher/Drawer.qml:127
534msgctxt "Apps sorted alphabetically"
534msgctxt "Apps sorted alphabetically"
535msgid "A-Z"
535msgid "A-Z"
536msgstr ""
536msgstr ""
@@ -631,7 +631,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
631msgstr ""
631msgstr ""
632
632
633#: qml/Tutorial/TutorialLeftLong.qml:49
633#: qml/Tutorial/TutorialLeftLong.qml:49
634−msgid "Long swipe from the left edge to open the Today scope"
634+msgid "Long swipe from the left edge to open the Application Drawer"
635msgstr ""
635msgstr ""
636
636
637#: qml/Tutorial/TutorialLeft.qml:47
637#: qml/Tutorial/TutorialLeft.qml:47
po/it.po+18−15
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11−"PO-Revision-Date: 2016-09-11 10:40+0000\n"
11+"PO-Revision-Date: 2017-02-14 10:03+0000\n"
12−"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
12+"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -24,15 +24,15 @@ msgstr "Password: "
24
24
25#: plugins/LightDM/Greeter.cpp:203
25#: plugins/LightDM/Greeter.cpp:203
26msgid "Username"
26msgid "Username"
27−msgstr ""
27+msgstr "Nome utente"
28
28
29#: plugins/LightDM/Greeter.cpp:242
29#: plugins/LightDM/Greeter.cpp:242
30msgid "Failed to authenticate"
30msgid "Failed to authenticate"
31−msgstr ""
31+msgstr "Autenticazione non riuscita"
32
32
33#: plugins/LightDM/Greeter.cpp:244
33#: plugins/LightDM/Greeter.cpp:244
34msgid "Invalid password, please try again"
34msgid "Invalid password, please try again"
35−msgstr ""
35+msgstr "Password non valida, riprovare"
36
36
37#: plugins/LightDM/Greeter.cpp:254
37#: plugins/LightDM/Greeter.cpp:254
38msgid "Log In"
38msgid "Log In"
@@ -44,11 +44,11 @@ msgstr "Riprova"
44
44
45#: plugins/LightDM/UsersModel.cpp:152
45#: plugins/LightDM/UsersModel.cpp:152
46msgid "Login"
46msgid "Login"
47−msgstr ""
47+msgstr "Accesso"
48
48
49#: plugins/LightDM/UsersModel.cpp:160
49#: plugins/LightDM/UsersModel.cpp:160
50msgid "Guest Session"
50msgid "Guest Session"
51−msgstr ""
51+msgstr "Sessione ospite"
52
52
53#: plugins/Unity/Launcher/launcheritem.cpp:50
53#: plugins/Unity/Launcher/launcheritem.cpp:50
54#: plugins/Unity/Launcher/launcheritem.cpp:122
54#: plugins/Unity/Launcher/launcheritem.cpp:122
@@ -151,7 +151,7 @@ msgstr "Alt + Stamp"
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:80
152#: qml/Components/KeyboardShortcutsOverlay.qml:80
153msgid "Takes a screenshot of the current window."
153msgid "Takes a screenshot of the current window."
154−msgstr ""
154+msgstr "Cattura una schermata della finestra corrente"
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:88
156#: qml/Components/KeyboardShortcutsOverlay.qml:88
157msgid "Super + Space"
157msgid "Super + Space"
@@ -207,7 +207,7 @@ msgstr "Come fare clic su un'icona del Launcher"
207
207
208#: qml/Components/KeyboardShortcutsOverlay.qml:177
208#: qml/Components/KeyboardShortcutsOverlay.qml:177
209msgid "Super + A"
209msgid "Super + A"
210−msgstr ""
210+msgstr "Super + A"
211
211
212#: qml/Components/KeyboardShortcutsOverlay.qml:182
212#: qml/Components/KeyboardShortcutsOverlay.qml:182
213msgid "Opens the Application Drawer."
213msgid "Opens the Application Drawer."
@@ -531,7 +531,7 @@ msgstr ""
531msgid "Search…"
531msgid "Search…"
532msgstr ""
532msgstr ""
533
533
534−#: qml/Launcher/Drawer.qml:123
534+#: qml/Launcher/Drawer.qml:127
535msgctxt "Apps sorted alphabetically"
535msgctxt "Apps sorted alphabetically"
536msgid "A-Z"
536msgid "A-Z"
537msgstr ""
537msgstr ""
@@ -633,8 +633,8 @@ msgstr ""
633"Trascinare con 3 dita qualsiasi applicazione da una finestra all'altra"
633"Trascinare con 3 dita qualsiasi applicazione da una finestra all'altra"
634
634
635#: qml/Tutorial/TutorialLeftLong.qml:49
635#: qml/Tutorial/TutorialLeftLong.qml:49
636−msgid "Long swipe from the left edge to open the Today scope"
636+msgid "Long swipe from the left edge to open the Application Drawer"
637−msgstr "Scorrere lentamente dal bordo sinistro per aprire la scope Oggi"
637+msgstr ""
638
638
639#: qml/Tutorial/TutorialLeft.qml:47
639#: qml/Tutorial/TutorialLeft.qml:47
640msgid "Short swipe from the left edge to open the launcher"
640msgid "Short swipe from the left edge to open the launcher"
@@ -1390,6 +1390,9 @@ msgstr "Password molto fragile"
1390#~ msgid "Swipe up to add a contact"
1390#~ msgid "Swipe up to add a contact"
1391#~ msgstr "Scorrere verso l'alto per aggiungere un contatto"
1391#~ msgstr "Scorrere verso l'alto per aggiungere un contatto"
1392
1392
1393+#~ msgid "Long swipe from the left edge to open the Today scope"
1394+#~ msgstr "Scorrere lentamente dal bordo sinistro per aprire la scope Oggi"
1395+
1393#~ msgid "Hover your mouse on the right edge to view your open apps"
1396#~ msgid "Hover your mouse on the right edge to view your open apps"
1394#~ msgstr ""
1397#~ msgstr ""
1395#~ "Posizionare il mouse sul bordo destro per vedere le applicazioni aperte"
1398#~ "Posizionare il mouse sul bordo destro per vedere le applicazioni aperte"
po/ja.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -520,7 +520,7 @@ msgstr ""
520msgid "Search…"
520msgid "Search…"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Launcher/Drawer.qml:123
523+#: qml/Launcher/Drawer.qml:127
524msgctxt "Apps sorted alphabetically"
524msgctxt "Apps sorted alphabetically"
525msgid "A-Z"
525msgid "A-Z"
526msgstr ""
526msgstr ""
@@ -621,7 +621,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
621msgstr ""
621msgstr ""
622
622
623#: qml/Tutorial/TutorialLeftLong.qml:49
623#: qml/Tutorial/TutorialLeftLong.qml:49
624−msgid "Long swipe from the left edge to open the Today scope"
624+msgid "Long swipe from the left edge to open the Application Drawer"
625msgstr ""
625msgstr ""
626
626
627#: qml/Tutorial/TutorialLeft.qml:47
627#: qml/Tutorial/TutorialLeft.qml:47
po/km.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr ""
523msgid "Search…"
523msgid "Search…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr ""
529msgstr ""
@@ -621,7 +621,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
621msgstr ""
621msgstr ""
622
622
623#: qml/Tutorial/TutorialLeftLong.qml:49
623#: qml/Tutorial/TutorialLeftLong.qml:49
624−msgid "Long swipe from the left edge to open the Today scope"
624+msgid "Long swipe from the left edge to open the Application Drawer"
625msgstr ""
625msgstr ""
626
626
627#: qml/Tutorial/TutorialLeft.qml:47
627#: qml/Tutorial/TutorialLeft.qml:47
po/kn.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/ko.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -520,7 +520,7 @@ msgstr ""
520msgid "Search…"
520msgid "Search…"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Launcher/Drawer.qml:123
523+#: qml/Launcher/Drawer.qml:127
524msgctxt "Apps sorted alphabetically"
524msgctxt "Apps sorted alphabetically"
525msgid "A-Z"
525msgid "A-Z"
526msgstr ""
526msgstr ""
@@ -618,7 +618,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
618msgstr ""
618msgstr ""
619
619
620#: qml/Tutorial/TutorialLeftLong.qml:49
620#: qml/Tutorial/TutorialLeftLong.qml:49
621−msgid "Long swipe from the left edge to open the Today scope"
621+msgid "Long swipe from the left edge to open the Application Drawer"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeft.qml:47
624#: qml/Tutorial/TutorialLeft.qml:47
po/ku.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr ""
523msgid "Search…"
523msgid "Search…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr ""
529msgstr ""
@@ -624,7 +624,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr ""
624msgstr ""
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628msgstr ""
628msgstr ""
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
po/ky.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/lo.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
13"Language-Team: Lao <lo@li.org>\n"
13"Language-Team: Lao <lo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/lt.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -522,7 +522,7 @@ msgstr ""
522msgid "Search…"
522msgid "Search…"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Launcher/Drawer.qml:123
525+#: qml/Launcher/Drawer.qml:127
526msgctxt "Apps sorted alphabetically"
526msgctxt "Apps sorted alphabetically"
527msgid "A-Z"
527msgid "A-Z"
528msgstr ""
528msgstr ""
@@ -623,7 +623,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
623msgstr ""
623msgstr ""
624
624
625#: qml/Tutorial/TutorialLeftLong.qml:49
625#: qml/Tutorial/TutorialLeftLong.qml:49
626−msgid "Long swipe from the left edge to open the Today scope"
626+msgid "Long swipe from the left edge to open the Application Drawer"
627msgstr ""
627msgstr ""
628
628
629#: qml/Tutorial/TutorialLeft.qml:47
629#: qml/Tutorial/TutorialLeft.qml:47
po/lv.po+5−5
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
11+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21"Language: lv\n"
21"Language: lv\n"
22
22
23#: plugins/LightDM/Greeter.cpp:188
23#: plugins/LightDM/Greeter.cpp:188
@@ -526,7 +526,7 @@ msgstr ""
526msgid "Search…"
526msgid "Search…"
527msgstr ""
527msgstr ""
528
528
529−#: qml/Launcher/Drawer.qml:123
529+#: qml/Launcher/Drawer.qml:127
530msgctxt "Apps sorted alphabetically"
530msgctxt "Apps sorted alphabetically"
531msgid "A-Z"
531msgid "A-Z"
532msgstr ""
532msgstr ""
@@ -630,7 +630,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
630msgstr ""
630msgstr ""
631
631
632#: qml/Tutorial/TutorialLeftLong.qml:49
632#: qml/Tutorial/TutorialLeftLong.qml:49
633−msgid "Long swipe from the left edge to open the Today scope"
633+msgid "Long swipe from the left edge to open the Application Drawer"
634msgstr ""
634msgstr ""
635
635
636#: qml/Tutorial/TutorialLeft.qml:47
636#: qml/Tutorial/TutorialLeft.qml:47
po/ml.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
12"Last-Translator: ST Alfas <Unknown>\n"
12"Last-Translator: ST Alfas <Unknown>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/mr.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
13"Language-Team: Marathi <mr@li.org>\n"
13"Language-Team: Marathi <mr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/ms.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-12-20 14:02+0000\n"
11"PO-Revision-Date: 2016-12-20 14:02+0000\n"
12"Last-Translator: abuyop <Unknown>\n"
12"Last-Translator: abuyop <Unknown>\n"
13"Language-Team: Malay <ms@li.org>\n"
13"Language-Team: Malay <ms@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -525,7 +525,7 @@ msgstr "Pilih persekitaran desktop"
525msgid "Search…"
525msgid "Search…"
526msgstr "Gelintar..."
526msgstr "Gelintar..."
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531msgstr "A-Z"
531msgstr "A-Z"
@@ -628,8 +628,8 @@ msgstr ""
628"tetingkap yang lain"
628"tetingkap yang lain"
629
629
630#: qml/Tutorial/TutorialLeftLong.qml:49
630#: qml/Tutorial/TutorialLeftLong.qml:49
631−msgid "Long swipe from the left edge to open the Today scope"
631+msgid "Long swipe from the left edge to open the Application Drawer"
632−msgstr "Leret panjang dari pinggir kiri untuk membuka skop Hari Ini"
632+msgstr ""
633
633
634#: qml/Tutorial/TutorialLeft.qml:47
634#: qml/Tutorial/TutorialLeft.qml:47
635msgid "Short swipe from the left edge to open the launcher"
635msgid "Short swipe from the left edge to open the launcher"
@@ -1383,6 +1383,9 @@ msgstr "Kata laluan sangat lemah"
1383#~ msgid "Swipe up to create a message"
1383#~ msgid "Swipe up to create a message"
1384#~ msgstr "Leret ke atas untuk cipta satu mesej"
1384#~ msgstr "Leret ke atas untuk cipta satu mesej"
1385
1385
1386+#~ msgid "Long swipe from the left edge to open the Today scope"
1387+#~ msgstr "Leret panjang dari pinggir kiri untuk membuka skop Hari Ini"
1388+
1386#~ msgid "Hover your mouse on the right edge to view your open apps"
1389#~ msgid "Hover your mouse on the right edge to view your open apps"
1387#~ msgstr ""
1390#~ msgstr ""
1388#~ "Letak penuding tetikus anda dipinggir kanan untuk melihat apl anda yang "
1391#~ "Letak penuding tetikus anda dipinggir kanan untuk melihat apl anda yang "
po/my.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
13"Language-Team: Burmese <my@li.org>\n"
13"Language-Team: Burmese <my@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/nb.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2017-01-27 07:01+0000\n"
11"PO-Revision-Date: 2017-01-27 07:01+0000\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -529,7 +529,7 @@ msgstr "Velg skrivebordsmiljø"
529msgid "Search…"
529msgid "Search…"
530msgstr "Søk …"
530msgstr "Søk …"
531
531
532−#: qml/Launcher/Drawer.qml:123
532+#: qml/Launcher/Drawer.qml:127
533msgctxt "Apps sorted alphabetically"
533msgctxt "Apps sorted alphabetically"
534msgid "A-Z"
534msgid "A-Z"
535msgstr "A-Å"
535msgstr "A-Å"
@@ -630,8 +630,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
630msgstr "Dra et program fra et vindu til et annet med 3 fingre"
630msgstr "Dra et program fra et vindu til et annet med 3 fingre"
631
631
632#: qml/Tutorial/TutorialLeftLong.qml:49
632#: qml/Tutorial/TutorialLeftLong.qml:49
633−msgid "Long swipe from the left edge to open the Today scope"
633+msgid "Long swipe from the left edge to open the Application Drawer"
634−msgstr "Dra langt fra venstre kant for å åpne virkefeltet «I dag»"
634+msgstr ""
635
635
636#: qml/Tutorial/TutorialLeft.qml:47
636#: qml/Tutorial/TutorialLeft.qml:47
637msgid "Short swipe from the left edge to open the launcher"
637msgid "Short swipe from the left edge to open the launcher"
@@ -1372,5 +1372,8 @@ msgstr "Veldig svakt passord"
1372#~ msgid "Swipe up to create a message"
1372#~ msgid "Swipe up to create a message"
1373#~ msgstr "Dra opp for å lage en melding"
1373#~ msgstr "Dra opp for å lage en melding"
1374
1374
1375+#~ msgid "Long swipe from the left edge to open the Today scope"
1376+#~ msgstr "Dra langt fra venstre kant for å åpne virkefeltet «I dag»"
1377+
1375#~ msgid "Takes a screenshot of a window."
1378#~ msgid "Takes a screenshot of a window."
1376#~ msgstr "Tar bilde av et vindu."
1379#~ msgstr "Tar bilde av et vindu."
po/ne.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Nepali <ne@li.org>\n"
13"Language-Team: Nepali <ne@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/nl.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-11-01 08:29+0000\n"
11"PO-Revision-Date: 2016-11-01 08:29+0000\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -532,7 +532,7 @@ msgstr "Bureaubladomgeving selecteren"
532msgid "Search…"
532msgid "Search…"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Launcher/Drawer.qml:123
535+#: qml/Launcher/Drawer.qml:127
536msgctxt "Apps sorted alphabetically"
536msgctxt "Apps sorted alphabetically"
537msgid "A-Z"
537msgid "A-Z"
538msgstr ""
538msgstr ""
@@ -634,8 +634,8 @@ msgstr ""
634"Een toepassing met 3 vingers slepen van het ene venster naar het andere"
634"Een toepassing met 3 vingers slepen van het ene venster naar het andere"
635
635
636#: qml/Tutorial/TutorialLeftLong.qml:49
636#: qml/Tutorial/TutorialLeftLong.qml:49
637−msgid "Long swipe from the left edge to open the Today scope"
637+msgid "Long swipe from the left edge to open the Application Drawer"
638−msgstr "Lang vanaf de linkerkant vegen om de Vandaag-scope te openen"
638+msgstr ""
639
639
640#: qml/Tutorial/TutorialLeft.qml:47
640#: qml/Tutorial/TutorialLeft.qml:47
641msgid "Short swipe from the left edge to open the launcher"
641msgid "Short swipe from the left edge to open the launcher"
@@ -1385,5 +1385,8 @@ msgstr "Zeer zwak wachtwoord"
1385#~ msgid "Swipe up to manage the app"
1385#~ msgid "Swipe up to manage the app"
1386#~ msgstr "Omhoog vegen om de app te beheren"
1386#~ msgstr "Omhoog vegen om de app te beheren"
1387
1387
1388+#~ msgid "Long swipe from the left edge to open the Today scope"
1389+#~ msgstr "Lang vanaf de linkerkant vegen om de Vandaag-scope te openen"
1390+
1388#~ msgid "Takes a screenshot of a window."
1391#~ msgid "Takes a screenshot of a window."
1389#~ msgstr "Maakt een schermafdruk van een venster."
1392#~ msgstr "Maakt een schermafdruk van een venster."
po/nn.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/oc.po+10−7
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-10-27 13:43+0000\n"
11"PO-Revision-Date: 2016-10-27 13:43+0000\n"
12"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
12"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -532,7 +532,7 @@ msgstr "Seleccionar l'environament de burèu"
532msgid "Search…"
532msgid "Search…"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Launcher/Drawer.qml:123
535+#: qml/Launcher/Drawer.qml:127
536msgctxt "Apps sorted alphabetically"
536msgctxt "Apps sorted alphabetically"
537msgid "A-Z"
537msgid "A-Z"
538msgstr ""
538msgstr ""
@@ -634,10 +634,8 @@ msgstr ""
634"Fasètz lisar amb 3 dets quina aplicacion que siá d'una fenèstra a l'autra"
634"Fasètz lisar amb 3 dets quina aplicacion que siá d'una fenèstra a l'autra"
635
635
636#: qml/Tutorial/TutorialLeftLong.qml:49
636#: qml/Tutorial/TutorialLeftLong.qml:49
637−msgid "Long swipe from the left edge to open the Today scope"
637+msgid "Long swipe from the left edge to open the Application Drawer"
638msgstr ""
638msgstr ""
639−"Fasètz lisar a partir del bòrd esquèrre fins al bòrd dreit per dobrir lo "
640−"motor de recèrca Uèi"
641
639
642#: qml/Tutorial/TutorialLeft.qml:47
640#: qml/Tutorial/TutorialLeft.qml:47
643msgid "Short swipe from the left edge to open the launcher"
641msgid "Short swipe from the left edge to open the launcher"
@@ -1270,3 +1268,8 @@ msgstr "Senhal fòrça feble"
1270
1268
1271#~ msgid "Takes a screenshot of a window."
1269#~ msgid "Takes a screenshot of a window."
1272#~ msgstr "Prend una captura d'ecran d'una fenèstra."
1270#~ msgstr "Prend una captura d'ecran d'una fenèstra."
1271+
1272+#~ msgid "Long swipe from the left edge to open the Today scope"
1273+#~ msgstr ""
1274+#~ "Fasètz lisar a partir del bòrd esquèrre fins al bòrd dreit per dobrir lo "
1275+#~ "motor de recèrca Uèi"
po/or.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Oriya <or@li.org>\n"
13"Language-Team: Oriya <or@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n!=1;\n"
17"Plural-Forms: nplurals=2; plural=n!=1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/pa.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr ""
523msgid "Search…"
523msgid "Search…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr ""
529msgstr ""
@@ -624,7 +624,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr ""
624msgstr ""
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628msgstr ""
628msgstr ""
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
po/pl.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-11-01 15:06+0000\n"
11"PO-Revision-Date: 2016-11-01 15:06+0000\n"
12"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
12"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
13"Language-Team: Polish <pl@li.org>\n"
13"Language-Team: Polish <pl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18"|| n%100>=20) ? 1 : 2;\n"
18"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -526,7 +526,7 @@ msgstr "Wybierz środowisko graficzne"
526msgid "Search…"
526msgid "Search…"
527msgstr ""
527msgstr ""
528
528
529−#: qml/Launcher/Drawer.qml:123
529+#: qml/Launcher/Drawer.qml:127
530msgctxt "Apps sorted alphabetically"
530msgctxt "Apps sorted alphabetically"
531msgid "A-Z"
531msgid "A-Z"
532msgstr ""
532msgstr ""
@@ -631,8 +631,8 @@ msgstr ""
631"Przeciągnij 3 palcami jakąkolwiek aplikację z jednego okna do drugiego"
631"Przeciągnij 3 palcami jakąkolwiek aplikację z jednego okna do drugiego"
632
632
633#: qml/Tutorial/TutorialLeftLong.qml:49
633#: qml/Tutorial/TutorialLeftLong.qml:49
634−msgid "Long swipe from the left edge to open the Today scope"
634+msgid "Long swipe from the left edge to open the Application Drawer"
635−msgstr "Długie przeciągnięcie od lewej krawędzi otwiera aplikacje soczewek"
635+msgstr ""
636
636
637#: qml/Tutorial/TutorialLeft.qml:47
637#: qml/Tutorial/TutorialLeft.qml:47
638msgid "Short swipe from the left edge to open the launcher"
638msgid "Short swipe from the left edge to open the launcher"
@@ -1361,6 +1361,9 @@ msgstr "Bardzo słabe hasło"
1361#~ msgid "Swipe up to add a contact"
1361#~ msgid "Swipe up to add a contact"
1362#~ msgstr "Przeciągnij w górę, by dodać kontakt"
1362#~ msgstr "Przeciągnij w górę, by dodać kontakt"
1363
1363
1364+#~ msgid "Long swipe from the left edge to open the Today scope"
1365+#~ msgstr "Długie przeciągnięcie od lewej krawędzi otwiera aplikacje soczewek"
1366+
1364#~ msgid "Swipe from the top right edge to open the notification bar"
1367#~ msgid "Swipe from the top right edge to open the notification bar"
1365#~ msgstr "Przeciągnij z prawego, górnego rogu, by otworzyć menu powiadomień"
1368#~ msgstr "Przeciągnij z prawego, górnego rogu, by otworzyć menu powiadomień"
1366
1369
po/pt.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-06-20 11:37+0000\n"
11"PO-Revision-Date: 2016-06-20 11:37+0000\n"
12"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
12"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -530,7 +530,7 @@ msgstr "Selecione o ambiente de trabalho"
530msgid "Search…"
530msgid "Search…"
531msgstr ""
531msgstr ""
532
532
533−#: qml/Launcher/Drawer.qml:123
533+#: qml/Launcher/Drawer.qml:127
534msgctxt "Apps sorted alphabetically"
534msgctxt "Apps sorted alphabetically"
535msgid "A-Z"
535msgid "A-Z"
536msgstr ""
536msgstr ""
@@ -631,8 +631,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
631msgstr "Arraste qualquer app usando três dedos de uma janela para outra"
631msgstr "Arraste qualquer app usando três dedos de uma janela para outra"
632
632
633#: qml/Tutorial/TutorialLeftLong.qml:49
633#: qml/Tutorial/TutorialLeftLong.qml:49
634−msgid "Long swipe from the left edge to open the Today scope"
634+msgid "Long swipe from the left edge to open the Application Drawer"
635−msgstr "Deslize longo da margem esquerda para abrir a scope Hoje"
635+msgstr ""
636
636
637#: qml/Tutorial/TutorialLeft.qml:47
637#: qml/Tutorial/TutorialLeft.qml:47
638msgid "Short swipe from the left edge to open the launcher"
638msgid "Short swipe from the left edge to open the launcher"
@@ -1352,6 +1352,9 @@ msgstr "Palavra-passe muito fraca"
1352#~ msgid "Swipe up to add a contact"
1352#~ msgid "Swipe up to add a contact"
1353#~ msgstr "Deslize para adicionar um contacto"
1353#~ msgstr "Deslize para adicionar um contacto"
1354
1354
1355+#~ msgid "Long swipe from the left edge to open the Today scope"
1356+#~ msgstr "Deslize longo da margem esquerda para abrir a scope Hoje"
1357+
1355#~ msgid "Swipe from the left edge to open the launcher"
1358#~ msgid "Swipe from the left edge to open the launcher"
1356#~ msgstr "Deslize da margem esquerda para abrir o Launcher"
1359#~ msgstr "Deslize da margem esquerda para abrir o Launcher"
1357
1360
po/pt_BR.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -525,7 +525,7 @@ msgstr ""
525msgid "Search…"
525msgid "Search…"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531msgstr ""
531msgstr ""
@@ -626,7 +626,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeftLong.qml:49
628#: qml/Tutorial/TutorialLeftLong.qml:49
629−msgid "Long swipe from the left edge to open the Today scope"
629+msgid "Long swipe from the left edge to open the Application Drawer"
630msgstr ""
630msgstr ""
631
631
632#: qml/Tutorial/TutorialLeft.qml:47
632#: qml/Tutorial/TutorialLeft.qml:47
po/ro.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
18"== 0) && (n != 0))) ? 2: 1));\n"
18"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -528,7 +528,7 @@ msgstr ""
528msgid "Search…"
528msgid "Search…"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Launcher/Drawer.qml:123
531+#: qml/Launcher/Drawer.qml:127
532msgctxt "Apps sorted alphabetically"
532msgctxt "Apps sorted alphabetically"
533msgid "A-Z"
533msgid "A-Z"
534msgstr ""
534msgstr ""
@@ -632,7 +632,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
632msgstr ""
632msgstr ""
633
633
634#: qml/Tutorial/TutorialLeftLong.qml:49
634#: qml/Tutorial/TutorialLeftLong.qml:49
635−msgid "Long swipe from the left edge to open the Today scope"
635+msgid "Long swipe from the left edge to open the Application Drawer"
636msgstr ""
636msgstr ""
637
637
638#: qml/Tutorial/TutorialLeft.qml:47
638#: qml/Tutorial/TutorialLeft.qml:47
po/ru.po+8−8
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -49,7 +49,7 @@ msgstr ""
49
49
50#: plugins/LightDM/UsersModel.cpp:160
50#: plugins/LightDM/UsersModel.cpp:160
51msgid "Guest Session"
51msgid "Guest Session"
52−msgstr ""
52+msgstr "Гостевой сеанс"
53
53
54#: plugins/Unity/Launcher/launcheritem.cpp:50
54#: plugins/Unity/Launcher/launcheritem.cpp:50
55#: plugins/Unity/Launcher/launcheritem.cpp:122
55#: plugins/Unity/Launcher/launcheritem.cpp:122
@@ -150,7 +150,7 @@ msgstr "Alt + PrtScr"
150
150
151#: qml/Components/KeyboardShortcutsOverlay.qml:80
151#: qml/Components/KeyboardShortcutsOverlay.qml:80
152msgid "Takes a screenshot of the current window."
152msgid "Takes a screenshot of the current window."
153−msgstr ""
153+msgstr "Сделать снимок текущего окна."
154
154
155#: qml/Components/KeyboardShortcutsOverlay.qml:88
155#: qml/Components/KeyboardShortcutsOverlay.qml:88
156msgid "Super + Space"
156msgid "Super + Space"
@@ -254,7 +254,7 @@ msgstr "Переместить фокус."
254
254
255#: qml/Components/KeyboardShortcutsOverlay.qml:272
255#: qml/Components/KeyboardShortcutsOverlay.qml:272
256msgid "Windows"
256msgid "Windows"
257−msgstr ""
257+msgstr "Окна"
258
258
259#: qml/Components/KeyboardShortcutsOverlay.qml:279
259#: qml/Components/KeyboardShortcutsOverlay.qml:279
260msgid "Ctrl + Super + D"
260msgid "Ctrl + Super + D"
@@ -529,7 +529,7 @@ msgstr ""
529msgid "Search…"
529msgid "Search…"
530msgstr ""
530msgstr ""
531
531
532−#: qml/Launcher/Drawer.qml:123
532+#: qml/Launcher/Drawer.qml:127
533msgctxt "Apps sorted alphabetically"
533msgctxt "Apps sorted alphabetically"
534msgid "A-Z"
534msgid "A-Z"
535msgstr ""
535msgstr ""
@@ -633,7 +633,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
633msgstr "Передвигайте любое приложение с помощью трёх пальцев"
633msgstr "Передвигайте любое приложение с помощью трёх пальцев"
634
634
635#: qml/Tutorial/TutorialLeftLong.qml:49
635#: qml/Tutorial/TutorialLeftLong.qml:49
636−msgid "Long swipe from the left edge to open the Today scope"
636+msgid "Long swipe from the left edge to open the Application Drawer"
637msgstr ""
637msgstr ""
638
638
639#: qml/Tutorial/TutorialLeft.qml:47
639#: qml/Tutorial/TutorialLeft.qml:47
po/shn.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
13"Language-Team: Shan <shn@li.org>\n"
13"Language-Team: Shan <shn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/si.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr ""
523msgid "Search…"
523msgid "Search…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr ""
529msgstr ""
@@ -624,7 +624,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr ""
624msgstr ""
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628msgstr ""
628msgstr ""
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
po/sk.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-09-28 04:43+0000\n"
11"PO-Revision-Date: 2016-09-28 04:43+0000\n"
12"Last-Translator: P_E_T_O <Unknown>\n"
12"Last-Translator: P_E_T_O <Unknown>\n"
13"Language-Team: Slovak <sk@li.org>\n"
13"Language-Team: Slovak <sk@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20"Language: sk\n"
20"Language: sk\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
@@ -532,7 +532,7 @@ msgstr "Vybrať pracovné prostredie"
532msgid "Search…"
532msgid "Search…"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Launcher/Drawer.qml:123
535+#: qml/Launcher/Drawer.qml:127
536msgctxt "Apps sorted alphabetically"
536msgctxt "Apps sorted alphabetically"
537msgid "A-Z"
537msgid "A-Z"
538msgstr ""
538msgstr ""
@@ -637,8 +637,8 @@ msgstr ""
637"Potiahnite pomocou 3 prstov ľubovoľnú aplikáciu z jedného okna do druhého"
637"Potiahnite pomocou 3 prstov ľubovoľnú aplikáciu z jedného okna do druhého"
638
638
639#: qml/Tutorial/TutorialLeftLong.qml:49
639#: qml/Tutorial/TutorialLeftLong.qml:49
640−msgid "Long swipe from the left edge to open the Today scope"
640+msgid "Long swipe from the left edge to open the Application Drawer"
641−msgstr "Dlhé potiahnutie od ľavého okraja pre otvorenie scope Dnes"
641+msgstr ""
642
642
643#: qml/Tutorial/TutorialLeft.qml:47
643#: qml/Tutorial/TutorialLeft.qml:47
644msgid "Short swipe from the left edge to open the launcher"
644msgid "Short swipe from the left edge to open the launcher"
@@ -1275,6 +1275,9 @@ msgstr "Heslo je veľmi slabé"
1275#~ "Krátke alebo dlhé potiahnutie od pravého okraja pre zobrazenie otvorených "
1275#~ "Krátke alebo dlhé potiahnutie od pravého okraja pre zobrazenie otvorených "
1276#~ "aplikácií"
1276#~ "aplikácií"
1277
1277
1278+#~ msgid "Long swipe from the left edge to open the Today scope"
1279+#~ msgstr "Dlhé potiahnutie od ľavého okraja pre otvorenie scope Dnes"
1280+
1278#~ msgid "Log out"
1281#~ msgid "Log out"
1279#~ msgstr "Odhlásiť sa"
1282#~ msgstr "Odhlásiť sa"
1280
1283
po/sl.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
18"n%100==4 ? 3 : 0);\n"
18"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -530,7 +530,7 @@ msgstr "Izberite namizno okolje"
530msgid "Search…"
530msgid "Search…"
531msgstr ""
531msgstr ""
532
532
533−#: qml/Launcher/Drawer.qml:123
533+#: qml/Launcher/Drawer.qml:127
534msgctxt "Apps sorted alphabetically"
534msgctxt "Apps sorted alphabetically"
535msgid "A-Z"
535msgid "A-Z"
536msgstr ""
536msgstr ""
@@ -637,8 +637,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
637msgstr "S tremi prsti povlecite program iz enega v drugo okno"
637msgstr "S tremi prsti povlecite program iz enega v drugo okno"
638
638
639#: qml/Tutorial/TutorialLeftLong.qml:49
639#: qml/Tutorial/TutorialLeftLong.qml:49
640−msgid "Long swipe from the left edge to open the Today scope"
640+msgid "Long swipe from the left edge to open the Application Drawer"
641−msgstr "Nadolgo potegnite levi rob za odpiranje vira Danes"
641+msgstr ""
642
642
643#: qml/Tutorial/TutorialLeft.qml:47
643#: qml/Tutorial/TutorialLeft.qml:47
644msgid "Short swipe from the left edge to open the launcher"
644msgid "Short swipe from the left edge to open the launcher"
@@ -1368,6 +1368,9 @@ msgstr "Zelo šibko geslo"
1368#~ msgid "Swipe up to add a contact"
1368#~ msgid "Swipe up to add a contact"
1369#~ msgstr "Za dodajanje stika potegnite navzgor"
1369#~ msgstr "Za dodajanje stika potegnite navzgor"
1370
1370
1371+#~ msgid "Long swipe from the left edge to open the Today scope"
1372+#~ msgstr "Nadolgo potegnite levi rob za odpiranje vira Danes"
1373+
1371#~ msgid "Swipe from the top right edge to open the notification bar"
1374#~ msgid "Swipe from the top right edge to open the notification bar"
1372#~ msgstr "Za odpiranje obvestilne plošče potegnite desni del zgornjega roba"
1375#~ msgstr "Za odpiranje obvestilne plošče potegnite desni del zgornjega roba"
1373
1376
po/sq.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-04-21 06:03+0000\n"
11"PO-Revision-Date: 2016-04-21 06:03+0000\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
13"Language-Team: sq\n"
13"Language-Team: sq\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:04+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20"Language: sq\n"
20"Language: sq\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
@@ -522,7 +522,7 @@ msgstr ""
522msgid "Search…"
522msgid "Search…"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Launcher/Drawer.qml:123
525+#: qml/Launcher/Drawer.qml:127
526msgctxt "Apps sorted alphabetically"
526msgctxt "Apps sorted alphabetically"
527msgid "A-Z"
527msgid "A-Z"
528msgstr ""
528msgstr ""
@@ -623,7 +623,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
623msgstr ""
623msgstr ""
624
624
625#: qml/Tutorial/TutorialLeftLong.qml:49
625#: qml/Tutorial/TutorialLeftLong.qml:49
626−msgid "Long swipe from the left edge to open the Today scope"
626+msgid "Long swipe from the left edge to open the Application Drawer"
627msgstr ""
627msgstr ""
628
628
629#: qml/Tutorial/TutorialLeft.qml:47
629#: qml/Tutorial/TutorialLeft.qml:47
po/sr.po+9−6
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
11+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
12"PO-Revision-Date: 2016-08-22 20:43+0000\n"
12"PO-Revision-Date: 2016-08-22 20:43+0000\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
@@ -17,8 +17,8 @@ msgstr ""
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2017-02-04 05:55+0000\n"
20+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
21−"X-Generator: Launchpad (build 18322)\n"
21+"X-Generator: Launchpad (build 18326)\n"
22"Language: sr\n"
22"Language: sr\n"
23
23
24#: plugins/LightDM/Greeter.cpp:188
24#: plugins/LightDM/Greeter.cpp:188
@@ -529,7 +529,7 @@ msgstr ""
529msgid "Search…"
529msgid "Search…"
530msgstr ""
530msgstr ""
531
531
532−#: qml/Launcher/Drawer.qml:123
532+#: qml/Launcher/Drawer.qml:127
533msgctxt "Apps sorted alphabetically"
533msgctxt "Apps sorted alphabetically"
534msgid "A-Z"
534msgid "A-Z"
535msgstr ""
535msgstr ""
@@ -634,8 +634,8 @@ msgstr ""
634"Превуците користећи 3 прста било који програм са једног у други прозор"
634"Превуците користећи 3 прста било који програм са једног у други прозор"
635
635
636#: qml/Tutorial/TutorialLeftLong.qml:49
636#: qml/Tutorial/TutorialLeftLong.qml:49
637−msgid "Long swipe from the left edge to open the Today scope"
637+msgid "Long swipe from the left edge to open the Application Drawer"
638−msgstr "Дуго превлачење са леве ивице да отворите опсег Данас"
638+msgstr ""
639
639
640#: qml/Tutorial/TutorialLeft.qml:47
640#: qml/Tutorial/TutorialLeft.qml:47
641msgid "Short swipe from the left edge to open the launcher"
641msgid "Short swipe from the left edge to open the launcher"
@@ -1376,6 +1376,9 @@ msgstr "Веома слаба лозинка"
1376#~ msgstr ""
1376#~ msgstr ""
1377#~ "Каратко или дуго превлачење са десне ивице да видите ваше отворене програме"
1377#~ "Каратко или дуго превлачење са десне ивице да видите ваше отворене програме"
1378
1378
1379+#~ msgid "Long swipe from the left edge to open the Today scope"
1380+#~ msgstr "Дуго превлачење са леве ивице да отворите опсег Данас"
1381+
1379#~ msgid "Swipe from the left edge to open the launcher"
1382#~ msgid "Swipe from the left edge to open the launcher"
1380#~ msgstr "Превуците са леве ивице да отворите покретач"
1383#~ msgstr "Превуците са леве ивице да отворите покретач"
1381
1384
po/sv.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-06-19 19:31+0000\n"
11"PO-Revision-Date: 2016-06-19 19:31+0000\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
13"Language-Team: Swedish\n"
13"Language-Team: Swedish\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20"Language: sv\n"
20"Language: sv\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
@@ -527,7 +527,7 @@ msgstr "Välj skrivbordsmiljö"
527msgid "Search…"
527msgid "Search…"
528msgstr ""
528msgstr ""
529
529
530−#: qml/Launcher/Drawer.qml:123
530+#: qml/Launcher/Drawer.qml:127
531msgctxt "Apps sorted alphabetically"
531msgctxt "Apps sorted alphabetically"
532msgid "A-Z"
532msgid "A-Z"
533msgstr ""
533msgstr ""
@@ -628,8 +628,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
628msgstr "Dra ett program från ett fönster till det andra med tre fingrar"
628msgstr "Dra ett program från ett fönster till det andra med tre fingrar"
629
629
630#: qml/Tutorial/TutorialLeftLong.qml:49
630#: qml/Tutorial/TutorialLeftLong.qml:49
631−msgid "Long swipe from the left edge to open the Today scope"
631+msgid "Long swipe from the left edge to open the Application Drawer"
632−msgstr "Gör ett lång svep från vänstra kanten för öppna vyn Idag"
632+msgstr ""
633
633
634#: qml/Tutorial/TutorialLeft.qml:47
634#: qml/Tutorial/TutorialLeft.qml:47
635msgid "Short swipe from the left edge to open the launcher"
635msgid "Short swipe from the left edge to open the launcher"
@@ -1378,5 +1378,8 @@ msgstr "Väldigt svagt lösenord"
1378#~ msgid "Swipe up to create a message"
1378#~ msgid "Swipe up to create a message"
1379#~ msgstr "Svep uppåt för att skapa ett meddelande"
1379#~ msgstr "Svep uppåt för att skapa ett meddelande"
1380
1380
1381+#~ msgid "Long swipe from the left edge to open the Today scope"
1382+#~ msgstr "Gör ett lång svep från vänstra kanten för öppna vyn Idag"
1383+
1381#~ msgid "Takes a screenshot of a window."
1384#~ msgid "Takes a screenshot of a window."
1382#~ msgstr "Tar en skärmbild av ett fönster."
1385#~ msgstr "Tar en skärmbild av ett fönster."
po/sw.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
13"Language-Team: Swahili <sw@li.org>\n"
13"Language-Team: Swahili <sw@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -523,7 +523,7 @@ msgstr ""
523msgid "Search…"
523msgid "Search…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Launcher/Drawer.qml:123
526+#: qml/Launcher/Drawer.qml:127
527msgctxt "Apps sorted alphabetically"
527msgctxt "Apps sorted alphabetically"
528msgid "A-Z"
528msgid "A-Z"
529msgstr ""
529msgstr ""
@@ -624,7 +624,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
624msgstr ""
624msgstr ""
625
625
626#: qml/Tutorial/TutorialLeftLong.qml:49
626#: qml/Tutorial/TutorialLeftLong.qml:49
627−msgid "Long swipe from the left edge to open the Today scope"
627+msgid "Long swipe from the left edge to open the Application Drawer"
628msgstr ""
628msgstr ""
629
629
630#: qml/Tutorial/TutorialLeft.qml:47
630#: qml/Tutorial/TutorialLeft.qml:47
po/ta.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20"Language: ta\n"
20"Language: ta\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
@@ -522,7 +522,7 @@ msgstr ""
522msgid "Search…"
522msgid "Search…"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Launcher/Drawer.qml:123
525+#: qml/Launcher/Drawer.qml:127
526msgctxt "Apps sorted alphabetically"
526msgctxt "Apps sorted alphabetically"
527msgid "A-Z"
527msgid "A-Z"
528msgstr ""
528msgstr ""
@@ -623,7 +623,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
623msgstr ""
623msgstr ""
624
624
625#: qml/Tutorial/TutorialLeftLong.qml:49
625#: qml/Tutorial/TutorialLeftLong.qml:49
626−msgid "Long swipe from the left edge to open the Today scope"
626+msgid "Long swipe from the left edge to open the Application Drawer"
627msgstr ""
627msgstr ""
628
628
629#: qml/Tutorial/TutorialLeft.qml:47
629#: qml/Tutorial/TutorialLeft.qml:47
po/te.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
13"Language-Team: Telugu <te@li.org>\n"
13"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/th.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Thai <th@li.org>\n"
13"Language-Team: Thai <th@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/tr.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:05+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -525,7 +525,7 @@ msgstr "Masaüstü ortamını seçin"
525msgid "Search…"
525msgid "Search…"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Launcher/Drawer.qml:123
528+#: qml/Launcher/Drawer.qml:127
529msgctxt "Apps sorted alphabetically"
529msgctxt "Apps sorted alphabetically"
530msgid "A-Z"
530msgid "A-Z"
531msgstr ""
531msgstr ""
@@ -628,8 +628,8 @@ msgstr ""
628"sürükleyin"
628"sürükleyin"
629
629
630#: qml/Tutorial/TutorialLeftLong.qml:49
630#: qml/Tutorial/TutorialLeftLong.qml:49
631−msgid "Long swipe from the left edge to open the Today scope"
631+msgid "Long swipe from the left edge to open the Application Drawer"
632−msgstr "Bugün kapsamını açmak için sol kenardan uzun kaydırın"
632+msgstr ""
633
633
634#: qml/Tutorial/TutorialLeft.qml:47
634#: qml/Tutorial/TutorialLeft.qml:47
635msgid "Short swipe from the left edge to open the launcher"
635msgid "Short swipe from the left edge to open the launcher"
@@ -1344,3 +1344,6 @@ msgstr "Çok zayıf şifre"
1344
1344
1345#~ msgid "Takes a screenshot of a window."
1345#~ msgid "Takes a screenshot of a window."
1346#~ msgstr "Bir pencerenin ekran görüntüsünü alır."
1346#~ msgstr "Bir pencerenin ekran görüntüsünü alır."
1347+
1348+#~ msgid "Long swipe from the left edge to open the Today scope"
1349+#~ msgstr "Bugün kapsamını açmak için sol kenardan uzun kaydırın"
po/ug.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-07-03 13:56+0000\n"
11"PO-Revision-Date: 2016-07-03 13:56+0000\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -522,7 +522,7 @@ msgstr ""
522msgid "Search…"
522msgid "Search…"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Launcher/Drawer.qml:123
525+#: qml/Launcher/Drawer.qml:127
526msgctxt "Apps sorted alphabetically"
526msgctxt "Apps sorted alphabetically"
527msgid "A-Z"
527msgid "A-Z"
528msgstr ""
528msgstr ""
@@ -620,7 +620,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
620msgstr ""
620msgstr ""
621
621
622#: qml/Tutorial/TutorialLeftLong.qml:49
622#: qml/Tutorial/TutorialLeftLong.qml:49
623−msgid "Long swipe from the left edge to open the Today scope"
623+msgid "Long swipe from the left edge to open the Application Drawer"
624msgstr ""
624msgstr ""
625
625
626#: qml/Tutorial/TutorialLeft.qml:47
626#: qml/Tutorial/TutorialLeft.qml:47
po/uk.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2017-01-17 10:58+0000\n"
11"PO-Revision-Date: 2017-01-17 10:58+0000\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
19+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
20−"X-Generator: Launchpad (build 18322)\n"
20+"X-Generator: Launchpad (build 18326)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
23msgid "Password: "
23msgid "Password: "
@@ -533,7 +533,7 @@ msgstr "Виберіть стільничне середовище"
533msgid "Search…"
533msgid "Search…"
534msgstr "Пошук…"
534msgstr "Пошук…"
535
535
536−#: qml/Launcher/Drawer.qml:123
536+#: qml/Launcher/Drawer.qml:127
537msgctxt "Apps sorted alphabetically"
537msgctxt "Apps sorted alphabetically"
538msgid "A-Z"
538msgid "A-Z"
539msgstr "А-Я"
539msgstr "А-Я"
@@ -637,8 +637,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
637msgstr "Пересувайте будь-який додаток за допомогою трьох пальців"
637msgstr "Пересувайте будь-який додаток за допомогою трьох пальців"
638
638
639#: qml/Tutorial/TutorialLeftLong.qml:49
639#: qml/Tutorial/TutorialLeftLong.qml:49
640−msgid "Long swipe from the left edge to open the Today scope"
640+msgid "Long swipe from the left edge to open the Application Drawer"
641−msgstr "Довге проведення від лівого краю відкриває область «Сьогодні»"
641+msgstr ""
642
642
643#: qml/Tutorial/TutorialLeft.qml:47
643#: qml/Tutorial/TutorialLeft.qml:47
644msgid "Short swipe from the left edge to open the launcher"
644msgid "Short swipe from the left edge to open the launcher"
@@ -1403,5 +1403,8 @@ msgstr "Дуже слабкий пароль"
1403#~ msgid "Swipe up for favorite calculations"
1403#~ msgid "Swipe up for favorite calculations"
1404#~ msgstr "Проведіть вгору, щоб побачити список вибраних обчислень"
1404#~ msgstr "Проведіть вгору, щоб побачити список вибраних обчислень"
1405
1405
1406+#~ msgid "Long swipe from the left edge to open the Today scope"
1407+#~ msgstr "Довге проведення від лівого краю відкриває область «Сьогодні»"
1408+
1406#~ msgid "Takes a screenshot of a window."
1409#~ msgid "Takes a screenshot of a window."
1407#~ msgstr "Зробити знімок вікна."
1410#~ msgstr "Зробити знімок вікна."
po/unity8.pot+3−3
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: \n"
10"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
11+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/ur.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Urdu <ur@li.org>\n"
13"Language-Team: Urdu <ur@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/uz.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/vi.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/wo.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Wolof <wo@li.org>\n"
13"Language-Team: Wolof <wo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/xh.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/zh_CN.po+9−6
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-04-13 06:27+0000\n"
11"PO-Revision-Date: 2016-04-13 06:27+0000\n"
12"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
12"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -522,7 +522,7 @@ msgstr ""
522msgid "Search…"
522msgid "Search…"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Launcher/Drawer.qml:123
525+#: qml/Launcher/Drawer.qml:127
526msgctxt "Apps sorted alphabetically"
526msgctxt "Apps sorted alphabetically"
527msgid "A-Z"
527msgid "A-Z"
528msgstr ""
528msgstr ""
@@ -620,8 +620,8 @@ msgid "Drag using 3 fingers any application from one window to the other"
620msgstr "使用三指将任何应用从一个窗口拖拽至另一个"
620msgstr "使用三指将任何应用从一个窗口拖拽至另一个"
621
621
622#: qml/Tutorial/TutorialLeftLong.qml:49
622#: qml/Tutorial/TutorialLeftLong.qml:49
623−msgid "Long swipe from the left edge to open the Today scope"
623+msgid "Long swipe from the left edge to open the Application Drawer"
624−msgstr "从左侧边缘长距离滑动打开“今日”分类"
624+msgstr ""
625
625
626#: qml/Tutorial/TutorialLeft.qml:47
626#: qml/Tutorial/TutorialLeft.qml:47
627msgid "Short swipe from the left edge to open the launcher"
627msgid "Short swipe from the left edge to open the launcher"
@@ -1325,5 +1325,8 @@ msgstr "密码强度:非常弱"
1325#~ msgid "Short or long swipe from the right edge to view your open apps"
1325#~ msgid "Short or long swipe from the right edge to view your open apps"
1326#~ msgstr "从右侧边缘短距离或长距离滑动查看打开的应用"
1326#~ msgstr "从右侧边缘短距离或长距离滑动查看打开的应用"
1327
1327
1328+#~ msgid "Long swipe from the left edge to open the Today scope"
1329+#~ msgstr "从左侧边缘长距离滑动打开“今日”分类"
1330+
1328#~ msgid "Takes a screenshot of a window."
1331#~ msgid "Takes a screenshot of a window."
1329#~ msgstr "给窗口截图。"
1332#~ msgstr "给窗口截图。"
po/zh_HK.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:188
21#: plugins/LightDM/Greeter.cpp:188
22msgid "Password: "
22msgid "Password: "
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -622,7 +622,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
622msgstr ""
622msgstr ""
623
623
624#: qml/Tutorial/TutorialLeftLong.qml:49
624#: qml/Tutorial/TutorialLeftLong.qml:49
625−msgid "Long swipe from the left edge to open the Today scope"
625+msgid "Long swipe from the left edge to open the Application Drawer"
626msgstr ""
626msgstr ""
627
627
628#: qml/Tutorial/TutorialLeft.qml:47
628#: qml/Tutorial/TutorialLeft.qml:47
po/zh_TW.po+5−5
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2017-01-31 14:40+0000\n"
10+"POT-Creation-Date: 2017-02-16 13:49+0000\n"
11"PO-Revision-Date: 2016-02-24 04:40+0000\n"
11"PO-Revision-Date: 2016-02-24 04:40+0000\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2017-02-04 05:56+0000\n"
18+"X-Launchpad-Export-Date: 2017-02-22 06:06+0000\n"
19−"X-Generator: Launchpad (build 18322)\n"
19+"X-Generator: Launchpad (build 18326)\n"
20"Language: zh_TW\n"
20"Language: zh_TW\n"
21
21
22#: plugins/LightDM/Greeter.cpp:188
22#: plugins/LightDM/Greeter.cpp:188
@@ -521,7 +521,7 @@ msgstr ""
521msgid "Search…"
521msgid "Search…"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Launcher/Drawer.qml:123
524+#: qml/Launcher/Drawer.qml:127
525msgctxt "Apps sorted alphabetically"
525msgctxt "Apps sorted alphabetically"
526msgid "A-Z"
526msgid "A-Z"
527msgstr ""
527msgstr ""
@@ -619,7 +619,7 @@ msgid "Drag using 3 fingers any application from one window to the other"
619msgstr ""
619msgstr ""
620
620
621#: qml/Tutorial/TutorialLeftLong.qml:49
621#: qml/Tutorial/TutorialLeftLong.qml:49
622−msgid "Long swipe from the left edge to open the Today scope"
622+msgid "Long swipe from the left edge to open the Application Drawer"
623msgstr ""
623msgstr ""
624
624
625#: qml/Tutorial/TutorialLeft.qml:47
625#: qml/Tutorial/TutorialLeft.qml:47
qml/ApplicationMenus/ApplicationMenusLimits.qmlnew file+24
@@ -0,0 +1,24 @@
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+pragma Singleton
18+import QtQuick 2.4
19+import QtQuick.Window 2.2
20+
21+QtObject {
22+ property real screenWidth: Screen.width
23+ property real screenHeight: Screen.height
24+}
qml/ApplicationMenus/MenuBar.qml+279−129
@@ -24,12 +24,13 @@ Item {
24 id: root
24 id: root
25 objectName: "menuBar"
25 objectName: "menuBar"
26
26
27+ // set from outside
27 property alias unityMenuModel: rowRepeater.model
28 property alias unityMenuModel: rowRepeater.model
28−
29− readonly property bool valid: rowRepeater.count > 0
30−
31 property bool enableKeyFilter: false
29 property bool enableKeyFilter: false
30+ property real overflowWidth: width
32
31
32+ // read from outside
33+ readonly property bool valid: rowRepeater.count > 0
33 readonly property bool showRequested: d.longAltPressed || d.currentItem != null
34 readonly property bool showRequested: d.longAltPressed || d.currentItem != null
34
35
35 implicitWidth: row.width
36 implicitWidth: row.width
@@ -75,189 +76,334 @@ Item {
75 acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton
76 acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton
76 anchors.fill: parent
77 anchors.fill: parent
77 enabled: d.currentItem != null
78 enabled: d.currentItem != null
79+ hoverEnabled: enabled && d.currentItem && d.currentItem.__popup != null
78 onPressed: d.dismissAll()
80 onPressed: d.dismissAll()
79 }
81 }
80
82
81− Item {
82− id: clippingItem
83−
84− height: root.height
85− width: root.width
86− clip: true
87−
88− Row {
83+ Row {
89− id: row
84+ id: row
90− spacing: units.gu(2)
85+ spacing: units.gu(2)
91− height: parent.height
86+ height: parent.height
92
87
93− ActionContext {
88+ ActionContext {
94− id: menuBarContext
89+ id: menuBarContext
95− objectName: "barContext"
90+ objectName: "barContext"
96− active: !d.currentItem && enableKeyFilter
91+ active: !d.currentItem && enableKeyFilter
97− }
92+ }
98−
99− Repeater {
100− id: rowRepeater
101−
102− Item {
103− id: visualItem
104− objectName: root.objectName + "-item" + __ownIndex
105−
106− readonly property int __ownIndex: index
107− property Item __popup: null;
108− property bool popupVisible: __popup && __popup.visible
109
93
110− implicitWidth: column.implicitWidth
94+ Connections {
111− implicitHeight: row.height
95+ target: root.unityMenuModel
112− enabled: model.sensitive
96+ onModelReset: d.firstInvisibleIndex = undefined
97+ }
113
98
99+ Repeater {
100+ id: rowRepeater
101+
102+ onItemAdded: d.recalcFirstInvisibleIndexAdded(index, item)
103+ onCountChanged: d.recalcFirstInvisibleIndex()
104+
105+ Item {
106+ id: visualItem
107+ objectName: root.objectName + "-item" + __ownIndex
108+
109+ readonly property int __ownIndex: index
110+ property Item __popup: null;
111+ readonly property bool popupVisible: __popup && __popup.visible
112+ readonly property bool shouldDisplay: x + width + ((__ownIndex < rowRepeater.count-1) ? units.gu(2) : 0) <
113+ root.overflowWidth - ((__ownIndex < rowRepeater.count-1) ? overflowButton.width : 0)
114+
115+ implicitWidth: column.implicitWidth
116+ implicitHeight: row.height
117+ enabled: model.sensitive && shouldDisplay
118+ opacity: shouldDisplay ? 1 : 0
119+
114− function show() {
120+ function show() {
115− if (!__popup) {
121+ if (!__popup) {
116− __popup = menuComponent.createObject(root, { objectName: visualItem.objectName + "-menu" });
122+ __popup = menuComponent.createObject(root, { objectName: visualItem.objectName + "-menu" });
123+ __popup.childActivated.connect(dismiss);
117− // force the current item to be the newly popped up menu
124+ // force the current item to be the newly popped up menu
118− } else {
125+ } else {
119− __popup.show();
126+ __popup.show();
120− }
121− d.currentItem = visualItem;
122 }
127 }
128+ d.currentItem = visualItem;
129+ }
123− function hide() {
130+ function hide() {
124− if (__popup) {
131+ if (__popup) {
125− __popup.hide();
132+ __popup.hide();
126
133
127− if (d.currentItem === visualItem) {
134+ if (d.currentItem === visualItem) {
128− d.currentItem = null;
135+ d.currentItem = null;
129− }
130 }
136 }
131 }
137 }
138+ }
132− function dismiss() {
139+ function dismiss() {
133− if (__popup) {
140+ if (__popup) {
134− __popup.destroy();
141+ __popup.destroy();
135− __popup = null;
142+ __popup = null;
136
143
137− if (d.currentItem === visualItem) {
144+ if (d.currentItem === visualItem) {
138− d.currentItem = null;
145+ d.currentItem = null;
139− }
140 }
146 }
141 }
147 }
148+ }
142
149
143− Connections {
150+ onVisibleChanged: {
144− target: d
151+ if (!visible && __popup) dismiss();
145− onDismissAll: visualItem.dismiss()
152+ }
153+
154+ onShouldDisplayChanged: {
155+ if ((!shouldDisplay && d.firstInvisibleIndex == undefined) || __ownIndex <= d.firstInvisibleIndex) {
156+ d.recalcFirstInvisibleIndex();
146 }
157 }
158+ }
147
159
148− Component {
160+ Connections {
149− id: menuComponent
161+ target: d
150− MenuPopup {
151− x: visualItem.x - units.gu(1)
162+ onDismissAll: visualItem.dismiss()
152− anchors.top: parent.bottom
163+ }
153− unityMenuModel: root.unityMenuModel.submenu(visualItem.__ownIndex)
154
164
165+ Component {
166+ id: menuComponent
167+ MenuPopup {
168+ desiredX: visualItem.x - units.gu(1)
169+ desiredY: parent.height
170+ unityMenuModel: root.unityMenuModel.submenu(visualItem.__ownIndex)
171+
155− Component.onCompleted: reset();
172+ Component.onCompleted: reset();
156− }
157 }
173 }
174+ }
158
175
159− RowLayout {
176+ RowLayout {
160− id: column
177+ id: column
161− spacing: units.gu(1)
178+ spacing: units.gu(1)
162− anchors {
179+ anchors {
163− centerIn: parent
180+ centerIn: parent
164− }
181+ }
165
182
166− Icon {
183+ Icon {
167− Layout.preferredWidth: units.gu(2)
184+ Layout.preferredWidth: units.gu(2)
168− Layout.preferredHeight: units.gu(2)
185+ Layout.preferredHeight: units.gu(2)
169− Layout.alignment: Qt.AlignVCenter
186+ Layout.alignment: Qt.AlignVCenter
170
187
171− visible: model.icon || false
188+ visible: model.icon || false
172− source: model.icon || ""
189+ source: model.icon || ""
173− }
190+ }
174
191
175− ActionItem {
192+ ActionItem {
176− id: actionItem
193+ id: actionItem
177− width: _title.width
194+ width: _title.width
178− height: _title.height
195+ height: _title.height
179
196
180− action: Action {
197+ action: Action {
198+ enabled: visualItem.enabled
181− // FIXME - SDK Action:text modifies menu text with html underline for mnemonic
199+ // FIXME - SDK Action:text modifies menu text with html underline for mnemonic
182− text: model.label.replace("_", "&").replace("<u>", "&").replace("</u>", "")
200+ text: model.label.replace("_", "&").replace("<u>", "&").replace("</u>", "")
183
201
184− onTriggered: {
202+ onTriggered: {
185− visualItem.show();
203+ visualItem.show();
186− }
187 }
204 }
205+ }
188
206
189− Label {
207+ Label {
190− id: _title
208+ id: _title
191− text: actionItem.text
209+ text: actionItem.text
192− horizontalAlignment: Text.AlignLeft
210+ horizontalAlignment: Text.AlignLeft
193− color: enabled ? "white" : "#5d5d5d"
211+ color: enabled ? theme.palette.normal.backgroundText : theme.palette.disabled.backgroundText
194− }
195 }
212 }
196 }
213 }
214+ }
197− } // Item ( delegate )
215+ } // Item ( delegate )
198− } // Repeater
216+ } // Repeater
199− } // Row
217+ } // Row
218+
219+ MouseArea {
220+ anchors.fill: row
221+ hoverEnabled: d.currentItem
222+
223+ onEntered: {
224+ if (d.currentItem) {
225+ updateCurrentItemFromPosition(Qt.point(mouseX, mouseY))
226+ }
227+ }
228+ onPositionChanged: {
229+ if (d.currentItem) {
230+ updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
231+ }
232+ }
233+ onClicked: {
234+ var prevItem = d.currentItem;
235+ updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
236+ if (prevItem && d.currentItem == prevItem) {
237+ prevItem.hide();
238+ }
239+ }
240+
241+ function updateCurrentItemFromPosition(point) {
242+ var pos = mapToItem(row, point.x, point.y);
243+
244+ if (!d.hoveredItem || !d.currentItem || !d.hoveredItem.contains(Qt.point(pos.x - d.currentItem.x, pos.y - d.currentItem.y))) {
245+ d.hoveredItem = row.childAt(pos.x, pos.y);
246+ if (!d.hoveredItem || !d.hoveredItem.enabled)
247+ return;
248+ if (d.currentItem != d.hoveredItem) {
249+ d.currentItem = d.hoveredItem;
250+ }
251+ }
252+ }
253+ }
254+
255+ MouseArea {
256+ id: overflowButton
257+ objectName: "overflow"
258+
259+ hoverEnabled: d.currentItem
260+ onEntered: d.currentItem = this
261+ onPositionChanged: d.currentItem = this
262+ onClicked: d.currentItem = this
200
263
201− MouseArea {
264+ property Item __popup: null;
202− anchors.fill: parent
265+ readonly property bool popupVisible: __popup && __popup.visible
203− hoverEnabled: d.currentItem
266+ readonly property Item firstInvisibleItem: d.firstInvisibleIndex !== undefined ? rowRepeater.itemAt(d.firstInvisibleIndex) : null
204
267
205− onEntered: {
268+ visible: d.firstInvisibleIndex != undefined
206− if (d.currentItem) {
269+ x: firstInvisibleItem ? firstInvisibleItem.x : 0
207− updateCurrentItemFromPosition(Qt.point(mouseX, mouseY))
270+
271+ height: parent.height
272+ width: units.gu(4)
273+
274+ onVisibleChanged: {
275+ if (!visible && __popup) dismiss();
276+ }
277+
278+ Icon {
279+ id: icon
280+ width: units.gu(2)
281+ height: units.gu(2)
282+ anchors.centerIn: parent
283+ color: theme.palette.normal.backgroundText
284+ name: "toolkit_chevron-down_2gu"
285+ }
286+
287+ function show() {
288+ if (!__popup) {
289+ __popup = overflowComponent.createObject(root, { objectName: overflowButton.objectName + "-menu" });
290+ __popup.childActivated.connect(dismiss);
291+ // force the current item to be the newly popped up menu
292+ } else {
293+ __popup.show();
294+ }
295+ d.currentItem = overflowButton;
296+ }
297+ function hide() {
298+ if (__popup) {
299+ __popup.hide();
300+
301+ if (d.currentItem === overflowButton) {
302+ d.currentItem = null;
208 }
303 }
209 }
304 }
210− onPositionChanged: {
305+ }
306+ function dismiss() {
307+ if (__popup) {
308+ __popup.destroy();
309+ __popup = null;
310+
211− if (d.currentItem) {
311+ if (d.currentItem === overflowButton) {
212− updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
312+ d.currentItem = null;
213 }
313 }
214 }
314 }
215− onClicked: updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
315+ }
216
316
217− function updateCurrentItemFromPosition(point) {
317+ Connections {
218− var pos = mapToItem(row, point.x, point.y);
318+ target: d
319+ onDismissAll: overflowButton.dismiss()
320+ }
321+
322+ Component {
323+ id: overflowComponent
324+ MenuPopup {
325+ id: overflowPopup
326+ desiredX: overflowButton.x - units.gu(1)
327+ desiredY: parent.height
328+ unityMenuModel: overflowModel
329+
330+ ExpressionFilterModel {
331+ id: overflowModel
332+ sourceModel: root.unityMenuModel
333+ matchExpression: function(index) {
334+ if (d.firstInvisibleIndex === undefined) return false;
335+ return index >= d.firstInvisibleIndex;
336+ }
219
337
220− if (!d.hoveredItem || !d.currentItem || !d.hoveredItem.contains(Qt.point(pos.x - d.currentItem.x, pos.y - d.currentItem.y))) {
338+ function submenu(index) {
221− d.hoveredItem = row.childAt(pos.x, pos.y);
339+ return sourceModel.submenu(mapRowToSource(index));
222− if (!d.hoveredItem || !d.hoveredItem.enabled)
223− return false;
224− if (d.currentItem != d.hoveredItem) {
225− d.currentItem = d.hoveredItem;
226 }
340 }
341+ function activate(index) {
342+ return sourceModel.activate(mapRowToSource(index));
343+ }
344+ }
345+
346+ Connections {
347+ target: d
348+ onFirstInvisibleIndexChanged: overflowModel.invalidate()
227 }
349 }
228− return true;
229 }
350 }
230 }
351 }
352+ }
231
353
232− Rectangle {
354+ Rectangle {
233− id: underline
355+ id: underline
234− anchors {
356+ anchors {
235− bottom: row.bottom
357+ bottom: row.bottom
236− }
237− x: d.currentItem ? row.x + d.currentItem.x - units.gu(1) : 0
238− width: d.currentItem ? d.currentItem.width + units.gu(2) : 0
239− height: units.dp(4)
240− color: UbuntuColors.orange
241− visible: d.currentItem
242 }
358 }
359+ x: d.currentItem ? row.x + d.currentItem.x - units.gu(1) : 0
360+ width: d.currentItem ? d.currentItem.width + units.gu(2) : 0
361+ height: units.dp(4)
362+ color: UbuntuColors.orange
363+ visible: d.currentItem
243 }
364 }
244
365
245 MenuNavigator {
366 MenuNavigator {
246 id: d
367 id: d
247 objectName: "d"
368 objectName: "d"
248 itemView: rowRepeater
369 itemView: rowRepeater
370+ hasOverflow: overflowButton.visible
249
371
250 property Item currentItem: null
372 property Item currentItem: null
251 property Item hoveredItem: null
373 property Item hoveredItem: null
252 property Item prevCurrentItem: null
374 property Item prevCurrentItem: null
253−
254− readonly property int currentIndex: currentItem ? currentItem.__ownIndex : -1
255−
256 property bool altPressed: false
375 property bool altPressed: false
257 property bool longAltPressed: false
376 property bool longAltPressed: false
377+ property var firstInvisibleIndex: undefined
378+
379+ readonly property int currentIndex: currentItem && currentItem.hasOwnProperty("__ownIndex") ? currentItem.__ownIndex : -1
258
380
259 signal dismissAll()
381 signal dismissAll()
260
382
383+ function recalcFirstInvisibleIndexAdded(index, item) {
384+ if (firstInvisibleIndex === undefined) {
385+ if (!item.shouldDisplay) {
386+ firstInvisibleIndex = index;
387+ }
388+ } else if (index <= firstInvisibleIndex) {
389+ if (!item.shouldDisplay) {
390+ firstInvisibleIndex = index;
391+ } else {
392+ firstInvisibleIndex++;
393+ }
394+ }
395+ }
396+
397+ function recalcFirstInvisibleIndex() {
398+ for (var i = 0; i < rowRepeater.count; i++) {
399+ if (!rowRepeater.itemAt(i).shouldDisplay) {
400+ firstInvisibleIndex = i;
401+ return;
402+ }
403+ }
404+ firstInvisibleIndex = undefined;
405+ }
406+
261 onSelect: {
407 onSelect: {
262 var delegate = rowRepeater.itemAt(index);
408 var delegate = rowRepeater.itemAt(index);
263 if (delegate) {
409 if (delegate) {
@@ -265,6 +411,10 @@ Item {
265 }
411 }
266 }
412 }
267
413
414+ onOverflow: {
415+ d.currentItem = overflowButton;
416+ }
417+
268 onCurrentItemChanged: {
418 onCurrentItemChanged: {
269 if (prevCurrentItem && prevCurrentItem != currentItem) {
419 if (prevCurrentItem && prevCurrentItem != currentItem) {
270 if (currentItem) {
420 if (currentItem) {
qml/ApplicationMenus/MenuItem.qml+8−12
@@ -46,6 +46,8 @@ ActionItem {
46 enabled: menuData ? menuData.sensitive : false
46 enabled: menuData ? menuData.sensitive : false
47
47
48 action: Action {
48 action: Action {
49+ enabled: root.enabled
50+
49 // FIXME - SDK Action:text modifies menu text with html underline for mnemonic
51 // FIXME - SDK Action:text modifies menu text with html underline for mnemonic
50 text: menuData.label.replace("_", "&").replace("<u>", "&").replace("</u>", "")
52 text: menuData.label.replace("_", "&").replace("<u>", "&").replace("</u>", "")
51 checkable: menuData.isCheck || menuData.isRadio
53 checkable: menuData.isCheck || menuData.isRadio
@@ -111,6 +113,7 @@ ActionItem {
111 elide: Text.ElideNone
113 elide: Text.ElideNone
112 wrapMode: Text.NoWrap
114 wrapMode: Text.NoWrap
113 clip: true
115 clip: true
116+ color: enabled ? theme.palette.normal.overlayText : theme.palette.disabled.overlayText
114 Layout.fillWidth: true
117 Layout.fillWidth: true
115
118
116 text: root.text ? root.text : ""
119 text: root.text ? root.text : ""
@@ -121,8 +124,8 @@ ActionItem {
121 elide: Text.ElideNone
124 elide: Text.ElideNone
122 wrapMode: Text.NoWrap
125 wrapMode: Text.NoWrap
123 clip: true
126 clip: true
124− color: enabled ? theme.palette.normal.backgroundSecondaryText :
127+ color: enabled ? theme.palette.normal.overlaySecondaryText :
125− theme.palette.disabled.backgroundSecondaryText
128+ theme.palette.disabled.overlaySecondaryText
126
129
127 visible: menuData.shortcut != undefined && !root.hasSubmenu && QuickUtils.keyboardAttached
130 visible: menuData.shortcut != undefined && !root.hasSubmenu && QuickUtils.keyboardAttached
128 text: menuData.shortcut ? menuData.shortcut : ""
131 text: menuData.shortcut ? menuData.shortcut : ""
@@ -133,18 +136,11 @@ ActionItem {
133 id: chevronIcon
136 id: chevronIcon
134 width: units.gu(2)
137 width: units.gu(2)
135 height: units.gu(2)
138 height: units.gu(2)
136− color: enabled ? theme.palette.normal.backgroundSecondaryText :
139+ color: enabled ? theme.palette.normal.overlayText :
137− theme.palette.disabled.backgroundSecondaryText
140+ theme.palette.disabled.overlayText
138
141
139 visible: root.hasSubmenu
142 visible: root.hasSubmenu
140− name: "chevron"
143+ name: "toolkit_chevron-ltr_2gu"
141− }
142− }
143−
144− MouseArea {
145− anchors.fill: parent
146− onClicked: {
147− root.trigger(action && action.checkable ? !action.checked : undefined);
148 }
144 }
149 }
145 }
150}
146}
qml/ApplicationMenus/MenuNavigator.qml+23
@@ -18,8 +18,10 @@ import QtQuick 2.4
18
18
19QtObject {
19QtObject {
20 property Item itemView: null
20 property Item itemView: null
21+ property bool hasOverflow: false
21
22
22 signal select(int index)
23 signal select(int index)
24+ signal overflow()
23
25
24 function selectNext(currentIndex) {
26 function selectNext(currentIndex) {
25 var menu;
27 var menu;
@@ -32,6 +34,11 @@ QtObject {
32 break;
34 break;
33 }
35 }
34 newIndex++;
36 newIndex++;
37+
38+ if (hasOverflow && newIndex === itemView.count) {
39+ overflow()
40+ break;
41+ }
35 }
42 }
36 } else if (currentIndex !== -1 && itemView.count > 1) {
43 } else if (currentIndex !== -1 && itemView.count > 1) {
37 var startIndex = (currentIndex + 1) % itemView.count;
44 var startIndex = (currentIndex + 1) % itemView.count;
@@ -42,6 +49,12 @@ QtObject {
42 select(newIndex);
49 select(newIndex);
43 break;
50 break;
44 }
51 }
52+
53+ if (hasOverflow && newIndex + 1 === itemView.count) {
54+ overflow()
55+ break;
56+ }
57+
45 newIndex = (newIndex + 1) % itemView.count;
58 newIndex = (newIndex + 1) % itemView.count;
46 } while (newIndex !== startIndex)
59 } while (newIndex !== startIndex)
47 }
60 }
@@ -58,12 +71,21 @@ QtObject {
58 break;
71 break;
59 }
72 }
60 newIndex--;
73 newIndex--;
74+
75+ if (hasOverflow && newIndex < 0 ) {
76+ overflow();
77+ break;
78+ }
61 }
79 }
62 } else if (currentIndex !== -1 && itemView.count > 1) {
80 } else if (currentIndex !== -1 && itemView.count > 1) {
63 var startIndex = currentIndex - 1;
81 var startIndex = currentIndex - 1;
64 newIndex = startIndex;
82 newIndex = startIndex;
65 do {
83 do {
66 if (newIndex < 0) {
84 if (newIndex < 0) {
85+ if (hasOverflow) {
86+ overflow();
87+ break;
88+ }
67 newIndex = itemView.count - 1;
89 newIndex = itemView.count - 1;
68 }
90 }
69 menu = itemView.itemAt(newIndex);
91 menu = itemView.itemAt(newIndex);
@@ -72,6 +94,7 @@ QtObject {
72 break;
94 break;
73 }
95 }
74 newIndex--;
96 newIndex--;
97+
75 } while (newIndex !== startIndex)
98 } while (newIndex !== startIndex)
76 }
99 }
77 }
100 }
qml/ApplicationMenus/MenuPopup.qml+116−25
@@ -16,16 +16,51 @@
16
16
17import QtQuick 2.4
17import QtQuick 2.4
18import QtQuick.Layouts 1.1
18import QtQuick.Layouts 1.1
19−import QtQuick.Window 2.2
20import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
21import Ubuntu.Components.ListItems 1.3 as ListItems
20import Ubuntu.Components.ListItems 1.3 as ListItems
22import "../Components"
21import "../Components"
22+import "../Components/PanelState"
23+import "."
23
24
24UbuntuShape {
25UbuntuShape {
25 id: root
26 id: root
26 objectName: "menu"
27 objectName: "menu"
27 backgroundColor: theme.palette.normal.overlay
28 backgroundColor: theme.palette.normal.overlay
28
29
30+ signal childActivated()
31+
32+ // true for submenus that need to show on the other side of their parent
33+ // if they don't fit when growing right
34+ property bool substractWidth: false
35+
36+ property real desiredX
37+ x: {
38+ var dummy = visible; // force recalc when shown/hidden
39+ var parentTopLeft = parent.mapToItem(null, 0, 0);
40+ var farX = ApplicationMenusLimits.screenWidth;
41+ if (parentTopLeft.x + width + desiredX <= farX) {
42+ return desiredX;
43+ } else {
44+ if (substractWidth) {
45+ return -width;
46+ } else {
47+ return farX - parentTopLeft.x - width;
48+ }
49+ }
50+ }
51+
52+ property real desiredY
53+ y: {
54+ var dummy = visible; // force recalc when shown/hidden
55+ var parentTopLeft = parent.mapToItem(null, 0, 0);
56+ var bottomY = ApplicationMenusLimits.screenHeight;
57+ if (parentTopLeft.y + height + desiredY <= bottomY) {
58+ return desiredY;
59+ } else {
60+ return bottomY - parentTopLeft.y - height;
61+ }
62+ }
63+
29 property alias unityMenuModel: repeater.model
64 property alias unityMenuModel: repeater.model
30
65
31 function show() {
66 function show() {
@@ -64,9 +99,9 @@ UbuntuShape {
64 readonly property int currentIndex: currentItem ? currentItem.__ownIndex : -1
99 readonly property int currentIndex: currentItem ? currentItem.__ownIndex : -1
65
100
66 property real __minimumWidth: units.gu(20)
101 property real __minimumWidth: units.gu(20)
67− property real __maximumWidth: Screen.width * 0.7
102+ property real __maximumWidth: ApplicationMenusLimits.screenWidth * 0.7
68 property real __minimumHeight: units.gu(2)
103 property real __minimumHeight: units.gu(2)
69− property real __maximumHeight: Screen.height * 0.7
104+ property real __maximumHeight: ApplicationMenusLimits.screenHeight - PanelState.panelHeight
70
105
71 signal dismissAll()
106 signal dismissAll()
72
107
@@ -76,6 +111,8 @@ UbuntuShape {
76 } else {
111 } else {
77 hoveredItem = null;
112 hoveredItem = null;
78 }
113 }
114+
115+ submenuHoverTimer.stop();
79 }
116 }
80
117
81 onSelect: {
118 onSelect: {
@@ -147,8 +184,19 @@ UbuntuShape {
147 }
184 }
148
185
149 MouseArea {
186 MouseArea {
187+ id: previousMA
150 anchors.fill: parent
188 anchors.fill: parent
189+ hoverEnabled: enabled
151− onPressed: {
190+ onPressed: progress()
191+
192+ Timer {
193+ running: previousMA.containsMouse && !listView.atYBeginning
194+ interval: 1000
195+ repeat: true
196+ onTriggered: previousMA.progress()
197+ }
198+
199+ function progress() {
152 var item = menuColumn.childAt(0, listView.contentY);
200 var item = menuColumn.childAt(0, listView.contentY);
153 if (item) {
201 if (item) {
154 var previousItem = item;
202 var previousItem = item;
@@ -176,10 +224,15 @@ UbuntuShape {
176 contentHeight: menuColumn.height
224 contentHeight: menuColumn.height
177 interactive: height < contentHeight
225 interactive: height < contentHeight
178
226
227+ Timer {
228+ id: submenuHoverTimer
229+ interval: 225 // GTK MENU_POPUP_DELAY, Qt SH_Menu_SubMenuPopupDelay in QCommonStyle is 256
230+ onTriggered: d.currentItem.item.trigger();
231+ }
232+
179 MouseArea {
233 MouseArea {
180 anchors.fill: parent
234 anchors.fill: parent
181 hoverEnabled: true
235 hoverEnabled: true
182− propagateComposedEvents: true // propogate events so we send clicks to children.
183 z: 1 // on top so we override any other hovers
236 z: 1 // on top so we override any other hovers
184 onEntered: updateCurrentItemFromPosition(Qt.point(mouseX, mouseY))
237 onEntered: updateCurrentItemFromPosition(Qt.point(mouseX, mouseY))
185 onPositionChanged: updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
238 onPositionChanged: updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
@@ -189,12 +242,25 @@ UbuntuShape {
189
242
190 if (!d.hoveredItem || !d.currentItem ||
243 if (!d.hoveredItem || !d.currentItem ||
191 !d.hoveredItem.contains(Qt.point(pos.x - d.currentItem.x, pos.y - d.currentItem.y))) {
244 !d.hoveredItem.contains(Qt.point(pos.x - d.currentItem.x, pos.y - d.currentItem.y))) {
245+ submenuHoverTimer.stop();
246+
192 d.hoveredItem = menuColumn.childAt(pos.x, pos.y)
247 d.hoveredItem = menuColumn.childAt(pos.x, pos.y)
193 if (!d.hoveredItem || !d.hoveredItem.enabled)
248 if (!d.hoveredItem || !d.hoveredItem.enabled)
194− return false;
249+ return;
195 d.currentItem = d.hoveredItem;
250 d.currentItem = d.hoveredItem;
251+
252+ if (!d.currentItem.__isSeparator && d.currentItem.item.hasSubmenu && d.currentItem.item.enabled) {
253+ submenuHoverTimer.start();
254+ }
255+ }
256+ }
257+
258+ onClicked: {
259+ var pos = mapToItem(listView.contentItem, mouse.x, mouse.y);
260+ var clickedItem = menuColumn.childAt(pos.x, pos.y);
261+ if (clickedItem.enabled && !clickedItem.__isSeparator) {
262+ clickedItem.item.trigger();
196 }
263 }
197− return true;
198 }
264 }
199 }
265 }
200
266
@@ -249,6 +315,8 @@ UbuntuShape {
249 width: MathUtils.clamp(implicitWidth, d.__minimumWidth, d.__maximumWidth)
315 width: MathUtils.clamp(implicitWidth, d.__minimumWidth, d.__maximumWidth)
250
316
251 action.onTriggered: {
317 action.onTriggered: {
318+ submenuHoverTimer.stop();
319+
252 d.currentItem = loader;
320 d.currentItem = loader;
253
321
254 if (hasSubmenu) {
322 if (hasSubmenu) {
@@ -257,22 +325,29 @@ UbuntuShape {
257 popup = submenuComponent.createObject(focusScope, {
325 popup = submenuComponent.createObject(focusScope, {
258 objectName: loader.objectName + "-",
326 objectName: loader.objectName + "-",
259 unityMenuModel: model,
327 unityMenuModel: model,
328+ substractWidth: true,
260− x: Qt.binding(function() { return root.width }),
329+ desiredX: Qt.binding(function() { return root.width }),
261− y: Qt.binding(function() {
330+ desiredY: Qt.binding(function() {
262 var dummy = listView.contentY; // force a recalc on contentY change.
331 var dummy = listView.contentY; // force a recalc on contentY change.
263 return mapToItem(container, 0, y).y;
332 return mapToItem(container, 0, y).y;
264 })
333 })
265 });
334 });
335+ popup.retreat.connect(function() {
336+ popup.destroy();
337+ popup = null;
338+ menuItem.forceActiveFocus();
339+ });
340+ popup.childActivated.connect(function() {
341+ popup.destroy();
342+ popup = null;
343+ root.childActivated();
344+ });
266 } else if (popup) {
345 } else if (popup) {
267 popup.visible = true;
346 popup.visible = true;
268 }
347 }
269− popup.retreat.connect(function() {
270− popup.destroy();
271− popup = null;
272− menuItem.forceActiveFocus();
273− })
274 } else {
348 } else {
275 root.unityMenuModel.activate(__ownIndex);
349 root.unityMenuModel.activate(__ownIndex);
350+ root.childActivated();
276 }
351 }
277 }
352 }
278
353
@@ -349,8 +424,19 @@ UbuntuShape {
349 }
424 }
350
425
351 MouseArea {
426 MouseArea {
427+ id: nextMA
352 anchors.fill: parent
428 anchors.fill: parent
429+ hoverEnabled: enabled
353− onPressed: {
430+ onPressed: progress()
431+
432+ Timer {
433+ running: nextMA.containsMouse && !listView.atYEnd
434+ interval: 1000
435+ repeat: true
436+ onTriggered: nextMA.progress()
437+ }
438+
439+ function progress() {
354 var item = menuColumn.childAt(0, listView.contentY + listView.height);
440 var item = menuColumn.childAt(0, listView.contentY + listView.height);
355 if (item) {
441 if (item) {
356 var nextItem = item;
442 var nextItem = item;
@@ -375,23 +461,28 @@ UbuntuShape {
375 id: submenuLoader
461 id: submenuLoader
376 source: "MenuPopup.qml"
462 source: "MenuPopup.qml"
377
463
464+ property real desiredX
465+ property real desiredY
466+ property bool substractWidth
378 property var unityMenuModel: null
467 property var unityMenuModel: null
379 signal retreat()
468 signal retreat()
380−
469+ signal childActivated()
381− Binding {
470+
382− target: item
471+ onLoaded: {
383− property: "unityMenuModel"
472+ item.unityMenuModel = Qt.binding(function() { return submenuLoader.unityMenuModel; });
384− value: submenuLoader.unityMenuModel
473+ item.objectName = Qt.binding(function() { return submenuLoader.objectName + "menu"; });
474+ item.desiredX = Qt.binding(function() { return submenuLoader.desiredX; });
475+ item.desiredY = Qt.binding(function() { return submenuLoader.desiredY; });
476+ item.substractWidth = Qt.binding(function() { return submenuLoader.substractWidth; });
385 }
477 }
386
478
387− Binding {
479+ Keys.onLeftPressed: retreat()
480+
481+ Connections {
388 target: item
482 target: item
389− property: "objectName"
483+ onChildActivated: childActivated();
390− value: submenuLoader.objectName + "menu"
391 }
484 }
392
485
393− Keys.onLeftPressed: retreat()
394−
395 Component.onCompleted: item.select(0);
486 Component.onCompleted: item.select(0);
396 onVisibleChanged: if (visible) { item.select(0); }
487 onVisibleChanged: if (visible) { item.select(0); }
397 }
488 }
qml/ApplicationMenus/qmldirnew file+1
@@ -0,0 +1 @@
1+singleton ApplicationMenusLimits 0.1 ApplicationMenusLimits.qml
qml/Components/EdgeBarrier.qml+1
@@ -30,6 +30,7 @@ Item {
30 property int edge: Qt.LeftEdge
30 property int edge: Qt.LeftEdge
31
31
32 readonly property alias progress: controller.progress
32 readonly property alias progress: controller.progress
33+ readonly property alias containsMouse: controller.containsMouse
33
34
34 property Item target: parent
35 property Item target: parent
35 function push(amount) { controller.push(amount); }
36 function push(amount) { controller.push(amount); }
qml/Components/EdgeBarrierController.qml+1
@@ -34,6 +34,7 @@ MouseArea {
34
34
35 function push(amount) {
35 function push(amount) {
36 if (!root._containsMouse) {
36 if (!root._containsMouse) {
37+ console.warn("pushing right edge without mouse actually being at right edge!")
37 return;
38 return;
38 }
39 }
39
40
qml/Components/WindowControlButtons.qml+2
@@ -29,6 +29,7 @@ Row {
29 property bool windowIsMaximized: false
29 property bool windowIsMaximized: false
30 property bool closeButtonShown: true
30 property bool closeButtonShown: true
31 property bool maximizeButtonShown: true
31 property bool maximizeButtonShown: true
32+ property bool minimizeButtonVisible: true
32 property bool overlayShown
33 property bool overlayShown
33
34
34 signal closeClicked()
35 signal closeClicked()
@@ -75,6 +76,7 @@ Row {
75 height: parent.height
76 height: parent.height
76 width: height
77 width: height
77 onClicked: root.minimizeClicked()
78 onClicked: root.minimizeClicked()
79+ visible: root.minimizeButtonVisible
78
80
79 // We dont want touch events to fall through to parent,
81 // We dont want touch events to fall through to parent,
80 // otherwise the containsMouse will not work.
82 // otherwise the containsMouse will not work.
qml/Launcher/Drawer.qml+8−1
@@ -95,7 +95,11 @@ FocusScope {
95 KeyNavigation.down: sections
95 KeyNavigation.down: sections
96
96
97 onAccepted: {
97 onAccepted: {
98− if (searchField.displayText != "" && listLoader.item && listLoader.item.currentItem) {
98+ if (searchField.displayText != "" && listLoader.item) {
99+ // In case there is no currentItem (it might have been filtered away) lets reset it to the first item
100+ if (!listLoader.item.currentItem) {
101+ listLoader.item.currentIndex = 0;
102+ }
99 root.applicationSelected(listLoader.item.getFirstAppId());
103 root.applicationSelected(listLoader.item.getFirstAppId());
100 }
104 }
101 }
105 }
@@ -238,6 +242,7 @@ FocusScope {
238 source: sortProxyModel
242 source: sortProxyModel
239 group: AppDrawerProxyModel.GroupByAll
243 group: AppDrawerProxyModel.GroupByAll
240 sortBy: AppDrawerProxyModel.SortByUsage
244 sortBy: AppDrawerProxyModel.SortByUsage
245+ dynamicSortFilter: false
241 }
246 }
242
247
243 delegate: UbuntuShape {
248 delegate: UbuntuShape {
@@ -287,6 +292,7 @@ FocusScope {
287 source: sortProxyModel
292 source: sortProxyModel
288 sortBy: AppDrawerProxyModel.SortByAToZ
293 sortBy: AppDrawerProxyModel.SortByAToZ
289 group: AppDrawerProxyModel.GroupByAToZ
294 group: AppDrawerProxyModel.GroupByAToZ
295+ dynamicSortFilter: false
290 }
296 }
291
297
292 delegate: UbuntuShape {
298 delegate: UbuntuShape {
@@ -320,6 +326,7 @@ FocusScope {
320 id: categoryModel
326 id: categoryModel
321 source: sortProxyModel
327 source: sortProxyModel
322 filterLetter: model.letter
328 filterLetter: model.letter
329+ dynamicSortFilter: false
323 }
330 }
324 delegateWidth: units.gu(8)
331 delegateWidth: units.gu(8)
325 delegateHeight: units.gu(10)
332 delegateHeight: units.gu(10)
qml/Launcher/Launcher.qml+3−2
@@ -307,7 +307,8 @@ FocusScope {
307 InverseMouseArea {
307 InverseMouseArea {
308 id: closeMouseArea
308 id: closeMouseArea
309 anchors.fill: panel
309 anchors.fill: panel
310− enabled: root.state == "visible" || root.state == "drawer"
310+ enabled: (root.state == "visible" && !root.lockedVisible) || root.state == "drawer" || hoverEnabled
311+ hoverEnabled: panel.quickListOpen
311 visible: enabled
312 visible: enabled
312 onPressed: {
313 onPressed: {
313 mouse.accepted = false;
314 mouse.accepted = false;
@@ -414,7 +415,7 @@ FocusScope {
414 target: panel.dismissTimer
415 target: panel.dismissTimer
415 onTriggered: {
416 onTriggered: {
416 if (root.autohideEnabled && !root.lockedVisible) {
417 if (root.autohideEnabled && !root.lockedVisible) {
417− if (!panel.preventHiding) {
418+ if (!edgeBarrier.containsMouse && !panel.preventHiding) {
418 root.state = ""
419 root.state = ""
419 } else {
420 } else {
420 panel.dismissTimer.restart()
421 panel.dismissTimer.restart()
qml/Launcher/LauncherPanel.qml+3
@@ -35,6 +35,7 @@ Rectangle {
35 || dndArea.containsMouse || dashItem.hovered
35 || dndArea.containsMouse || dashItem.hovered
36 property int highlightIndex: -2
36 property int highlightIndex: -2
37 property bool shortcutHintsShown: false
37 property bool shortcutHintsShown: false
38+ readonly property bool quickListOpen: quickList.state === "open"
38
39
39 signal applicationSelected(string appId)
40 signal applicationSelected(string appId)
40 signal showDashHome()
41 signal showDashHome()
@@ -686,6 +687,8 @@ Rectangle {
686 InverseMouseArea {
687 InverseMouseArea {
687 anchors.fill: quickListShape
688 anchors.fill: quickListShape
688 enabled: quickList.state == "open" || pressed
689 enabled: quickList.state == "open" || pressed
690+ hoverEnabled: enabled
691+ visible: enabled
689
692
690 onClicked: {
693 onClicked: {
691 quickList.state = "";
694 quickList.state = "";
qml/Panel/Panel.qml+4−2
@@ -209,6 +209,8 @@ Item {
209 Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
209 Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
210 active: __applicationMenus.model
210 active: __applicationMenus.model
211
211
212+ width: parent.width - windowControlButtons.width - units.gu(2) - __indicators.barWidth
213+
212 property bool menusRequested: menuBarLoader.item ? menuBarLoader.item.showRequested : false
214 property bool menusRequested: menuBarLoader.item ? menuBarLoader.item.showRequested : false
213
215
214 sourceComponent: MenuBar {
216 sourceComponent: MenuBar {
@@ -283,7 +285,7 @@ Item {
283 anchors.centerIn: parent
285 anchors.centerIn: parent
284 text: actionItem.text
286 text: actionItem.text
285 horizontalAlignment: Text.AlignLeft
287 horizontalAlignment: Text.AlignLeft
286− color: enabled ? "white" : "#5d5d5d"
288+ color: enabled ? theme.palette.normal.backgroundText : theme.palette.disabled.backgroundText
287 }
289 }
288 }
290 }
289
291
@@ -385,7 +387,7 @@ Item {
385 }
387 }
386
388
387 enabled: !applicationMenus.expanded
389 enabled: !applicationMenus.expanded
388− opacity: !applicationMenus.expanded ? 1 : 0
390+ opacity: !callHint.visible && !applicationMenus.expanded ? 1 : 0
389 Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
391 Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
390
392
391 onEnabledChanged: {
393 onEnabledChanged: {
qml/Shell.qml+31−2
@@ -288,6 +288,7 @@ StyledItem {
288 applicationManager: ApplicationManager
288 applicationManager: ApplicationManager
289 topLevelSurfaceList: topLevelSurfaceList
289 topLevelSurfaceList: topLevelSurfaceList
290 inputMethodRect: inputMethod.visibleRect
290 inputMethodRect: inputMethod.visibleRect
291+ rightEdgePushProgress: rightEdgeBarrier.progress
291
292
292 property string usageScenario: shell.usageScenario === "phone" || greeter.hasLockedApp
293 property string usageScenario: shell.usageScenario === "phone" || greeter.hasLockedApp
293 ? "phone"
294 ? "phone"
@@ -523,12 +524,13 @@ StyledItem {
523 hides: [launcher]
524 hides: [launcher]
524 available: (!greeter || !greeter.shown)
525 available: (!greeter || !greeter.shown)
525 && !shell.waitingOnGreeter
526 && !shell.waitingOnGreeter
527+ && !stage.spreadShown
526 }
528 }
527
529
528 readonly property bool focusedSurfaceIsFullscreen: topLevelSurfaceList.focusedWindow
530 readonly property bool focusedSurfaceIsFullscreen: topLevelSurfaceList.focusedWindow
529 ? topLevelSurfaceList.focusedWindow.state === Mir.FullscreenState
531 ? topLevelSurfaceList.focusedWindow.state === Mir.FullscreenState
530 : false
532 : false
531− fullscreenMode: (focusedSurfaceIsFullscreen && !LightDMService.greeter.active && launcher.progress == 0)
533+ fullscreenMode: (focusedSurfaceIsFullscreen && !LightDMService.greeter.active && launcher.progress == 0 && !stage.spreadShown)
532 || greeter.hasLockedApp
534 || greeter.hasLockedApp
533 greeterShown: greeter && greeter.shown
535 greeterShown: greeter && greeter.shown
534 }
536 }
@@ -693,6 +695,33 @@ StyledItem {
693 }
695 }
694 ]
696 ]
695 }
697 }
698+
699+ EdgeBarrier {
700+ id: rightEdgeBarrier
701+ enabled: !greeter.shown
702+
703+ // NB: it does its own positioning according to the specified edge
704+ edge: Qt.RightEdge
705+
706+ onPassed: {
707+ panel.indicators.hide()
708+ }
709+
710+ material: Component {
711+ Item {
712+ Rectangle {
713+ width: parent.height
714+ height: parent.width
715+ rotation: 90
716+ anchors.centerIn: parent
717+ gradient: Gradient {
718+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.5)}
719+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
720+ }
721+ }
722+ }
723+ }
724+ }
696 }
725 }
697
726
698 Dialogs {
727 Dialogs {
@@ -776,7 +805,7 @@ StyledItem {
776
805
777 onPushedRightBoundary: {
806 onPushedRightBoundary: {
778 if (buttons === Qt.NoButton) {
807 if (buttons === Qt.NoButton) {
779− stage.pushRightEdge(amount);
808+ rightEdgeBarrier.push(amount);
780 } else if (buttons === Qt.LeftButton && previewRectangle && previewRectangle.target.canBeMaximizedLeftRight) {
809 } else if (buttons === Qt.LeftButton && previewRectangle && previewRectangle.target.canBeMaximizedLeftRight) {
781 previewRectangle.maximizeRight(amount);
810 previewRectangle.maximizeRight(amount);
782 }
811 }
qml/Stage/ChildWindow.qmlnew file+159
@@ -0,0 +1,159 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Unity.Application 0.1
20+
21+Item {
22+ id: root
23+
24+ // Set from outside.
25+ property var surface
26+ property Item boundsItem
27+ property Item target
28+ property alias requestedWidth: surfaceContainer.requestedWidth
29+ property alias requestedHeight: surfaceContainer.requestedHeight
30+
31+ width: surface ? surface.size.width : 0
32+ height: surface ? surface.size.height : 0
33+
34+ // Make it get shown and hidden with a fade in/out effect
35+ opacity: surface && surface.state !== Mir.MinimizedState && surface.state !== Mir.HiddenState ? 1.0 : 0.0
36+ Behavior on opacity { UbuntuNumberAnimation {} }
37+ visible: opacity !== 0.0 // make it transparent to input as well
38+
39+ readonly property bool dragging: windowResizeArea.dragging || d.touchOverlayDragging || d.moveHandlerDragging
40+
41+ QtObject {
42+ id: d
43+ readonly property bool decorated: surface ? surface.type === Mir.UtilityType
44+ || surface.type === Mir.DialogType
45+ || surface.type === Mir.NormalType
46+ : false
47+
48+ readonly property bool moveable: decorated
49+ readonly property bool resizeable: decorated
50+
51+ property alias decoration: decorationLoader.item
52+ property alias moveHandler: moveHandlerLoader.item
53+
54+ readonly property bool touchOverlayDragging: touchOverlayLoader.item ? touchOverlayLoader.item.dragging : false
55+ readonly property bool moveHandlerDragging: moveHandlerLoader.item ? moveHandlerLoader.item.dragging : false
56+ }
57+
58+ WindowResizeArea {
59+ id: windowResizeArea
60+ anchors {
61+ top: decorationLoader.top
62+ bottom: parent.bottom
63+ left: parent.left; right: parent.right
64+ }
65+ target: root.target
66+ boundsItem: root.boundsItem
67+ minWidth: units.gu(10)
68+ minHeight: units.gu(10)
69+ borderThickness: units.gu(2)
70+ enabled: d.resizeable
71+ visible: enabled
72+ onPressed: root.surface.activate();
73+ }
74+
75+ BorderImage {
76+ property real shadowThickness: root.surface && root.surface.focused ? units.gu(2) : units.gu(1.5)
77+ anchors {
78+ top: decorationLoader.top
79+ bottom: parent.bottom
80+ left: parent.left; right: parent.right
81+ margins: -shadowThickness
82+ }
83+ source: "../graphics/dropshadow2gu.sci"
84+ opacity: .3
85+ }
86+
87+ Loader {
88+ id: decorationLoader
89+ anchors.bottom: root.top
90+ anchors.left: root.left
91+ anchors.right: root.right
92+
93+ visible: active
94+ active: d.decorated
95+
96+ height: item ? item.height : 0
97+
98+ sourceComponent: Component {
99+ WindowDecoration {
100+ height: units.gu(3)
101+ title: root.surface ? root.surface.name : ""
102+ active: root.surface ? root.surface.focused : false
103+ closeButtonVisible: false
104+ minimizeButtonVisible: false
105+ maximizeButtonShown: false
106+ onPressed: root.surface.activate();
107+ onPressedChanged: if (d.moveHandler) { d.moveHandler.handlePressedChanged(pressed, pressedButtons, mouseX, mouseY); }
108+ onPositionChanged: if (d.moveHandler) {
109+ d.moveHandler.handlePositionChanged(mouse);
110+ }
111+ onReleased: if (d.moveHandler) { d.moveHandler.handleReleased(); }
112+ }
113+ }
114+ }
115+
116+ Loader {
117+ id: moveHandlerLoader
118+ active: d.moveable
119+ sourceComponent: Component {
120+ MoveHandler {
121+ target: root.target
122+ buttonsWidth: d.decoration ? d.decoration.buttonsWidth : 0
123+ boundsItem: root.boundsItem
124+ boundsTopMargin: decorationLoader.height
125+ }
126+ }
127+ }
128+
129+ SurfaceContainer {
130+ id: surfaceContainer
131+
132+ // Do not hold on to a dead surface so that it can be destroyed.
133+ // FIXME It should not be QML's job to release the MirSurface if its backing surface goes away. Instead backing
134+ // MirSurface should go away but the MirSurfaceItem should be able to live on with the last drawn frame
135+ // and properties.
136+ surface: root.surface && root.surface.live ? root.surface : null
137+
138+ requestedWidth: surface ? surface.size.width : 0
139+ requestedHeight: surface ? surface.size.height : 0
140+
141+ // TODO ChildWindow parent will probably want to control those
142+ interactive: true
143+ consumesInput: true
144+ }
145+
146+ Loader {
147+ id: touchOverlayLoader
148+ active: d.resizeable || d.moveable
149+ anchors.top: decorationLoader.top
150+ anchors.bottom: parent.bottom
151+ anchors.left: parent.left
152+ anchors.right: parent.right
153+ sourceComponent: Component { WindowControlsOverlay {
154+ target: root.target
155+ resizeArea: windowResizeArea
156+ boundsItem: root.boundsItem
157+ } }
158+ }
159+}
qml/Stage/ChildWindowRepeater.qmlnew file+28
@@ -0,0 +1,28 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+
19+// Meant to be created with a Loader to circumvent the "ChildWindowTree is instantiated recursively" error from the QML engine
20+Repeater {
21+ id: root
22+ property Item boundsItem
23+ delegate: ChildWindowTree {
24+ surface: model.surface
25+ z: root.count - model.index
26+ boundsItem: root.boundsItem
27+ }
28+}
qml/Stage/ChildWindowTree.qmlnew file+127
@@ -0,0 +1,127 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Unity.Application 0.1
20+
21+Item {
22+ id: root
23+
24+ property alias surface: childWindow.surface
25+ property real displacementX: 0
26+ property real displacementY: 0
27+ property alias boundsItem: childWindow.boundsItem
28+
29+ x: surface ? surface.position.x + displacementX : 0
30+ y: surface ? surface.position.y + displacementY : 0
31+ width: childWindow.width
32+ height: childWindow.height
33+
34+ ////
35+ // API expected by MoveHandler (and some by WindowResizeArea as well)
36+ readonly property bool maximized: false
37+ readonly property bool maximizedLeft: false
38+ readonly property bool maximizedRight: false
39+ readonly property bool maximizedHorizontally: false
40+ readonly property bool maximizedVertically: false
41+ readonly property bool maximizedTopLeft: false
42+ readonly property bool maximizedTopRight: false
43+ readonly property bool maximizedBottomLeft: false
44+ readonly property bool maximizedBottomRight: false
45+ readonly property bool anyMaximized: maximized || maximizedLeft || maximizedRight || maximizedHorizontally || maximizedVertically ||
46+ maximizedTopLeft || maximizedTopRight || maximizedBottomLeft || maximizedBottomRight
47+
48+ readonly property bool canBeCornerMaximized: false
49+ readonly property bool canBeMaximizedLeftRight: false
50+ readonly property bool canBeMaximized: false
51+
52+ readonly property var resizeArea: QtObject {
53+ property real normalWidth: units.gu(1)
54+ property real normalHeight: units.gu(1)
55+ }
56+
57+ readonly property bool windowedTransitionRunning: false
58+
59+ // NB: those bindings will be overwritten by MoveHandler when you first move the window
60+ property real windowedX: x
61+ property real windowedY: y
62+
63+
64+ property real restoredX
65+ property real restoredY
66+
67+ state: "restored"
68+ // end of API expected by MoveHandler
69+ ////
70+
71+ ////
72+ // API expected by WindowResizeArea
73+ property real windowedWidth: childWindow.width
74+ property real windowedHeight: childWindow.height
75+ // end of API expected by WindowResizeArea
76+ ////
77+
78+ ////
79+ // API expected by WindowControlsOverlay
80+ function activate() {
81+ surface.activate();
82+ }
83+ // end of API expected by WindowControlsOverlay
84+ ////
85+
86+ Binding {
87+ target: root.surface
88+ when: childWindow.dragging
89+ property: "requestedPosition"
90+ value: Qt.point(root.windowedX - root.displacementX,
91+ root.windowedY - root.displacementY);
92+ }
93+
94+ // It's a separate Item so that a window can be hid independently of its children
95+ ChildWindow {
96+ id: childWindow
97+ target: root
98+ requestedWidth: root.windowedWidth
99+ requestedHeight: root.windowedHeight
100+ }
101+
102+ Connections {
103+ target: root.surface
104+ onFocusRequested: {
105+ root.surface.activate();
106+ }
107+ }
108+
109+ // Using a loader here mainly to circunvent the "ChildWindowTree is instantiated recursively" error from the QML engine
110+ Loader {
111+ id: childRepeaterLoader
112+ source: "ChildWindowRepeater.qml"
113+ active: root.surface && root.surface.childSurfaceList.count > 0
114+ Binding {
115+ target: childRepeaterLoader.item
116+ when: childRepeaterLoader.item
117+ property: "model"
118+ value: root.surface ? root.surface.childSurfaceList : null
119+ }
120+ Binding {
121+ target: childRepeaterLoader.item
122+ when: childRepeaterLoader.item
123+ property: "boundsItem"
124+ value: root.boundsItem
125+ }
126+ }
127+}
qml/Stage/DecoratedWindow.qml+1−2
@@ -67,8 +67,7 @@ FocusScope {
67 readonly property int heightIncrement: !counterRotate ? applicationWindow.heightIncrement : applicationWindow.widthIncrement
67 readonly property int heightIncrement: !counterRotate ? applicationWindow.heightIncrement : applicationWindow.widthIncrement
68
68
69 property alias overlayShown: decoration.overlayShown
69 property alias overlayShown: decoration.overlayShown
70− property alias stageWidth: moveHandler.stageWidth
70+ property alias boundsItem: moveHandler.boundsItem
71− property alias stageHeight: moveHandler.stageHeight
72 readonly property alias dragging: moveHandler.dragging
71 readonly property alias dragging: moveHandler.dragging
73
72
74 readonly property Item clientAreaItem: applicationWindow
73 readonly property Item clientAreaItem: applicationWindow
qml/Stage/MoveHandler.qml+23−18
@@ -19,15 +19,14 @@ import Unity.Application 0.1 // For Mir singleton
19import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
20import Utils 0.1
20import Utils 0.1
21import "../Components"
21import "../Components"
22−import "../Components/PanelState"
23
22
24QtObject {
23QtObject {
25 id: root
24 id: root
26
25
27 property Item target // appDelegate
26 property Item target // appDelegate
28− property int stageWidth
29− property int stageHeight
30 property real buttonsWidth: 0
27 property real buttonsWidth: 0
28+ property Item boundsItem
29+ property real boundsTopMargin: 0
31
30
32 readonly property bool dragging: priv.dragging
31 readonly property bool dragging: priv.dragging
33
32
@@ -79,7 +78,10 @@ QtObject {
79 // length of the triggerArea square diagonal
78 // length of the triggerArea square diagonal
80 var diagLength = Math.sqrt(2 * priv.triggerArea * priv.triggerArea);
79 var diagLength = Math.sqrt(2 * priv.triggerArea * priv.triggerArea);
81 var ratio = 1 - (distance / diagLength);
80 var ratio = 1 - (distance / diagLength);
81+
82− return bx > 0 && bx <= stageWidth && by > 0 && by <= stageHeight ? ratio : 1; // everything "outside" of our square from the center is 1
82+ // everything "outside" of our square from the center is 1
83+ var mousePosBoundsCoords = target.mapToItem(root.boundsItem, bx, by);
84+ return root.boundsItem.contains(mousePosBoundsCoords) ? ratio : 1;
83 }
85 }
84 property real progress: 0
86 property real progress: 0
85 }
87 }
@@ -117,35 +119,38 @@ QtObject {
117 target.requestRestore();
119 target.requestRestore();
118 }
120 }
119
121
120− var pos = mapToItem(target.parent, mouse.x, mouse.y);
122+ var pos = mapToItem(target.parent, mouse.x, mouse.y); // How can that work if we're just a QtObject (not an Item)?
123+ var bounds = boundsItem.mapToItem(target.parent, 0, 0, boundsItem.width, boundsItem.height);
124+ bounds.y += boundsTopMargin;
125+ bounds.height -= boundsTopMargin;
121 // Use integer coordinate values to ensure that target is left in a pixel-aligned
126 // Use integer coordinate values to ensure that target is left in a pixel-aligned
122 // position. Mouse movement could have subpixel precision, yielding a fractional
127 // position. Mouse movement could have subpixel precision, yielding a fractional
123 // mouse position.
128 // mouse position.
124 target.windowedX = Math.round(pos.x - priv.distanceX);
129 target.windowedX = Math.round(pos.x - priv.distanceX);
125− target.windowedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
130+ target.windowedY = Math.round(Math.max(pos.y - priv.distanceY, bounds.top));
126
131
127 if (sensingPoints) { // edge/corner detection when dragging via the touch overlay
132 if (sensingPoints) { // edge/corner detection when dragging via the touch overlay
128− if (sensingPoints.topLeft.x < priv.triggerArea && sensingPoints.topLeft.y < PanelState.panelHeight + priv.triggerArea
133+ if (sensingPoints.topLeft.x < priv.triggerArea && sensingPoints.topLeft.y < bounds.top + priv.triggerArea
129 && target.canBeCornerMaximized) { // top left
134 && target.canBeCornerMaximized) { // top left
130− priv.progress = priv.progressInCorner(0, PanelState.panelHeight, sensingPoints.topLeft.x, sensingPoints.topLeft.y);
135+ priv.progress = priv.progressInCorner(bounds.left, bounds.top, sensingPoints.topLeft.x, sensingPoints.topLeft.y);
131 priv.resetEdges();
136 priv.resetEdges();
132 priv.nearTopLeftCorner = true;
137 priv.nearTopLeftCorner = true;
133 root.fakeMaximizeTopLeftAnimationRequested(priv.progress);
138 root.fakeMaximizeTopLeftAnimationRequested(priv.progress);
134− } else if (sensingPoints.topRight.x > stageWidth - priv.triggerArea && sensingPoints.topRight.y < PanelState.panelHeight + priv.triggerArea
139+ } else if (sensingPoints.topRight.x > bounds.right - priv.triggerArea && sensingPoints.topRight.y < bounds.top + priv.triggerArea
135 && target.canBeCornerMaximized) { // top right
140 && target.canBeCornerMaximized) { // top right
136− priv.progress = priv.progressInCorner(stageWidth, PanelState.panelHeight, sensingPoints.topRight.x, sensingPoints.topRight.y);
141+ priv.progress = priv.progressInCorner(bounds.right, bounds.top, sensingPoints.topRight.x, sensingPoints.topRight.y);
137 priv.resetEdges();
142 priv.resetEdges();
138 priv.nearTopRightCorner = true;
143 priv.nearTopRightCorner = true;
139 root.fakeMaximizeTopRightAnimationRequested(priv.progress);
144 root.fakeMaximizeTopRightAnimationRequested(priv.progress);
140− } else if (sensingPoints.bottomLeft.x < priv.triggerArea && sensingPoints.bottomLeft.y > stageHeight - priv.triggerArea
145+ } else if (sensingPoints.bottomLeft.x < priv.triggerArea && sensingPoints.bottomLeft.y > bounds.bottom - priv.triggerArea
141 && target.canBeCornerMaximized) { // bottom left
146 && target.canBeCornerMaximized) { // bottom left
142− priv.progress = priv.progressInCorner(0, stageHeight, sensingPoints.bottomLeft.x, sensingPoints.bottomLeft.y);
147+ priv.progress = priv.progressInCorner(bounds.left, bounds.bottom, sensingPoints.bottomLeft.x, sensingPoints.bottomLeft.y);
143 priv.resetEdges();
148 priv.resetEdges();
144 priv.nearBottomLeftCorner = true;
149 priv.nearBottomLeftCorner = true;
145 root.fakeMaximizeBottomLeftAnimationRequested(priv.progress);
150 root.fakeMaximizeBottomLeftAnimationRequested(priv.progress);
146− } else if (sensingPoints.bottomRight.x > stageWidth - priv.triggerArea && sensingPoints.bottomRight.y > stageHeight - priv.triggerArea
151+ } else if (sensingPoints.bottomRight.x > bounds.right - priv.triggerArea && sensingPoints.bottomRight.y > bounds.bottom - priv.triggerArea
147 && target.canBeCornerMaximized) { // bottom right
152 && target.canBeCornerMaximized) { // bottom right
148− priv.progress = priv.progressInCorner(stageWidth, stageHeight, sensingPoints.bottomRight.x, sensingPoints.bottomRight.y);
153+ priv.progress = priv.progressInCorner(bounds.right, bounds.bottom, sensingPoints.bottomRight.x, sensingPoints.bottomRight.y);
149 priv.resetEdges();
154 priv.resetEdges();
150 priv.nearBottomRightCorner = true;
155 priv.nearBottomRightCorner = true;
151 root.fakeMaximizeBottomRightAnimationRequested(priv.progress);
156 root.fakeMaximizeBottomRightAnimationRequested(priv.progress);
@@ -154,13 +159,13 @@ QtObject {
154 priv.resetEdges();
159 priv.resetEdges();
155 priv.nearLeftEdge = true;
160 priv.nearLeftEdge = true;
156 root.fakeMaximizeLeftAnimationRequested(priv.progress);
161 root.fakeMaximizeLeftAnimationRequested(priv.progress);
157− } else if (sensingPoints.right.x > stageWidth - priv.triggerArea && target.canBeMaximizedLeftRight) { // right
162+ } else if (sensingPoints.right.x > bounds.right - priv.triggerArea && target.canBeMaximizedLeftRight) { // right
158− priv.progress = MathUtils.clampAndProject(sensingPoints.right.x, stageWidth - priv.triggerArea, stageWidth, 0, 1);
163+ priv.progress = MathUtils.clampAndProject(sensingPoints.right.x, bounds.right - priv.triggerArea, bounds.right, 0, 1);
159 priv.resetEdges();
164 priv.resetEdges();
160 priv.nearRightEdge = true;
165 priv.nearRightEdge = true;
161 root.fakeMaximizeRightAnimationRequested(priv.progress);
166 root.fakeMaximizeRightAnimationRequested(priv.progress);
162− } else if (sensingPoints.top.y < PanelState.panelHeight + priv.triggerArea && target.canBeMaximized) { // top
167+ } else if (sensingPoints.top.y < bounds.top + priv.triggerArea && target.canBeMaximized) { // top
163− priv.progress = MathUtils.clampAndProject(sensingPoints.top.y, PanelState.panelHeight + priv.triggerArea, 0, 0, 1);
168+ priv.progress = MathUtils.clampAndProject(sensingPoints.top.y, bounds.top + priv.triggerArea, 0, 0, 1);
164 priv.resetEdges();
169 priv.resetEdges();
165 priv.nearTopEdge = true;
170 priv.nearTopEdge = true;
166 root.fakeMaximizeAnimationRequested(priv.progress);
171 root.fakeMaximizeAnimationRequested(priv.progress);
qml/Stage/Stage.qml+113−65
@@ -46,6 +46,7 @@ FocusScope {
46 property int leftMargin: 0
46 property int leftMargin: 0
47 property bool oskEnabled: false
47 property bool oskEnabled: false
48 property rect inputMethodRect
48 property rect inputMethodRect
49+ property real rightEdgePushProgress: 0
49
50
50 // Configuration
51 // Configuration
51 property string mode: "staged"
52 property string mode: "staged"
@@ -100,7 +101,9 @@ FocusScope {
100 } else {
101 } else {
101 // No we didn't, do a quick alt-tab
102 // No we didn't, do a quick alt-tab
102 if (appRepeater.count > 1) {
103 if (appRepeater.count > 1) {
103− appRepeater.itemAt(1).claimFocus();
104+ appRepeater.itemAt(1).activate();
105+ } else if (appRepeater.count > 0) {
106+ appRepeater.itemAt(0).activate(); // quick alt-tab to the only (minimized) window should still activate it
104 }
107 }
105 }
108 }
106 }
109 }
@@ -125,11 +128,6 @@ FocusScope {
125 // functions to be called from outside
128 // functions to be called from outside
126 function updateFocusedAppOrientation() { /* TODO */ }
129 function updateFocusedAppOrientation() { /* TODO */ }
127 function updateFocusedAppOrientationAnimated() { /* TODO */}
130 function updateFocusedAppOrientationAnimated() { /* TODO */}
128− function pushRightEdge(amount) {
129− if (root.spreadEnabled) {
130− edgeBarrier.push(amount);
131− }
132− }
133
131
134 function closeSpread() {
132 function closeSpread() {
135 priv.goneToSpread = false;
133 priv.goneToSpread = false;
@@ -141,6 +139,12 @@ FocusScope {
141 }
139 }
142 }
140 }
143
141
142+ onRightEdgePushProgressChanged: {
143+ if (spreadEnabled && rightEdgePushProgress >= 1) {
144+ priv.goneToSpread = true
145+ }
146+ }
147+
144 GSettings {
148 GSettings {
145 id: lifecycleExceptions
149 id: lifecycleExceptions
146 schema.id: "com.canonical.qtmir"
150 schema.id: "com.canonical.qtmir"
@@ -452,7 +456,7 @@ FocusScope {
452 PropertyChanges { target: wallpaper; visible: false }
456 PropertyChanges { target: wallpaper; visible: false }
453 },
457 },
454 State {
458 State {
455− name: "stagedRightEdge"; when: (rightEdgeDragArea.dragging || edgeBarrier.progress > 0) && root.mode == "staged"
459+ name: "stagedRightEdge"; when: root.spreadEnabled && (rightEdgeDragArea.dragging || rightEdgePushProgress > 0) && root.mode == "staged"
456 PropertyChanges {
460 PropertyChanges {
457 target: blurLayer;
461 target: blurLayer;
458 visible: true;
462 visible: true;
@@ -462,7 +466,7 @@ FocusScope {
462 }
466 }
463 },
467 },
464 State {
468 State {
465− name: "sideStagedRightEdge"; when: (rightEdgeDragArea.dragging || edgeBarrier.progress > 0) && root.mode == "stagedWithSideStage"
469+ name: "sideStagedRightEdge"; when: root.spreadEnabled && (rightEdgeDragArea.dragging || rightEdgePushProgress > 0) && root.mode == "stagedWithSideStage"
466 extend: "stagedRightEdge"
470 extend: "stagedRightEdge"
467 PropertyChanges {
471 PropertyChanges {
468 target: sideStage
472 target: sideStage
@@ -471,18 +475,18 @@ FocusScope {
471 }
475 }
472 },
476 },
473 State {
477 State {
474− name: "windowedRightEdge"; when: (rightEdgeDragArea.dragging || edgeBarrier.progress > 0) && root.mode == "windowed"
478+ name: "windowedRightEdge"; when: root.spreadEnabled && (rightEdgeDragArea.dragging || rightEdgePushProgress > 0) && root.mode == "windowed"
475 PropertyChanges {
479 PropertyChanges {
476 target: blurLayer;
480 target: blurLayer;
477 visible: true
481 visible: true
478 blurRadius: 32
482 blurRadius: 32
479 brightness: .65
483 brightness: .65
480− opacity: MathUtils.linearAnimation(spreadItem.rightEdgeBreakPoint, 1, 0, 1, Math.max(rightEdgeDragArea.dragging ? rightEdgeDragArea.progress : 0, edgeBarrier.progress))
484+ opacity: MathUtils.linearAnimation(spreadItem.rightEdgeBreakPoint, 1, 0, 1, Math.max(rightEdgeDragArea.dragging ? rightEdgeDragArea.progress : 0, rightEdgePushProgress))
481 }
485 }
482 },
486 },
483 State {
487 State {
484 name: "staged"; when: root.mode === "staged"
488 name: "staged"; when: root.mode === "staged"
485− PropertyChanges { target: wallpaper; visible: false }
489+ PropertyChanges { target: wallpaper; visible: !priv.focusedAppDelegate || priv.focusedAppDelegate.x !== 0 }
486 },
490 },
487 State {
491 State {
488 name: "stagedWithSideStage"; when: root.mode === "stagedWithSideStage"
492 name: "stagedWithSideStage"; when: root.mode === "stagedWithSideStage"
@@ -502,7 +506,6 @@ FocusScope {
502 Transition {
506 Transition {
503 to: "spread"
507 to: "spread"
504 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: appRepeater.count > 1 ? 1 : 0 }
508 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: appRepeater.count > 1 ? 1 : 0 }
505− PropertyAction { target: floatingFlickable; property: "contentX"; value: 0 }
506 },
509 },
507 Transition {
510 Transition {
508 from: "spread"
511 from: "spread"
@@ -517,6 +520,7 @@ FocusScope {
517 }
520 }
518 }
521 }
519 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: -1 }
522 PropertyAction { target: spreadItem; property: "highlightedIndex"; value: -1 }
523+ PropertyAction { target: floatingFlickable; property: "contentX"; value: 0 }
520 }
524 }
521 },
525 },
522 Transition {
526 Transition {
@@ -665,6 +669,13 @@ FocusScope {
665 }
669 }
666 }
670 }
667
671
672+ Item {
673+ id: boundariesForWindowPlacement
674+ anchors.fill: parent
675+ anchors.topMargin: PanelState.panelHeight
676+ visible: false
677+ }
678+
668 Repeater {
679 Repeater {
669 id: appRepeater
680 id: appRepeater
670 model: topLevelSurfaceList
681 model: topLevelSurfaceList
@@ -804,7 +815,7 @@ FocusScope {
804 maximizedTopLeft || maximizedTopRight || maximizedBottomLeft || maximizedBottomRight
815 maximizedTopLeft || maximizedTopRight || maximizedBottomLeft || maximizedBottomRight
805
816
806 readonly property bool minimized: windowState & WindowStateStorage.WindowStateMinimized
817 readonly property bool minimized: windowState & WindowStateStorage.WindowStateMinimized
807− readonly property bool fullscreen: window.state === Mir.FullscreenState
818+ readonly property bool fullscreen: windowState === WindowStateStorage.WindowStateFullscreen
808
819
809 readonly property bool canBeMaximized: canBeMaximizedHorizontally && canBeMaximizedVertically
820 readonly property bool canBeMaximized: canBeMaximizedHorizontally && canBeMaximizedVertically
810 readonly property bool canBeMaximizedLeftRight: (maximumWidth == 0 || maximumWidth >= appContainer.width/2) &&
821 readonly property bool canBeMaximizedLeftRight: (maximumWidth == 0 || maximumWidth >= appContainer.width/2) &&
@@ -815,7 +826,10 @@ FocusScope {
815 readonly property bool canBeMaximizedVertically: maximumHeight == 0 || maximumHeight >= appContainer.height
826 readonly property bool canBeMaximizedVertically: maximumHeight == 0 || maximumHeight >= appContainer.height
816 readonly property alias orientationChangesEnabled: decoratedWindow.orientationChangesEnabled
827 readonly property alias orientationChangesEnabled: decoratedWindow.orientationChangesEnabled
817
828
829+ // TODO drop our own windowType once Mir/Miral/Qtmir gets in sync with ours
818 property int windowState: WindowStateStorage.WindowStateNormal
830 property int windowState: WindowStateStorage.WindowStateNormal
831+ property int prevWindowState: WindowStateStorage.WindowStateRestored
832+
819 property bool animationsEnabled: true
833 property bool animationsEnabled: true
820 property alias title: decoratedWindow.title
834 property alias title: decoratedWindow.title
821 readonly property string appName: model.application ? model.application.name : ""
835 readonly property string appName: model.application ? model.application.name : ""
@@ -833,7 +847,6 @@ FocusScope {
833 readonly property var surface: model.window.surface
847 readonly property var surface: model.window.surface
834 readonly property var window: model.window
848 readonly property var window: model.window
835
849
836− readonly property alias resizeArea: resizeArea
837 readonly property alias focusedSurface: decoratedWindow.focusedSurface
850 readonly property alias focusedSurface: decoratedWindow.focusedSurface
838 readonly property bool dragging: touchControls.overlayShown ? touchControls.dragging : decoratedWindow.dragging
851 readonly property bool dragging: touchControls.overlayShown ? touchControls.dragging : decoratedWindow.dragging
839
852
@@ -871,9 +884,6 @@ FocusScope {
871 }
884 }
872 priv.updateMainAndSideStageIndexes();
885 priv.updateMainAndSideStageIndexes();
873 }
886 }
874− if (root.mode == "windowed") {
875− appDelegate.restore(true /* animated */, appDelegate.windowState);
876− }
877 appDelegate.focus = true;
887 appDelegate.focus = true;
878 }
888 }
879
889
@@ -890,7 +900,7 @@ FocusScope {
890 screenWidth: appContainer.width
900 screenWidth: appContainer.width
891 screenHeight: appContainer.height
901 screenHeight: appContainer.height
892 leftMargin: root.leftMargin
902 leftMargin: root.leftMargin
893− minimumY: PanelState.panelHeight
903+ minimumY: boundariesForWindowPlacement.y
894 }
904 }
895
905
896 Connections {
906 Connections {
@@ -923,7 +933,14 @@ FocusScope {
923 } else if (model.window.state === Mir.MaximizedBottomRightState) {
933 } else if (model.window.state === Mir.MaximizedBottomRightState) {
924 appDelegate.maximizeBottomRight();
934 appDelegate.maximizeBottomRight();
925 } else if (model.window.state === Mir.RestoredState) {
935 } else if (model.window.state === Mir.RestoredState) {
936+ if (appDelegate.fullscreen && appDelegate.prevWindowState != WindowStateStorage.WindowStateRestored) {
937+ model.window.requestState(WindowStateStorage.toMirState(appDelegate.prevWindowState));
938+ } else {
926− appDelegate.restore();
939+ appDelegate.restore();
940+ }
941+ } else if (model.window.state === Mir.FullscreenState) {
942+ appDelegate.prevWindowState = appDelegate.windowState;
943+ appDelegate.windowState = WindowStateStorage.WindowStateFullscreen;
927 }
944 }
928 }
945 }
929 }
946 }
@@ -1025,6 +1042,7 @@ FocusScope {
1025 animationsEnabled = (animated === undefined) || animated;
1042 animationsEnabled = (animated === undefined) || animated;
1026 windowState = state || WindowStateStorage.WindowStateRestored;
1043 windowState = state || WindowStateStorage.WindowStateRestored;
1027 windowState &= ~WindowStateStorage.WindowStateMinimized; // clear the minimized bit
1044 windowState &= ~WindowStateStorage.WindowStateMinimized; // clear the minimized bit
1045+ prevWindowState = windowState;
1028 }
1046 }
1029
1047
1030 function playFocusAnimation() {
1048 function playFocusAnimation() {
@@ -1187,7 +1205,7 @@ FocusScope {
1187 when: (root.mode == "staged" || root.mode == "stagedWithSideStage") && (root.state == "sideStagedRightEdge" || root.state == "stagedRightEdge" || rightEdgeFocusAnimation.running || hidingAnimation.running)
1205 when: (root.mode == "staged" || root.mode == "stagedWithSideStage") && (root.state == "sideStagedRightEdge" || root.state == "stagedRightEdge" || rightEdgeFocusAnimation.running || hidingAnimation.running)
1188 PropertyChanges {
1206 PropertyChanges {
1189 target: stagedRightEdgeMaths
1207 target: stagedRightEdgeMaths
1190− progress: Math.max(edgeBarrier.progress, rightEdgeDragArea.draggedProgress)
1208+ progress: Math.max(rightEdgePushProgress, rightEdgeDragArea.draggedProgress)
1191 }
1209 }
1192 PropertyChanges {
1210 PropertyChanges {
1193 target: appDelegate
1211 target: appDelegate
@@ -1214,11 +1232,11 @@ FocusScope {
1214 },
1232 },
1215 State {
1233 State {
1216 name: "windowedRightEdge"
1234 name: "windowedRightEdge"
1217− when: root.mode == "windowed" && (root.state == "windowedRightEdge" || rightEdgeFocusAnimation.running || hidingAnimation.running || edgeBarrier.progress > 0)
1235+ when: root.mode == "windowed" && (root.state == "windowedRightEdge" || rightEdgeFocusAnimation.running || hidingAnimation.running || rightEdgePushProgress > 0)
1218 PropertyChanges {
1236 PropertyChanges {
1219 target: windowedRightEdgeMaths
1237 target: windowedRightEdgeMaths
1220 swipeProgress: rightEdgeDragArea.dragging ? rightEdgeDragArea.progress : 0
1238 swipeProgress: rightEdgeDragArea.dragging ? rightEdgeDragArea.progress : 0
1221− pushProgress: edgeBarrier.progress
1239+ pushProgress: rightEdgePushProgress
1222 }
1240 }
1223 PropertyChanges {
1241 PropertyChanges {
1224 target: appDelegate
1242 target: appDelegate
@@ -1412,11 +1430,12 @@ FocusScope {
1412 name: "minimized"; when: appDelegate.minimized
1430 name: "minimized"; when: appDelegate.minimized
1413 PropertyChanges {
1431 PropertyChanges {
1414 target: appDelegate
1432 target: appDelegate
1415− requestedX: -appDelegate.width / 2
1416 scale: units.gu(5) / appDelegate.width
1433 scale: units.gu(5) / appDelegate.width
1417 opacity: 0;
1434 opacity: 0;
1418 visuallyMinimized: true
1435 visuallyMinimized: true
1419 visuallyMaximized: false
1436 visuallyMaximized: false
1437+ x: -appDelegate.width / 2
1438+ y: root.height / 2
1420 }
1439 }
1421 }
1440 }
1422 ]
1441 ]
@@ -1432,15 +1451,6 @@ FocusScope {
1432 to: "staged,stagedWithSideStage"
1451 to: "staged,stagedWithSideStage"
1433 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}
1452 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}
1434 },
1453 },
1435− Transition {
1436− to: "minimized"
1437− enabled: appDelegate.animationsEnabled
1438− PropertyAction { target: appDelegate; property: "visuallyMaximized" }
1439− SequentialAnimation {
1440− UbuntuNumberAnimation { target: appDelegate; properties: "requestedX,requestedY,opacity,scale,requestedWidth,requestedHeight" }
1441− PropertyAction { target: appDelegate; property: "visuallyMinimized" }
1442− }
1443− },
1444 Transition {
1454 Transition {
1445 to: "spread"
1455 to: "spread"
1446 // DecoratedWindow wants the scaleToPreviewSize set before enabling scaleToPreview
1456 // DecoratedWindow wants the scaleToPreviewSize set before enabling scaleToPreview
@@ -1489,6 +1499,31 @@ FocusScope {
1489 PropertyAction { target: appDelegate; property: "visible" }
1499 PropertyAction { target: appDelegate; property: "visible" }
1490 }
1500 }
1491 },
1501 },
1502+ Transition {
1503+ from: ",normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1504+ to: "minimized"
1505+ SequentialAnimation {
1506+ ScriptAction { script: print("transitioning:", appDelegate.x, appDelegate.y, appDelegate.scale) }
1507+ ScriptAction { script: { fakeRectangle.stop(); } }
1508+ PropertyAction { target: appDelegate; property: "visuallyMaximized" }
1509+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,scale,opacity"; duration: priv.animationDuration }
1510+ PropertyAction { target: appDelegate; property: "visuallyMinimized" }
1511+ }
1512+ },
1513+ Transition {
1514+ from: "minimized"
1515+ to: ",normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1516+ SequentialAnimation {
1517+ ScriptAction { script: print("transitioning:", appDelegate.x, appDelegate.y, appDelegate.scale) }
1518+ PropertyAction { target: appDelegate; property: "visuallyMinimized,z" }
1519+ ParallelAnimation {
1520+ UbuntuNumberAnimation { target: appDelegate; properties: "x"; from: -appDelegate.width / 2; duration: priv.animationDuration }
1521+ UbuntuNumberAnimation { target: appDelegate; properties: "y,opacity"; duration: priv.animationDuration }
1522+ UbuntuNumberAnimation { target: appDelegate; properties: "scale"; from: 0; duration: priv.animationDuration }
1523+ }
1524+ PropertyAction { target: appDelegate; property: "visuallyMaximized" }
1525+ }
1526+ },
1492 Transition {
1527 Transition {
1493 id: windowedTransition
1528 id: windowedTransition
1494 from: ",normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen,minimized"
1529 from: ",normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen,minimized"
@@ -1520,7 +1555,7 @@ FocusScope {
1520 anchors.margins: touchControls.overlayShown ? borderThickness/2 : -borderThickness
1555 anchors.margins: touchControls.overlayShown ? borderThickness/2 : -borderThickness
1521
1556
1522 target: appDelegate
1557 target: appDelegate
1523− minimumY: PanelState.panelHeight // disallow resizing up past Panel
1558+ boundsItem: boundariesForWindowPlacement
1524 minWidth: units.gu(10)
1559 minWidth: units.gu(10)
1525 minHeight: units.gu(10)
1560 minHeight: units.gu(10)
1526 borderThickness: units.gu(2)
1561 borderThickness: units.gu(2)
@@ -1539,7 +1574,7 @@ FocusScope {
1539 anchors.top: appDelegate.top
1574 anchors.top: appDelegate.top
1540 application: model.application
1575 application: model.application
1541 surface: model.window.surface
1576 surface: model.window.surface
1542− active: appDelegate.focus
1577+ active: model.window.focused
1543 focus: true
1578 focus: true
1544 interactive: root.interactive
1579 interactive: root.interactive
1545 showDecoration: 1
1580 showDecoration: 1
@@ -1548,8 +1583,7 @@ FocusScope {
1548 width: implicitWidth
1583 width: implicitWidth
1549 height: implicitHeight
1584 height: implicitHeight
1550 highlightSize: windowInfoItem.iconMargin / 2
1585 highlightSize: windowInfoItem.iconMargin / 2
1551− stageWidth: appContainer.width
1586+ boundsItem: boundariesForWindowPlacement
1552− stageHeight: appContainer.height
1553
1587
1554 requestedWidth: appDelegate.requestedWidth
1588 requestedWidth: appDelegate.requestedWidth
1555 requestedHeight: appDelegate.requestedHeight
1589 requestedHeight: appDelegate.requestedHeight
@@ -1581,7 +1615,10 @@ FocusScope {
1581 onDecorationReleased: fakeRectangle.commit();
1615 onDecorationReleased: fakeRectangle.commit();
1582
1616
1583 property real angle: 0
1617 property real angle: 0
1618+ Behavior on angle { enabled: priv.closingIndex >= 0; UbuntuNumberAnimation {} }
1584 property real itemScale: 1
1619 property real itemScale: 1
1620+ Behavior on itemScale { enabled: priv.closingIndex >= 0; UbuntuNumberAnimation {} }
1621+
1585 transform: [
1622 transform: [
1586 Scale {
1623 Scale {
1587 origin.x: 0
1624 origin.x: 0
@@ -1604,11 +1641,12 @@ FocusScope {
1604
1641
1605 WindowControlsOverlay {
1642 WindowControlsOverlay {
1606 id: touchControls
1643 id: touchControls
1644+ anchors.fill: appDelegate
1607 target: appDelegate
1645 target: appDelegate
1646+ resizeArea: resizeArea
1608 enabled: false
1647 enabled: false
1609 visible: enabled
1648 visible: enabled
1610− stageWidth: appContainer.width
1649+ boundsItem: boundariesForWindowPlacement
1611− stageHeight: appContainer.height
1612
1650
1613 onFakeMaximizeAnimationRequested: if (!appDelegate.maximized) fakeRectangle.maximize(amount, true)
1651 onFakeMaximizeAnimationRequested: if (!appDelegate.maximized) fakeRectangle.maximize(amount, true)
1614 onFakeMaximizeLeftAnimationRequested: if (!appDelegate.maximizedLeft) fakeRectangle.maximizeLeft(amount, true)
1652 onFakeMaximizeLeftAnimationRequested: if (!appDelegate.maximizedLeft) fakeRectangle.maximizeLeft(amount, true)
@@ -1642,7 +1680,6 @@ FocusScope {
1642 onClicked: {
1680 onClicked: {
1643 spreadItem.highlightedIndex = index;
1681 spreadItem.highlightedIndex = index;
1644 if (distance == 0) {
1682 if (distance == 0) {
1645− model.window.activate();
1646 priv.goneToSpread = false;
1683 priv.goneToSpread = false;
1647 }
1684 }
1648 }
1685 }
@@ -1703,6 +1740,41 @@ FocusScope {
1703 sourceSize.height: height
1740 sourceSize.height: height
1704 }
1741 }
1705 }
1742 }
1743+
1744+ Item {
1745+ // Group all child windows in this item so that we can fade them out together when going to the spread
1746+ // (and fade them in back again when returning from it)
1747+ readonly property bool stageOnProperState: root.state === "windowed"
1748+ || root.state === "staged"
1749+ || root.state === "stagedWithSideStage"
1750+
1751+ // TODO: Is it worth the extra cost of layering to avoid the opacity artifacts of intersecting children?
1752+ // Btw, will involve more than uncommenting the line below as children won't necessarily fit this item's
1753+ // geometry. This is just a reference.
1754+ //layer.enabled: opacity !== 0.0 && opacity !== 1.0
1755+
1756+ opacity: stageOnProperState ? 1.0 : 0.0
1757+ visible: opacity !== 0.0 // make it transparent to input as well
1758+ Behavior on opacity { UbuntuNumberAnimation {} }
1759+
1760+ Repeater {
1761+ id: childWindowRepeater
1762+ model: appDelegate.surface ? appDelegate.surface.childSurfaceList : null
1763+
1764+ delegate: ChildWindowTree {
1765+ surface: model.surface
1766+
1767+ // Account for the displacement caused by window decoration in the top-level surface
1768+ // Ie, the top-level surface is not positioned at (0,0) of this ChildWindow's parent (appDelegate)
1769+ displacementX: appDelegate.clientAreaItem.x
1770+ displacementY: appDelegate.clientAreaItem.y
1771+
1772+ boundsItem: boundariesForWindowPlacement
1773+
1774+ z: childWindowRepeater.count - model.index
1775+ }
1776+ }
1777+ }
1706 }
1778 }
1707 }
1779 }
1708 }
1780 }
@@ -1715,30 +1787,6 @@ FocusScope {
1715 appContainerHeight: appContainer.height
1787 appContainerHeight: appContainer.height
1716 }
1788 }
1717
1789
1718− EdgeBarrier {
1719− id: edgeBarrier
1720−
1721− // NB: it does its own positioning according to the specified edge
1722− edge: Qt.RightEdge
1723−
1724− onPassed: priv.goneToSpread = true;
1725−
1726− material: Component {
1727− Item {
1728− Rectangle {
1729− width: parent.height
1730− height: parent.width
1731− rotation: 90
1732− anchors.centerIn: parent
1733− gradient: Gradient {
1734− GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.5)}
1735− GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
1736− }
1737− }
1738− }
1739− }
1740− }
1741−
1742 MouseArea {
1790 MouseArea {
1743 id: hoverMouseArea
1791 id: hoverMouseArea
1744 objectName: "hoverMouseArea"
1792 objectName: "hoverMouseArea"
@@ -1805,11 +1853,11 @@ FocusScope {
1805 var targetContentX = floatingFlickable.contentWidth / spreadItem.totalItemCount * toIndex;
1853 var targetContentX = floatingFlickable.contentWidth / spreadItem.totalItemCount * toIndex;
1806 if (targetContentX - floatingFlickable.contentX > spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) {
1854 if (targetContentX - floatingFlickable.contentX > spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) {
1807 var offset = (spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) - (targetContentX - floatingFlickable.contentX)
1855 var offset = (spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) - (targetContentX - floatingFlickable.contentX)
1808− snapAnimation.to = floatingFlickable.contentX - offset;
1856+ snapAnimation.to = Math.max(0, floatingFlickable.contentX - offset);
1809 snapAnimation.start();
1857 snapAnimation.start();
1810 } else if (targetContentX - floatingFlickable.contentX < spreadItem.leftStackXPos + units.gu(1)) {
1858 } else if (targetContentX - floatingFlickable.contentX < spreadItem.leftStackXPos + units.gu(1)) {
1811 var offset = (spreadItem.leftStackXPos + units.gu(1)) - (targetContentX - floatingFlickable.contentX);
1859 var offset = (spreadItem.leftStackXPos + units.gu(1)) - (targetContentX - floatingFlickable.contentX);
1812− snapAnimation.to = floatingFlickable.contentX - offset;
1860+ snapAnimation.to = Math.max(0, floatingFlickable.contentX - offset);
1813 snapAnimation.start();
1861 snapAnimation.start();
1814 }
1862 }
1815 }
1863 }
qml/Stage/WindowControlsOverlay.qml+21−24
@@ -18,17 +18,14 @@ import QtQuick 2.4
18import Ubuntu.Components 1.3
18import Ubuntu.Components 1.3
19import Ubuntu.Gestures 0.1
19import Ubuntu.Gestures 0.1
20import Unity.Application 0.1
20import Unity.Application 0.1
21−import "../Components/PanelState"
22
21
23Item {
22Item {
24 id: root
23 id: root
25− enabled: target && !target.fullscreen
26− anchors.fill: target
27
24
28 // to be set from outside
25 // to be set from outside
29 property Item target // appDelegate
26 property Item target // appDelegate
30− property alias stageWidth: moveHandler.stageWidth
27+ property WindowResizeArea resizeArea
31− property alias stageHeight: moveHandler.stageHeight
28+ property Item boundsItem
32
29
33 // to be read from outside
30 // to be read from outside
34 readonly property alias overlayShown: overlay.visible
31 readonly property alias overlayShown: overlay.visible
@@ -90,9 +87,7 @@ Item {
90
87
91 QtObject {
88 QtObject {
92 id: priv
89 id: priv
93− readonly property var resizeArea: root.target && root.target.resizeArea ? root.target.resizeArea : null
94− readonly property bool ensureWindow: root.target.state == "normal" || root.target.state == "restored"
95− readonly property bool dragging: moveHandler.dragging || (resizeArea && resizeArea.dragging)
90+ readonly property bool dragging: moveHandler.dragging || (root.resizeArea && root.resizeArea.dragging)
96
91
97 function getSensingPoints() {
92 function getSensingPoints() {
98 var xPoints = [];
93 var xPoints = [];
@@ -162,6 +157,8 @@ Item {
162 objectName: "moveHandler"
157 objectName: "moveHandler"
163 target: root.target
158 target: root.target
164
159
160+ boundsItem: root.boundsItem
161+
165 onFakeMaximizeAnimationRequested: root.fakeMaximizeAnimationRequested(amount)
162 onFakeMaximizeAnimationRequested: root.fakeMaximizeAnimationRequested(amount)
166 onFakeMaximizeLeftAnimationRequested: root.fakeMaximizeLeftAnimationRequested(amount)
163 onFakeMaximizeLeftAnimationRequested: root.fakeMaximizeLeftAnimationRequested(amount)
167 onFakeMaximizeRightAnimationRequested: root.fakeMaximizeRightAnimationRequested(amount)
164 onFakeMaximizeRightAnimationRequested: root.fakeMaximizeRightAnimationRequested(amount)
@@ -193,65 +190,65 @@ Item {
193 ResizeGrip { // top left
190 ResizeGrip { // top left
194 anchors.horizontalCenter: parent.left
191 anchors.horizontalCenter: parent.left
195 anchors.verticalCenter: parent.top
192 anchors.verticalCenter: parent.top
196− visible: priv.ensureWindow || target.maximizedBottomRight
193+ visible: root.enabled || target.maximizedBottomRight
197− resizeTarget: priv.resizeArea
194+ resizeTarget: root.resizeArea
198 }
195 }
199
196
200 ResizeGrip { // top center
197 ResizeGrip { // top center
201 anchors.horizontalCenter: parent.horizontalCenter
198 anchors.horizontalCenter: parent.horizontalCenter
202 anchors.verticalCenter: parent.top
199 anchors.verticalCenter: parent.top
203 rotation: 45
200 rotation: 45
204− visible: priv.ensureWindow || target.maximizedHorizontally || target.maximizedBottomLeft || target.maximizedBottomRight
201+ visible: root.enabled || target.maximizedHorizontally || target.maximizedBottomLeft || target.maximizedBottomRight
205− resizeTarget: priv.resizeArea
202+ resizeTarget: root.resizeArea
206 }
203 }
207
204
208 ResizeGrip { // top right
205 ResizeGrip { // top right
209 anchors.horizontalCenter: parent.right
206 anchors.horizontalCenter: parent.right
210 anchors.verticalCenter: parent.top
207 anchors.verticalCenter: parent.top
211 rotation: 90
208 rotation: 90
212− visible: priv.ensureWindow || target.maximizedBottomLeft
209+ visible: root.enabled || target.maximizedBottomLeft
213− resizeTarget: priv.resizeArea
210+ resizeTarget: root.resizeArea
214 }
211 }
215
212
216 ResizeGrip { // right
213 ResizeGrip { // right
217 anchors.horizontalCenter: parent.right
214 anchors.horizontalCenter: parent.right
218 anchors.verticalCenter: parent.verticalCenter
215 anchors.verticalCenter: parent.verticalCenter
219 rotation: 135
216 rotation: 135
220− visible: priv.ensureWindow || target.maximizedVertically || target.maximizedLeft ||
217+ visible: root.enabled || target.maximizedVertically || target.maximizedLeft ||
221 target.maximizedTopLeft || target.maximizedBottomLeft
218 target.maximizedTopLeft || target.maximizedBottomLeft
222− resizeTarget: priv.resizeArea
219+ resizeTarget: root.resizeArea
223 }
220 }
224
221
225 ResizeGrip { // bottom right
222 ResizeGrip { // bottom right
226 anchors.horizontalCenter: parent.right
223 anchors.horizontalCenter: parent.right
227 anchors.verticalCenter: parent.bottom
224 anchors.verticalCenter: parent.bottom
228− visible: priv.ensureWindow || target.maximizedTopLeft
225+ visible: root.enabled || target.maximizedTopLeft
229− resizeTarget: priv.resizeArea
226+ resizeTarget: root.resizeArea
230 }
227 }
231
228
232 ResizeGrip { // bottom center
229 ResizeGrip { // bottom center
233 anchors.horizontalCenter: parent.horizontalCenter
230 anchors.horizontalCenter: parent.horizontalCenter
234 anchors.verticalCenter: parent.bottom
231 anchors.verticalCenter: parent.bottom
235 rotation: 45
232 rotation: 45
236− visible: priv.ensureWindow || target.maximizedHorizontally || target.maximizedTopLeft || target.maximizedTopRight
233+ visible: root.enabled || target.maximizedHorizontally || target.maximizedTopLeft || target.maximizedTopRight
237− resizeTarget: priv.resizeArea
234+ resizeTarget: root.resizeArea
238 }
235 }
239
236
240 ResizeGrip { // bottom left
237 ResizeGrip { // bottom left
241 anchors.horizontalCenter: parent.left
238 anchors.horizontalCenter: parent.left
242 anchors.verticalCenter: parent.bottom
239 anchors.verticalCenter: parent.bottom
243 rotation: 90
240 rotation: 90
244− visible: priv.ensureWindow || target.maximizedTopRight
241+ visible: root.enabled || target.maximizedTopRight
245− resizeTarget: priv.resizeArea
242+ resizeTarget: root.resizeArea
246 }
243 }
247
244
248 ResizeGrip { // left
245 ResizeGrip { // left
249 anchors.horizontalCenter: parent.left
246 anchors.horizontalCenter: parent.left
250 anchors.verticalCenter: parent.verticalCenter
247 anchors.verticalCenter: parent.verticalCenter
251 rotation: 135
248 rotation: 135
252− visible: priv.ensureWindow || target.maximizedVertically || target.maximizedRight ||
249+ visible: root.enabled || target.maximizedVertically || target.maximizedRight ||
253 target.maximizedTopRight || target.maximizedBottomRight
250 target.maximizedTopRight || target.maximizedBottomRight
254− resizeTarget: priv.resizeArea
251+ resizeTarget: root.resizeArea
255 }
252 }
256 }
253 }
257}
254}
qml/Stage/WindowDecoration.qml+1
@@ -28,6 +28,7 @@ MouseArea {
28 property alias closeButtonVisible: buttons.closeButtonShown
28 property alias closeButtonVisible: buttons.closeButtonShown
29 property alias title: titleLabel.text
29 property alias title: titleLabel.text
30 property alias maximizeButtonShown: buttons.maximizeButtonShown
30 property alias maximizeButtonShown: buttons.maximizeButtonShown
31+ property alias minimizeButtonVisible: buttons.minimizeButtonVisible
31 property bool active: false
32 property bool active: false
32 property alias overlayShown: buttons.overlayShown
33 property alias overlayShown: buttons.overlayShown
33 property var menu: undefined
34 property var menu: undefined
qml/Stage/WindowResizeArea.qml+3−2
@@ -32,7 +32,7 @@ MouseArea {
32 // The area will anchor to it and manage resize events
32 // The area will anchor to it and manage resize events
33 property Item target: null
33 property Item target: null
34 property int borderThickness: 0
34 property int borderThickness: 0
35− property real minimumY: -100000000 // By default, impose no limit
35+ property Item boundsItem
36 property int minWidth: 0
36 property int minWidth: 0
37 property int minHeight: 0
37 property int minHeight: 0
38
38
@@ -243,7 +243,8 @@ MouseArea {
243 }
243 }
244
244
245 if (d.topBorder) {
245 if (d.topBorder) {
246+ var bounds = boundsItem.mapToItem(target.parent, 0, 0, boundsItem.width, boundsItem.height);
246− var newTargetY = Math.max(d.startY + deltaY, root.minimumY);
247+ var newTargetY = Math.max(d.startY + deltaY, bounds.y);
247 var bottomBorderY = target.windowedY + target.height;
248 var bottomBorderY = target.windowedY + target.height;
248 if (bottomBorderY > newTargetY + d.minimumHeight) {
249 if (bottomBorderY > newTargetY + d.minimumHeight) {
249 if (bottomBorderY < newTargetY + d.maximumHeight) {
250 if (bottomBorderY < newTargetY + d.maximumHeight) {
qml/Tutorial/TutorialLeftLong.qml+1−1
@@ -46,7 +46,7 @@ TutorialPage {
46 }
46 }
47
47
48 label {
48 label {
49− text: i18n.tr("Long swipe from the left edge to open the Today scope")
49+ text: i18n.tr("Long swipe from the left edge to open the Application Drawer")
50 anchors.left: arrow.right
50 anchors.left: arrow.right
51 anchors.leftMargin: units.gu(3)
51 anchors.leftMargin: units.gu(3)
52 anchors.right: root.right
52 anchors.right: root.right
tests/mocks/Unity/Application/ApplicationInfo.cpp+9−1
@@ -94,6 +94,7 @@ void ApplicationInfo::createPromptSurface()
94 auto surface = surfaceManager->createSurface(QString("prompt foo"),
94 auto surface = surfaceManager->createSurface(QString("prompt foo"),
95 Mir::NormalType,
95 Mir::NormalType,
96 Mir::RestoredState,
96 Mir::RestoredState,
97+ nullptr, /* parentSurface */
97 screenshotUrl);
98 screenshotUrl);
98 surfaceManager->notifySurfaceCreated(surface);
99 surfaceManager->notifySurfaceCreated(surface);
99
100
@@ -122,7 +123,9 @@ void ApplicationInfo::createSurface()
122 auto surface = surfaceManager->createSurface(surfaceName,
123 auto surface = surfaceManager->createSurface(surfaceName,
123 Mir::NormalType,
124 Mir::NormalType,
124 fullscreen() ? Mir::FullscreenState : Mir::RestoredState,
125 fullscreen() ? Mir::FullscreenState : Mir::RestoredState,
126+ nullptr, /* parentSurface */
125− m_screenshotFileName);
127+ m_screenshotFileName,
128+ m_qmlFilePath);
126
129
127 surface->setShellChrome(m_shellChrome);
130 surface->setShellChrome(m_shellChrome);
128
131
@@ -201,6 +204,11 @@ void ApplicationInfo::setScreenshotId(const QString &screenshotId)
201 }
204 }
202}
205}
203
206
207+void ApplicationInfo::setQmlFilename(const QString &qmlFilename)
208+{
209+ m_qmlFilePath = QString("qrc:///Unity/Application/%1").arg(qmlFilename);
210+}
211+
204void ApplicationInfo::setName(const QString &value)
212void ApplicationInfo::setName(const QString &value)
205{
213{
206 if (value != m_name) {
214 if (value != m_name) {
tests/mocks/Unity/Application/ApplicationInfo.h+3
@@ -29,6 +29,7 @@ class MirSurface;
29
29
30#include <QList>
30#include <QList>
31#include <QTimer>
31#include <QTimer>
32+#include <QUrl>
32
33
33using namespace unity::shell::application;
34using namespace unity::shell::application;
34
35
@@ -58,6 +59,7 @@ public:
58
59
59 void setIconId(const QString &iconId);
60 void setIconId(const QString &iconId);
60 void setScreenshotId(const QString &screenshotId);
61 void setScreenshotId(const QString &screenshotId);
62+ void setQmlFilename(const QString &);
61
63
62 void setAppId(const QString &value) { m_appId = value; }
64 void setAppId(const QString &value) { m_appId = value; }
63 QString appId() const override { return m_appId; }
65 QString appId() const override { return m_appId; }
@@ -152,6 +154,7 @@ private:
152 QList<MirSurface*> m_closingSurfaces;
154 QList<MirSurface*> m_closingSurfaces;
153 bool m_manualSurfaceCreation{false};
155 bool m_manualSurfaceCreation{false};
154 Mir::ShellChrome m_shellChrome{Mir::NormalChrome};
156 Mir::ShellChrome m_shellChrome{Mir::NormalChrome};
157+ QUrl m_qmlFilePath;
155};
158};
156
159
157Q_DECLARE_METATYPE(ApplicationInfo*)
160Q_DECLARE_METATYPE(ApplicationInfo*)
tests/mocks/Unity/Application/ApplicationManager.cpp+9
@@ -480,6 +480,15 @@ void ApplicationManager::buildListOfAvailableApplications()
480 application->setName("Primary Oriented");
480 application->setName("Primary Oriented");
481 application->setSupportedOrientations(Qt::PrimaryOrientation);
481 application->setSupportedOrientations(Qt::PrimaryOrientation);
482 m_availableApplications.append(application);
482 m_availableApplications.append(application);
483+
484+ application = new ApplicationInfo(this);
485+ application->setAppId("kate");
486+ application->setName("Kate");
487+ application->setIconId("libreoffice");
488+ application->setScreenshotId("libreoffice");
489+ application->setQmlFilename("Kate.qml");
490+ application->setIsTouchApp(false);
491+ m_availableApplications.append(application);
483}
492}
484
493
485
494
tests/mocks/Unity/Application/MirSurface.cpp+43
@@ -74,6 +74,7 @@ using namespace unity::shell::application;
74MirSurface::MirSurface(const QString& name,
74MirSurface::MirSurface(const QString& name,
75 Mir::Type type,
75 Mir::Type type,
76 Mir::State state,
76 Mir::State state,
77+ MirSurface *parentSurface,
77 const QUrl& screenshot,
78 const QUrl& screenshot,
78 const QUrl &qmlFilePath)
79 const QUrl &qmlFilePath)
79 : unity::shell::application::MirSurfaceInterface(nullptr)
80 : unity::shell::application::MirSurfaceInterface(nullptr)
@@ -90,6 +91,8 @@ MirSurface::MirSurface(const QString& name,
90 , m_height(-1)
91 , m_height(-1)
91 , m_slowToResize(false)
92 , m_slowToResize(false)
92 , m_shellChrome(Mir::NormalChrome)
93 , m_shellChrome(Mir::NormalChrome)
94+ , m_parentSurface(parentSurface)
95+ , m_childSurfaceList(new MirSurfaceListModel(this))
93{
96{
94 DEBUG_MSG("state=" << stateToStr(state));
97 DEBUG_MSG("state=" << stateToStr(state));
95
98
@@ -493,6 +496,36 @@ void MirSurface::setInputBounds(const QRect &boundsRect)
493 }
496 }
494}
497}
495
498
499+void MirSurface::openMenu(qreal x, qreal y, qreal width, qreal height)
500+{
501+ auto *menu = SurfaceManager::instance()->createSurface("menu", Mir::MenuType, Mir::HiddenState,
502+ this /* parentSurface */,
503+ QUrl() /* screenshot */,
504+ QUrl("qrc:///Unity/Application/KateMenu.qml"));
505+
506+ menu->setRequestedPosition(QPoint(x,y));
507+ menu->resize(width, height);
508+ menu->requestState(Mir::RestoredState);
509+
510+ SurfaceManager::instance()->notifySurfaceCreated(menu);
511+}
512+
513+void MirSurface::openDialog(qreal x, qreal y, qreal width, qreal height)
514+{
515+ auto *dialog = SurfaceManager::instance()->createSurface("dialog", Mir::DialogType, Mir::HiddenState,
516+ this /* parentSurface */,
517+ QUrl() /* screenshot */,
518+ QUrl("qrc:///Unity/Application/KateDialog.qml"));
519+
520+ dialog->setRequestedPosition(QPoint(x,y));
521+ dialog->resize(width, height);
522+ dialog->requestState(Mir::RestoredState);
523+
524+ SurfaceManager::instance()->notifySurfaceCreated(dialog);
525+
526+ dialog->requestFocus();
527+}
528+
496void MirSurface::setRequestedPosition(const QPoint &value)
529void MirSurface::setRequestedPosition(const QPoint &value)
497{
530{
498 if (value != m_requestedPosition) {
531 if (value != m_requestedPosition) {
@@ -505,3 +538,13 @@ void MirSurface::setRequestedPosition(const QPoint &value)
505 Q_EMIT positionChanged(m_position);
538 Q_EMIT positionChanged(m_position);
506 }
539 }
507}
540}
541+
542+MirSurfaceInterface* MirSurface::parentSurface() const
543+{
544+ return m_parentSurface;
545+}
546+
547+MirSurfaceListInterface* MirSurface::childSurfaceList() const
548+{
549+ return m_childSurfaceList;
550+}
tests/mocks/Unity/Application/MirSurface.h+11
@@ -45,6 +45,7 @@ public:
45 MirSurface(const QString& name,
45 MirSurface(const QString& name,
46 Mir::Type type,
46 Mir::Type type,
47 Mir::State state,
47 Mir::State state,
48+ MirSurface *parentSurface,
48 const QUrl& screenshot,
49 const QUrl& screenshot,
49 const QUrl &qmlFilePath = QUrl());
50 const QUrl &qmlFilePath = QUrl());
50 virtual ~MirSurface();
51 virtual ~MirSurface();
@@ -94,6 +95,9 @@ public:
94 QPoint requestedPosition() const override { return m_requestedPosition; }
95 QPoint requestedPosition() const override { return m_requestedPosition; }
95 void setRequestedPosition(const QPoint &) override;
96 void setRequestedPosition(const QPoint &) override;
96
97
98+ unity::shell::application::MirSurfaceInterface* parentSurface() const override;
99+ unity::shell::application::MirSurfaceListInterface* childSurfaceList() const override;
100+
97 Q_INVOKABLE void close() override;
101 Q_INVOKABLE void close() override;
98 Q_INVOKABLE void activate() override;
102 Q_INVOKABLE void activate() override;
99
103
@@ -121,6 +125,9 @@ public:
121
125
122 Q_INVOKABLE virtual void setInputBounds(const QRect &boundsRect);
126 Q_INVOKABLE virtual void setInputBounds(const QRect &boundsRect);
123
127
128+ Q_INVOKABLE void openMenu(qreal x, qreal y, qreal width, qreal height);
129+ Q_INVOKABLE void openDialog(qreal x, qreal y, qreal width, qreal height);
130+
124 /////
131 /////
125 // internal mock stuff
132 // internal mock stuff
126
133
@@ -216,6 +223,10 @@ private:
216
223
217 QPoint m_position;
224 QPoint m_position;
218 QPoint m_requestedPosition;
225 QPoint m_requestedPosition;
226+
227+ unity::shell::application::MirSurfaceInterface* m_parentSurface;
228+
229+ MirSurfaceListModel *m_childSurfaceList;
219};
230};
220
231
221#endif // MOCK_MIR_SURFACE_H
232#endif // MOCK_MIR_SURFACE_H
tests/mocks/Unity/Application/MirSurfaceItem.cpp+19−4
@@ -159,7 +159,9 @@ void MirSurfaceItem::setOrientationAngle(Mir::OrientationAngle angle)
159
159
160 if (m_qmlItem) {
160 if (m_qmlItem) {
161 QQmlProperty orientationProp(m_qmlItem, "orientationAngle");
161 QQmlProperty orientationProp(m_qmlItem, "orientationAngle");
162+ if (orientationProp.isValid()) {
162− orientationProp.write(QVariant::fromValue(orientationAngle()));
163+ orientationProp.write(QVariant::fromValue(orientationAngle()));
164+ }
163 }
165 }
164}
166}
165
167
@@ -167,7 +169,9 @@ void MirSurfaceItem::updateScreenshot(QUrl screenshotUrl)
167{
169{
168 if (m_qmlItem) {
170 if (m_qmlItem) {
169 QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
171 QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
172+ if (screenshotSource.isValid()) {
170− screenshotSource.write(QVariant::fromValue(screenshotUrl));
173+ screenshotSource.write(QVariant::fromValue(screenshotUrl));
174+ }
171 }
175 }
172}
176}
173
177
@@ -193,12 +197,23 @@ void MirSurfaceItem::createQmlContentItem()
193
197
194 {
198 {
195 QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
199 QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
200+ if (screenshotSource.isValid()) {
196− screenshotSource.write(QVariant::fromValue(m_qmlSurface->screenshotUrl()));
201+ screenshotSource.write(QVariant::fromValue(m_qmlSurface->screenshotUrl()));
202+ }
197 }
203 }
198
204
199 {
205 {
200 QQmlProperty orientationProp(m_qmlItem, "orientationAngle");
206 QQmlProperty orientationProp(m_qmlItem, "orientationAngle");
207+ if (orientationProp.isValid()) {
201− orientationProp.write(QVariant::fromValue(orientationAngle()));
208+ orientationProp.write(QVariant::fromValue(orientationAngle()));
209+ }
210+ }
211+
212+ {
213+ QQmlProperty surfaceProperty(m_qmlItem, "surface");
214+ if (surfaceProperty.isValid()) {
215+ surfaceProperty.write(QVariant::fromValue(m_qmlSurface));
216+ }
202 }
217 }
203}
218}
204
219
tests/mocks/Unity/Application/MirSurfaceListModel.h−1
@@ -44,7 +44,6 @@ public:
44 bool contains(MirSurface *surface) const { return m_surfaceList.contains(surface); }
44 bool contains(MirSurface *surface) const { return m_surfaceList.contains(surface); }
45
45
46private:
46private:
47− void appendSurface(MirSurface *surface);
48 void raise(MirSurface *surface);
47 void raise(MirSurface *surface);
49 void moveSurface(int from, int to);
48 void moveSurface(int from, int to);
50 void connectSurface(MirSurface *surface);
49 void connectSurface(MirSurface *surface);
tests/mocks/Unity/Application/SurfaceManager.cpp+19−13
@@ -61,10 +61,15 @@ SurfaceManager::~SurfaceManager()
61MirSurface *SurfaceManager::createSurface(const QString& name,
61MirSurface *SurfaceManager::createSurface(const QString& name,
62 Mir::Type type,
62 Mir::Type type,
63 Mir::State state,
63 Mir::State state,
64+ MirSurface *parentSurface,
64− const QUrl& screenshot)
65+ const QUrl &screenshot,
66+ const QUrl &qmlFilePath)
65{
67{
66− MirSurface* surface = new MirSurface(name, type, state, screenshot);
68+ MirSurface* surface = new MirSurface(name, type, state, parentSurface, screenshot, qmlFilePath);
67 registerSurface(surface);
69 registerSurface(surface);
70+ if (parentSurface) {
71+ static_cast<MirSurfaceListModel*>(parentSurface->childSurfaceList())->addSurface(surface);
72+ }
68 return surface;
73 return surface;
69}
74}
70
75
@@ -72,12 +77,14 @@ void SurfaceManager::registerSurface(MirSurface *surface)
72{
77{
73 m_surfaces.prepend(surface);
78 m_surfaces.prepend(surface);
74
79
80+ if (!surface->parentSurface()) {
75− surface->setMinimumWidth(m_newSurfaceMinimumWidth);
81+ surface->setMinimumWidth(m_newSurfaceMinimumWidth);
76− surface->setMaximumWidth(m_newSurfaceMaximumWidth);
82+ surface->setMaximumWidth(m_newSurfaceMaximumWidth);
77− surface->setMinimumHeight(m_newSurfaceMinimumHeight);
83+ surface->setMinimumHeight(m_newSurfaceMinimumHeight);
78− surface->setMaximumHeight(m_newSurfaceMaximumHeight);
84+ surface->setMaximumHeight(m_newSurfaceMaximumHeight);
79− surface->setWidthIncrement(m_newSurfaceWidthIncrement);
85+ surface->setWidthIncrement(m_newSurfaceWidthIncrement);
80− surface->setHeightIncrement(m_newSurfaceHeightIncrement);
86+ surface->setHeightIncrement(m_newSurfaceHeightIncrement);
87+ }
81
88
82 connect(surface, &MirSurface::stateRequested, this, [=](Mir::State state) {
89 connect(surface, &MirSurface::stateRequested, this, [=](Mir::State state) {
83 this->onStateRequested(surface, state);
90 this->onStateRequested(surface, state);
@@ -204,8 +211,6 @@ void SurfaceManager::activate(unityapi::MirSurfaceInterface *apiSurface)
204
211
205void SurfaceManager::onStateRequested(MirSurface *surface, Mir::State state)
212void SurfaceManager::onStateRequested(MirSurface *surface, Mir::State state)
206{
213{
207− Q_ASSERT(!m_underModification);
208−
209 DEBUG_MSG("("<<surface<<","<<state<<") started");
214 DEBUG_MSG("("<<surface<<","<<state<<") started");
210 Q_EMIT modificationsStarted();
215 Q_EMIT modificationsStarted();
211 m_underModification = true;
216 m_underModification = true;
@@ -259,9 +264,10 @@ void SurfaceManager::focusFirstAvailableSurface()
259 if (m_focusedSurface) {
264 if (m_focusedSurface) {
260 m_focusedSurface->setFocused(false);
265 m_focusedSurface->setFocused(false);
261 }
266 }
262− if (chosenSurface) {
267+
263− chosenSurface->setFocused(true);
268+ chosenSurface->setFocused(true);
264− }
269+ doRaise(chosenSurface);
270+
265 m_focusedSurface = chosenSurface;
271 m_focusedSurface = chosenSurface;
266}
272}
267
273
tests/mocks/Unity/Application/SurfaceManager.h+3−1
@@ -49,7 +49,9 @@ public:
49 Q_INVOKABLE MirSurface* createSurface(const QString& name,
49 Q_INVOKABLE MirSurface* createSurface(const QString& name,
50 Mir::Type type,
50 Mir::Type type,
51 Mir::State state,
51 Mir::State state,
52+ MirSurface *parentSurface,
52− const QUrl& screenshot);
53+ const QUrl &screenshot,
54+ const QUrl &qmlFilePath = QUrl());
53
55
54
56
55 void notifySurfaceCreated(unity::shell::application::MirSurfaceInterface *);
57 void notifySurfaceCreated(unity::shell::application::MirSurfaceInterface *);
tests/mocks/Unity/Application/VirtualKeyboard.cpp+5−4
@@ -24,10 +24,11 @@
24
24
25VirtualKeyboard::VirtualKeyboard()
25VirtualKeyboard::VirtualKeyboard()
26 : MirSurface("input-method",
26 : MirSurface("input-method",
27− Mir::InputMethodType,
27+ Mir::InputMethodType,
28− Mir::MinimizedState,
28+ Mir::MinimizedState,
29+ nullptr, /* parentSurface */
29− QUrl("qrc:///Unity/Application/vkb_portrait.png"),
30+ QUrl("qrc:///Unity/Application/vkb_portrait.png"),
30− QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"))
31+ QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"))
31{
32{
32}
33}
33
34
tests/mocks/Unity/Application/resources/Kate.qmlnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+
20+Rectangle {
21+ id: root
22+ color: "white"
23+ implicitWidth: width
24+ implicitHeight: height
25+
26+ property var surface
27+
28+ Column {
29+ Button {
30+ text: "Open Menu"
31+ property real nextY: y
32+ property real menuHeight: units.gu(5)
33+ onClicked: {
34+ surface.openMenu(x+width, nextY, units.gu(10), menuHeight);
35+ nextY += menuHeight + units.gu(.5)
36+ }
37+ }
38+
39+ Button {
40+ text: "Open Dialog"
41+ property real dialogWidth: units.gu(30)
42+ property real dialogHeight: units.gu(20)
43+ onClicked: {
44+ surface.openDialog(root.x+(root.width/2)-(dialogWidth/2), root.y+(root.height/2)-(dialogHeight/2),
45+ dialogWidth, dialogHeight);
46+ }
47+ }
48+ }
49+}
tests/mocks/Unity/Application/resources/KateDialog.qmlnew file+48
@@ -0,0 +1,48 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+
20+Rectangle {
21+ id: root
22+ color: "grey"
23+ implicitWidth: width
24+ implicitHeight: height
25+
26+ property var surface
27+
28+ Text {
29+ anchors.left: parent.left
30+ anchors.right: parent.right
31+ horizontalAlignment: Text.AlignHCenter
32+ verticalAlignment: Text.AlignVCenter
33+ text: "This is a child dialog."
34+ }
35+
36+ Row {
37+ anchors.bottom: parent.bottom
38+ anchors.right: parent.right
39+ Button {
40+ text: "OK"
41+ onClicked: root.surface.close()
42+ }
43+ Button {
44+ text: "Cancel"
45+ onClicked: root.surface.close()
46+ }
47+ }
48+}
tests/mocks/Unity/Application/resources/KateMenu.qmlnew file+41
@@ -0,0 +1,41 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+
20+Rectangle {
21+ id: root
22+ color: "grey"
23+ implicitWidth: width
24+ implicitHeight: height
25+
26+ property var surface
27+
28+ Text {
29+ anchors.centerIn: parent
30+ text: "menu"
31+ }
32+ MouseArea {
33+ anchors.fill: parent
34+ property real nextY: 0
35+ onClicked: {
36+ // ensure some overlap with is parent in order to visually check for nested opacity artifacts
37+ root.surface.openMenu(x+(width*0.6), nextY, units.gu(10), root.height);
38+ nextY += root.height
39+ }
40+ }
41+}
tests/mocks/Unity/Application/resources/surfaces.qrc+3
@@ -1,5 +1,8 @@
1<RCC>
1<RCC>
2 <qresource prefix="/Unity/Application">
2 <qresource prefix="/Unity/Application">
3+ <file>Kate.qml</file>
4+ <file>KateDialog.qml</file>
5+ <file>KateMenu.qml</file>
3 <file>VirtualKeyboard.qml</file>
6 <file>VirtualKeyboard.qml</file>
4 <file>MirSurfaceItem.qml</file>
7 <file>MirSurfaceItem.qml</file>
5 <file>vkb_portrait.png</file>
8 <file>vkb_portrait.png</file>
tests/mocks/Unity/CMakeLists.txt+6
@@ -73,3 +73,9 @@ add_unity8_mock(Unity 0.2 Unity TARGETS FakeUnityQml)
73
73
74# and one copy in a separate directory for autopilot
74# and one copy in a separate directory for autopilot
75add_unity8_mock(Unity 0.2 Unity PREFIX scopefakes TARGETS FakeUnityQml)
75add_unity8_mock(Unity 0.2 Unity PREFIX scopefakes TARGETS FakeUnityQml)
76+
77+# Since on build both copy the same file to the same location (not great)
78+# make sure one depends on the other, otherwise when running with make -jX
79+# we can get errors of cp complaining the file has been created while it
80+# was trying to create it
81+add_dependencies(scopefakes-MockUnity-qmlfiles mocks-MockUnity-qmlfiles)
tests/mocks/Unity/Launcher/CMakeLists.txt−2
@@ -1,5 +1,3 @@
1−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=11)
2−
3include_directories(
1include_directories(
4 ${CMAKE_CURRENT_SOURCE_DIR}
2 ${CMAKE_CURRENT_SOURCE_DIR}
5 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/
3 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/
tests/mocks/Utils/CMakeLists.txt+1
@@ -26,6 +26,7 @@ set(QMLPLUGIN_SRC
26 ${CMAKE_SOURCE_DIR}/plugins/Utils/globalfunctions.cpp
26 ${CMAKE_SOURCE_DIR}/plugins/Utils/globalfunctions.cpp
27 ${CMAKE_SOURCE_DIR}/plugins/Utils/appdrawerproxymodel.cpp
27 ${CMAKE_SOURCE_DIR}/plugins/Utils/appdrawerproxymodel.cpp
28 ${CMAKE_SOURCE_DIR}/plugins/Utils/tabfocusfence.cpp
28 ${CMAKE_SOURCE_DIR}/plugins/Utils/tabfocusfence.cpp
29+ ${CMAKE_SOURCE_DIR}/plugins/Utils/expressionfiltermodel.cpp
29 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
30 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
30 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
31 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
31 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
32 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
tests/mocks/Utils/plugin.cpp+2
@@ -42,6 +42,7 @@
42#include <globalfunctions.h>
42#include <globalfunctions.h>
43#include <appdrawerproxymodel.h>
43#include <appdrawerproxymodel.h>
44#include <tabfocusfence.h>
44#include <tabfocusfence.h>
45+#include <expressionfiltermodel.h>
45
46
46static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
47static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
47{
48{
@@ -86,4 +87,5 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
86 qmlRegisterType<URLDispatcher>(uri, 0, 1, "URLDispatcher");
87 qmlRegisterType<URLDispatcher>(uri, 0, 1, "URLDispatcher");
87 qmlRegisterType<AppDrawerProxyModel>(uri, 0, 1, "AppDrawerProxyModel");
88 qmlRegisterType<AppDrawerProxyModel>(uri, 0, 1, "AppDrawerProxyModel");
88 qmlRegisterType<TabFocusFenceItem>(uri, 0, 1, "TabFocusFence");
89 qmlRegisterType<TabFocusFenceItem>(uri, 0, 1, "TabFocusFence");
90+ qmlRegisterType<ExpressionFilterModel>(uri, 0, 1, "ExpressionFilterModel");
89}
91}
tests/plugins/Greeter/Unity/Launcher/CMakeLists.txt−2
@@ -1,5 +1,3 @@
1−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=11)
2−
3include_directories(
1include_directories(
4 ${CMAKE_CURRENT_SOURCE_DIR}
2 ${CMAKE_CURRENT_SOURCE_DIR}
5 ${CMAKE_CURRENT_BINARY_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
tests/plugins/Unity/Launcher/CMakeLists.txt−1
@@ -1,5 +1,4 @@
1pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
1pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
2−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=11)
3
2
4include_directories(
3include_directories(
5 ${CMAKE_CURRENT_SOURCE_DIR}
4 ${CMAKE_CURRENT_SOURCE_DIR}
tests/qmltests/ApplicationMenus/tst_MenuBar.qml+85−9
@@ -28,8 +28,8 @@ import ".."
28
28
29Item {
29Item {
30 id: root
30 id: root
31− width: units.gu(100)
31+ width: units.gu(120)
32− height: units.gu(50)
32+ height: units.gu(70)
33
33
34 Component.onCompleted: {
34 Component.onCompleted: {
35 QuickUtils.keyboardAttached = true;
35 QuickUtils.keyboardAttached = true;
@@ -51,12 +51,12 @@ Item {
51 Rectangle {
51 Rectangle {
52 anchors {
52 anchors {
53 left: parent.left
53 left: parent.left
54− right: parent.right
55 top: parent.top
54 top: parent.top
56 margins: units.gu(1)
55 margins: units.gu(1)
57 }
56 }
58 height: units.gu(3)
57 height: units.gu(3)
59− color: "grey"
58+ width: parent.width * 2/3
59+ color: theme.palette.normal.background
60
60
61 MenuBar {
61 MenuBar {
62 id: menuBar
62 id: menuBar
@@ -65,7 +65,7 @@ Item {
65
65
66 unityMenuModel: UnityMenuModel {
66 unityMenuModel: UnityMenuModel {
67 id: menuBackend
67 id: menuBackend
68− modelData: appMenuData.generateTestData(17,5,2,3)
68+ modelData: appMenuData.generateTestData(10,5,2,3)
69 }
69 }
70 }
70 }
71 }
71 }
@@ -83,12 +83,12 @@ Item {
83
83
84 function init() {
84 function init() {
85 menuBar.dismiss();
85 menuBar.dismiss();
86− menuBackend.modelData = appMenuData.generateTestData(5,5,2,3)
86+ menuBackend.modelData = appMenuData.generateTestData(5,5,2,3, "menu")
87 activatedSpy.clear();
87 activatedSpy.clear();
88 }
88 }
89
89
90 function test_mouseNavigation() {
90 function test_mouseNavigation() {
91− menuBackend.modelData = appMenuData.generateTestData(3,3,0,0);
91+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
92 wait(50) // wait for row to build
92 wait(50) // wait for row to build
93 var priv = findInvisibleChild(menuBar, "d");
93 var priv = findInvisibleChild(menuBar, "d");
94
94
@@ -114,7 +114,7 @@ Item {
114 }
114 }
115
115
116 function test_keyboardNavigation_RightKeySelectsNextMenuItem(data) {
116 function test_keyboardNavigation_RightKeySelectsNextMenuItem(data) {
117− menuBackend.modelData = appMenuData.generateTestData(3,3,0,0);
117+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
118 var priv = findInvisibleChild(menuBar, "d");
118 var priv = findInvisibleChild(menuBar, "d");
119
119
120 var menuItem0 = findChild(menuBar, "menuBar-item0"); verify(menuItem0);
120 var menuItem0 = findChild(menuBar, "menuBar-item0"); verify(menuItem0);
@@ -139,7 +139,7 @@ Item {
139 }
139 }
140
140
141 function test_keyboardNavigation_LeftKeySelectsPreviousMenuItem(data) {
141 function test_keyboardNavigation_LeftKeySelectsPreviousMenuItem(data) {
142− menuBackend.modelData = appMenuData.generateTestData(3,3,0,0);
142+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
143 var priv = findInvisibleChild(menuBar, "d");
143 var priv = findInvisibleChild(menuBar, "d");
144
144
145 var menuItem0 = findChild(menuBar, "menuBar-item0"); verify(menuItem0);
145 var menuItem0 = findChild(menuBar, "menuBar-item0"); verify(menuItem0);
@@ -180,6 +180,41 @@ Item {
180 tryCompare(priv, "currentItem", menuItem);
180 tryCompare(priv, "currentItem", menuItem);
181 }
181 }
182
182
183+ function test_menuActivateClosesMenu() {
184+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0,"menu");
185+ var priv = findInvisibleChild(menuBar, "d");
186+
187+ var menuItem = findChild(menuBar, "menuBar-item0");
188+ menuItem.show();
189+ compare(priv.currentItem, menuItem, "CurrentItem should be set to item 0");
190+ compare(priv.currentItem.popupVisible, true, "Popup should be visible");
191+
192+ var actionItem = findChild(menuBar, "menuBar-item0-menu-item0-actionItem");
193+ mouseClick(actionItem);
194+ compare(priv.currentItem, null, "CurrentItem should be null");
195+ }
196+
197+ function test_subMenuActivateClosesMenu() {
198+ menuBackend.modelData = appMenuData.generateTestData(3,4,1,0,"menu");
199+ var priv = findInvisibleChild(menuBar, "d");
200+
201+ var menuItem = findChild(menuBar, "menuBar-item0");
202+ menuItem.show();
203+ compare(priv.currentItem, menuItem, "CurrentItem should be set to item 0");
204+ compare(priv.currentItem.popupVisible, true, "Popup should be visible");
205+
206+ var actionItem = findChild(menuBar, "menuBar-item0-menu-item0-actionItem");
207+ mouseClick(actionItem);
208+
209+ actionItem = findChild(menuBar, "menuBar-item0-menu-item0-menu-item0-actionItem");
210+ mouseClick(actionItem);
211+
212+ actionItem = findChild(menuBar, "menuBar-item0-menu-item0-menu-item0-menu-item0-actionItem");
213+ mouseClick(actionItem);
214+
215+ compare(priv.currentItem, null, "CurrentItem should be null");
216+ }
217+
183 function test_openAppMenuShortcut() {
218 function test_openAppMenuShortcut() {
184 var priv = findInvisibleChild(menuBar, "d");
219 var priv = findInvisibleChild(menuBar, "d");
185
220
@@ -192,5 +227,46 @@ Item {
192 keyClick(Qt.Key_F10, Qt.AltModifier);
227 keyClick(Qt.Key_F10, Qt.AltModifier);
193 compare(priv.currentItem, menuItem1, "First enabled item should be opened");
228 compare(priv.currentItem, menuItem1, "First enabled item should be opened");
194 }
229 }
230+
231+ function test_clickOpenMenuClosesMenu() {
232+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0,"menu");
233+ var priv = findInvisibleChild(menuBar, "d");
234+
235+ var menuItem = findChild(menuBar, "menuBar-item0");
236+ waitForRendering(menuItem);
237+ mouseClick(menuItem);
238+ compare(priv.currentItem, menuItem, "CurrentItem should be set to item 0");
239+ compare(priv.currentItem.popupVisible, true, "Popup should be visible");
240+
241+ waitForRendering(menuItem);
242+ mouseClick(menuItem);
243+ compare(priv.currentItem, null, "CurrentItem should be null");
244+ }
245+
246+ function test_overfow() {
247+ menuBackend.modelData = appMenuData.generateTestData(5,2,0,0,"menu");
248+
249+ var overflow = findChild(menuBar, "overflow");
250+ compare(overflow.visible, false, "Overflow should not be visible");
251+
252+ var menu = { "rowData": { "label": "Short" } };
253+ tryCompareFunction(function() {
254+ menuBackend.insertRow(0, menu);
255+ wait(1);
256+ if (overflow.visible) {
257+ return true;
258+ }
259+ return false;
260+ }, true);
261+
262+ tryCompareFunction(function() {
263+ menuBackend.removeRow(0);
264+ wait(1);
265+ if (!overflow.visible) {
266+ return true;
267+ }
268+ return false;
269+ }, true);
270+ }
195 }
271 }
196}
272}
tests/qmltests/ApplicationMenus/tst_MenuPopup.qml+14
@@ -223,6 +223,20 @@ Item {
223 tryCompareFunction(function() { return menuItem.popup !== null && menuItem.popup.visible }, false);
223 tryCompareFunction(function() { return menuItem.popup !== null && menuItem.popup.visible }, false);
224 }
224 }
225
225
226+ function test_mouseHoverOpensSubMenu() {
227+ menu.unityMenuModel.modelData = appMenuData.generateTestData(3,3,1,0,"menu",false);
228+
229+ var menuItem = findChild(menu, "menu-item0");
230+
231+ var priv = findInvisibleChild(menu, "d");
232+ priv.currentItem = menuItem;
233+
234+ mouseMove(menuItem, menuItem.width/2, menuItem.height/2);
235+ verify(!menuItem.popup);
236+
237+ tryCompareFunction(function() { return menuItem.popup != null; }, true);
238+ }
239+
226 function test_differentSizes() {
240 function test_differentSizes() {
227 var differentSizesMenu = [{
241 var differentSizesMenu = [{
228 "rowData": { "label": "Short" }}, {
242 "rowData": { "label": "Short" }}, {
tests/qmltests/Launcher/tst_Launcher.qml+13
@@ -1480,6 +1480,19 @@ Rectangle {
1480 launcher.available = true;
1480 launcher.available = true;
1481 }
1481 }
1482
1482
1483+ function test_hoverOnEdgeBarrerPreventsHiding() {
1484+ revealByEdgePush();
1485+
1486+ // Make sure the mouse is on the very left edge (on top of the barrier)
1487+ mouseMove(root, 1, root.height / 2);
1488+
1489+ // trigger the hide timer
1490+ compare(fakeDismissTimer.running, true);
1491+ fakeDismissTimer.triggered();
1492+
1493+ compare(launcher.state, "visibleTemporary");
1494+ }
1495+
1483 function test_hintOnSizeChange() {
1496 function test_hintOnSizeChange() {
1484 var oldSize = launcher.panelWidth;
1497 var oldSize = launcher.panelWidth;
1485 launcher.maxPanelX = -launcher.panelWidth;
1498 launcher.maxPanelX = -launcher.panelWidth;
tests/qmltests/Stage/ApplicationCheckBox.qml+1−1
@@ -162,7 +162,7 @@ Column {
162 }
162 }
163 }
163 }
164
164
165− // Rows of application surfaces
165+ // Rows of top-level application surfaces
166 Repeater {
166 Repeater {
167 model: d.application ? d.application.surfaceList : null
167 model: d.application ? d.application.surfaceList : null
168 RowLayout {
168 RowLayout {
tests/qmltests/Stage/tst_DesktopStage.qml+193−10
@@ -29,6 +29,7 @@ import ".." // For EdgeBarrierControls
29import "../../../qml/Stage"
29import "../../../qml/Stage"
30import "../../../qml/Components"
30import "../../../qml/Components"
31import "../../../qml/Components/PanelState"
31import "../../../qml/Components/PanelState"
32+import "../../../qml/ApplicationMenus"
32
33
33Item {
34Item {
34 id: root
35 id: root
@@ -44,6 +45,8 @@ Item {
44 }
45 }
45
46
46 Component.onCompleted: {
47 Component.onCompleted: {
48+ ApplicationMenusLimits.screenWidth = Qt.binding( function() { return stageLoader.width; } );
49+ ApplicationMenusLimits.screenHeight = Qt.binding( function() { return stageLoader.height; } );
47 QuickUtils.keyboardAttached = true;
50 QuickUtils.keyboardAttached = true;
48 theme.name = "Ubuntu.Components.Themes.SuruDark";
51 theme.name = "Ubuntu.Components.Themes.SuruDark";
49 resetGeometry();
52 resetGeometry();
@@ -89,7 +92,6 @@ Item {
89 focus: true
92 focus: true
90
93
91 Component.onCompleted: {
94 Component.onCompleted: {
92− edgeBarrierControls.target = testCase.findChild(this, "edgeBarrierController");
93 ApplicationManager.startApplication("unity8-dash");
95 ApplicationManager.startApplication("unity8-dash");
94 }
96 }
95 Component.onDestruction: {
97 Component.onDestruction: {
@@ -132,11 +134,22 @@ Item {
132 }
134 }
133 }
135 }
134
136
135− EdgeBarrierControls {
137+ Label {
136− id: edgeBarrierControls
138+ text: "Right edge push progress"
137− text: "Drag here to pull out spread"
139+ }
138− backgroundColor: "blue"
140+
139− onDragged: { stageLoader.item.pushRightEdge(amount); }
141+ Slider {
142+ id: rightEdgePushSlider
143+ width: parent.width
144+ live: true
145+ minimumValue: 0.0
146+ maximumValue: 1.0
147+ onPressedChanged: {
148+ if (!pressed) {
149+ value = 0;
150+ }
151+ }
152+ Binding { target: stageLoader.item; property: "rightEdgePushProgress"; value: rightEdgePushSlider.value }
140 }
153 }
141
154
142 Divider {}
155 Divider {}
@@ -695,10 +708,18 @@ Item {
695 var sizeBefore = Qt.size(dialerDelegate.width, dialerDelegate.height);
708 var sizeBefore = Qt.size(dialerDelegate.width, dialerDelegate.height);
696 var deco = findChild(dialerDelegate, "appWindowDecoration");
709 var deco = findChild(dialerDelegate, "appWindowDecoration");
697 verify(deco);
710 verify(deco);
698− tryCompare(deco, "maximizeButtonShown", false);
711+ // deco.width - units.gu(1) to make sure we're outside the "menu" area of the decoration
712+ mouseMove(deco, deco.width - units.gu(1), deco.height/2);
713+ var menuBarLoader = findChild(deco, "menuBarLoader");
714+ tryCompare(menuBarLoader.item, "visible", true);
699− mouseDoubleClick(deco);
715+ mouseDoubleClick(deco, deco.width - units.gu(1), deco.height/2)
700− var sizeAfter = Qt.size(dialerDelegate.width, dialerDelegate.height);
716+ expectFail("", "Double click should not maximize in a size restricted window");
701− tryCompareFunction(function(){ return sizeBefore; }, sizeAfter);
717+ tryCompareFunction(function() {
718+ var sizeAfter = Qt.size(dialerDelegate.width, dialerDelegate.height);
719+ return sizeAfter.width > sizeBefore.width && sizeAfter.height > sizeBefore.height;
720+ },
721+ true
722+ );
702
723
703 // remove restrictions, the maximize button should again be visible
724 // remove restrictions, the maximize button should again be visible
704 dialerDelegate.surface.setMaximumWidth(0);
725 dialerDelegate.surface.setMaximumWidth(0);
@@ -706,6 +727,29 @@ Item {
706 tryCompare(dialerMaximizeButton, "visible", true);
727 tryCompare(dialerMaximizeButton, "visible", true);
707 }
728 }
708
729
730+ function test_doubleClickMaximizes() {
731+ var dialerDelegate = startApplication("dialer-app");
732+
733+ var dialerMaximizeButton = findChild(dialerDelegate, "maximizeWindowButton");
734+ tryCompare(dialerMaximizeButton, "visible", true);
735+
736+ // try double clicking the decoration, should maximize it
737+ var sizeBefore = Qt.size(dialerDelegate.width, dialerDelegate.height);
738+ var deco = findChild(dialerDelegate, "appWindowDecoration");
739+ verify(deco);
740+ // deco.width - units.gu(1) to make sure we're outside the "menu" area of the decoration
741+ mouseMove(deco, deco.width - units.gu(1), deco.height/2);
742+ var menuBarLoader = findChild(deco, "menuBarLoader");
743+ tryCompare(menuBarLoader.item, "visible", true);
744+ mouseDoubleClick(deco, deco.width - units.gu(1), deco.height/2);
745+ tryCompareFunction(function() {
746+ var sizeAfter = Qt.size(dialerDelegate.width, dialerDelegate.height);
747+ return sizeAfter.width > sizeBefore.width && sizeAfter.height > sizeBefore.height;
748+ },
749+ true
750+ );
751+ }
752+
709 function test_canMoveWindowWithLeftMouseButtonOnly_data() {
753 function test_canMoveWindowWithLeftMouseButtonOnly_data() {
710 return [
754 return [
711 {tag: "left mouse button", button: Qt.LeftButton },
755 {tag: "left mouse button", button: Qt.LeftButton },
@@ -830,5 +874,144 @@ Item {
830 mouseRelease(decoration);
874 mouseRelease(decoration);
831 tryCompare(Mir, "cursorName", "");
875 tryCompare(Mir, "cursorName", "");
832 }
876 }
877+
878+ function test_menuPositioning_data() {
879+ return [
880+ {tag: "good",
881+ windowPosition: Qt.point(units.gu(10), units.gu(10))
882+ },
883+ {tag: "collides right",
884+ windowPosition: Qt.point(units.gu(100), units.gu(10)),
885+ minimumXDifference: units.gu(8)
886+ },
887+ {tag: "collides bottom",
888+ windowPosition: Qt.point(units.gu(10), units.gu(80)),
889+ minimumYDifference: units.gu(7)
890+ },
891+ ]
892+ }
893+
894+ function test_menuPositioning(data) {
895+ var appDelegate = startApplication("dialer-app");
896+ appDelegate.windowedX = data.windowPosition.x;
897+ appDelegate.windowedY = data.windowPosition.y;
898+
899+ var menuItem = findChild(appDelegate, "menuBar-item3");
900+ menuItem.show();
901+
902+ var menu = findChild(appDelegate, "menuBar-item3-menu");
903+ tryCompare(menu, "visible", true);
904+
905+ var normalPositioningX = menuItem.x - units.gu(1);
906+ var normalPositioningY = menuItem.height;
907+
908+ // We do this fuzzy checking because otherwise we would be duplicating the code
909+ // that calculates the coordinates and any bug it may have, what we want is really
910+ // to check that on collision with the border the menu is shifted substantially
911+ if (data.minimumXDifference) {
912+ verify(menu.x < normalPositioningX - data.minimumXDifference);
913+ } else {
914+ compare(menu.x, normalPositioningX);
915+ }
916+
917+ if (data.minimumYDifference) {
918+ verify(menu.y < normalPositioningY - data.minimumYDifference);
919+ } else {
920+ compare(menu.y, normalPositioningY);
921+ }
922+ }
923+
924+ function test_submenuPositioning_data() {
925+ return [
926+ {tag: "good",
927+ windowPosition: Qt.point(units.gu(10), units.gu(10))
928+ },
929+ {tag: "collides right",
930+ windowPosition: Qt.point(units.gu(100), units.gu(10)),
931+ minimumXDifference: units.gu(35)
932+ },
933+ {tag: "collides bottom",
934+ windowPosition: Qt.point(units.gu(10), units.gu(80)),
935+ minimumYDifference: units.gu(8)
936+ },
937+ ]
938+ }
939+
940+ function test_submenuPositioning(data) {
941+ var appDelegate = startApplication("dialer-app");
942+ appDelegate.windowedX = data.windowPosition.x;
943+ appDelegate.windowedY = data.windowPosition.y;
944+
945+ var menuItem = findChild(appDelegate, "menuBar-item3");
946+ menuItem.show();
947+
948+ var menu = findChild(appDelegate, "menuBar-item3-menu");
949+ menuItem = findChild(menu, "menuBar-item3-menu-item3-actionItem");
950+ tryCompare(menuItem, "visible", true);
951+ mouseMove(menuItem);
952+ mouseClick(menuItem);
953+
954+ menu = findChild(appDelegate, "menuBar-item3-menu-item3-menu");
955+
956+ var normalPositioningX = menuItem.width;
957+ var normalPositioningY = menuItem.parent.y;
958+
959+ // We do this fuzzy checking because otherwise we would be duplicating the code
960+ // that calculates the coordinates and any bug it may have, what we want is really
961+ // to check that on collision with the border the menu is shifted substantially
962+ if (data.minimumXDifference) {
963+ verify(menu.x < normalPositioningX - data.minimumXDifference);
964+ } else {
965+ compare(menu.x, normalPositioningX);
966+ }
967+
968+ if (data.minimumYDifference) {
969+ verify(menu.y < normalPositioningY - data.minimumYDifference);
970+ } else {
971+ compare(menu.y, normalPositioningY);
972+ }
973+ }
974+
975+ function test_menuDoubleClickNoMaximizeWindowBehind() {
976+ var appDelegate1 = startApplication("dialer-app");
977+ var appDelegate2 = startApplication("gmail-webapp");
978+
979+ // Open menu
980+ var menuItem = findChild(appDelegate2, "menuBar-item3");
981+ menuItem.show();
982+ var menu = findChild(appDelegate2, "menuBar-item3-menu");
983+ menuItem = findChild(menu, "menuBar-item3-menu-item3-actionItem");
984+ tryCompare(menuItem, "visible", true);
985+
986+ // Place the other application window decoration under the menu
987+ var pos = menuItem.mapToItem(null, menuItem.width / 2, menuItem.height / 2);
988+ appDelegate1.windowedX = pos.x - appDelegate1.width / 2;
989+ appDelegate1.windowedY = pos.y - units.gu(1);
990+
991+ var previousWindowState = appDelegate1.windowState;
992+
993+ mouseMove(menuItem);
994+ mouseDoubleClickSequence(menuItem);
995+
996+ expectFail("", "Double clicking a menu should not change the window below");
997+ tryCompareFunction(function() { return appDelegate1.windowState != previousWindowState; }, true);
998+ }
999+
1000+ function test_openMenuEatsHoverOutsideIt() {
1001+ var appDelegate = startApplication("gmail-webapp");
1002+
1003+ var wd = findChild(appDelegate, "appWindowDecoration");
1004+ var closeButton = findChild(wd, "closeWindowButton");
1005+
1006+ // Open menu
1007+ var menuItem = findChild(appDelegate, "menuBar-item3");
1008+ menuItem.show();
1009+ var menu = findChild(appDelegate, "menuBar-item3-menu");
1010+ tryCompare(menu, "visible", true);
1011+
1012+ mouseMove(closeButton, closeButton.width/2, closeButton.height/2);
1013+ expectFail("", "Hovering the window controls should be ignored when the menu is open");
1014+ tryCompare(closeButton, "containsMouse", true);
1015+ }
833 }
1016 }
834}
1017}
tests/qmltests/Stage/tst_PhoneStage.qml+4−5
@@ -418,11 +418,10 @@ Item {
418
418
419 function test_mouseEdgePush() {
419 function test_mouseEdgePush() {
420 addApps(1);
420 addApps(1);
421− mouseMove(stage, stage.width - 1, units.gu(10));
421+ // When progress goes to 1 it should switch to spread, but stay there even if progress goes back
422− for (var i = 0; i < units.gu(10); i++) {
422+ stage.rightEdgePushProgress = 1;
423− stage.pushRightEdge(1);
423+ compare(stage.state, "spread");
424− }
424+ stage.rightEdgePushProgress = 0;
425− mouseMove(stage, stage.width - units.gu(5), units.gu(10));
426 compare(stage.state, "spread");
425 compare(stage.state, "spread");
427 }
426 }
428
427
tests/qmltests/Stage/tst_WindowResizeArea.qml+10
@@ -90,6 +90,7 @@ Item {
90 id: windowResizeArea
90 id: windowResizeArea
91 anchors.fill: parent
91 anchors.fill: parent
92 target: fakeWindow
92 target: fakeWindow
93+ boundsItem: bounds
93 borderThickness: units.gu(2)
94 borderThickness: units.gu(2)
94 minWidth: units.gu(15)
95 minWidth: units.gu(15)
95 minHeight: units.gu(10)
96 minHeight: units.gu(10)
@@ -121,7 +122,16 @@ Item {
121 active: windowLoaderCheckbox.checked
122 active: windowLoaderCheckbox.checked
122 }
123 }
123
124
125+ Item {
126+ id: bounds
127+ anchors.left: parent.left
128+ anchors.top: parent.top
129+ anchors.right: controls.left
130+ anchors.bottom: parent.bottom
131+ }
132+
124 Rectangle {
133 Rectangle {
134+ id: controls
125 anchors.right: parent.right
135 anchors.right: parent.right
126 anchors.top: parent.top
136 anchors.top: parent.top
127 anchors.bottom: parent.bottom
137 anchors.bottom: parent.bottom
tests/qmltests/Tutorial/tst_Tutorial.qml+2−2
@@ -719,9 +719,9 @@ Rectangle {
719 ApplicationManager.startApplication("facebook-webapp");
719 ApplicationManager.startApplication("facebook-webapp");
720 tryCompare(tutorialRightLoader, "shown", true);
720 tryCompare(tutorialRightLoader, "shown", true);
721
721
722− var stage = findChild(shell, "stage");
722+ var cursor = findChild(shell, "cursor");
723 mouseMove(shell, shell.width, shell.height / 2);
723 mouseMove(shell, shell.width, shell.height / 2);
724− stage.pushRightEdge(units.gu(8));
724+ cursor.pushedRightBoundary(units.gu(8), 0);
725 tryCompare(tutorialRightLoader, "shown", false);
725 tryCompare(tutorialRightLoader, "shown", false);
726
726
727 tryCompare(AccountsService, "demoEdges", false);
727 tryCompare(AccountsService, "demoEdges", false);
tests/qmltests/tst_OrientedShell.qml+2−1
@@ -1433,8 +1433,9 @@ Rectangle {
1433 function swipeAwayGreeter() {
1433 function swipeAwayGreeter() {
1434 var greeter = findChild(shell, "greeter");
1434 var greeter = findChild(shell, "greeter");
1435 tryCompare(greeter, "fullyShown", true);
1435 tryCompare(greeter, "fullyShown", true);
1436+ waitForRendering(greeter)
1436
1437
1437− var touchX = shell.width - (shell.edgeSize / 2);
1438+ var touchX = shell.width * .75;
1438 var touchY = shell.height / 2;
1439 var touchY = shell.height / 2;
1439 touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY);
1440 touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY);
1440
1441
tests/qmltests/tst_Shell.qml+132−1
@@ -335,6 +335,8 @@ Rectangle {
335 Row {
335 Row {
336 CheckBox {
336 CheckBox {
337 id: fullscreeAppCheck
337 id: fullscreeAppCheck
338+ activeFocusOnPress: false
339+ activeFocusOnTab: false
338
340
339 onTriggered: {
341 onTriggered: {
340 if (!topLevelSurfaceList.focusedWindow) return;
342 if (!topLevelSurfaceList.focusedWindow) return;
@@ -2585,6 +2587,55 @@ Rectangle {
2585 tryCompareFunction(function() { return ApplicationManager.focusedApplicationId; }, "calendar-app");
2587 tryCompareFunction(function() { return ApplicationManager.focusedApplicationId; }, "calendar-app");
2586 }
2588 }
2587
2589
2590+ function test_rightEdgePushWithOpenIndicators() {
2591+ loadShell("desktop");
2592+ shell.usageScenario = "desktop";
2593+ waitForRendering(shell);
2594+ swipeAwayGreeter();
2595+
2596+ var stage = findChild(shell, "stage");
2597+ var cursor = findChild(shell, "cursor");
2598+ var indicators = findChild(shell, "indicators");
2599+
2600+ // Open indicators
2601+ var touchX = shell.width - units.gu(5);
2602+ touchFlick(shell,
2603+ touchX /* fromX */, indicators.minimizedPanelHeight * 0.5 /* fromY */,
2604+ touchX /* toX */, shell.height * 0.9 /* toY */,
2605+ true /* beginTouch */, true /* endTouch */);
2606+ tryCompare(indicators, "fullyOpened", true);
2607+
2608+ // push the right edge
2609+ mouseMove(shell, shell.width - 1, units.gu(10));
2610+ for (var i = 0; i < units.gu(10); i++) {
2611+ cursor.pushedRightBoundary(1, 0);
2612+ }
2613+ tryCompare(stage, "rightEdgePushProgress", 1);
2614+ tryCompare(stage, "state", "spread");
2615+ tryCompare(indicators, "fullyOpened", false);
2616+
2617+ mouseMove(shell, shell.width - units.gu(5), units.gu(10));
2618+
2619+ tryCompare(stage, "rightEdgePushProgress", 0);
2620+ }
2621+
2622+ function test_rightEdgePushOnGreeter() {
2623+ loadShell("desktop");
2624+ shell.usageScenario = "desktop";
2625+ waitForRendering(shell);
2626+
2627+ var stage = findChild(shell, "stage");
2628+ var cursor = findChild(shell, "cursor");
2629+
2630+ // push the right edge, but verify it doesn't emit any progress
2631+ mouseMove(shell, shell.width - 1, units.gu(10));
2632+ for (var i = 0; i < units.gu(10); i++) {
2633+ cursor.pushedRightBoundary(1, 0);
2634+ compare(stage.rightEdgePushProgress, 0);
2635+ }
2636+ compare(stage.rightEdgePushProgress, 0);
2637+ }
2638+
2588 function test_oskDisplacesWindow_data() {
2639 function test_oskDisplacesWindow_data() {
2589 return [
2640 return [
2590 {tag: "no need to displace", windowHeight: units.gu(10), windowY: units.gu(5), targetDisplacement: units.gu(5), oskEnabled: true},
2641 {tag: "no need to displace", windowHeight: units.gu(10), windowY: units.gu(5), targetDisplacement: units.gu(5), oskEnabled: true},
@@ -2707,9 +2758,10 @@ Rectangle {
2707 tryCompare(stage, "state", "staged");
2758 tryCompare(stage, "state", "staged");
2708
2759
2709 // Try by edge push
2760 // Try by edge push
2761+ var cursor = findChild(shell, "cursor");
2710 mouseMove(stage, stage.width - 1, units.gu(10));
2762 mouseMove(stage, stage.width - 1, units.gu(10));
2711 for (var i = 0; i < units.gu(10); i++) {
2763 for (var i = 0; i < units.gu(10); i++) {
2712− stage.pushRightEdge(1);
2764+ cursor.pushedRightBoundary(1, 0);
2713 }
2765 }
2714 mouseMove(stage, stage.width - units.gu(5), units.gu(10));
2766 mouseMove(stage, stage.width - units.gu(5), units.gu(10));
2715 tryCompare(stage, "state", data.spreadEnabled ? "spread" : "staged");
2767 tryCompare(stage, "state", data.spreadEnabled ? "spread" : "staged");
@@ -2732,6 +2784,28 @@ Rectangle {
2732 keyRelease(Qt.Key_W, Qt.MetaModifier)
2784 keyRelease(Qt.Key_W, Qt.MetaModifier)
2733 }
2785 }
2734
2786
2787+ function test_launcherWindowResizeInteraction()
2788+ {
2789+ loadShell("desktop");
2790+ waitForRendering(shell)
2791+ shell.usageScenario = "desktop"
2792+ waitForRendering(shell)
2793+ swipeAwayGreeter();
2794+
2795+ var app1SurfaceId = topLevelSurfaceList.nextId;
2796+ var app1 = ApplicationManager.startApplication("dialer-app")
2797+ waitUntilAppWindowIsFullyLoaded(app1SurfaceId);
2798+
2799+ var launcherDelegate1 = findChild(shell, "launcherDelegate1");
2800+ mouseClick(launcherDelegate1, launcherDelegate1.width / 2, launcherDelegate1.height / 2, Qt.RightButton);
2801+
2802+ var appDelegate = findChild(shell, "appDelegate_" + app1SurfaceId);
2803+ mouseMove(shell, appDelegate.mapToItem(shell, 0, 0).x, launcherDelegate1.mapToItem(shell, 0, 0).y);
2804+
2805+ expectFail("", "Cursor should not change while launcher menu is open");
2806+ tryCompare(Mir, "cursorName", "left_side");
2807+ }
2808+
2735 function test_panelTitleShowsWhenGreeterNotShown_data() {
2809 function test_panelTitleShowsWhenGreeterNotShown_data() {
2736 return [
2810 return [
2737 {tag: "phone" },
2811 {tag: "phone" },
@@ -2779,5 +2853,62 @@ Rectangle {
2779 }
2853 }
2780 tryCompareFunction(function() { return drawer.visible; }, false);
2854 tryCompareFunction(function() { return drawer.visible; }, false);
2781 }
2855 }
2856+
2857+ function test_restoreFromFullscreen() {
2858+ loadShell("desktop");
2859+ shell.usageScenario = "desktop";
2860+ waitForRendering(shell);
2861+ swipeAwayGreeter();
2862+
2863+ var appSurfaceId = topLevelSurfaceList.nextId;
2864+ var app = ApplicationManager.startApplication("dialer-app")
2865+ waitUntilAppWindowIsFullyLoaded(appSurfaceId);
2866+
2867+ // start dialer
2868+ var appContainer = findChild(shell, "appContainer");
2869+ var appDelegate = findChild(appContainer, "appDelegate_" + appSurfaceId);
2870+ verify(appDelegate);
2871+ tryCompare(appDelegate, "state", "normal");
2872+
2873+ // now maximize to right
2874+ appDelegate.requestMaximizeRight();
2875+ tryCompare(appDelegate, "state", "maximizedRight");
2876+
2877+ // switch to fullscreen
2878+ app.surfaceList.get(0).requestState(Mir.FullscreenState);
2879+ tryCompare(appDelegate, "state", "fullscreen");
2880+
2881+ // restore, should go back to maximizedRight, not restored
2882+ appDelegate.requestRestore();
2883+ tryCompare(appDelegate, "state", "maximizedRight");
2884+ }
2885+
2886+ function test_altTabToMinimizedApp() {
2887+ loadShell("desktop");
2888+ shell.usageScenario = "desktop";
2889+ waitForRendering(shell);
2890+ swipeAwayGreeter();
2891+
2892+ var appSurfaceId = topLevelSurfaceList.nextId;
2893+ var app = ApplicationManager.startApplication("dialer-app")
2894+ waitUntilAppWindowIsFullyLoaded(appSurfaceId);
2895+
2896+ // start dialer
2897+ var appContainer = findChild(shell, "appContainer");
2898+ var appDelegate = findChild(appContainer, "appDelegate_" + appSurfaceId);
2899+ verify(appDelegate);
2900+ tryCompare(appDelegate, "state", "normal");
2901+
2902+ // minimize dialer
2903+ appDelegate.requestMinimize();
2904+ tryCompare(appDelegate, "state", "minimized");
2905+
2906+ // try to bring dialer back from minimized by doing alt-tab
2907+ keyClick(Qt.Key_Tab, Qt.AltModifier);
2908+ tryCompare(appDelegate, "visible", true);
2909+ tryCompare(appDelegate, "focus", true);
2910+ tryCompare(topLevelSurfaceList.focusedWindow, "surface", appDelegate.surface);
2911+ tryCompare(topLevelSurfaceList.applicationAt(0), "appId", "dialer-app");
2912+ }
2782 }
2913 }
2783}
2914}
tests/utils/modules/Unity/Test/UnityTestCase.qml−9
@@ -617,15 +617,6 @@ TestCase {
617 }
617 }
618 }
618 }
619
619
620− // TODO This function can be removed altogether once we use Qt 5.5 which has the same feature
621− function waitForRendering(item, timeout) {
622− if (timeout === undefined)
623− timeout = 5000;
624− if (!item)
625− qtest_fail("No item given to waitForRendering", 1);
626− return qtest_results.waitForRendering(item, timeout);
627− }
628−
629 /*
620 /*
630 Wait until any transition animation has finished for the given StateGroup or Item
621 Wait until any transition animation has finished for the given StateGroup or Item
631 */
622 */