Compare commits

...

11 Commits

Author SHA1 Message Date
c8ea06be26 workspaceThumbnail: Pass MetaWindow to _updateDialogPosition
This function was mistakenly called with a MetaWindow as first
argument inside the ::position-changed callback, instead of a
MetaWindowActor as it should.

However, that function quickly grabs the MetaWindow from the
actor, and all calling places have the MetaWindow readily available,
so switch to handing it as first function parameter.

Fixes warnings on ::position-changed, because of the aforementioned
typo.
2018-08-04 13:26:08 +02:00
d734b117e0 workspace: Keep accounting of attached dialogs
We may end up with window-added emitted multiple times on the
same window, which results on:

1) Extra clones being created, all taking the same size and
   stacking.
2) JS exceptions because handle each clone actor being destroyed
   one by one, but all clones already have a NULL source when the
   first destroy handler is called, so we step on null objects
   inside _computeBoundingBox().

Keep accounting of those windows in order to avoid multiple
additions, which fixes both issues.
2018-08-04 13:26:08 +02:00
6b610b26f8 keyboard: Refactor code resetting IM on window drags
When a window is dragged, the OSK should get hidden. Just
do this in a nicer way.
2018-08-03 17:02:20 +02:00
81956e9b84 keyboard: defer position-changed till we have a rect
Emitting it that soon results in JS warnings, as we don't have
everything in place yet. The position-changed signal will be
emitted from other locations as soon as we have it.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/464

Closes: #464
2018-08-03 13:12:20 +02:00
6b41f82346 Updated Slovenian translation 2018-08-03 11:17:49 +02:00
1fca090374 tools: fix XDG desktop syntax in gnome-shell-overrides-migration
Reported by desktop-file-validate:
error: value "True" for boolean key "NoDisplay" in group "Desktop
Entry" contains invalid characters, boolean values must be "false" or
"true"
2018-08-03 00:49:49 +02:00
da2fc2c9d3 workspace: Simplify detecting added dialogs after closing a window
When trying to close a window in the overview by clicking the close
button and the window doesn't get closed but a dialog is added to the
window afterwards, we close the overview and show the dialog.

Instead of adding a separate listener for the window-added signal to the
WindowOverlay, let the WindowClones remember that the close button was
pressed and activate themselves if a dialog is added after that.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/180
2018-08-03 00:09:02 +02:00
52cbc299a7 workspace: Fix infinite loop when finding parent window of dialogs
When a dialog is added to a window while the overview is shown, we get
its parent using get_transient_for() so we can add it to the right
window clone.

If we have multiple layers of dialogs we have to do this recursively
until we find the root ancestor. This case currently results in an
infinite loop: Since parent is always set to the same window, the
while-condition will always be true.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/180
2018-08-03 00:09:02 +02:00
9f436ce373 data: Fix comment in schema 2018-08-01 20:04:53 +02:00
d908940ef3 showOSD: Fix handling of defined 'falsy' parameters
For the OSD, all parameters except for the icon are optional - if the
caller doesn't include the 'label' option, the OSD won't show a label
etc.

While this makes sense for an API, it means that we have to be careful
to correctly differentiate an option that was omitted and an option
that has a 'falsy' value like false or 0.

Unfortunately since commit ccaae5d3c we no longer do, with the result
that OSDs meant for the first monitor will show up on all, and a level
of 0 is presented as no level bar instead of an empty one, whoops.

https://bugzilla.gnome.org/show_bug.cgi?id=791669
2018-08-01 13:58:23 +02:00
eeda54f24d Update Brazilian Portuguese translation 2018-08-01 10:15:51 +00:00
8 changed files with 477 additions and 521 deletions

View File

@ -1,5 +1,5 @@
[Desktop Entry]
Type=Application
Name=GNOME settings overrides migration
NoDisplay=True
NoDisplay=true
Exec=@libexecdir@/gnome-shell-overrides-migration.sh

View File

@ -190,7 +190,7 @@
</key>
</schema>
<!-- unused, change 00_org.gnome.shell.gschema.override instead --!>
<!-- unused, change 00_org.gnome.shell.gschema.override instead -->
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
gettext-domain="@GETTEXT_PACKAGE@">
<key name="attach-modal-dialogs" type="b">

View File

@ -492,13 +492,18 @@ var FocusTracker = new Lang.Class({
_init() {
this._currentWindow = null;
this._currentWindowPositionId = 0;
global.display.connect('notify::focus-window', () => {
this._setCurrentWindow(global.display.focus_window);
this.emit('window-changed', this._currentWindow);
});
global.display.connect('grab-op-begin', (display, window, op) => {
if (window == this._currentWindow &&
(op == Meta.GrabOp.MOVING || op == Meta.GrabOp.KEYBOARD_MOVING))
this.emit('reset');
});
/* Valid for wayland clients */
Main.inputMethod.connect('cursor-location-changed', (o, rect) => {
let newRect = { x: rect.get_x(), y: rect.get_y(), width: rect.get_width(), height: rect.get_height() };
@ -520,18 +525,7 @@ var FocusTracker = new Lang.Class({
},
_setCurrentWindow(window) {
if (this._currentWindow)
this._currentWindow.disconnect(this._currentWindowPositionId);
this._currentWindow = window;
if (window) {
this._currentWindowPositionId = this._currentWindow.connect('position-changed', () => {
if (global.display.get_grab_op() == Meta.GrabOp.NONE)
this.emit('position-changed');
else
this.emit('reset');
});
}
},
_setCurrentRect(rect) {

View File

@ -145,14 +145,18 @@ var GnomeShell = new Lang.Class({
for (let param in params)
params[param] = params[param].deep_unpack();
let monitorIndex = params['monitor'] || -1;
let label = params['label'] || undefined;
let level = params['level'] || undefined;
let maxLevel = params['max_level'] || undefined;
let { monitor: monitorIndex,
label,
level,
max_level: maxLevel,
icon: serializedIcon } = params;
if (monitorIndex === undefined)
monitorIndex = -1;
let icon = null;
if (params['icon'])
icon = Gio.Icon.new_for_string(params['icon']);
if (serializedIcon)
icon = Gio.Icon.new_for_string(serializedIcon);
Main.osdWindowManager.show(monitorIndex, icon, label, level, maxLevel);
},

View File

@ -110,6 +110,7 @@ var WindowClone = new Lang.Class({
this.metaWindow = realWindow.meta_window;
this.metaWindow._delegate = this;
this._workspace = workspace;
this._attachedDialogs = [];
this._windowClone = new Clutter.Clone({ source: realWindow });
// We expect this.actor to be used for all interaction rather than
@ -179,6 +180,7 @@ var WindowClone = new Lang.Class({
this.inDrag = false;
this._selected = false;
this._closeRequested = false;
},
set slot(slot) {
@ -194,7 +196,6 @@ var WindowClone = new Lang.Class({
deleteAll() {
// Delete all windows, starting from the bottom-most (most-modal) one
let windows = this.actor.get_children();
for (let i = windows.length - 1; i >= 1; i--) {
let realWindow = windows[i].source;
@ -204,15 +205,34 @@ var WindowClone = new Lang.Class({
}
this.metaWindow.delete(global.get_current_time());
this._closeRequested = true;
},
addAttachedDialog(win) {
this._doAddAttachedDialog(win, win.get_compositor_private());
this._onMetaWindowSizeChanged();
addDialog(win) {
let realWin = win.get_compositor_private();
if (this._attachedDialogs.includes(realWin))
return;
this._attachedDialogs.push(realWin);
let parent = win.get_transient_for();
while (parent.is_attached_dialog())
parent = parent.get_transient_for();
// Display dialog if it is attached to our metaWindow
if (win.is_attached_dialog() && parent == this.metaWindow) {
this._doAddAttachedDialog(win, win.get_compositor_private());
this._onMetaWindowSizeChanged();
}
// The dialog popped up after the user tried to close the window,
// assume it's a close confirmation and leave the overview
if (this._closeRequested)
this._activate();
},
hasAttachedDialogs() {
return this.actor.get_n_children() > 1;
return this._attachedDialogs.length > 1;
},
_doAddAttachedDialog(metaWin, realWin) {
@ -222,6 +242,9 @@ var WindowClone = new Lang.Class({
clone._posChangedId = metaWin.connect('position-changed',
this._onMetaWindowSizeChanged.bind(this));
clone._destroyId = realWin.connect('destroy', () => {
let idx = this._attachedDialogs.indexOf(realWin);
this._attachedDialogs.splice(idx, 1);
clone.destroy();
this._onMetaWindowSizeChanged();
@ -462,14 +485,12 @@ var WindowOverlay = new Lang.Class({
button._overlap = 0;
this._idleToggleCloseId = 0;
button.connect('clicked', this._closeWindow.bind(this));
button.connect('clicked', () => this._windowClone.deleteAll());
windowClone.actor.connect('destroy', this._onDestroy.bind(this));
windowClone.connect('show-chrome', this._onShowChrome.bind(this));
windowClone.connect('hide-chrome', this._onHideChrome.bind(this));
this._windowAddedId = 0;
button.hide();
title.hide();
@ -590,43 +611,12 @@ var WindowOverlay = new Lang.Class({
Tweener.addTween(actor, params);
},
_closeWindow(actor) {
let metaWindow = this._windowClone.metaWindow;
this._workspace = metaWindow.get_workspace();
this._windowAddedId = this._workspace.connect('window-added',
this._onWindowAdded.bind(this));
this._windowClone.deleteAll();
},
_windowCanClose() {
return this._windowClone.metaWindow.can_close() &&
!this._windowClone.hasAttachedDialogs();
},
_onWindowAdded(workspace, win) {
let metaWindow = this._windowClone.metaWindow;
if (win.get_transient_for() == metaWindow) {
workspace.disconnect(this._windowAddedId);
this._windowAddedId = 0;
// use an idle handler to avoid mapping problems -
// see comment in Workspace._windowAdded
let id = Mainloop.idle_add(() => {
this._windowClone.emit('selected');
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit');
}
},
_onDestroy() {
if (this._windowAddedId > 0) {
this._workspace.disconnect(this._windowAddedId);
this._windowAddedId = 0;
}
if (this._idleToggleCloseId > 0) {
Mainloop.source_remove(this._idleToggleCloseId);
this._idleToggleCloseId = 0;
@ -1516,21 +1506,17 @@ var Workspace = new Lang.Class({
return;
if (!this._isOverviewWindow(win)) {
if (metaWin.is_attached_dialog()) {
let parent = metaWin.get_transient_for();
while (parent.is_attached_dialog())
parent = metaWin.get_transient_for();
if (metaWin.get_transient_for() == null)
return;
let idx = this._lookupIndex (parent);
if (idx < 0) {
// parent was not created yet, it will take care
// of the dialog when created
return;
}
// Let the top-most ancestor handle all transients
let parent = metaWin.find_root_ancestor();
let clone = this._windows.find(c => c.metaWindow == parent);
let clone = this._windows[idx];
clone.addAttachedDialog(metaWin);
}
// If no clone was found, the parent hasn't been created yet
// and will take care of the dialog when added
if (clone)
clone.addDialog(metaWin);
return;
}

View File

@ -151,7 +151,7 @@ var WindowClone = new Lang.Class({
_doAddAttachedDialog(metaDialog, realDialog) {
let clone = new Clutter.Clone({ source: realDialog });
this._updateDialogPosition(realDialog, clone);
this._updateDialogPosition(metaDialog, clone);
clone._updateId = realDialog.connect('notify::position', dialog => {
this._updateDialogPosition(dialog, clone);
@ -162,8 +162,7 @@ var WindowClone = new Lang.Class({
this.actor.add_child(clone);
},
_updateDialogPosition(realDialog, cloneDialog) {
let metaDialog = realDialog.meta_window;
_updateDialogPosition(metaDialog, cloneDialog) {
let dialogRect = metaDialog.get_frame_rect();
let rect = this.metaWindow.get_frame_rect();
@ -416,7 +415,7 @@ var WorkspaceThumbnail = new Lang.Class({
} else if (metaWin.is_attached_dialog()) {
let parent = metaWin.get_transient_for();
while (parent.is_attached_dialog())
parent = metaWin.get_transient_for();
parent = parent.get_transient_for();
let idx = this._lookupIndex (parent);
if (idx < 0) {

File diff suppressed because it is too large Load Diff

160
po/sl.po
View File

@ -8,8 +8,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: 2018-04-17 15:11+0000\n"
"PO-Revision-Date: 2018-04-17 18:32+0200\n"
"POT-Creation-Date: 2018-07-30 17:00+0000\n"
"PO-Revision-Date: 2018-07-30 22:14+0200\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl\n"
@ -352,20 +352,20 @@ msgctxt "button"
msgid "Sign In"
msgstr "Prijava"
#: js/gdm/loginDialog.js:315
#: js/gdm/loginDialog.js:319
msgid "Choose Session"
msgstr "Izbor seje"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: js/gdm/loginDialog.js:458
#: js/gdm/loginDialog.js:462
msgid "Not listed?"
msgstr "Ali uporabniškega imena ni na seznamu?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887
#: js/gdm/loginDialog.js:891
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(na primer, uporabnika ali %s)"
@ -373,12 +373,12 @@ msgstr "(na primer, uporabnika ali %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243
#: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261
msgid "Username: "
msgstr "Uporabniško ime: "
#: js/gdm/loginDialog.js:1228
#: js/gdm/loginDialog.js:1234
msgid "Login Window"
msgstr "Prijavno okno"
@ -391,7 +391,7 @@ msgstr "Napaka overitve"
#. as a cue to display our own message.
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482
#: js/gdm/util.js:485
msgid "(or swipe finger)"
msgstr "(ali pa povlecite prst)"
@ -643,23 +643,23 @@ msgstr "Pogosti"
msgid "All"
msgstr "Vsi"
#: js/ui/appDisplay.js:1886
#: js/ui/appDisplay.js:1890
msgid "New Window"
msgstr "Novo okno"
#: js/ui/appDisplay.js:1900
#: js/ui/appDisplay.js:1904
msgid "Launch using Dedicated Graphics Card"
msgstr "Zaženi z uporabo določene grafične kartice"
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285
#: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Odstrani iz priljubljenih"
#: js/ui/appDisplay.js:1933
#: js/ui/appDisplay.js:1937
msgid "Add to Favorites"
msgstr "Dodaj med priljubljene"
#: js/ui/appDisplay.js:1943
#: js/ui/appDisplay.js:1947
msgid "Show Details"
msgstr "Pokaži besedilo"
@ -806,35 +806,35 @@ msgctxt "event list time"
msgid "All Day"
msgstr "Celodnevno"
#: js/ui/calendar.js:864
#: js/ui/calendar.js:866
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d. %m."
#: js/ui/calendar.js:868
#: js/ui/calendar.js:870
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y"
#: js/ui/calendar.js:1086
#: js/ui/calendar.js:1100
msgid "No Notifications"
msgstr "Ni obvestil"
#: js/ui/calendar.js:1089
#: js/ui/calendar.js:1103
msgid "No Events"
msgstr "Ni dogodkov"
#: js/ui/calendar.js:1117
#: js/ui/calendar.js:1131
msgid "Clear All"
msgstr "Počisti vse"
#. Translators: %s is an application name
#: js/ui/closeDialog.js:44
#: js/ui/closeDialog.js:47
#, javascript-format
msgid "“%s” is not responding."
msgstr "Program »%s« se ne odziva."
#: js/ui/closeDialog.js:45
#: js/ui/closeDialog.js:48
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -842,11 +842,11 @@ msgstr ""
"Lahko počakate, če se program morda začne spet odzivati, lahko pa vsilite "
"končanje delovanja."
#: js/ui/closeDialog.js:61
#: js/ui/closeDialog.js:64
msgid "Force Quit"
msgstr "Vsili končanje"
#: js/ui/closeDialog.js:64
#: js/ui/closeDialog.js:67
msgid "Wait"
msgstr "Počakaj"
@ -863,7 +863,7 @@ msgstr "Zunanji pogon je odklopljen"
msgid "Open with %s"
msgstr "Odpri s programom %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:"
msgstr "Geslo:"
@ -900,11 +900,11 @@ msgstr "Geslo zasebnega ključa: "
msgid "Service: "
msgstr "Storitev: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network"
msgstr "Zahtevana overitev za brezžično omrežje"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -913,7 +913,7 @@ msgstr ""
"Za povezavo v brezžično omrežje »%s« je zahtevano geslo oziroma šifrirni "
"ključ."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication"
msgstr "Žična overitev 802.1X"
@ -921,15 +921,15 @@ msgstr "Žična overitev 802.1X"
msgid "Network name: "
msgstr "Naziv omrežja: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication"
msgstr "Overitev DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required"
msgstr "Zahtevana koda PIN"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device"
msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN."
@ -937,17 +937,17 @@ msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN."
msgid "PIN: "
msgstr "Koda PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password"
msgstr "Geslo mobilnega širokopasovnega dostopa"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Za povezavo z omrežjem »%s« je zahtevano geslo."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691
#: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager"
msgstr "Upravljalnik omrežij"
@ -967,7 +967,7 @@ msgstr "Overi"
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
#: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again."
msgstr "Overitev je spodletela.. Poskusite znova."
@ -1309,13 +1309,13 @@ msgid "Leave On"
msgstr "Pusti omogočeno"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281
#: js/ui/status/network.js:1294
msgid "Turn On"
msgstr "Omogoči"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396
#: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
@ -1377,7 +1377,7 @@ msgstr "Poglej vir"
msgid "Web Page"
msgstr "Spletna stran"
#: js/ui/messageTray.js:1493
#: js/ui/messageTray.js:1495
msgid "System Information"
msgstr "Podrobnosti sistema"
@ -1451,22 +1451,22 @@ msgstr "Pritisnite tipko Esc za končanje"
msgid "Press any key to exit"
msgstr "Pritisnite katerokoli tipko za končanje"
#: js/ui/panel.js:355
#: js/ui/panel.js:356
msgid "Quit"
msgstr "Končaj"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411
#: js/ui/panel.js:412
msgid "Activities"
msgstr "Dejavnosti"
#: js/ui/panel.js:692
#: js/ui/panel.js:693
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistem"
#: js/ui/panel.js:811
#: js/ui/panel.js:816
msgid "Top Bar"
msgstr "Vrhnja vrstica"
@ -1475,7 +1475,7 @@ msgstr "Vrhnja vrstica"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291
#: js/ui/popupMenu.js:300
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1483,15 +1483,15 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Vnos ukaza"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:174
msgid "Close"
msgstr "Zapri"
#: js/ui/runDialog.js:273
#: js/ui/runDialog.js:274
msgid "Restart is not available on Wayland"
msgstr "Na sistemu Wayland je na voljo ponovni zagon"
#: js/ui/runDialog.js:278
#: js/ui/runDialog.js:279
msgid "Restarting…"
msgstr "Ponovno zaganjanje ...."
@ -1706,7 +1706,7 @@ msgid "<unknown>"
msgstr "<neznano>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310
#: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format
msgid "%s Off"
msgstr "%s izklopljeno"
@ -1732,7 +1732,7 @@ msgid "%s Disconnecting"
msgstr "%s poteka prekinjanje povezave"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302
#: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format
msgid "%s Connecting"
msgstr "%s poteka vzpostavljanje povezave"
@ -1772,7 +1772,7 @@ msgid "Mobile Broadband Settings"
msgstr "Nastavitve mobilnega širokopasovnega dostopa"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307
#: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s strojno onemogočeno"
@ -1828,56 +1828,56 @@ msgstr "Ni zaznanih omrežij"
msgid "Use hardware switch to turn off"
msgstr "Uporabite strojni gumb za izklop"
#: js/ui/status/network.js:1173
#: js/ui/status/network.js:1186
msgid "Select Network"
msgstr "Izbor omrežja"
#: js/ui/status/network.js:1179
#: js/ui/status/network.js:1192
msgid "Wi-Fi Settings"
msgstr "Nastavitve Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1298
#: js/ui/status/network.js:1311
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s vroča točka je dejavna"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1313
#: js/ui/status/network.js:1326
#, javascript-format
msgid "%s Not Connected"
msgstr "%s brez povezave"
#: js/ui/status/network.js:1413
#: js/ui/status/network.js:1426
msgid "connecting…"
msgstr "vzpostavljanje povezave …"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416
#: js/ui/status/network.js:1429
msgid "authentication required"
msgstr "zahtevana je overitev"
#: js/ui/status/network.js:1418
#: js/ui/status/network.js:1431
msgid "connection failed"
msgstr "povezovanje je spodletelo"
#: js/ui/status/network.js:1472
#: js/ui/status/network.js:1485
msgid "VPN Settings"
msgstr "Nastavitve VPN"
#: js/ui/status/network.js:1485
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1495
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "Onemogočen VPN"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Omrežne nastavitve"
#: js/ui/status/network.js:1588
#: js/ui/status/network.js:1601
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@ -1886,7 +1886,7 @@ msgstr[1] "%s žična povezava"
msgstr[2] "%s žični povezavi"
msgstr[3] "%s žične povezave"
#: js/ui/status/network.js:1592
#: js/ui/status/network.js:1605
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@ -1895,7 +1895,7 @@ msgstr[1] "%s povezava Wi-Fi"
msgstr[2] "%s povezavi Wi-Fi"
msgstr[3] "%s povezave Wi-Fi"
#: js/ui/status/network.js:1596
#: js/ui/status/network.js:1609
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@ -1904,11 +1904,11 @@ msgstr[1] "%s modemska povezava"
msgstr[2] "%s modemski povezavi"
msgstr[3] "%s modemske povezave"
#: js/ui/status/network.js:1728
#: js/ui/status/network.js:1741
msgid "Connection failed"
msgstr "Povezovanje je spodletelo"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1742
msgid "Activation of network connection failed"
msgstr "Omogočanje omrežne povezave je spodletelo."
@ -1959,6 +1959,14 @@ msgstr "%d%02d do polnosti (%d%%)"
msgid "%d%%"
msgstr "%d%%"
#: js/ui/status/remoteAccess.js:46
msgid "Screen is Being Shared"
msgstr "Zaslon je v načinu souporabe"
#: js/ui/status/remoteAccess.js:48
msgid "Turn off"
msgstr "Izklopi"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
#. changing the menu contents.
@ -1990,16 +1998,16 @@ msgstr "V pripravljenost"
msgid "Power Off"
msgstr "Izklop"
#: js/ui/status/thunderbolt.js:294
#: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt"
msgstr "Thunderbolt"
#. we are done
#: js/ui/status/thunderbolt.js:350
#: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device"
msgstr "Neznana naprava Thunderbolt"
#: js/ui/status/thunderbolt.js:351
#: js/ui/status/thunderbolt.js:355
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@ -2007,11 +2015,11 @@ msgstr ""
"Med nedejavnostjo je bila zaznana nova. Odklopite napravo in jo znova "
"priklopite za uporabo."
#: js/ui/status/thunderbolt.js:356
#: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error"
msgstr "Napaka overitve naprave Thunderbolt"
#: js/ui/status/thunderbolt.js:357
#: js/ui/status/thunderbolt.js:361
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Naprave Thunderbolt ni mogoče overiti: %s"
@ -2099,7 +2107,7 @@ msgstr[3] "Spremembe nastavitev bodo povrnjene v %d sekundah."
#. 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:660
#: js/ui/windowManager.js:668
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2152,19 +2160,19 @@ msgstr "Premakni na zgornjo delovno površino"
msgid "Move to Workspace Down"
msgstr "Premakni na spodnjo delovno površino"
#: js/ui/windowMenu.js:140
#: js/ui/windowMenu.js:139
msgid "Move to Monitor Up"
msgstr "Premakni na zaslon zgoraj"
#: js/ui/windowMenu.js:149
#: js/ui/windowMenu.js:148
msgid "Move to Monitor Down"
msgstr "Premakni na zaslon spodaj"
#: js/ui/windowMenu.js:158
#: js/ui/windowMenu.js:157
msgid "Move to Monitor Left"
msgstr "Premakni na zaslon levo"
#: js/ui/windowMenu.js:167
#: js/ui/windowMenu.js:166
msgid "Move to Monitor Right"
msgstr "Premakni na zaslon desno"
@ -2193,12 +2201,12 @@ msgstr "Uporabi poseben način, na primer »gdm« za prijavni zaslon"
msgid "List possible modes"
msgstr "Seznam mogočih načinov"
#: src/shell-app.c:270
#: src/shell-app.c:272
msgctxt "program"
msgid "Unknown"
msgstr "Neznano"
#: src/shell-app.c:511
#: src/shell-app.c:523
#, c-format
msgid "Failed to launch “%s”"
msgstr "Zaganjanje »%s« je spodletelo"