Compare commits
11 Commits
wip/carlos
...
gbsneto/ef
Author | SHA1 | Date | |
---|---|---|---|
![]() |
bdb28535df | ||
![]() |
6f75274eec | ||
![]() |
d6d5c42e4b | ||
![]() |
fce14a43b9 | ||
![]() |
7fcaf63291 | ||
![]() |
990c171bed | ||
![]() |
112b139a9e | ||
![]() |
923d926345 | ||
![]() |
3c6f59ae6d | ||
![]() |
84bbedb3b3 | ||
![]() |
f541562acc |
@@ -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;
|
||||
|
@@ -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)
|
||||
|
@@ -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()));
|
||||
}
|
||||
|
@@ -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');
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
3568
po/bn_IN.po
3568
po/bn_IN.po
File diff suppressed because it is too large
Load Diff
67
po/gl.po
67
po/gl.po
@@ -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
300
po/ro.po
@@ -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 & Install"
|
||||
msgstr "Repornește și instalează"
|
||||
|
||||
#: js/ui/endSessionDialog.js:98
|
||||
#: js/ui/endSessionDialog.js:113
|
||||
msgctxt "button"
|
||||
msgid "Install & 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 "
|
||||
|
@@ -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",
|
||||
|
@@ -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.
|
||||
|
@@ -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.
|
||||
*
|
||||
|
Reference in New Issue
Block a user