Compare commits

...

11 Commits

Author SHA1 Message Date
Georges Basile Stavracas Neto
bdb28535df lookingGlass: Port to paint nodes
Override vfunc_paint_node(), and add paint nodes to the
root node instead of directly calling CoglFramebuffer APIs.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1339
2020-08-14 16:04:45 +00:00
Georges Basile Stavracas Neto
6f75274eec blur-effect: Port to paint nodes
Port the blur effect to the new ClutterEffect.paint_node() vfunc.
Update the function names to match what they do, e.g. "apply_blur()"
now creates the blur subtree and thus was appropriately renamed to
"create_blur_nodes()".

There are 3 subtrees that can be generated by the blur effect:

 1. Actor mode (full subtree; no cache)

      Root
       |----------------------------
       |                            |
    Layer (brightness)           Pipeline
       |                      (final result)
    Layer (horizontal blur)
       |
    Layer (vertical blur)
       |
    Layer (actor)
       |
    Transform (downscale)
       |
     Actor

 2. Actor mode (partial subtree; cached contents)

      Root
       |
     Pipeline
  (final result)

 3. Background mode

      Root
       |-------------------------------------------
       |                            |              |
    Layer (brightness)           Pipeline        Actor
       |                      (final result)
    Layer (horizontal blur)
       |
    Layer (vertical blur)
       |
    Layer (background)
       |
      Blit

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1339
2020-08-14 16:04:45 +00:00
Akarshan Biswas
d6d5c42e4b Update Bengali (India) translation 2020-08-14 15:48:13 +00:00
Florentina Mușat
fce14a43b9 Update Romanian translation 2020-08-14 15:48:03 +00:00
Georges Basile Stavracas Neto
7fcaf63291 appDisplay: Cache app ids in FolderView
Instead of reading a GSettings and building the app ids list
every single time FolderView needs to check for something,
cache it before redisplay and reuse this cached list everywhere.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1409
2020-08-13 23:28:51 +00:00
Florian Müllner
990c171bed networkAgent: Add missing Uint8Array => string conversion
When promisifying async operations in commit 764527c8c, the
finish function for read_line_async() was sneakily changed from
read_line_finish_utf8() to read_line_finish().

That is, the call returns a Uint8Array now that requires an
explicit conversion to string.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1407
2020-08-13 23:00:21 +00:00
Florian Müllner
112b139a9e cleanup: Remove old compatibility code
Since gjs moved to mozjs60, return values of int8_t arrays can
no longer be treated as strings. We originally made the conversion
conditional to keep working with the (then) stable gjs release.

That was two years ago and we require a more recent gjs nowadays,
so there's no good reason for keeping the old code path.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1407
2020-08-13 23:00:21 +00:00
Florian Müllner
923d926345 st: Remove invalid introspection annotation
(optional) is only valid for (out) or (inout) parameters (that are
marked as such).

However GError** arguments appear as throws="1" in the GIR anyway
instead of an explicit parameter, so we don't need any annotation
at all here.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1408
2020-08-13 22:44:45 +00:00
Florian Müllner
3c6f59ae6d st: Fix typo in doc comment
Spotted by g-ir-scanner.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1408
2020-08-13 22:44:44 +00:00
Fran Dieguez
84bbedb3b3 Update Galician translations 2020-08-14 00:39:36 +02:00
Georges Basile Stavracas Neto
f541562acc iconGrid: Properly remove pages
When the last item of an IconGridLayout page is removed,
the page itself is removed too. However, the indexes of
items of next pages are not updated, which mess up the
layout manager state.

Update the page index of the items at forward pages when
removing a page.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1406
2020-08-13 18:15:11 -03:00
14 changed files with 2904 additions and 1365 deletions

View File

@@ -1604,6 +1604,7 @@ class FolderView extends BaseAppView {
action.connect('pan', this._onPan.bind(this));
this._scrollView.add_action(action);
this._appIds = [];
this._redisplay();
}
@@ -1649,8 +1650,7 @@ class FolderView extends BaseAppView {
}
_getItemPosition(item) {
const appIds = this._getFolderApps();
const appIndex = appIds.indexOf(item.id);
const appIndex = this._appIds.indexOf(item.id);
if (appIndex === -1)
return [-1, -1];
@@ -1660,10 +1660,8 @@ class FolderView extends BaseAppView {
}
_compareItems(a, b) {
const appIds = this._getFolderApps();
const aPosition = appIds.indexOf(a.id);
const bPosition = appIds.indexOf(b.id);
const aPosition = this._appIds.indexOf(a.id);
const bPosition = this._appIds.indexOf(b.id);
if (aPosition === -1 && bPosition === -1)
return a.name.localeCompare(b.name);
@@ -1720,9 +1718,8 @@ class FolderView extends BaseAppView {
_loadApps() {
let apps = [];
let appSys = Shell.AppSystem.get_default();
const appIds = this._getFolderApps();
appIds.forEach(appId => {
this._appIds.forEach(appId => {
const app = appSys.lookup_app(appId);
let icon = this._items.get(appId);
@@ -1735,6 +1732,13 @@ 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,6 +2,7 @@
/* 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;
@@ -493,7 +494,7 @@ var VPNRequestHandler = class {
return;
}
this._vpnChildProcessLineOldStyle(line);
this._vpnChildProcessLineOldStyle(ByteArray.toString(line));
// try to read more!
this._readStdoutOldStyle();
@@ -522,13 +523,7 @@ var VPNRequestHandler = class {
let contentOverride;
try {
data = this._dataStdout.peek_buffer();
if (data instanceof Uint8Array)
data = imports.byteArray.toGBytes(data);
else
data = data.toGBytes();
data = ByteArray.toGBytes(this._dataStdout.peek_buffer());
keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE);
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)

View File

@@ -2,6 +2,7 @@
/* 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;
@@ -282,8 +283,7 @@ var ExtensionManager = class {
let metadataContents, success_;
try {
[success_, metadataContents] = metadataFile.load_contents(null);
if (metadataContents instanceof Uint8Array)
metadataContents = imports.byteArray.toString(metadataContents);
metadataContents = ByteArray.toString(metadataContents);
} catch (e) {
throw new Error('Failed to load metadata.json: %s'.format(e.toString()));
}

View File

@@ -468,6 +468,12 @@ 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,6 +2,7 @@
/* 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;
@@ -532,8 +533,7 @@ 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);
if (contents instanceof Uint8Array)
contents = imports.byteArray.toString(contents);
contents = ByteArray.toString(contents);
return JSON.parse(contents);
}

View File

@@ -482,13 +482,16 @@ class RedBorderEffect extends Clutter.Effect {
this._pipeline = null;
}
vfunc_paint(paintContext) {
let framebuffer = paintContext.get_framebuffer();
let coglContext = framebuffer.get_context();
vfunc_paint_node(node, paintContext) {
let actor = this.get_actor();
actor.continue_paint(paintContext);
const actorNode = new Clutter.ActorNode(actor);
node.add_child(actorNode, -1);
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);
@@ -499,18 +502,28 @@ 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
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);
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);
}
});

View File

@@ -3,6 +3,7 @@
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;
@@ -297,8 +298,7 @@ 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);
if (css instanceof Uint8Array)
css = imports.byteArray.toString(css);
css = ByteArray.toString(css);
this._curEdited = null;
this._prevEdited = null;
this._css = css;

View File

@@ -1,6 +1,7 @@
// -*- 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;
@@ -105,8 +106,7 @@ function _loadMode(file, info) {
let fileContent, success_, newMode;
try {
[success_, fileContent] = file.load_contents(null);
if (fileContent instanceof Uint8Array)
fileContent = imports.byteArray.toString(fileContent);
fileContent = 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-11 15:44+0000\n"
"PO-Revision-Date: 2020-08-13 01:31+0200\n"
"POT-Creation-Date: 2020-08-10 23:58+0000\n"
"PO-Revision-Date: 2020-08-14 00:36+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 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"
"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"
#: data/org.gnome.shell.gschema.xml.in:130
msgid "Keybinding to open the application menu"
@@ -505,11 +505,14 @@ 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"
@@ -517,7 +520,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
@@ -753,10 +756,12 @@ 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"
@@ -1104,13 +1109,14 @@ msgstr "%A, %e de %B de %Y"
#: js/ui/dateMenu.js:151
msgctxt "calendar heading"
msgid "%B %-d"
msgstr "%-d de %B"
msgstr "%e de %B de %Y"
#. 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 "%-d de %B de %Y"
msgstr "%e de %B de %Y"
#: js/ui/dateMenu.js:160
msgid "Today"
@@ -1157,8 +1163,9 @@ msgid "Weather"
msgstr "Tempo"
#: js/ui/dateMenu.js:653
#| msgid "Select a location…"
msgid "Select weather location…"
msgstr "Seleccione a ubicación metereolóxica…"
msgstr "Seleccione unha ubicación metereolóxica…"
#: js/ui/endSessionDialog.js:39
#, javascript-format
@@ -1223,6 +1230,8 @@ 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"
@@ -1290,9 +1299,10 @@ 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 ""
"Enerxía da batería baixa: por favor enchufe a corrente antes de instalar "
"Correndo con batería baixa: por favor conecte a corrente antes de instalar "
"actualizacións."
#: js/ui/endSessionDialog.js:293
@@ -1778,10 +1788,12 @@ 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"
@@ -2141,6 +2153,7 @@ msgid "Suspend"
msgstr "Suspender"
#: js/ui/status/system.js:130
#| msgid "Restarting…"
msgid "Restart…"
msgstr "Reiniciar…"
@@ -2425,9 +2438,8 @@ msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"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."
"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."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
@@ -2461,9 +2473,10 @@ 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 de GNOME actual"
msgstr "A extensión non é compatíbel coa versión actual de GNOME"
#: subprojects/extensions-app/js/main.js:464
#| msgid "Show extension info"
msgid "The extension had an error"
msgstr "A extensión tivo un erro"
@@ -2541,8 +2554,9 @@ 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 "Hai actualizacións de extensións listas"
msgstr "Actualizacións de extensión dispoñíbeis"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
@@ -2590,11 +2604,11 @@ msgstr ""
#: subprojects/extensions-tool/src/command-create.c:366
msgid "Choose one of the available templates:\n"
msgstr "Seleccione un dos modelos dispoñíbeis:\n"
msgstr "Seleccione entre unha das plantillas:\n"
#: subprojects/extensions-tool/src/command-create.c:380
msgid "Template"
msgstr "Modelo"
msgstr "Plantilla"
#: subprojects/extensions-tool/src/command-create.c:435
msgid "The unique identifier of the new extension"
@@ -2618,11 +2632,12 @@ msgstr "Unha descrición curta do que a súa extensión fai"
#: subprojects/extensions-tool/src/command-create.c:446
msgid "TEMPLATE"
msgstr "MODELO"
msgstr "PLANTILLA"
#: 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 "O modelo a usar para a nova extensión"
msgstr "A plantilla a usar para a nova extensión"
#: subprojects/extensions-tool/src/command-create.c:453
msgid "Enter extension information interactively"
@@ -2646,7 +2661,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 conetarse a GNOME Shell\n"
msgstr "Produciuse un fallo ao contectarse á Shell de GNOME\n"
#: subprojects/extensions-tool/src/command-disable.c:53
#: subprojects/extensions-tool/src/command-enable.c:53
@@ -2797,6 +2812,7 @@ 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"
@@ -2809,11 +2825,13 @@ 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"
@@ -2823,11 +2841,11 @@ msgstr "Desinstala unha extensión"
#: subprojects/extensions-tool/src/main.c:72
msgid "Do not print error messages"
msgstr "Non é posíbel imprimir os mensaxes de erro"
msgstr "Non 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 con GNOME Shell"
msgstr "Produciuse un fallo ao conectarse ao Shell de GNOME"
#: subprojects/extensions-tool/src/main.c:244
msgid "Path"
@@ -2926,6 +2944,7 @@ 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"
@@ -2935,7 +2954,7 @@ msgstr "Indicador"
#: subprojects/extensions-tool/src/templates/indicator.desktop.in:5
msgid "Add an icon to the top bar"
msgstr "Engade unha icona na barra superior"
msgstr "Engade unha icona á barra superior"
#. translators:
#. * The number of sound outputs on a particular device

300
po/ro.po
View File

@@ -10,10 +10,9 @@ 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-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"
"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"
"Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
"sourceforge.net>\n"
"Language: ro\n"
@@ -23,7 +22,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.3.1\n"
"X-Generator: Poedit 2.4\n"
"X-Project-Style: gnome\n"
"X-Poedit-SourceCharset: UTF-8\n"
@@ -235,11 +234,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 matrice este o "
"Aspectul selectorului de aplicații. Fiecare intrare din vector 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"
@@ -450,9 +449,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:369 js/ui/extensionDownloader.js:183
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:183
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:916 subprojects/extensions-app/js/main.js:149
#: js/ui/status/network.js:940 subprojects/extensions-app/js/main.js:149
msgid "Cancel"
msgstr "Anulează"
@@ -488,7 +487,7 @@ msgstr "(de exemplu, utilizator sau %s)"
msgid "Username"
msgstr "Nume de utilizator"
#: js/gdm/loginDialog.js:1254
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Fereastră de autentificare"
@@ -506,73 +505,84 @@ msgid "(or swipe finger)"
msgstr "(sau treceți degetul peste)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:91
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:96
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "power off;shutdown;reboot;restart;oprire;repornire"
#: 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ă;"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:107
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:104
#: js/misc/systemActions.js:110
msgid "lock screen"
msgstr "lock screen;blochează ecranul"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:115
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:112
#: js/misc/systemActions.js:118
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:117
#: js/misc/systemActions.js:123
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspendare"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:126
msgid "suspend;sleep"
msgstr "suspend;sleep;suspendare"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:131
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:128
#: js/misc/systemActions.js:134
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:135
#: js/misc/systemActions.js:141
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr ""
"lock orientation;screen;rotation;blocare orientare;blocare de orientare;"
"ecran;rotație"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:266
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Deblochează rotația ecranului"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:267
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Rotație de ecran blocat"
@@ -749,31 +759,31 @@ msgid "Unnamed Folder"
msgstr "Dosar nedenumit"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2767 js/ui/panel.js:75
#: js/ui/appDisplay.js:2762 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Ferestre deschise"
#: js/ui/appDisplay.js:2786 js/ui/panel.js:82
#: js/ui/appDisplay.js:2781 js/ui/panel.js:82
msgid "New Window"
msgstr "Fereastră nouă"
#: js/ui/appDisplay.js:2802
#: js/ui/appDisplay.js:2797
msgid "Launch using Integrated Graphics Card"
msgstr "Lansează folosind placa grafică integrată"
#: js/ui/appDisplay.js:2803
#: js/ui/appDisplay.js:2798
msgid "Launch using Discrete Graphics Card"
msgstr "Lansează folosind placa grafică discretă"
#: js/ui/appDisplay.js:2831 js/ui/dash.js:239
#: js/ui/appDisplay.js:2826 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Elimină din favorite"
#: js/ui/appDisplay.js:2837
#: js/ui/appDisplay.js:2832
msgid "Add to Favorites"
msgstr "Adaugă la Favorite"
#: js/ui/appDisplay.js:2847 js/ui/panel.js:93
#: js/ui/appDisplay.js:2842 js/ui/panel.js:93
msgid "Show Details"
msgstr "Arată detaliile"
@@ -974,8 +984,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:227
#: js/ui/status/network.js:318 js/ui/status/network.js:919
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:252
#: js/ui/status/network.js:343 js/ui/status/network.js:943
msgid "Connect"
msgstr "Conectare"
@@ -1040,7 +1050,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:1694
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1718
msgid "Network Manager"
msgstr "Gestionar de rețea"
@@ -1166,18 +1176,18 @@ msgstr "Vreme"
msgid "Select weather location…"
msgstr "Selectează locația vremii…"
#: js/ui/endSessionDialog.js:37
#: js/ui/endSessionDialog.js:39
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Ieșire din sesiune pentru %s"
#: js/ui/endSessionDialog.js:38
#: js/ui/endSessionDialog.js:40
msgctxt "title"
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:43
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
@@ -1185,7 +1195,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:45
#: js/ui/endSessionDialog.js:49
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
@@ -1193,22 +1203,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:51
#: js/ui/endSessionDialog.js:56
msgctxt "button"
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:62
msgctxt "title"
msgid "Power Off"
msgstr "Oprire"
#: js/ui/endSessionDialog.js:57
#: js/ui/endSessionDialog.js:63
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Instalarea actualizărilor și repornirea"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:66
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
@@ -1216,27 +1226,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:63
#: js/ui/endSessionDialog.js:70 js/ui/endSessionDialog.js:89
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Instalează actualizările în așteptare"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:68
#: js/ui/endSessionDialog.js:74
msgctxt "button"
msgid "Power Off"
msgstr "Oprire"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:81
msgctxt "title"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:82
msgctxt "title"
msgid "Install Updates & Restart"
msgstr "Instalează actualizările și repornește"
#: js/ui/endSessionDialog.js:85
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
@@ -1244,12 +1254,17 @@ 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:89
#: js/ui/endSessionDialog.js:93
msgctxt "button"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:101
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Repornire și instalare actualizări"
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:104
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@@ -1258,22 +1273,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:97 js/ui/endSessionDialog.js:116
#: js/ui/endSessionDialog.js:111 js/ui/endSessionDialog.js:132
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Repornește și instalează"
#: js/ui/endSessionDialog.js:98
#: js/ui/endSessionDialog.js:113
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Instalează și oprește"
#: js/ui/endSessionDialog.js:99
#: js/ui/endSessionDialog.js:114
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Oprește după ce actualizările au fost instalate"
#: js/ui/endSessionDialog.js:106
#: js/ui/endSessionDialog.js:121
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Repornire și instalare înnoiri"
@@ -1281,7 +1296,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:111
#: js/ui/endSessionDialog.js:126
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@@ -1291,28 +1306,32 @@ 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:259
msgid "Running on battery power: Please plug in before installing updates."
#: js/ui/endSessionDialog.js:284
msgid "Low battery power: please plug in before installing updates."
msgstr ""
"Se rulează pe puterea bateriei: conectați-vă înainte de a instala "
"actualizările."
"Putere de baterie scăzută: conectați înainte de a instala actualizările."
#: js/ui/endSessionDialog.js:268
#: js/ui/endSessionDialog.js:293
msgid "Some applications are busy or have unsaved work"
msgstr "Unele aplicații sunt ocupate sau au muncă nesalvată"
#: js/ui/endSessionDialog.js:273
#: js/ui/endSessionDialog.js:298
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:583
#: js/ui/endSessionDialog.js:685
#, javascript-format
msgid "%s (remote)"
msgstr "%s (la distanță)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:688
#, javascript-format
msgid "%s (console)"
msgstr "%s (consolă)"
@@ -1415,15 +1434,15 @@ msgid "Leave On"
msgstr "Lasă pornit"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:156
#: js/ui/status/network.js:1291
#: js/ui/status/network.js:1315
msgid "Turn On"
msgstr "Pornește"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:156
#: 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/network.js:160 js/ui/status/network.js:344
#: js/ui/status/network.js:1315 js/ui/status/network.js:1427
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
#: js/ui/status/rfkill.js:110
msgid "Turn Off"
msgstr "Oprește"
@@ -1484,11 +1503,11 @@ msgstr "Vizualizează sursa"
msgid "Web Page"
msgstr "Pagină Web"
#: js/ui/main.js:297
#: js/ui/main.js:294
msgid "Logged in as a privileged user"
msgstr "Autentificat ca utilizator privilegiat"
#: js/ui/main.js:298
#: js/ui/main.js:295
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@@ -1497,11 +1516,11 @@ msgstr ""
"pentru motive de securitate. Dacă este posibil, ar trebui să vă "
"autentificați ca un utilizator normal."
#: js/ui/main.js:337
#: js/ui/main.js:334
msgid "Screen Lock disabled"
msgstr "Blocarea ecranului este dezactivată"
#: js/ui/main.js:338
#: js/ui/main.js:335
msgid "Screen Locking requires the GNOME display manager."
msgstr "Blocarea ecranului necesită administratorul de afișaj GNOME."
@@ -1594,7 +1613,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistem"
#: js/ui/panel.js:827
#: js/ui/panel.js:825
msgid "Top Bar"
msgstr "Bara de sus"
@@ -1772,7 +1791,7 @@ msgstr "Text mare"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:595
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:619
msgid "Bluetooth Settings"
msgstr "Configurări Bluetooth"
@@ -1856,18 +1875,18 @@ msgstr ""
"Accesul la locație poate fi schimbat oricând din configurările de "
"confidențialitate."
#: js/ui/status/network.js:70
#: js/ui/status/network.js:71
msgid "<unknown>"
msgstr "<necunoscut>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:424 js/ui/status/network.js:1320
#: js/ui/status/network.js:449 js/ui/status/network.js:1344
#, javascript-format
msgid "%s Off"
msgstr "%s oprit"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:427
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connected"
msgstr "%s conectat"
@@ -1875,164 +1894,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:432
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s este negestionat"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435
#: js/ui/status/network.js:460
#, javascript-format
msgid "%s Disconnecting"
msgstr "Se deconectează %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:442 js/ui/status/network.js:1312
#: js/ui/status/network.js:467 js/ui/status/network.js:1336
#, 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:445
#: js/ui/status/network.js:470
#, 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:453
#: js/ui/status/network.js:478
#, 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:457
#: js/ui/status/network.js:482
#, javascript-format
msgid "%s Unavailable"
msgstr "%s indisponibil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:460
#: js/ui/status/network.js:485
#, javascript-format
msgid "%s Connection Failed"
msgstr "Conectarea la %s a eșuat"
#: js/ui/status/network.js:472
#: js/ui/status/network.js:497
msgid "Wired Settings"
msgstr "Configurări pentru conexiune cu fir"
#: js/ui/status/network.js:515
#: js/ui/status/network.js:540
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:562 js/ui/status/network.js:1317
#: js/ui/status/network.js:586 js/ui/status/network.js:1341
#, 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:566
#: js/ui/status/network.js:590
#, javascript-format
msgid "%s Disabled"
msgstr "%s dezactivat"
#: js/ui/status/network.js:607
#: js/ui/status/network.js:631
msgid "Connect to Internet"
msgstr "Conectează la Internet"
#: js/ui/status/network.js:811
#: js/ui/status/network.js:835
msgid "Airplane Mode is On"
msgstr "Modul avion este pornit"
#: js/ui/status/network.js:812
#: js/ui/status/network.js:836
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:813
#: js/ui/status/network.js:837
msgid "Turn Off Airplane Mode"
msgstr "Oprește modul avion"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:846
msgid "Wi-Fi is Off"
msgstr "Wi-Fi este oprit"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:847
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:824
#: js/ui/status/network.js:848
msgid "Turn On Wi-Fi"
msgstr "Pornește Wi-Fi"
#: js/ui/status/network.js:849
#: js/ui/status/network.js:873
msgid "Wi-Fi Networks"
msgstr "Rețele Wi-Fi"
#: js/ui/status/network.js:851
#: js/ui/status/network.js:875
msgid "Select a network"
msgstr "Selectați o rețea"
#: js/ui/status/network.js:883
#: js/ui/status/network.js:907
msgid "No Networks"
msgstr "Nicio rețea"
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:928 js/ui/status/rfkill.js:108
msgid "Use hardware switch to turn off"
msgstr "Folosește un întrerupător hardware pentru a opri"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1205
msgid "Select Network"
msgstr "Selectați rețeaua"
#: js/ui/status/network.js:1187
#: js/ui/status/network.js:1211
msgid "Wi-Fi Settings"
msgstr "Configurări Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1308
#: js/ui/status/network.js:1332
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s activ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1323
#: js/ui/status/network.js:1347
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nu este conectat"
#: js/ui/status/network.js:1420
#: js/ui/status/network.js:1444
msgid "connecting…"
msgstr "se conectează…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1423
#: js/ui/status/network.js:1447
msgid "authentication required"
msgstr "necesită autentificare"
#: js/ui/status/network.js:1425
#: js/ui/status/network.js:1449
msgid "connection failed"
msgstr "conexiune eșuată"
#: js/ui/status/network.js:1476
#: js/ui/status/network.js:1500
msgid "VPN Settings"
msgstr "Configurări VPN"
#: js/ui/status/network.js:1493
#: js/ui/status/network.js:1517
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1503
#: js/ui/status/network.js:1527
msgid "VPN Off"
msgstr "VPN oprit"
#: js/ui/status/network.js:1564 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1588 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Configurări de rețea"
#: js/ui/status/network.js:1593
#: js/ui/status/network.js:1617
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@@ -2040,7 +2059,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:1597
#: js/ui/status/network.js:1621
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@@ -2048,7 +2067,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:1601
#: js/ui/status/network.js:1625
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@@ -2056,11 +2075,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:1735
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Conexiune eșuată"
#: js/ui/status/network.js:1736
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Activarea conexiunii de rețea a eșuat"
@@ -2115,11 +2134,11 @@ msgstr "%d%02d până este plină (%d%%)"
msgid "%d%%"
msgstr "%d%%"
#: js/ui/status/remoteAccess.js:43
#: js/ui/status/remoteAccess.js:45
msgid "Screen is Being Shared"
msgstr "Ecranul este partajat"
#: js/ui/status/remoteAccess.js:45
#: js/ui/status/remoteAccess.js:47
msgid "Turn off"
msgstr "Oprește"
@@ -2130,30 +2149,34 @@ msgstr "Oprește"
msgid "Airplane Mode On"
msgstr "Modul avion este pornit"
#: js/ui/status/system.js:102
#: js/ui/status/system.js:104
msgid "Lock"
msgstr "Blocare"
#: js/ui/status/system.js:115
#: js/ui/status/system.js:116
msgid "Power Off / Log Out"
msgstr "Oprire / Deautentificare"
#: js/ui/status/system.js:118
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/status/system.js:130
msgid "Switch User…"
msgstr "Comută utilizatorul…"
#: js/ui/status/system.js:144
#: js/ui/status/system.js:119
msgid "Suspend"
msgstr "Suspendare"
#: js/ui/status/system.js:156
#: 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
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/status/system.js:165
msgid "Switch User…"
msgstr "Comută utilizatorul…"
#: js/ui/status/thunderbolt.js:263
msgid "Thunderbolt"
msgstr "Thunderbolt"
@@ -2261,22 +2284,22 @@ msgid "“%s” is ready"
msgstr "„%s” este gata"
#. Translators: This string should be shorter than 30 characters
#: js/ui/windowManager.js:55
#: js/ui/windowManager.js:60
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:64
#: js/ui/windowManager.js:69
msgid "Revert Settings"
msgstr "Restaurează configurările"
#: js/ui/windowManager.js:67
#: js/ui/windowManager.js:72
msgid "Keep Changes"
msgstr "Păstrați modificările"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:91
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -2286,7 +2309,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:546
#: js/ui/windowManager.js:551
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -3434,9 +3457,6 @@ 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,7 +163,6 @@ struct _ShellBlurEffect
ClutterEffect parent_instance;
ClutterActor *actor;
int old_opacity_override;
BlurData blur[2];
@@ -486,21 +485,6 @@ 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)
@@ -561,47 +545,45 @@ update_actor_box (ShellBlurEffect *self,
}
static void
paint_texture (ShellBlurEffect *self,
ClutterPaintContext *paint_context)
add_blurred_pipeline (ShellBlurEffect *self,
ClutterPaintNode *node)
{
CoglFramebuffer *framebuffer;
g_autoptr (ClutterPaintNode) pipeline_node = NULL;
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);
cogl_framebuffer_draw_rectangle (framebuffer,
self->brightness_fb.pipeline,
0, 0,
width,
height);
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,
});
}
static void
apply_blur (ShellBlurEffect *self,
ClutterPaintContext *paint_context,
FramebufferData *from,
uint8_t paint_opacity)
static ClutterPaintNode *
create_blur_nodes (ShellBlurEffect *self,
ClutterPaintNode *node,
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
@@ -611,12 +593,16 @@ apply_blur (ShellBlurEffect *self,
*/
update_blur_uniforms (self, vblur);
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));
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)
});
/* Pass 2:
*
@@ -624,30 +610,44 @@ apply_blur (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);
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));
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),
});
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 gboolean
static void
paint_background (ShellBlurEffect *self,
ClutterPaintNode *node,
ClutterPaintContext *paint_context,
ClutterActorBox *source_actor_box)
{
g_autoptr (GError) error = NULL;
g_autoptr (ClutterPaintNode) background_node = NULL;
g_autoptr (ClutterPaintNode) blit_node = NULL;
CoglFramebuffer *framebuffer;
BlurData *vblur = &self->blur[VERTICAL];
float transformed_x;
float transformed_y;
float transformed_width;
@@ -662,23 +662,31 @@ paint_background (ShellBlurEffect *self,
&transformed_width,
&transformed_height);
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);
/* 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),
});
if (error)
{
g_warning ("Error blitting overlay framebuffer: %s", error->message);
return FALSE;
}
return TRUE;
/* 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);
}
static gboolean
@@ -711,11 +719,25 @@ 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,
ClutterPaintContext *paint_context,
ClutterPaintNode *node,
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;
@@ -724,27 +746,30 @@ paint_actor_offscreen (ShellBlurEffect *self,
if (!actor_dirty && (self->cache_flags & ACTOR_PAINTED))
return;
self->old_opacity_override = clutter_actor_get_opacity_override (self->actor);
clutter_actor_set_opacity_override (self->actor, 0xff);
// 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),
});
/* Draw the actor contents into the actor offscreen framebuffer */
clear_framebuffer (self->actor_fb.framebuffer);
// 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);
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);
add_actor_node (self, transform_node, 255);
self->cache_flags |= ACTOR_PAINTED;
}
@@ -775,6 +800,7 @@ needs_repaint (ShellBlurEffect *self,
static void
shell_blur_effect_paint (ClutterEffect *effect,
ClutterPaintNode *node,
ClutterPaintContext *paint_context,
ClutterEffectPaintFlags flags)
{
@@ -785,6 +811,8 @@ 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;
@@ -802,20 +830,18 @@ shell_blur_effect_paint (ClutterEffect *effect,
case SHELL_BLUR_MODE_ACTOR:
paint_opacity = clutter_actor_get_paint_opacity (self->actor);
paint_actor_offscreen (self, paint_context, flags);
apply_blur (self, paint_context, &self->actor_fb, paint_opacity);
blur_node = create_blur_nodes (self, node, paint_opacity);
paint_actor_offscreen (self, blur_node, flags);
break;
case SHELL_BLUR_MODE_BACKGROUND:
if (!paint_background (self, paint_context, &source_actor_box))
goto fail;
apply_blur (self, paint_context, &self->background_fb, 255);
blur_node = create_blur_nodes (self, node, 255);
paint_background (self, blur_node, paint_context, &source_actor_box);
break;
}
}
paint_texture (self, paint_context);
add_blurred_pipeline (self, node);
/* Background blur needs to paint the actor after painting the blurred
* background.
@@ -826,7 +852,7 @@ shell_blur_effect_paint (ClutterEffect *effect,
break;
case SHELL_BLUR_MODE_BACKGROUND:
clutter_actor_continue_paint (self->actor, paint_context);
add_actor_node (self, node, -1);
break;
}
@@ -837,7 +863,7 @@ fail:
/* When no blur is applied, or the offscreen framebuffers
* couldn't be created, fallback to simply painting the actor.
*/
clutter_actor_continue_paint (self->actor, paint_context);
add_actor_node (self, node, -1);
}
static void
@@ -927,7 +953,7 @@ shell_blur_effect_class_init (ShellBlurEffectClass *klass)
meta_class->set_actor = shell_blur_effect_set_actor;
effect_class->paint = shell_blur_effect_paint;
effect_class->paint_node = shell_blur_effect_paint;
properties[PROP_SIGMA] =
g_param_spec_int ("sigma",

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
* @transtion: a #ClutterTransition
* @transition: 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: (optional): a #GError
* @error: a #GError
*
* Load the stylesheet associated with @file.
*