Compare commits

..

1 Commits

Author SHA1 Message Date
Carlos Garnacho
f0cf611e1b shell: Update to MetaCursorTracker API change
The pointer coordinates in meta_cursor_tracker_get_pointer() are now
returned as a graphene_point_t.
2020-08-13 19:49:11 +00:00
16 changed files with 1538 additions and 3068 deletions

View File

@@ -1604,7 +1604,6 @@ class FolderView extends BaseAppView {
action.connect('pan', this._onPan.bind(this));
this._scrollView.add_action(action);
this._appIds = [];
this._redisplay();
}
@@ -1650,7 +1649,8 @@ class FolderView extends BaseAppView {
}
_getItemPosition(item) {
const appIndex = this._appIds.indexOf(item.id);
const appIds = this._getFolderApps();
const appIndex = appIds.indexOf(item.id);
if (appIndex === -1)
return [-1, -1];
@@ -1660,8 +1660,10 @@ class FolderView extends BaseAppView {
}
_compareItems(a, b) {
const aPosition = this._appIds.indexOf(a.id);
const bPosition = this._appIds.indexOf(b.id);
const appIds = this._getFolderApps();
const aPosition = appIds.indexOf(a.id);
const bPosition = appIds.indexOf(b.id);
if (aPosition === -1 && bPosition === -1)
return a.name.localeCompare(b.name);
@@ -1718,8 +1720,9 @@ class FolderView extends BaseAppView {
_loadApps() {
let apps = [];
let appSys = Shell.AppSystem.get_default();
const appIds = this._getFolderApps();
this._appIds.forEach(appId => {
appIds.forEach(appId => {
const app = appSys.lookup_app(appId);
let icon = this._items.get(appId);
@@ -1732,13 +1735,6 @@ class FolderView extends BaseAppView {
return apps;
}
_redisplay() {
// Keep the app ids list cached
this._appIds = this._getFolderApps();
super._redisplay();
}
acceptDrop(source) {
if (!super.acceptDrop(source))
return false;

View File

@@ -2,7 +2,6 @@
/* exported Component */
const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals;
const Dialog = imports.ui.dialog;
@@ -494,7 +493,7 @@ var VPNRequestHandler = class {
return;
}
this._vpnChildProcessLineOldStyle(ByteArray.toString(line));
this._vpnChildProcessLineOldStyle(line);
// try to read more!
this._readStdoutOldStyle();
@@ -523,7 +522,13 @@ var VPNRequestHandler = class {
let contentOverride;
try {
data = ByteArray.toGBytes(this._dataStdout.peek_buffer());
data = this._dataStdout.peek_buffer();
if (data instanceof Uint8Array)
data = imports.byteArray.toGBytes(data);
else
data = data.toGBytes();
keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE);
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)

View File

@@ -2,7 +2,6 @@
/* exported init connect disconnect */
const { GLib, Gio, GObject, Shell, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals;
const ExtensionDownloader = imports.ui.extensionDownloader;
@@ -283,7 +282,8 @@ var ExtensionManager = class {
let metadataContents, success_;
try {
[success_, metadataContents] = metadataFile.load_contents(null);
metadataContents = ByteArray.toString(metadataContents);
if (metadataContents instanceof Uint8Array)
metadataContents = imports.byteArray.toString(metadataContents);
} catch (e) {
throw new Error('Failed to load metadata.json: %s'.format(e.toString()));
}

View File

@@ -468,12 +468,6 @@ var IconGridLayout = GObject.registerClass({
this._unlinkItem(item);
});
// Adjust the page indexes of items after this page
for (const itemData of this._items.values()) {
if (itemData.pageIndex > pageIndex)
itemData.pageIndex--;
}
this._pages.splice(pageIndex, 1);
this.emit('pages-changed');
}

View File

@@ -2,7 +2,6 @@
/* exported KeyboardManager */
const { Clutter, Gio, GLib, GObject, Meta, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals;
const InputSourceManager = imports.ui.status.keyboard;
@@ -533,7 +532,8 @@ var KeyboardModel = class {
_loadModel(groupName) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName));
let [success_, contents] = file.load_contents(null);
contents = ByteArray.toString(contents);
if (contents instanceof Uint8Array)
contents = imports.byteArray.toString(contents);
return JSON.parse(contents);
}

View File

@@ -482,16 +482,13 @@ class RedBorderEffect extends Clutter.Effect {
this._pipeline = null;
}
vfunc_paint_node(node, paintContext) {
vfunc_paint(paintContext) {
let framebuffer = paintContext.get_framebuffer();
let coglContext = framebuffer.get_context();
let actor = this.get_actor();
const actorNode = new Clutter.ActorNode(actor);
node.add_child(actorNode, -1);
actor.continue_paint(paintContext);
if (!this._pipeline) {
const framebuffer = paintContext.get_framebuffer();
const coglContext = framebuffer.get_context();
let color = new Cogl.Color();
color.init_from_4ub(0xff, 0, 0, 0xc4);
@@ -502,28 +499,18 @@ class RedBorderEffect extends Clutter.Effect {
let alloc = actor.get_allocation_box();
let width = 2;
const pipelineNode = new Clutter.PipelineNode(this._pipeline);
pipelineNode.set_name('Red Border');
actorNode.add_child(pipelineNode);
const box = new Clutter.ActorBox();
// clockwise order
box.set_origin(0, 0);
box.set_size(alloc.get_width(), width);
pipelineNode.add_rectangle(box);
box.set_origin(alloc.get_width() - width, width);
box.set_size(width, alloc.get_height());
pipelineNode.add_rectangle(box);
box.set_origin(0, alloc.get_height() - width);
box.set_size(alloc.get_width() - width, width);
pipelineNode.add_rectangle(box);
box.set_origin(0, width);
box.set_size(width, alloc.get_height() - width);
pipelineNode.add_rectangle(box);
framebuffer.draw_rectangle(this._pipeline,
0, 0, alloc.get_width(), width);
framebuffer.draw_rectangle(this._pipeline,
alloc.get_width() - width, width,
alloc.get_width(), alloc.get_height());
framebuffer.draw_rectangle(this._pipeline,
0, alloc.get_height(),
alloc.get_width() - width, alloc.get_height() - width);
framebuffer.draw_rectangle(this._pipeline,
0, alloc.get_height() - width,
width, width);
}
});

View File

@@ -3,7 +3,6 @@
const { Atk, Clutter, GDesktopEnums, Gio,
GLib, GObject, Gtk, Meta, Pango, Rsvg, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals;
const Main = imports.ui.main;
@@ -298,7 +297,8 @@ var PadDiagram = GObject.registerClass({
_init(params) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
let [success_, css] = file.load_contents(null);
css = ByteArray.toString(css);
if (css instanceof Uint8Array)
css = imports.byteArray.toString(css);
this._curEdited = null;
this._prevEdited = null;
this._css = css;

View File

@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported SessionMode, listModes */
const ByteArray = imports.byteArray;
const GLib = imports.gi.GLib;
const Signals = imports.signals;
@@ -106,7 +105,8 @@ function _loadMode(file, info) {
let fileContent, success_, newMode;
try {
[success_, fileContent] = file.load_contents(null);
fileContent = ByteArray.toString(fileContent);
if (fileContent instanceof Uint8Array)
fileContent = imports.byteArray.toString(fileContent);
newMode = JSON.parse(fileContent);
} catch (e) {
return;

File diff suppressed because it is too large Load Diff

View File

@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-08-10 23:58+0000\n"
"PO-Revision-Date: 2020-08-14 00:36+0200\n"
"POT-Creation-Date: 2020-08-11 15:44+0000\n"
"PO-Revision-Date: 2020-08-13 01:31+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician <proxecto@trasno.gal>\n"
"Language: gl\n"
@@ -233,10 +233,10 @@ msgid ""
"“application id” → 'data' pair. Currently, the following values are stored "
"as 'data': • “position”: the position of the application icon in the page"
msgstr ""
"Disposición do selector de aplicacións. Cada entrada no array é unha páxina. "
"As páxinas están almacenadas na orde na que aparecen no Shell de GNOME. Cada "
"páxina contén un par «id de aplicación» → «datos». Actualmente, gárdanse os "
"seguintes valores: • «position»: A posición da icona da aplicación na páxina"
"Disposición do selector de aplicacións. Cada entrada na lista é unha páxina. "
"As páxinas almacénanse na orde que aparecen en GNOME Shell. Cada páxina "
"contén o par «id de aplicación» → 'datos'. Actualmente en «data» gárdanse os "
"seguintes valores: • posición”: a posición da icona da aplicación na páxina"
#: data/org.gnome.shell.gschema.xml.in:130
msgid "Keybinding to open the application menu"
@@ -505,14 +505,11 @@ msgstr "Apagar"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:94
#| msgid "power off;shutdown;reboot;restart;halt;stop"
msgid "power off;shutdown;halt;stop"
msgstr "apagar;reiniciar;deter;parar"
#. Translators: The name of the restart action in search
#: js/misc/systemActions.js:99
#| msgctxt "button"
#| msgid "Restart"
msgctxt "search-result"
msgid "Restart"
msgstr "Reiniciar"
@@ -520,7 +517,7 @@ msgstr "Reiniciar"
#. Translators: A list of keywords that match the restart action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "reboot;restart;"
msgstr "reiniciar;"
msgstr "Reiniciar;"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:107
@@ -756,12 +753,10 @@ msgid "New Window"
msgstr "Xanela nova"
#: js/ui/appDisplay.js:2797
#| msgid "Launch using Dedicated Graphics Card"
msgid "Launch using Integrated Graphics Card"
msgstr "Iniciar usando a Tarxeta Gráfica Integrada"
#: js/ui/appDisplay.js:2798
#| msgid "Launch using Dedicated Graphics Card"
msgid "Launch using Discrete Graphics Card"
msgstr "Iniciar usando a Tarxeta Gráfica Dedicada"
@@ -1109,14 +1104,13 @@ msgstr "%A, %e de %B de %Y"
#: js/ui/dateMenu.js:151
msgctxt "calendar heading"
msgid "%B %-d"
msgstr "%e de %B de %Y"
msgstr "%-d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/dateMenu.js:154
#| msgid "%B %-d %Y"
msgctxt "calendar heading"
msgid "%B %-d %Y"
msgstr "%e de %B de %Y"
msgstr "%-d de %B de %Y"
#: js/ui/dateMenu.js:160
msgid "Today"
@@ -1163,9 +1157,8 @@ msgid "Weather"
msgstr "Tempo"
#: js/ui/dateMenu.js:653
#| msgid "Select a location…"
msgid "Select weather location…"
msgstr "Seleccione unha ubicación metereolóxica…"
msgstr "Seleccione a ubicación metereolóxica…"
#: js/ui/endSessionDialog.js:39
#, javascript-format
@@ -1230,8 +1223,6 @@ msgid "Restart"
msgstr "Reiniciar"
#: js/ui/endSessionDialog.js:82
#| msgctxt "title"
#| msgid "Install Updates & Power Off"
msgctxt "title"
msgid "Install Updates & Restart"
msgstr "Instalar actualizacións e reiniciar"
@@ -1299,10 +1290,9 @@ msgstr ""
"que o seu computador está enchufado."
#: js/ui/endSessionDialog.js:284
#| msgid "Running on battery power: Please plug in before installing updates."
msgid "Low battery power: please plug in before installing updates."
msgstr ""
"Correndo con batería baixa: por favor conecte a corrente antes de instalar "
"Enerxía da batería baixa: por favor enchufe a corrente antes de instalar "
"actualizacións."
#: js/ui/endSessionDialog.js:293
@@ -1788,12 +1778,10 @@ msgid "Bluetooth Settings"
msgstr "Preferencias do Bluetooth"
#: js/ui/status/bluetooth.js:152
#| msgid "Bluetooth"
msgid "Bluetooth Off"
msgstr "Bluetooth desactivado"
#: js/ui/status/bluetooth.js:154
#| msgid "Bluetooth"
msgid "Bluetooth On"
msgstr "Bluetooth activado"
@@ -2153,7 +2141,6 @@ msgid "Suspend"
msgstr "Suspender"
#: js/ui/status/system.js:130
#| msgid "Restarting…"
msgid "Restart…"
msgstr "Reiniciar…"
@@ -2438,8 +2425,9 @@ msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Extensións de GNOME xestiona a actualización de extensions, a súa "
"configuración, eliminación e a desactivación das extensións que non quere."
"Extensións de GNOME xestiona as actualización de extensións, configuración "
"das preferencias das mesmas e a desinstalación ou desactivación das "
"extensións non requiridas."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
@@ -2473,10 +2461,9 @@ msgstr[1] "Vanse actualizar %d extensións no seguinte inicio de sesión."
#: subprojects/extensions-app/js/main.js:461
msgid "The extension is incompatible with the current GNOME version"
msgstr "A extensión non é compatíbel coa versión actual de GNOME"
msgstr "A extensión non é compatíbel coa versión de GNOME actual"
#: subprojects/extensions-app/js/main.js:464
#| msgid "Show extension info"
msgid "The extension had an error"
msgstr "A extensión tivo un erro"
@@ -2554,9 +2541,8 @@ msgstr ""
"que está nunha sesión en GNOME e ténteo de novo."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
#| msgid "Extension Updates Available"
msgid "Extension Updates Ready"
msgstr "Actualizacións de extensión dispoñíbeis"
msgstr "Hai actualizacións de extensións listas"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
@@ -2604,11 +2590,11 @@ msgstr ""
#: subprojects/extensions-tool/src/command-create.c:366
msgid "Choose one of the available templates:\n"
msgstr "Seleccione entre unha das plantillas:\n"
msgstr "Seleccione un dos modelos dispoñíbeis:\n"
#: subprojects/extensions-tool/src/command-create.c:380
msgid "Template"
msgstr "Plantilla"
msgstr "Modelo"
#: subprojects/extensions-tool/src/command-create.c:435
msgid "The unique identifier of the new extension"
@@ -2632,12 +2618,11 @@ msgstr "Unha descrición curta do que a súa extensión fai"
#: subprojects/extensions-tool/src/command-create.c:446
msgid "TEMPLATE"
msgstr "PLANTILLA"
msgstr "MODELO"
#: subprojects/extensions-tool/src/command-create.c:447
#| msgid "The user-visible name of the new extension"
msgid "The template to use for the new extension"
msgstr "A plantilla a usar para a nova extensión"
msgstr "O modelo a usar para a nova extensión"
#: subprojects/extensions-tool/src/command-create.c:453
msgid "Enter extension information interactively"
@@ -2661,7 +2646,7 @@ msgstr "Requírese o UUID, o nome e a descrición"
#: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64
msgid "Failed to connect to GNOME Shell\n"
msgstr "Produciuse un fallo ao contectarse á Shell de GNOME\n"
msgstr "Produciuse un fallo ao conetarse a GNOME Shell\n"
#: subprojects/extensions-tool/src/command-disable.c:53
#: subprojects/extensions-tool/src/command-enable.c:53
@@ -2812,7 +2797,6 @@ msgstr "Especificouse máis dun directorio de orixe"
#: subprojects/extensions-tool/src/command-prefs.c:47
#, c-format
#| msgid "Show extensions with preferences"
msgid "Extension “%s” doesn't have preferences\n"
msgstr "A extensión «%s» non ten preferencias\n"
@@ -2825,13 +2809,11 @@ msgid "Reset an extension"
msgstr "Restabelece unha extensión"
#: subprojects/extensions-tool/src/command-uninstall.c:49
#| msgid "List installed extensions"
msgid "Cannot uninstall system extensions\n"
msgstr "Non é posíbel desinstalar as extensións do sistema\n"
#: subprojects/extensions-tool/src/command-uninstall.c:64
#, c-format
#| msgid "Failed to launch “%s”"
msgid "Failed to uninstall “%s”\n"
msgstr "Produciuse un erro ao desinstalar «%s»\n"
@@ -2841,11 +2823,11 @@ msgstr "Desinstala unha extensión"
#: subprojects/extensions-tool/src/main.c:72
msgid "Do not print error messages"
msgstr "Non imprimir os mensaxes de erro"
msgstr "Non é posíbel imprimir os mensaxes de erro"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Produciuse un fallo ao conectarse ao Shell de GNOME"
msgstr "Produciuse un fallo ao conectarse con GNOME Shell"
#: subprojects/extensions-tool/src/main.c:244
msgid "Path"
@@ -2944,7 +2926,6 @@ msgid "Plain"
msgstr "Plana"
#: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5
#| msgid "Reset extension"
msgid "An empty extension"
msgstr "Unha extensión baleira"
@@ -2954,7 +2935,7 @@ msgstr "Indicador"
#: subprojects/extensions-tool/src/templates/indicator.desktop.in:5
msgid "Add an icon to the top bar"
msgstr "Engade unha icona á barra superior"
msgstr "Engade unha icona na barra superior"
#. translators:
#. * The number of sound outputs on a particular device

300
po/ro.po
View File

@@ -10,9 +10,10 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-08-10 23:58+0000\n"
"PO-Revision-Date: 2020-08-14 15:27+0300\n"
"Last-Translator: Florentina Mușat <florentina.musat.28@gmail.com>\n"
"POT-Creation-Date: 2020-07-21 05:44+0000\n"
"PO-Revision-Date: 2020-07-21 09:07+0200\n"
"Last-Translator: Florentina Mușat <florentina [dot] musat [dot] 28 [at] "
"gmail [dot] com>\n"
"Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
"sourceforge.net>\n"
"Language: ro\n"
@@ -22,7 +23,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
"%100<=19) ? 1 : 2);\n"
"20)) ? 1: 2);\n"
"X-Generator: Poedit 2.4\n"
"X-Generator: Poedit 2.3.1\n"
"X-Project-Style: gnome\n"
"X-Poedit-SourceCharset: UTF-8\n"
@@ -234,11 +235,11 @@ msgid ""
"“application id” → 'data' pair. Currently, the following values are stored "
"as 'data': • “position”: the position of the application icon in the page"
msgstr ""
"Aspectul selectorului de aplicații. Fiecare intrare din vector este o "
"Aspectul selectorului de aplicații. Fiecare intrare din matrice este o "
"pagină. Paginile sunt stocate în ordinea în care apar în GNOME Shell. "
"Fiecare pagină conține o pereche de „id aplicație” → „date”. Momentan, "
"următoarele valori sunt stocate ca „data”: • „poziție”: poziția iconiței "
"aplicației în pagină"
"aplicației în pagină."
#: data/org.gnome.shell.gschema.xml.in:130
msgid "Keybinding to open the application menu"
@@ -449,9 +450,9 @@ msgstr "Vizitează pagina principală a extensiei"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:183
#: js/ui/endSessionDialog.js:369 js/ui/extensionDownloader.js:183
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:940 subprojects/extensions-app/js/main.js:149
#: js/ui/status/network.js:916 subprojects/extensions-app/js/main.js:149
msgid "Cancel"
msgstr "Anulează"
@@ -487,7 +488,7 @@ msgstr "(de exemplu, utilizator sau %s)"
msgid "Username"
msgstr "Nume de utilizator"
#: js/gdm/loginDialog.js:1253
#: js/gdm/loginDialog.js:1254
msgid "Login Window"
msgstr "Fereastră de autentificare"
@@ -505,84 +506,73 @@ msgid "(or swipe finger)"
msgstr "(sau treceți degetul peste)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:91
#: js/misc/systemActions.js:93
msgctxt "search-result"
msgid "Power Off"
msgstr "Oprire"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:94
msgid "power off;shutdown;halt;stop"
msgstr "power off;shutdown;halt;stop;oprește;închide;blochează"
#. Translators: The name of the restart action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Restart"
msgstr "Repornire"
#. Translators: A list of keywords that match the restart action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "reboot;restart;"
msgstr "repornește;restartează;"
#: js/misc/systemActions.js:96
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "power off;shutdown;reboot;restart;oprire;repornire"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:107
#: js/misc/systemActions.js:101
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Blochează ecranul"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:110
#: js/misc/systemActions.js:104
msgid "lock screen"
msgstr "lock screen;blochează ecranul"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:115
#: js/misc/systemActions.js:109
msgctxt "search-result"
msgid "Log Out"
msgstr "Ieșire din sesiune"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:118
#: js/misc/systemActions.js:112
msgid "logout;log out;sign off"
msgstr "logout;sign off;ieșire din sesiune;deautentificare"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:123
#: js/misc/systemActions.js:117
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspendare"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:126
#: js/misc/systemActions.js:120
msgid "suspend;sleep"
msgstr "suspend;sleep;suspendare"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:131
#: js/misc/systemActions.js:125
msgctxt "search-result"
msgid "Switch User"
msgstr "Comută utilizatorul"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:134
#: js/misc/systemActions.js:128
msgid "switch user"
msgstr "switch user;comută utilizatorul"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:141
#: js/misc/systemActions.js:135
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr ""
"lock orientation;screen;rotation;blocare orientare;blocare de orientare;"
"ecran;rotație"
#: js/misc/systemActions.js:266
#: js/misc/systemActions.js:255
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Deblochează rotația ecranului"
#: js/misc/systemActions.js:267
#: js/misc/systemActions.js:256
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Rotație de ecran blocat"
@@ -759,31 +749,31 @@ msgid "Unnamed Folder"
msgstr "Dosar nedenumit"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2762 js/ui/panel.js:75
#: js/ui/appDisplay.js:2767 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Ferestre deschise"
#: js/ui/appDisplay.js:2781 js/ui/panel.js:82
#: js/ui/appDisplay.js:2786 js/ui/panel.js:82
msgid "New Window"
msgstr "Fereastră nouă"
#: js/ui/appDisplay.js:2797
#: js/ui/appDisplay.js:2802
msgid "Launch using Integrated Graphics Card"
msgstr "Lansează folosind placa grafică integrată"
#: js/ui/appDisplay.js:2798
#: js/ui/appDisplay.js:2803
msgid "Launch using Discrete Graphics Card"
msgstr "Lansează folosind placa grafică discretă"
#: js/ui/appDisplay.js:2826 js/ui/dash.js:239
#: js/ui/appDisplay.js:2831 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Elimină din favorite"
#: js/ui/appDisplay.js:2832
#: js/ui/appDisplay.js:2837
msgid "Add to Favorites"
msgstr "Adaugă la Favorite"
#: js/ui/appDisplay.js:2842 js/ui/panel.js:93
#: js/ui/appDisplay.js:2847 js/ui/panel.js:93
msgid "Show Details"
msgstr "Arată detaliile"
@@ -984,8 +974,8 @@ msgstr ""
"În mod alternativ vă puteți conecta apăsând butonul „WPS” pe routerul "
"dumneavoastră."
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:252
#: js/ui/status/network.js:343 js/ui/status/network.js:943
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:227
#: js/ui/status/network.js:318 js/ui/status/network.js:919
msgid "Connect"
msgstr "Conectare"
@@ -1050,7 +1040,7 @@ msgstr "PIN"
msgid "A password is required to connect to “%s”."
msgstr "Este necesară o parolă pentru conectarea la „%s”."
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1718
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1694
msgid "Network Manager"
msgstr "Gestionar de rețea"
@@ -1176,18 +1166,18 @@ msgstr "Vreme"
msgid "Select weather location…"
msgstr "Selectează locația vremii…"
#: js/ui/endSessionDialog.js:39
#: js/ui/endSessionDialog.js:37
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Ieșire din sesiune pentru %s"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:38
msgctxt "title"
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/endSessionDialog.js:43
#: js/ui/endSessionDialog.js:40
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
@@ -1195,7 +1185,7 @@ msgstr[0] "%s va fi scos din sesiune automat în %d secundă."
msgstr[1] "%s va fi scos din sesiune automat în %d secunde."
msgstr[2] "%s va fi scos din sesiune automat în %d de secunde."
#: js/ui/endSessionDialog.js:49
#: js/ui/endSessionDialog.js:45
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
@@ -1203,22 +1193,22 @@ msgstr[0] "Veți fi scos din sesiune automat în %d secundă."
msgstr[1] "Veți fi scos din sesiune automat în %d secunde."
msgstr[2] "Veți fi scos din sesiune automat în %d de secunde."
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:51
msgctxt "button"
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/endSessionDialog.js:62
#: js/ui/endSessionDialog.js:56
msgctxt "title"
msgid "Power Off"
msgstr "Oprire"
#: js/ui/endSessionDialog.js:63
#: js/ui/endSessionDialog.js:57
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Instalarea actualizărilor și repornirea"
#: js/ui/endSessionDialog.js:66
#: js/ui/endSessionDialog.js:59
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
@@ -1226,27 +1216,27 @@ msgstr[0] "Sistemul se va opri automat în %d secundă."
msgstr[1] "Sistemul se va opri automat în %d secunde."
msgstr[2] "Sistemul se va opri automat în %d de secunde."
#: js/ui/endSessionDialog.js:70 js/ui/endSessionDialog.js:89
#: js/ui/endSessionDialog.js:63
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Instalează actualizările în așteptare"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:68
msgctxt "button"
msgid "Power Off"
msgstr "Oprire"
#: js/ui/endSessionDialog.js:81
#: js/ui/endSessionDialog.js:74
msgctxt "title"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:82
msgctxt "title"
msgid "Install Updates & Restart"
msgstr "Instalează actualizările și repornește"
#: js/ui/endSessionDialog.js:85
#: js/ui/endSessionDialog.js:76
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
@@ -1254,17 +1244,12 @@ msgstr[0] "Sistemul se va reporni automat în %d secundă."
msgstr[1] "Sistemul se va reporni automat în %d secunde."
msgstr[2] "Sistemul se va reporni automat în %d de secunde."
#: js/ui/endSessionDialog.js:93
msgctxt "button"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:101
#: js/ui/endSessionDialog.js:89
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Repornire și instalare actualizări"
#: js/ui/endSessionDialog.js:104
#: js/ui/endSessionDialog.js:91
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@@ -1273,22 +1258,22 @@ msgstr[0] "Sistemul se va reporni automat în %d secundă."
msgstr[1] "Sistemul se va reporni automat în %d secunde."
msgstr[2] "Sistemul se va reporni automat în %d de secunde."
#: js/ui/endSessionDialog.js:111 js/ui/endSessionDialog.js:132
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Repornește și instalează"
#: js/ui/endSessionDialog.js:113
#: js/ui/endSessionDialog.js:98
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Instalează și oprește"
#: js/ui/endSessionDialog.js:114
#: js/ui/endSessionDialog.js:99
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Oprește după ce actualizările au fost instalate"
#: js/ui/endSessionDialog.js:121
#: js/ui/endSessionDialog.js:106
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Repornire și instalare înnoiri"
@@ -1296,7 +1281,7 @@ msgstr "Repornire și instalare înnoiri"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:126
#: js/ui/endSessionDialog.js:111
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@@ -1306,32 +1291,28 @@ msgstr ""
"timp: asigurați-vă că ați făcut o copie de siguranță și că calculatorul este "
"conectat la rețeaua electrică."
#: js/ui/endSessionDialog.js:284
msgid "Low battery power: please plug in before installing updates."
#: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates."
msgstr ""
"Putere de baterie scăzută: conectați înainte de a instala actualizările."
"Se rulează pe puterea bateriei: conectați-vă înainte de a instala "
"actualizările."
#: js/ui/endSessionDialog.js:293
#: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work"
msgstr "Unele aplicații sunt ocupate sau au muncă nesalvată"
#: js/ui/endSessionDialog.js:298
#: js/ui/endSessionDialog.js:273
msgid "Other users are logged in"
msgstr "Alți utilizatori sunt autentificați"
#: js/ui/endSessionDialog.js:467
msgctxt "button"
msgid "Boot Options"
msgstr "Opțiuni de inițializare"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:685
#: js/ui/endSessionDialog.js:583
#, javascript-format
msgid "%s (remote)"
msgstr "%s (la distanță)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:688
#: js/ui/endSessionDialog.js:586
#, javascript-format
msgid "%s (console)"
msgstr "%s (consolă)"
@@ -1434,15 +1415,15 @@ msgid "Leave On"
msgstr "Lasă pornit"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:156
#: js/ui/status/network.js:1315
#: js/ui/status/network.js:1291
msgid "Turn On"
msgstr "Pornește"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:156
#: js/ui/status/network.js:160 js/ui/status/network.js:344
#: js/ui/status/network.js:1315 js/ui/status/network.js:1427
#: js/ui/status/network.js:135 js/ui/status/network.js:319
#: js/ui/status/network.js:1291 js/ui/status/network.js:1403
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:110
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
msgstr "Oprește"
@@ -1503,11 +1484,11 @@ msgstr "Vizualizează sursa"
msgid "Web Page"
msgstr "Pagină Web"
#: js/ui/main.js:294
#: js/ui/main.js:297
msgid "Logged in as a privileged user"
msgstr "Autentificat ca utilizator privilegiat"
#: js/ui/main.js:295
#: js/ui/main.js:298
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@@ -1516,11 +1497,11 @@ msgstr ""
"pentru motive de securitate. Dacă este posibil, ar trebui să vă "
"autentificați ca un utilizator normal."
#: js/ui/main.js:334
#: js/ui/main.js:337
msgid "Screen Lock disabled"
msgstr "Blocarea ecranului este dezactivată"
#: js/ui/main.js:335
#: js/ui/main.js:338
msgid "Screen Locking requires the GNOME display manager."
msgstr "Blocarea ecranului necesită administratorul de afișaj GNOME."
@@ -1613,7 +1594,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistem"
#: js/ui/panel.js:825
#: js/ui/panel.js:827
msgid "Top Bar"
msgstr "Bara de sus"
@@ -1791,7 +1772,7 @@ msgstr "Text mare"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:619
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:595
msgid "Bluetooth Settings"
msgstr "Configurări Bluetooth"
@@ -1875,18 +1856,18 @@ msgstr ""
"Accesul la locație poate fi schimbat oricând din configurările de "
"confidențialitate."
#: js/ui/status/network.js:71
#: js/ui/status/network.js:70
msgid "<unknown>"
msgstr "<necunoscut>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:449 js/ui/status/network.js:1344
#: js/ui/status/network.js:424 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Off"
msgstr "%s oprit"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:452
#: js/ui/status/network.js:427
#, javascript-format
msgid "%s Connected"
msgstr "%s conectat"
@@ -1894,164 +1875,164 @@ msgstr "%s conectat"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:457
#: js/ui/status/network.js:432
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s este negestionat"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:460
#: js/ui/status/network.js:435
#, javascript-format
msgid "%s Disconnecting"
msgstr "Se deconectează %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:467 js/ui/status/network.js:1336
#: js/ui/status/network.js:442 js/ui/status/network.js:1312
#, javascript-format
msgid "%s Connecting"
msgstr "Se conectează %s"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:470
#: js/ui/status/network.js:445
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s necesită autentificare"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:478
#: js/ui/status/network.js:453
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Firmware lipsă pentru %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:482
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Unavailable"
msgstr "%s indisponibil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:485
#: js/ui/status/network.js:460
#, javascript-format
msgid "%s Connection Failed"
msgstr "Conectarea la %s a eșuat"
#: js/ui/status/network.js:497
#: js/ui/status/network.js:472
msgid "Wired Settings"
msgstr "Configurări pentru conexiune cu fir"
#: js/ui/status/network.js:540
#: js/ui/status/network.js:515
msgid "Mobile Broadband Settings"
msgstr "Configurări de rețea de bandă largă mobilă"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:586 js/ui/status/network.js:1341
#: js/ui/status/network.js:562 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hardware %s dezactivat"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:590
#: js/ui/status/network.js:566
#, javascript-format
msgid "%s Disabled"
msgstr "%s dezactivat"
#: js/ui/status/network.js:631
#: js/ui/status/network.js:607
msgid "Connect to Internet"
msgstr "Conectează la Internet"
#: js/ui/status/network.js:835
#: js/ui/status/network.js:811
msgid "Airplane Mode is On"
msgstr "Modul avion este pornit"
#: js/ui/status/network.js:836
#: js/ui/status/network.js:812
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wi-Fi este dezactivat când modul avion este pornit."
#: js/ui/status/network.js:837
#: js/ui/status/network.js:813
msgid "Turn Off Airplane Mode"
msgstr "Oprește modul avion"
#: js/ui/status/network.js:846
#: js/ui/status/network.js:822
msgid "Wi-Fi is Off"
msgstr "Wi-Fi este oprit"
#: js/ui/status/network.js:847
#: js/ui/status/network.js:823
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Wi-Fi trebuie pornit pentru a se putea face conexiunea la o rețea."
#: js/ui/status/network.js:848
#: js/ui/status/network.js:824
msgid "Turn On Wi-Fi"
msgstr "Pornește Wi-Fi"
#: js/ui/status/network.js:873
#: js/ui/status/network.js:849
msgid "Wi-Fi Networks"
msgstr "Rețele Wi-Fi"
#: js/ui/status/network.js:875
#: js/ui/status/network.js:851
msgid "Select a network"
msgstr "Selectați o rețea"
#: js/ui/status/network.js:907
#: js/ui/status/network.js:883
msgid "No Networks"
msgstr "Nicio rețea"
#: js/ui/status/network.js:928 js/ui/status/rfkill.js:108
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Folosește un întrerupător hardware pentru a opri"
#: js/ui/status/network.js:1205
#: js/ui/status/network.js:1181
msgid "Select Network"
msgstr "Selectați rețeaua"
#: js/ui/status/network.js:1211
#: js/ui/status/network.js:1187
msgid "Wi-Fi Settings"
msgstr "Configurări Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1332
#: js/ui/status/network.js:1308
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s activ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1347
#: js/ui/status/network.js:1323
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nu este conectat"
#: js/ui/status/network.js:1444
#: js/ui/status/network.js:1420
msgid "connecting…"
msgstr "se conectează…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1447
#: js/ui/status/network.js:1423
msgid "authentication required"
msgstr "necesită autentificare"
#: js/ui/status/network.js:1449
#: js/ui/status/network.js:1425
msgid "connection failed"
msgstr "conexiune eșuată"
#: js/ui/status/network.js:1500
#: js/ui/status/network.js:1476
msgid "VPN Settings"
msgstr "Configurări VPN"
#: js/ui/status/network.js:1517
#: js/ui/status/network.js:1493
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1527
#: js/ui/status/network.js:1503
msgid "VPN Off"
msgstr "VPN oprit"
#: js/ui/status/network.js:1588 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1564 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Configurări de rețea"
#: js/ui/status/network.js:1617
#: js/ui/status/network.js:1593
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@@ -2059,7 +2040,7 @@ msgstr[0] "%s conexiune cu fir"
msgstr[1] "%s conexiuni cu fir"
msgstr[2] "%s de conexiuni cu fir"
#: js/ui/status/network.js:1621
#: js/ui/status/network.js:1597
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@@ -2067,7 +2048,7 @@ msgstr[0] "%s conexiune fără fir"
msgstr[1] "%s conexiuni fără fir"
msgstr[2] "%s de conexiuni fără fir"
#: js/ui/status/network.js:1625
#: js/ui/status/network.js:1601
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@@ -2075,11 +2056,11 @@ msgstr[0] "%s conexiune cu modem"
msgstr[1] "%s conexiuni cu modem"
msgstr[2] "%s de conexiuni cu modem"
#: js/ui/status/network.js:1759
#: js/ui/status/network.js:1735
msgid "Connection failed"
msgstr "Conexiune eșuată"
#: js/ui/status/network.js:1760
#: js/ui/status/network.js:1736
msgid "Activation of network connection failed"
msgstr "Activarea conexiunii de rețea a eșuat"
@@ -2134,11 +2115,11 @@ msgstr "%d%02d până este plină (%d%%)"
msgid "%d%%"
msgstr "%d%%"
#: js/ui/status/remoteAccess.js:45
#: js/ui/status/remoteAccess.js:43
msgid "Screen is Being Shared"
msgstr "Ecranul este partajat"
#: js/ui/status/remoteAccess.js:47
#: js/ui/status/remoteAccess.js:45
msgid "Turn off"
msgstr "Oprește"
@@ -2149,34 +2130,30 @@ msgstr "Oprește"
msgid "Airplane Mode On"
msgstr "Modul avion este pornit"
#: js/ui/status/system.js:104
#: js/ui/status/system.js:102
msgid "Lock"
msgstr "Blocare"
#: js/ui/status/system.js:116
#: js/ui/status/system.js:115
msgid "Power Off / Log Out"
msgstr "Oprire / Deautentificare"
#: js/ui/status/system.js:119
msgid "Suspend"
msgstr "Suspendare"
#: js/ui/status/system.js:130
msgid "Restart…"
msgstr "Repornește…"
#: js/ui/status/system.js:141
msgid "Power Off…"
msgstr "Se oprește…"
#: js/ui/status/system.js:154
#: js/ui/status/system.js:118
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/status/system.js:165
#: js/ui/status/system.js:130
msgid "Switch User…"
msgstr "Comută utilizatorul…"
#: js/ui/status/system.js:144
msgid "Suspend"
msgstr "Suspendare"
#: js/ui/status/system.js:156
msgid "Power Off…"
msgstr "Se oprește…"
#: js/ui/status/thunderbolt.js:263
msgid "Thunderbolt"
msgstr "Thunderbolt"
@@ -2284,22 +2261,22 @@ msgid "“%s” is ready"
msgstr "„%s” este gata"
#. Translators: This string should be shorter than 30 characters
#: js/ui/windowManager.js:60
#: js/ui/windowManager.js:55
msgid "Keep these display settings?"
msgstr "Doriți să păstrați aceste configurări de afișaj?"
#. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:69
#: js/ui/windowManager.js:64
msgid "Revert Settings"
msgstr "Restaurează configurările"
#: js/ui/windowManager.js:72
#: js/ui/windowManager.js:67
msgid "Keep Changes"
msgstr "Păstrați modificările"
#: js/ui/windowManager.js:91
#: js/ui/windowManager.js:86
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -2309,7 +2286,7 @@ msgstr[2] "Schimbările vor fi restaurare în %d de secunde"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:551
#: js/ui/windowManager.js:546
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -3457,6 +3434,9 @@ msgstr "Sunete de sistem"
#~ msgid "Power"
#~ msgstr "Oprire"
#~ msgid "Restart"
#~ msgstr "Repornire"
#~ msgid "Click Log Out to quit these applications and log out of the system."
#~ msgstr ""
#~ "Apăsați „Ieșire din sesiune” pentru a închide aceste aplicații și a ieși "

View File

@@ -163,6 +163,7 @@ struct _ShellBlurEffect
ClutterEffect parent_instance;
ClutterActor *actor;
int old_opacity_override;
BlurData blur[2];
@@ -485,6 +486,21 @@ calculate_downscale_factor (float width,
return downscale_factor;
}
static void
clear_framebuffer (CoglFramebuffer *framebuffer)
{
static CoglColor transparent;
static gboolean initialized = FALSE;
if (!initialized)
{
cogl_color_init_from_4ub (&transparent, 0, 0, 0, 0);
initialized = TRUE;
}
cogl_framebuffer_clear (framebuffer, COGL_BUFFER_BIT_COLOR, &transparent);
}
static void
shell_blur_effect_set_actor (ClutterActorMeta *meta,
ClutterActor *actor)
@@ -545,45 +561,47 @@ update_actor_box (ShellBlurEffect *self,
}
static void
add_blurred_pipeline (ShellBlurEffect *self,
ClutterPaintNode *node)
paint_texture (ShellBlurEffect *self,
ClutterPaintContext *paint_context)
{
g_autoptr (ClutterPaintNode) pipeline_node = NULL;
CoglFramebuffer *framebuffer;
float width, height;
framebuffer = clutter_paint_context_get_framebuffer (paint_context);
/* Use the untransformed actor size here, since the framebuffer itself already
* has the actor transform matrix applied.
*/
clutter_actor_get_size (self->actor, &width, &height);
update_brightness_uniform (self);
pipeline_node = clutter_pipeline_node_new (self->brightness_fb.pipeline);
clutter_paint_node_set_static_name (pipeline_node, "ShellBlurEffect (final)");
clutter_paint_node_add_child (node, pipeline_node);
clutter_paint_node_add_rectangle (pipeline_node,
&(ClutterActorBox) {
0.f, 0.f,
width,
height,
});
cogl_framebuffer_draw_rectangle (framebuffer,
self->brightness_fb.pipeline,
0, 0,
width,
height);
}
static ClutterPaintNode *
create_blur_nodes (ShellBlurEffect *self,
ClutterPaintNode *node,
uint8_t paint_opacity)
static void
apply_blur (ShellBlurEffect *self,
ClutterPaintContext *paint_context,
FramebufferData *from,
uint8_t paint_opacity)
{
g_autoptr (ClutterPaintNode) brightness_node = NULL;
g_autoptr (ClutterPaintNode) hblur_node = NULL;
g_autoptr (ClutterPaintNode) vblur_node = NULL;
BlurData *vblur;
BlurData *hblur;
vblur = &self->blur[VERTICAL];
hblur = &self->blur[HORIZONTAL];
/* Copy the actor contents into the vblur framebuffer */
clear_framebuffer (vblur->data.framebuffer);
cogl_framebuffer_draw_rectangle (vblur->data.framebuffer,
from->pipeline,
0, 0,
cogl_texture_get_width (vblur->data.texture),
cogl_texture_get_height (vblur->data.texture));
/* Pass 1:
*
* Draw the actor contents (which is in the vblur framebuffer
@@ -593,16 +611,12 @@ create_blur_nodes (ShellBlurEffect *self,
*/
update_blur_uniforms (self, vblur);
vblur_node = clutter_layer_node_new_with_framebuffer (vblur->data.framebuffer,
vblur->data.pipeline,
255);
clutter_paint_node_set_static_name (vblur_node, "ShellBlurEffect (vertical pass)");
clutter_paint_node_add_rectangle (vblur_node,
&(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (hblur->data.texture),
cogl_texture_get_height (hblur->data.texture)
});
clear_framebuffer (hblur->data.framebuffer);
cogl_framebuffer_draw_rectangle (hblur->data.framebuffer,
vblur->data.pipeline,
0, 0,
cogl_texture_get_width (hblur->data.texture),
cogl_texture_get_height (hblur->data.texture));
/* Pass 2:
*
@@ -610,44 +624,30 @@ create_blur_nodes (ShellBlurEffect *self,
* horizontal blur pipeline into the brightness framebuffer.
*/
update_blur_uniforms (self, hblur);
cogl_pipeline_set_color4ub (hblur->data.pipeline,
paint_opacity,
paint_opacity,
paint_opacity,
paint_opacity);
hblur_node = clutter_layer_node_new_with_framebuffer (hblur->data.framebuffer,
hblur->data.pipeline,
paint_opacity);
clutter_paint_node_set_static_name (hblur_node, "ShellBlurEffect (horizontal pass)");
clutter_paint_node_add_rectangle (hblur_node,
&(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (self->brightness_fb.texture),
cogl_texture_get_height (self->brightness_fb.texture),
});
clear_framebuffer (self->brightness_fb.framebuffer);
cogl_framebuffer_draw_rectangle (self->brightness_fb.framebuffer,
hblur->data.pipeline,
0, 0,
cogl_texture_get_width (self->brightness_fb.texture),
cogl_texture_get_height (self->brightness_fb.texture));
update_brightness_uniform (self);
brightness_node = clutter_layer_node_new_with_framebuffer (self->brightness_fb.framebuffer,
self->brightness_fb.pipeline,
255);
clutter_paint_node_set_static_name (brightness_node, "ShellBlurEffect (brightness)");
clutter_paint_node_add_child (hblur_node, vblur_node);
clutter_paint_node_add_child (brightness_node, hblur_node);
clutter_paint_node_add_child (node, brightness_node);
self->cache_flags |= BLUR_APPLIED;
return g_steal_pointer (&vblur_node);
}
static void
static gboolean
paint_background (ShellBlurEffect *self,
ClutterPaintNode *node,
ClutterPaintContext *paint_context,
ClutterActorBox *source_actor_box)
{
g_autoptr (ClutterPaintNode) background_node = NULL;
g_autoptr (ClutterPaintNode) blit_node = NULL;
g_autoptr (GError) error = NULL;
CoglFramebuffer *framebuffer;
BlurData *vblur = &self->blur[VERTICAL];
float transformed_x;
float transformed_y;
float transformed_width;
@@ -662,31 +662,23 @@ paint_background (ShellBlurEffect *self,
&transformed_width,
&transformed_height);
/* Background layer node */
background_node =
clutter_layer_node_new_with_framebuffer (self->background_fb.framebuffer,
self->background_fb.pipeline,
255);
clutter_paint_node_set_static_name (background_node, "ShellBlurEffect (background)");
clutter_paint_node_add_child (node, background_node);
clutter_paint_node_add_rectangle (background_node,
&(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (vblur->data.texture),
cogl_texture_get_height (vblur->data.texture),
});
clear_framebuffer (self->background_fb.framebuffer);
cogl_blit_framebuffer (framebuffer,
self->background_fb.framebuffer,
transformed_x,
transformed_y,
0, 0,
transformed_width,
transformed_height,
&error);
/* Blit node */
blit_node = clutter_blit_node_new (framebuffer,
self->background_fb.framebuffer);
clutter_paint_node_set_static_name (blit_node, "ShellBlurEffect (blit)");
clutter_paint_node_add_child (background_node, blit_node);
clutter_blit_node_add_blit_rectangle (CLUTTER_BLIT_NODE (blit_node),
transformed_x,
transformed_y,
0, 0,
transformed_width,
transformed_height);
if (error)
{
g_warning ("Error blitting overlay framebuffer: %s", error->message);
return FALSE;
}
return TRUE;
}
static gboolean
@@ -719,25 +711,11 @@ update_framebuffers (ShellBlurEffect *self,
return updated;
}
static void
add_actor_node (ShellBlurEffect *self,
ClutterPaintNode *node,
int opacity)
{
g_autoptr (ClutterPaintNode) actor_node = NULL;
actor_node = clutter_actor_node_new (self->actor, opacity);
clutter_paint_node_add_child (node, actor_node);
}
static void
paint_actor_offscreen (ShellBlurEffect *self,
ClutterPaintNode *node,
ClutterPaintContext *paint_context,
ClutterEffectPaintFlags flags)
{
g_autoptr (ClutterPaintNode) transform_node = NULL;
g_autoptr (ClutterPaintNode) layer_node = NULL;
CoglMatrix transform;
gboolean actor_dirty;
actor_dirty = (flags & CLUTTER_EFFECT_PAINT_ACTOR_DIRTY) != 0;
@@ -746,30 +724,27 @@ paint_actor_offscreen (ShellBlurEffect *self,
if (!actor_dirty && (self->cache_flags & ACTOR_PAINTED))
return;
// Layer node
layer_node = clutter_layer_node_new_with_framebuffer (self->actor_fb.framebuffer,
self->actor_fb.pipeline,
0xff);
clutter_paint_node_set_static_name (layer_node, "ShellBlurEffect (actor offscreen)");
clutter_paint_node_add_child (node, layer_node);
clutter_paint_node_add_rectangle (layer_node,
&(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (self->blur[VERTICAL].data.texture),
cogl_texture_get_height (self->blur[VERTICAL].data.texture),
});
self->old_opacity_override = clutter_actor_get_opacity_override (self->actor);
clutter_actor_set_opacity_override (self->actor, 0xff);
// Transform node
cogl_matrix_init_identity (&transform);
cogl_matrix_scale (&transform,
1.f / self->downscale_factor,
1.f / self->downscale_factor,
1.f);
transform_node = clutter_transform_node_new (&transform);
clutter_paint_node_set_static_name (transform_node, "ShellBlurEffect (downscale)");
clutter_paint_node_add_child (layer_node, transform_node);
/* Draw the actor contents into the actor offscreen framebuffer */
clear_framebuffer (self->actor_fb.framebuffer);
add_actor_node (self, transform_node, 255);
cogl_framebuffer_push_matrix (self->actor_fb.framebuffer);
cogl_framebuffer_scale (self->actor_fb.framebuffer,
1.f / self->downscale_factor,
1.f / self->downscale_factor,
1.f);
clutter_paint_context_push_framebuffer (paint_context,
self->actor_fb.framebuffer);
clutter_actor_continue_paint (self->actor, paint_context);
cogl_framebuffer_pop_matrix (self->actor_fb.framebuffer);
clutter_paint_context_pop_framebuffer (paint_context);
clutter_actor_set_opacity_override (self->actor, self->old_opacity_override);
self->cache_flags |= ACTOR_PAINTED;
}
@@ -800,7 +775,6 @@ needs_repaint (ShellBlurEffect *self,
static void
shell_blur_effect_paint (ClutterEffect *effect,
ClutterPaintNode *node,
ClutterPaintContext *paint_context,
ClutterEffectPaintFlags flags)
{
@@ -811,8 +785,6 @@ shell_blur_effect_paint (ClutterEffect *effect,
if (self->sigma > 0)
{
g_autoptr (ClutterPaintNode) blur_node = NULL;
if (needs_repaint (self, flags))
{
ClutterActorBox source_actor_box;
@@ -830,18 +802,20 @@ shell_blur_effect_paint (ClutterEffect *effect,
case SHELL_BLUR_MODE_ACTOR:
paint_opacity = clutter_actor_get_paint_opacity (self->actor);
blur_node = create_blur_nodes (self, node, paint_opacity);
paint_actor_offscreen (self, blur_node, flags);
paint_actor_offscreen (self, paint_context, flags);
apply_blur (self, paint_context, &self->actor_fb, paint_opacity);
break;
case SHELL_BLUR_MODE_BACKGROUND:
blur_node = create_blur_nodes (self, node, 255);
paint_background (self, blur_node, paint_context, &source_actor_box);
if (!paint_background (self, paint_context, &source_actor_box))
goto fail;
apply_blur (self, paint_context, &self->background_fb, 255);
break;
}
}
add_blurred_pipeline (self, node);
paint_texture (self, paint_context);
/* Background blur needs to paint the actor after painting the blurred
* background.
@@ -852,7 +826,7 @@ shell_blur_effect_paint (ClutterEffect *effect,
break;
case SHELL_BLUR_MODE_BACKGROUND:
add_actor_node (self, node, -1);
clutter_actor_continue_paint (self->actor, paint_context);
break;
}
@@ -863,7 +837,7 @@ fail:
/* When no blur is applied, or the offscreen framebuffers
* couldn't be created, fallback to simply painting the actor.
*/
add_actor_node (self, node, -1);
clutter_actor_continue_paint (self->actor, paint_context);
}
static void
@@ -953,7 +927,7 @@ shell_blur_effect_class_init (ShellBlurEffectClass *klass)
meta_class->set_actor = shell_blur_effect_set_actor;
effect_class->paint_node = shell_blur_effect_paint;
effect_class->paint = shell_blur_effect_paint;
properties[PROP_SIGMA] =
g_param_spec_int ("sigma",

View File

@@ -1361,9 +1361,15 @@ shell_global_get_pointer (ShellGlobal *global,
{
ClutterModifierType raw_mods;
MetaCursorTracker *tracker;
graphene_point_t point;
tracker = meta_cursor_tracker_get_for_display (global->meta_display);
meta_cursor_tracker_get_pointer (tracker, x, y, &raw_mods);
meta_cursor_tracker_get_pointer (tracker, &point, &raw_mods);
if (x)
*x = point.x;
if (y)
*y = point.y;
*mods = raw_mods & CLUTTER_MODIFIER_MASK;
}

View File

@@ -181,6 +181,7 @@ draw_cursor_image (cairo_surface_t *surface,
int x, y;
int xhot, yhot;
double xscale, yscale;
graphene_point_t point;
display = shell_global_get_display (shell_global_get ());
tracker = meta_cursor_tracker_get_for_display (display);
@@ -190,9 +191,11 @@ draw_cursor_image (cairo_surface_t *surface,
return;
screenshot_region = cairo_region_create_rectangle (&area);
meta_cursor_tracker_get_pointer (tracker, &x, &y, NULL);
meta_cursor_tracker_get_pointer (tracker, &point, NULL);
x = point.x;
y = point.y;
if (!cairo_region_contains_point (screenshot_region, x, y))
if (!cairo_region_contains_point (screenshot_region, point.x, point.y))
{
cairo_region_destroy (screenshot_region);
return;

View File

@@ -922,7 +922,7 @@ st_adjustment_get_transition (StAdjustment *adjustment,
* st_adjustment_add_transition:
* @adjustment: a #StAdjustment
* @name: a unique name for the transition
* @transition: a #ClutterTransition
* @transtion: a #ClutterTransition
*
* Add a #ClutterTransition for the adjustment. If the transiton stops, it will
* be automatically removed if #ClutterTransition:remove-on-complete is %TRUE.

View File

@@ -254,7 +254,7 @@ insert_stylesheet (StTheme *theme,
* st_theme_load_stylesheet:
* @theme: a #StTheme
* @file: a #GFile
* @error: a #GError
* @error: (optional): a #GError
*
* Load the stylesheet associated with @file.
*