Compare commits

...

35 Commits

Author SHA1 Message Date
fbc03cc262 Bump version to 3.29.1
Update NEWS.
2018-04-25 20:34:05 +02:00
a6ff195893 Updated Spanish translation 2018-04-25 13:16:18 +02:00
f411724064 Updated Czech translation 2018-04-24 17:33:14 +02:00
39f43a4cd4 Update Friulian translation 2018-04-23 19:42:08 +00:00
c82cb918ae network: initialize the agent asynchronously
This also bumps the NM requirement. We actually already use API from
1.0, but regularly hit various NetworkManager bugs with versions prior
to 1.10.2. 1.10.4 fixes the asynchronous agent initialization.

https://bugzilla.gnome.org/show_bug.cgi?id=789811
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/63
2018-04-23 10:45:20 +02:00
38cdaa6c20 Update Romanian translation 2018-04-22 16:48:18 +00:00
0327069e83 polkitAgent: Guard against repeated close() calls
We use the close() method to disconnect signal handlers set up in
init(), however the handler ID is only valid in the first call in
case the method is called more than once.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/221
2018-04-21 18:42:15 +02:00
7601b029c8 Updated Slovenian translation 2018-04-20 21:59:35 +02:00
fb509dfc25 thunderbolt: sync D-Bus API with bolt changes
bolt 0.3 deprecated all AUTHORIZED_XXX status flags, but added
a CONNECTING one. Also AuthFlags got renamed to AuthCtrl.
2018-04-20 11:36:37 +02:00
874a91968f thunderbolt: remove gdbus error prefix, if present
If we get an error during device enrollment, the message might be
prefixed to indicate that the error came from the remote peer. We
are presenting that message to the user so strip that prefix away
if it was there.
2018-04-20 11:36:37 +02:00
0963ccddba thunderbolt: fix enroll-failed signal args order
The devices emitted (device, error) while the connected handler
was expecting (error, device). The former is more consistent
with the rest of the code (so change it to device, error).
2018-04-20 11:27:11 +02:00
c4e0f6df08 Update Russian translation
(cherry picked from commit 0d031dc20f)
2018-04-19 20:33:21 +00:00
58aafe9520 theme: Improve look of login user-list
* Remove tiny padding of user-list
* Less space between avatar and username
* Apply the 1em padding only to the user-widget, not the timed-login-indicator
2018-04-19 17:26:14 +02:00
a46df7f8ec theme: Use a padding of 6px on the user-list items according to HIG 2018-04-19 17:26:14 +02:00
1dd16618d1 loginDialog: Don't display timed login indicator if unused
This fixes the slightly bigger padding underneath the login item compared to the padding above
2018-04-19 17:26:14 +02:00
a4190f83ac loginDialog: Correct source name for timed login idle timeout
The _blockTimedLoginUntilIdle method sets a timeout to be called after
the user is idle for 5 seconds.  That timeout is erroneously given the
source name "[gnome-shell] this._timedLoginAnimationTime" which looks
like a copy-and-paste mistake.  The original intention was probably to
use a source name of "[gnome-shell] this._timedLoginIdleTimeOutId" which
more closely matches existing convention for source names.

This commit fixes that.
2018-04-19 17:26:14 +02:00
a8e17f73ec loginDialog: Use more function scope variables inside _startTimedLogin
Using function scope variables increases readability and prevents
unwanted changes from outside while the batch is running.
2018-04-19 17:26:13 +02:00
86a741c1ee loginDialog: Make sure timed login indicator is shown after idle timeout
If the idle timeout is done, always show the user list to make sure the
timed login indicator is visible.
2018-04-19 17:25:02 +02:00
5cc6fef689 loginDialog: Restrict grabbing of focus while timed login is running
Make sure the focus isn't grabbed right after user interaction starts a
new timed login. Only grab it after the idle timeout is done and on the
first run instead.
2018-04-19 09:08:45 +02:00
522a5fe480 loginDialog: Ensure old timed login timeout is removed before starting a new one
Normally, we give the user a 5 second grace period of inactivity before
starting a timed login operation. Unfortunately, that grace period
timeout isn't properly removed if the timed login operation is restarted
during the grace period. That means the timeout handler can
inadvertently get called multiple times leading to the grace period
duration getting subtracted from the total animation time more than
once.

This commit ensures we only ever have one grace period timeout scheduled
at a time.
2018-04-19 09:08:45 +02:00
b1239b1257 loginDialog: Use GLib instead of Mainloop for timeout
imports.mainloop is deprecated
2018-04-19 09:08:45 +02:00
58063d9ee1 loginDialog: Move reset of timed login into _startTimedLogin
This way we can make sure that already running timed logins are
always reset when starting a new one.
2018-04-19 09:08:45 +02:00
d7aba2dece loginDialog: Ensure timed login indicator is hidden on key presses
The timed login feature currently cancels the timed login operation when
a user presses a key but, oddly, only hides the indicator when the user
releases the key. This means that if a user holds down a key that
doesn't key repeat, the timed login indicator will continue to run after
the timed login operation is cancelled.

This commit address the problem by ensuring the timed login indicator is
hidden on any key press event, at the same time the timed login
operation is canceled.
2018-04-19 09:08:45 +02:00
35fced27df ibusCandidatePopup: Fix candidate-clicked signal 2018-04-18 13:37:53 +09:00
be76b19300 st-entry: Set text-related CSS properties on the internal ClutterText
Call _st_set_text_from_style() when updating the entry's style, so
that CSS style properties such as text-decoration or letter-spacing
are applied over the internal ClutterText instance.
2018-04-18 00:14:05 +00:00
376d696b8b st-private: Add support for letter-spacing in ClutterText based StWidgets
Add support in _st_set_text_from_style(), so that this CSS property can
be used from any StWidget holding an internal ClutterText.
2018-04-18 00:14:05 +00:00
695d61968d st-theme-node: Add new getter st_theme_node_get_letter_spacing
This will be used by ClutterText-backed StWidgets to update their
list of PangoAttributes according to the letter-spacing property.
2018-04-18 00:14:04 +00:00
d6d09fd3c8 ui: Theme lookup should respect XDG_DATA_DIRS
Modes, extensions and other GNOME Shell assets are searched in appropriate
subdirectories of each directory in XDG_DATA_DIRS, falling back
to global.datadir.
However, this isn't the case for themes, which are currently always expected
in global.datadir, even when referenced by a mode in a different XDG_DATA_DIR.

The fix is to have the theme finding pattern follow the same logic as other
elements.
Fixes .
2018-04-16 19:09:14 +02:00
f1b1501f9b Update Croatian translation 2018-04-16 12:31:09 +00:00
cdbc99e992 popupMenu: Fix wrong call to clutter_actor_add_child()
Specify the horizontal alignment via the x_align property when creating
the StIcon, since this function expects one argument, not two.
2018-04-16 11:40:04 +00:00
69afe7785d remoteMenu: Support icons in app-menu
The HIG discourages the use of icons in menus except for "noun" items
(files, bookmarks, ...). While those should be rarely used in the
application menu, it still makes sense to support them in the few
cases where they are used.

https://bugzilla.gnome.org/show_bug.cgi?id=760985
2018-04-14 09:02:20 +00:00
b99e304f1e workspaceThumbnail: initialize porthole based on workArea
https://bugzilla.gnome.org/show_bug.cgi?id=792687
2018-04-13 16:59:51 -05:00
c29bd46e7a workspaceThumbnail: rebuild thumbnails if workareas size changed
https://bugzilla.gnome.org/show_bug.cgi?id=792687
2018-04-13 16:58:28 -05:00
5fcf40b973 workspaceThumbnail: only update _porthole if the overview is visible
Otherwise it happens that porthole is computed again after that the
overlay is hidden (triggered by a layout reallocation) and thus not
regenerated again afterwards.

https://bugzilla.gnome.org/show_bug.cgi?id=792687
2018-04-13 16:53:18 -05:00
a198dfe3d8 thunderbolt: capitalize Thunderbolt in a translatable string 2018-04-13 21:52:32 +02:00
23 changed files with 699 additions and 699 deletions

14
NEWS

@ -1,3 +1,17 @@
3.29.1
======
* Support icons in app-menu [Florian; #760985]
* Misc. bug fixes [Marco, Florian, Lubomir; #792687, #221, !63]
Contributors:
Piotr Drąg, Takao Fujiwara, Christian Kellner, Florian Müllner,
Mario Sanchez Prada, Lubomir Rintel, Didier Roche, Marco Trevisan (Treviño),
verdre
Translators:
gogo [hr], Stas Solovey [ru], Matej Urbančič [sl], Daniel Șerbănescu [ro],
Fabio Tomat [fur], Marek Cernocky [cs], Daniel Mustieles [es]
3.28.1 3.28.1
====== ======
* Fix compose characters in shell entries [Carlos; #115] * Fix compose characters in shell entries [Carlos; #115]

@ -1788,20 +1788,19 @@ StScrollBar {
.login-dialog-user-list-view { -st-vfade-offset: 1em; } .login-dialog-user-list-view { -st-vfade-offset: 1em; }
.login-dialog-user-list { .login-dialog-user-list {
spacing: 12px; spacing: 12px;
padding: .2em;
width: 23em; width: 23em;
&:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; } &:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
&:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; } &:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
} }
.login-dialog-user-list-item { .login-dialog-user-list-item {
border-radius: 5px; border-radius: 5px;
padding: .2em; padding: 6px;
color: darken($osd_fg_color,30%); color: darken($osd_fg_color,30%);
&:ltr { padding-right: 1em; } &:ltr .user-widget { padding-right: 1em; }
&:rtl { padding-left: 1em; } &:rtl .user-widget { padding-left: 1em; }
.login-dialog-timed-login-indicator { .login-dialog-timed-login-indicator {
height: 2px; height: 2px;
margin: 2px 0 0 0; margin-top: 6px;
background-color: $osd_fg_color; background-color: $osd_fg_color;
} }
&:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; } &:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
@ -1816,8 +1815,8 @@ StScrollBar {
padding-left: 15px; padding-left: 15px;
} }
.user-widget-label { .user-widget-label {
&:ltr { padding-left: 18px; } &:ltr { padding-left: 14px; }
&:rtl { padding-right: 18px; } &:rtl { padding-right: 14px; }
} }
.login-dialog-prompt-layout { .login-dialog-prompt-layout {

@ -25,7 +25,6 @@ const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject; const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
const Pango = imports.gi.Pango; const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
@ -86,7 +85,8 @@ var UserListItem = new Lang.Class({
GObject.BindingFlags.SYNC_CREATE); GObject.BindingFlags.SYNC_CREATE);
this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator', this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator',
scale_x: 0 }); scale_x: 0,
visible: false });
layout.add(this._timedLoginIndicator); layout.add(this._timedLoginIndicator);
this.actor.connect('clicked', this._onClicked.bind(this)); this.actor.connect('clicked', this._onClicked.bind(this));
@ -126,6 +126,8 @@ var UserListItem = new Lang.Class({
this.hideTimedLoginIndicator(); this.hideTimedLoginIndicator();
this._timedLoginIndicator.visible = true;
let startTime = GLib.get_monotonic_time(); let startTime = GLib.get_monotonic_time();
this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, 33, this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, 33,
@ -152,6 +154,8 @@ var UserListItem = new Lang.Class({
GLib.source_remove(this._timedLoginTimeoutId); GLib.source_remove(this._timedLoginTimeoutId);
this._timedLoginTimeoutId = 0; this._timedLoginTimeoutId = 0;
} }
this._timedLoginIndicator.visible = false;
this._timedLoginIndicator.scale_x = 0.; this._timedLoginIndicator.scale_x = 0.;
} }
}); });
@ -991,59 +995,81 @@ var LoginDialog = new Lang.Class({
return hold; return hold;
}, },
_showTimedLoginAnimation() {
this._timedLoginItem.actor.grab_key_focus();
return this._timedLoginItem.showTimedLoginIndicator(this._timedLoginAnimationTime);
},
_blockTimedLoginUntilIdle() { _blockTimedLoginUntilIdle() {
// This blocks timed login from starting until a few
// seconds after the user stops interacting with the
// login screen.
//
// We skip this step if the timed login delay is very
// short.
if ((this._timedLoginDelay - _TIMED_LOGIN_IDLE_THRESHOLD) <= 0)
return null;
let hold = new Batch.Hold(); let hold = new Batch.Hold();
this._timedLoginIdleTimeOutId = Mainloop.timeout_add_seconds(_TIMED_LOGIN_IDLE_THRESHOLD, this._timedLoginIdleTimeOutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, _TIMED_LOGIN_IDLE_THRESHOLD,
() => { () => {
this._timedLoginAnimationTime -= _TIMED_LOGIN_IDLE_THRESHOLD; this._timedLoginIdleTimeOutId = 0;
hold.release(); hold.release();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginAnimationTime'); GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginIdleTimeOutId');
return hold; return hold;
}, },
_startTimedLogin(userName, delay) { _startTimedLogin(userName, delay) {
this._timedLoginItem = null; let firstRun = true;
this._timedLoginDelay = delay;
this._timedLoginAnimationTime = delay; // Cancel execution of old batch
if (this._timedLoginBatch) {
this._timedLoginBatch.cancel();
this._timedLoginBatch = null;
firstRun = false;
}
// Reset previous idle-timeout
if (this._timedLoginIdleTimeOutId) {
GLib.source_remove(this._timedLoginIdleTimeOutId);
this._timedLoginIdleTimeOutId = 0;
}
let loginItem = null;
let animationTime;
let tasks = [() => this._waitForItemForUser(userName), let tasks = [() => this._waitForItemForUser(userName),
() => { () => {
this._timedLoginItem = this._userList.getItemFromUserName(userName); loginItem = this._userList.getItemFromUserName(userName);
// If there is an animation running on the item, reset it.
loginItem.hideTimedLoginIndicator();
}, },
() => { () => {
// If we're just starting out, start on the right // If we're just starting out, start on the right item.
// item.
if (!this._userManager.is_loaded) { if (!this._userManager.is_loaded) {
this._userList.jumpToItem(this._timedLoginItem); this._userList.jumpToItem(loginItem);
} }
}, },
this._blockTimedLoginUntilIdle,
() => { () => {
this._userList.scrollToItem(this._timedLoginItem); // This blocks the timed login animation until a few
// seconds after the user stops interacting with the
// login screen.
// We skip this step if the timed login delay is very short.
if (delay > _TIMED_LOGIN_IDLE_THRESHOLD) {
animationTime = delay - _TIMED_LOGIN_IDLE_THRESHOLD;
return this._blockTimedLoginUntilIdle();
} else {
animationTime = delay;
}
}, },
this._showTimedLoginAnimation, () => {
// If idle timeout is done, make sure the timed login indicator is shown
if (delay > _TIMED_LOGIN_IDLE_THRESHOLD &&
this._authPrompt.actor.visible)
this._authPrompt.cancel();
if (delay > _TIMED_LOGIN_IDLE_THRESHOLD || firstRun) {
this._userList.scrollToItem(loginItem);
loginItem.actor.grab_key_focus();
}
},
() => loginItem.showTimedLoginIndicator(animationTime),
() => { () => {
this._timedLoginBatch = null; this._timedLoginBatch = null;
@ -1055,37 +1081,17 @@ var LoginDialog = new Lang.Class({
return this._timedLoginBatch.run(); return this._timedLoginBatch.run();
}, },
_resetTimedLogin() {
if (this._timedLoginBatch) {
this._timedLoginBatch.cancel();
this._timedLoginBatch = null;
}
if (this._timedLoginItem)
this._timedLoginItem.hideTimedLoginIndicator();
let userName = this._timedLoginItem.user.get_user_name();
if (userName)
this._startTimedLogin(userName, this._timedLoginDelay);
},
_onTimedLoginRequested(client, userName, seconds) { _onTimedLoginRequested(client, userName, seconds) {
if (this._timedLoginBatch)
return;
this._startTimedLogin(userName, seconds); this._startTimedLogin(userName, seconds);
// Restart timed login on user interaction
global.stage.connect('captured-event', (actor, event) => { global.stage.connect('captured-event', (actor, event) => {
if (this._timedLoginDelay == undefined)
return Clutter.EVENT_PROPAGATE;
if (event.type() == Clutter.EventType.KEY_PRESS || if (event.type() == Clutter.EventType.KEY_PRESS ||
event.type() == Clutter.EventType.BUTTON_PRESS) { event.type() == Clutter.EventType.BUTTON_PRESS) {
if (this._timedLoginBatch) { this._startTimedLogin(userName, seconds);
this._timedLoginBatch.cancel();
this._timedLoginBatch = null;
}
} else if (event.type() == Clutter.EventType.KEY_RELEASE ||
event.type() == Clutter.EventType.BUTTON_RELEASE) {
this._resetTimedLogin();
} }
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;

@ -604,12 +604,17 @@ var NetworkAgent = new Lang.Class({
this._native.connect('new-request', this._newRequest.bind(this)); this._native.connect('new-request', this._newRequest.bind(this));
this._native.connect('cancel-request', this._cancelRequest.bind(this)); this._native.connect('cancel-request', this._cancelRequest.bind(this));
try {
this._native.init(null); this._initialized = false;
} catch(e) { this._native.init_async(GLib.PRIORITY_DEFAULT, null, (o, res) => {
this._native = null; try {
logError(e, 'error initializing the NetworkManager Agent'); this._native.init_finish(res);
} this._initialized = true;
} catch(e) {
this._native = null;
logError(e, 'error initializing the NetworkManager Agent');
}
});
}, },
enable() { enable() {
@ -617,7 +622,7 @@ var NetworkAgent = new Lang.Class({
return; return;
this._native.auto_register = true; this._native.auto_register = true;
if (!this._native.registered) if (this._initialized && !this._native.registered)
this._native.register_async(null, null); this._native.register_async(null, null);
}, },
@ -640,7 +645,7 @@ var NetworkAgent = new Lang.Class({
return; return;
this._native.auto_register = false; this._native.auto_register = false;
if (this._native.registered) if (this._initialized && this._native.registered)
this._native.unregister_async(null, null); this._native.unregister_async(null, null);
}, },

@ -201,7 +201,9 @@ var AuthenticationDialog = new Lang.Class({
close(timestamp) { close(timestamp) {
this.parent(timestamp); this.parent(timestamp);
Main.sessionMode.disconnect(this._sessionUpdatedId); if (this._sessionUpdatedId)
Main.sessionMode.disconnect(this._sessionUpdatedId);
this._sessionUpdatedId = 0;
}, },
_ensureOpen() { _ensureOpen() {

@ -166,7 +166,7 @@ var CandidatePopup = new Lang.Class({
this._panelService.cursor_down(); this._panelService.cursor_down();
}); });
this._candidateArea.connect('candidate-clicked', () => { this._candidateArea.connect('candidate-clicked', (area, index, button, state) => {
this._panelService.candidate_clicked(index, button, state); this._panelService.candidate_clicked(index, button, state);
}); });

@ -256,6 +256,14 @@ function _getStylesheet(name) {
if (stylesheet.query_exists(null)) if (stylesheet.query_exists(null))
return stylesheet; return stylesheet;
let dataDirs = GLib.get_system_data_dirs();
for (let i = 0; i < dataDirs.length; i++) {
let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'theme', name]);
let stylesheet = Gio.file_new_for_path(path);
if (stylesheet.query_exists(null))
return stylesheet;
}
stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + name); stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + name);
if (stylesheet.query_exists(null)) if (stylesheet.query_exists(null))
return stylesheet; return stylesheet;

@ -394,8 +394,9 @@ var PopupImageMenuItem = new Lang.Class({
_init(text, icon, params) { _init(text, icon, params) {
this.parent(params); this.parent(params);
this._icon = new St.Icon({ style_class: 'popup-menu-icon' }); this._icon = new St.Icon({ style_class: 'popup-menu-icon',
this.actor.add_child(this._icon, { align: St.Align.END }); x_align: Clutter.ActorAlign.END });
this.actor.add_child(this._icon);
this.label = new St.Label({ text: text }); this.label = new St.Label({ text: text });
this.actor.add_child(this.label); this.actor.add_child(this.label);
this.actor.label_actor = this.label; this.actor.label_actor = this.label;

@ -119,6 +119,9 @@ var RemoteMenuItemMapper = new Lang.Class({
this._trackerItem = trackerItem; this._trackerItem = trackerItem;
this.menuItem = new PopupMenu.PopupBaseMenuItem(); this.menuItem = new PopupMenu.PopupBaseMenuItem();
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
this.menuItem.actor.add_child(this._icon);
this._label = new St.Label(); this._label = new St.Label();
this.menuItem.actor.add_child(this._label); this.menuItem.actor.add_child(this._label);
this.menuItem.actor.label_actor = this._label; this.menuItem.actor.label_actor = this._label;
@ -129,11 +132,13 @@ var RemoteMenuItemMapper = new Lang.Class({
this._trackerItem.bind_property('visible', this.menuItem.actor, 'visible', GObject.BindingFlags.SYNC_CREATE); this._trackerItem.bind_property('visible', this.menuItem.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
this._trackerItem.connect('notify::icon', this._updateIcon.bind(this));
this._trackerItem.connect('notify::label', this._updateLabel.bind(this)); this._trackerItem.connect('notify::label', this._updateLabel.bind(this));
this._trackerItem.connect('notify::sensitive', this._updateSensitivity.bind(this)); this._trackerItem.connect('notify::sensitive', this._updateSensitivity.bind(this));
this._trackerItem.connect('notify::role', this._updateRole.bind(this)); this._trackerItem.connect('notify::role', this._updateRole.bind(this));
this._trackerItem.connect('notify::toggled', this._updateDecoration.bind(this)); this._trackerItem.connect('notify::toggled', this._updateDecoration.bind(this));
this._updateIcon();
this._updateLabel(); this._updateLabel();
this._updateSensitivity(); this._updateSensitivity();
this._updateRole(); this._updateRole();
@ -143,6 +148,11 @@ var RemoteMenuItemMapper = new Lang.Class({
}); });
}, },
_updateIcon() {
this._icon.gicon = this._trackerItem.icon;
this._icon.visible = (this._icon.gicon != null);
},
_updateLabel() { _updateLabel() {
this._label.text = stripMnemonics(this._trackerItem.label); this._label.text = stripMnemonics(this._trackerItem.label);
}, },

@ -56,12 +56,11 @@ const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface);
var Status = { var Status = {
DISCONNECTED: 'disconnected', DISCONNECTED: 'disconnected',
CONNECTING: 'connecting',
CONNECTED: 'connected', CONNECTED: 'connected',
AUTHORIZING: 'authorizing', AUTHORIZING: 'authorizing',
AUTH_ERROR: 'auth-error', AUTH_ERROR: 'auth-error',
AUTHORIZED: 'authorized', AUTHORIZED: 'authorized'
AUTHORIZED_SECURE: 'authorized-secure',
AUTHORIZED_NEWKEY: 'authorized-newkey'
}; };
var Policy = { var Policy = {
@ -70,7 +69,7 @@ var Policy = {
AUTO: 'auto' AUTO: 'auto'
}; };
var AuthFlags = { var AuthCtrl = {
NONE: 'none', NONE: 'none',
}; };
@ -141,9 +140,10 @@ var Client = new Lang.Class({
}, },
enrollDevice(id, policy, callback) { enrollDevice(id, policy, callback) {
this._proxy.EnrollDeviceRemote(id, policy, AuthFlags.NONE, this._proxy.EnrollDeviceRemote(id, policy, AuthCtrl.NONE,
(res, error) => { (res, error) => {
if (error) { if (error) {
Gio.DBusError.strip_remote_error(error);
callback(null, error); callback(null, error);
return; return;
} }
@ -228,7 +228,7 @@ var AuthRobot = new Lang.Class({
_onEnrollDone(device, error) { _onEnrollDone(device, error) {
if (error) if (error)
this.emit('enroll-failed', error, device); this.emit('enroll-failed', device, error);
/* TODO: scan the list of devices to be authorized for children /* TODO: scan the list of devices to be authorized for children
* of this device and remove them (and their children and * of this device and remove them (and their children and
@ -354,7 +354,7 @@ var Indicator = new Lang.Class({
_onEnrollFailed(obj, device, error) { _onEnrollFailed(obj, device, error) {
const title = _('Thunderbolt authorization error'); const title = _('Thunderbolt authorization error');
const body = _('Could not authorize the thunderbolt device: %s'.format(error.message)); const body = _('Could not authorize the Thunderbolt device: %s'.format(error.message));
this._notify(title, body); this._notify(title, body);
} }

@ -275,8 +275,8 @@ var WorkspaceThumbnail = new Lang.Class({
this._createBackground(); this._createBackground();
let monitor = Main.layoutManager.primaryMonitor; let workArea = Main.layoutManager.getWorkAreaForMonitor(this.monitorIndex);
this.setPorthole(monitor.x, monitor.y, monitor.width, monitor.height); this.setPorthole(workArea.x, workArea.y, workArea.width, workArea.height);
let windows = global.get_window_actors().filter(actor => { let windows = global.get_window_actors().filter(actor => {
let win = actor.meta_window; let win = actor.meta_window;
@ -321,8 +321,6 @@ var WorkspaceThumbnail = new Lang.Class({
}, },
setPorthole(x, y, width, height) { setPorthole(x, y, width, height) {
this._portholeX = x;
this._portholeY = y;
this.actor.set_size(width, height); this.actor.set_size(width, height);
this._contents.set_position(-x, -y); this._contents.set_position(-x, -y);
}, },
@ -675,11 +673,7 @@ var ThumbnailsBox = new Lang.Class({
this._settings.connect('changed::dynamic-workspaces', this._settings.connect('changed::dynamic-workspaces',
this._updateSwitcherVisibility.bind(this)); this._updateSwitcherVisibility.bind(this));
Main.layoutManager.connect('monitors-changed', () => { Main.layoutManager.connect('monitors-changed', this._rebuildThumbnails.bind(this));
this._destroyThumbnails();
if (Main.overview.visible)
this._createThumbnails();
});
}, },
_updateSwitcherVisibility() { _updateSwitcherVisibility() {
@ -872,6 +866,9 @@ var ThumbnailsBox = new Lang.Class({
Main.overview.connect('windows-restacked', Main.overview.connect('windows-restacked',
this._syncStacking.bind(this)); this._syncStacking.bind(this));
this._workareasChangedId =
global.screen.connect('workareas-changed', this._rebuildThumbnails.bind(this));
this._targetScale = 0; this._targetScale = 0;
this._scale = 0; this._scale = 0;
this._pendingScaleUpdate = false; this._pendingScaleUpdate = false;
@ -901,12 +898,24 @@ var ThumbnailsBox = new Lang.Class({
this._syncStackingId = 0; this._syncStackingId = 0;
} }
if (this._workareasChangedId > 0) {
global.screen.disconnect(this._workareasChangedId);
this._workareasChangedId = 0;
}
for (let w = 0; w < this._thumbnails.length; w++) for (let w = 0; w < this._thumbnails.length; w++)
this._thumbnails[w].destroy(); this._thumbnails[w].destroy();
this._thumbnails = []; this._thumbnails = [];
this._porthole = null; this._porthole = null;
}, },
_rebuildThumbnails() {
this._destroyThumbnails();
if (Main.overview.visible)
this._createThumbnails();
},
_workspacesChanged() { _workspacesChanged() {
let validThumbnails = let validThumbnails =
this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL); this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL);
@ -1159,7 +1168,7 @@ var ThumbnailsBox = new Lang.Class({
// The "porthole" is the portion of the screen that we show in the // The "porthole" is the portion of the screen that we show in the
// workspaces // workspaces
_ensurePorthole() { _ensurePorthole() {
if (!Main.layoutManager.primaryMonitor) if (!Main.layoutManager.primaryMonitor || !Main.overview.visible)
return false; return false;
if (!this._porthole) if (!this._porthole)

@ -1,5 +1,5 @@
project('gnome-shell', 'c', project('gnome-shell', 'c',
version: '3.28.1', version: '3.29.1',
meson_version: '>= 0.42.0', meson_version: '>= 0.42.0',
license: 'GPLv2+' license: 'GPLv2+'
) )
@ -23,7 +23,7 @@ gi_req = '>= 1.49.1'
gjs_req = '>= 1.47.0' gjs_req = '>= 1.47.0'
gtk_req = '>= 3.15.0' gtk_req = '>= 3.15.0'
json_glib_req = '>= 0.13.2' json_glib_req = '>= 0.13.2'
mutter_req = '>= 3.28.0' mutter_req = '>= 3.29.1'
polkit_req = '>= 0.100' polkit_req = '>= 0.100'
schemas_req = '>= 3.21.3' schemas_req = '>= 3.21.3'
startup_req = '>= 0.11' startup_req = '>= 0.11'
@ -31,7 +31,7 @@ ibus_req = '>= 1.5.2'
bt_req = '>= 3.9.0' bt_req = '>= 3.9.0'
gst_req = '>= 0.11.92' gst_req = '>= 0.11.92'
nm_req = '>= 0.9.8' nm_req = '>= 1.10.4'
secret_req = '>= 0.18' secret_req = '>= 0.18'
gnome = import('gnome') gnome = import('gnome')

@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2018-02-26 12:57+0000\n" "POT-Creation-Date: 2018-04-13 19:54+0000\n"
"PO-Revision-Date: 2018-02-26 17:57+0100\n" "PO-Revision-Date: 2018-04-24 17:32+0200\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n" "Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
@ -332,7 +332,7 @@ msgstr ""
"Nastala chyba při načítání dialogového okna předvoleb pro rozšíření %s:" "Nastala chyba při načítání dialogového okna předvoleb pro rozšíření %s:"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
msgid "Cancel" msgid "Cancel"
@ -667,12 +667,12 @@ msgstr "Přidat mezi oblíbené"
msgid "Show Details" msgid "Show Details"
msgstr "Zobrazit podrobnosti" msgstr "Zobrazit podrobnosti"
#: js/ui/appFavorites.js:138 #: js/ui/appFavorites.js:140
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s byl přidán mezi oblíbené." msgstr "%s byl přidán mezi oblíbené."
#: js/ui/appFavorites.js:172 #: js/ui/appFavorites.js:174
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených." msgstr "%s byl odstraněn z oblíbených."
@ -867,7 +867,7 @@ msgstr "Externí svazek odpojen"
msgid "Open with %s" msgid "Open with %s"
msgstr "Otevřít pomocí %s" msgstr "Otevřít pomocí %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
msgid "Password:" msgid "Password:"
msgstr "Heslo:" msgstr "Heslo:"
@ -955,15 +955,15 @@ msgstr "Pro připojení k „%s“ je vyžadováno heslo."
msgid "Network Manager" msgid "Network Manager"
msgstr "Network Manager" msgstr "Network Manager"
#: js/ui/components/polkitAgent.js:43 #: js/ui/components/polkitAgent.js:48
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Je vyžadováno ověření" msgstr "Je vyžadováno ověření"
#: js/ui/components/polkitAgent.js:71 #: js/ui/components/polkitAgent.js:76
msgid "Administrator" msgid "Administrator"
msgstr "Správce" msgstr "Správce"
#: js/ui/components/polkitAgent.js:151 #: js/ui/components/polkitAgent.js:156
msgid "Authenticate" msgid "Authenticate"
msgstr "Ověřit" msgstr "Ověřit"
@ -971,7 +971,7 @@ msgstr "Ověřit"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu." msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu."
@ -1021,7 +1021,7 @@ msgstr "Přidat světový čas…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Světové hodiny" msgstr "Světové hodiny"
#: js/ui/dateMenu.js:225 #: js/ui/dateMenu.js:227
msgid "Weather" msgid "Weather"
msgstr "Počasí" msgstr "Počasí"
@ -1029,7 +1029,7 @@ msgstr "Počasí"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:291
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s celý den." msgstr "%s celý den."
@ -1038,7 +1038,7 @@ msgstr "%s celý den."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:295 #: js/ui/dateMenu.js:297
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, později %s." msgstr "%s, později %s."
@ -1047,30 +1047,30 @@ msgstr "%s, později %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:301 #: js/ui/dateMenu.js:303
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, pak %s a později %s." msgstr "%s, pak %s a později %s."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:314
msgid "Select a location…" msgid "Select a location…"
msgstr "Vybrat místo…" msgstr "Vybrat místo…"
#: js/ui/dateMenu.js:315 #: js/ui/dateMenu.js:317
msgid "Loading…" msgid "Loading…"
msgstr "Načítá se…" msgstr "Načítá se…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:323
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Pocitově jako %s." msgstr "Pocitově jako %s."
#: js/ui/dateMenu.js:324 #: js/ui/dateMenu.js:326
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Připojit se kvůli informacím o počasí" msgstr "Připojit se kvůli informacím o počasí"
#: js/ui/dateMenu.js:326 #: js/ui/dateMenu.js:328
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Informace o počasí nejsou nyní dostupné" msgstr "Informace o počasí nejsou nyní dostupné"
@ -1986,16 +1986,16 @@ msgstr "Uspat do paměti"
msgid "Power Off" msgid "Power Off"
msgstr "Vypnout" msgstr "Vypnout"
#: js/ui/status/thunderbolt.js:272 #: js/ui/status/thunderbolt.js:294
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:328 #: js/ui/status/thunderbolt.js:350
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Neznámé zařízení Thunderbolt" msgstr "Neznámé zařízení Thunderbolt"
#: js/ui/status/thunderbolt.js:329 #: js/ui/status/thunderbolt.js:351
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@ -2003,13 +2003,13 @@ msgstr ""
"Zatímco jste byli pryč, bylo nalezeno nové zařízení. Odpojte jej prosím a " "Zatímco jste byli pryč, bylo nalezeno nové zařízení. Odpojte jej prosím a "
"znovu připojte, abyste jej mohli používat." "znovu připojte, abyste jej mohli používat."
#: js/ui/status/thunderbolt.js:334 #: js/ui/status/thunderbolt.js:356
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Chyba ověření Thunderbolt" msgstr "Chyba ověření Thunderbolt"
#: js/ui/status/thunderbolt.js:335 #: js/ui/status/thunderbolt.js:357
#, javascript-format #, javascript-format
msgid "Could not authorize the thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nezdařilo se provést ověření zařízení Thunderbolt: %s" msgstr "Nezdařilo se provést ověření zařízení Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:128
@ -2233,15 +2233,3 @@ msgstr[2] "%u vstupů"
#: subprojects/gvc/gvc-mixer-control.c:2738 #: subprojects/gvc/gvc-mixer-control.c:2738
msgid "System Sounds" msgid "System Sounds"
msgstr "Systémové zvuky" msgstr "Systémové zvuky"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Vypnout"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "Odhlásit se"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "Přepnout uživatele"

@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell.master\n" "Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2018-02-22 09:24+0000\n" "POT-Creation-Date: 2018-04-13 19:54+0000\n"
"PO-Revision-Date: 2018-02-23 08:26+0100\n" "PO-Revision-Date: 2018-04-25 12:54+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n" "Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n" "Language: es\n"
@ -346,7 +346,7 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:" msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
msgid "Cancel" msgid "Cancel"
@ -665,12 +665,12 @@ msgstr "Añadir a los favoritos"
msgid "Show Details" msgid "Show Details"
msgstr "Mostrar detalles" msgstr "Mostrar detalles"
#: js/ui/appFavorites.js:138 #: js/ui/appFavorites.js:140
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "Se ha añadido %s a sus favoritos." msgstr "Se ha añadido %s a sus favoritos."
#: js/ui/appFavorites.js:172 #: js/ui/appFavorites.js:174
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Se ha quitado %s de sus favoritos." msgstr "Se ha quitado %s de sus favoritos."
@ -865,7 +865,7 @@ msgstr "Dispositivo externo desconectado"
msgid "Open with %s" msgid "Open with %s"
msgstr "Abrir con %s" msgstr "Abrir con %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
msgid "Password:" msgid "Password:"
msgstr "Contraseña:" msgstr "Contraseña:"
@ -953,15 +953,15 @@ msgstr "Se requiere una contraseña para conectarse a «%s»."
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestor de la red" msgstr "Gestor de la red"
#: js/ui/components/polkitAgent.js:43 #: js/ui/components/polkitAgent.js:48
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Se necesita autenticación" msgstr "Se necesita autenticación"
#: js/ui/components/polkitAgent.js:71 #: js/ui/components/polkitAgent.js:76
msgid "Administrator" msgid "Administrator"
msgstr "Administrador" msgstr "Administrador"
#: js/ui/components/polkitAgent.js:151 #: js/ui/components/polkitAgent.js:156
msgid "Authenticate" msgid "Authenticate"
msgstr "Autenticar" msgstr "Autenticar"
@ -969,7 +969,7 @@ msgstr "Autenticar"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Eso no ha funcionado. Inténtelo de nuevo." msgstr "Eso no ha funcionado. Inténtelo de nuevo."
@ -1017,7 +1017,7 @@ msgstr "Añadir relojes del mundo…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Relojes del mundo" msgstr "Relojes del mundo"
#: js/ui/dateMenu.js:225 #: js/ui/dateMenu.js:227
msgid "Weather" msgid "Weather"
msgstr "Meteorología" msgstr "Meteorología"
@ -1025,7 +1025,7 @@ msgstr "Meteorología"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:291
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s todo el día." msgstr "%s todo el día."
@ -1034,7 +1034,7 @@ msgstr "%s todo el día."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:295 #: js/ui/dateMenu.js:297
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, luego %s." msgstr "%s, luego %s."
@ -1043,30 +1043,30 @@ msgstr "%s, luego %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:301 #: js/ui/dateMenu.js:303
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, luego %s seguido de %s." msgstr "%s, luego %s seguido de %s."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:314
msgid "Select a location…" msgid "Select a location…"
msgstr "Seleccionar ubicación…" msgstr "Seleccionar ubicación…"
#: js/ui/dateMenu.js:315 #: js/ui/dateMenu.js:317
msgid "Loading…" msgid "Loading…"
msgstr "Cargando…" msgstr "Cargando…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:323
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Sensación térmica de %s." msgstr "Sensación térmica de %s."
#: js/ui/dateMenu.js:324 #: js/ui/dateMenu.js:326
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Conectarse para obtener la información meteorológica" msgstr "Conectarse para obtener la información meteorológica"
#: js/ui/dateMenu.js:326 #: js/ui/dateMenu.js:328
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "La información meteorológica no está disponible actualmente." msgstr "La información meteorológica no está disponible actualmente."
@ -1968,16 +1968,16 @@ msgstr "Suspender"
msgid "Power Off" msgid "Power Off"
msgstr "Apagar" msgstr "Apagar"
#: js/ui/status/thunderbolt.js:272 #: js/ui/status/thunderbolt.js:294
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:328 #: js/ui/status/thunderbolt.js:350
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Dispositivo Thunderbolt desconocido" msgstr "Dispositivo Thunderbolt desconocido"
#: js/ui/status/thunderbolt.js:329 #: js/ui/status/thunderbolt.js:351
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@ -1985,13 +1985,14 @@ msgstr ""
"Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y " "Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y "
"vuélvalo a conectar para empezar a usarlo." "vuélvalo a conectar para empezar a usarlo."
#: js/ui/status/thunderbolt.js:334 #: js/ui/status/thunderbolt.js:356
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Error de autorización de Thunderbolt" msgstr "Error de autorización de Thunderbolt"
#: js/ui/status/thunderbolt.js:335 #: js/ui/status/thunderbolt.js:357
#, javascript-format #, javascript-format
msgid "Could not authorize the thunderbolt device: %s" #| msgid "Could not authorize the thunderbolt device: %s"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s" msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:128

368
po/fur.po

File diff suppressed because it is too large Load Diff

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2018-02-26 17:00+0000\n" "POT-Creation-Date: 2018-04-13 19:54+0000\n"
"PO-Revision-Date: 2018-03-07 22:46+0100\n" "PO-Revision-Date: 2018-04-16 14:30+0200\n"
"Last-Translator: gogo <trebelnik2@gmail.com>\n" "Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n" "Language-Team: Croatian <hr@li.org>\n"
"Language: hr\n" "Language: hr\n"
@ -337,7 +337,7 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "Dogodila se greška učitavanja dijaloga osobitosti za %s:" msgstr "Dogodila se greška učitavanja dijaloga osobitosti za %s:"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
msgid "Cancel" msgid "Cancel"
@ -663,12 +663,12 @@ msgstr "Dodaj u omiljene"
msgid "Show Details" msgid "Show Details"
msgstr "Prikaži pojedinosti" msgstr "Prikaži pojedinosti"
#: js/ui/appFavorites.js:138 #: js/ui/appFavorites.js:140
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s je dodan u omiljene." msgstr "%s je dodan u omiljene."
#: js/ui/appFavorites.js:172 #: js/ui/appFavorites.js:174
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s je uklonjen iz omiljenih." msgstr "%s je uklonjen iz omiljenih."
@ -863,7 +863,7 @@ msgstr "Vanjski uređaj odspojen"
msgid "Open with %s" msgid "Open with %s"
msgstr "Otvori s(a) %s" msgstr "Otvori s(a) %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
msgid "Password:" msgid "Password:"
msgstr "Lozinka:" msgstr "Lozinka:"
@ -950,15 +950,15 @@ msgstr "Potrebna je lozinka za povezivanje s “%s”."
msgid "Network Manager" msgid "Network Manager"
msgstr "Mrežni upravitelj" msgstr "Mrežni upravitelj"
#: js/ui/components/polkitAgent.js:43 #: js/ui/components/polkitAgent.js:48
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Potrebna je ovjera" msgstr "Potrebna je ovjera"
#: js/ui/components/polkitAgent.js:71 #: js/ui/components/polkitAgent.js:76
msgid "Administrator" msgid "Administrator"
msgstr "Administrator" msgstr "Administrator"
#: js/ui/components/polkitAgent.js:151 #: js/ui/components/polkitAgent.js:156
msgid "Authenticate" msgid "Authenticate"
msgstr "Ovjeri" msgstr "Ovjeri"
@ -966,7 +966,7 @@ msgstr "Ovjeri"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Nažalost, to ne radi. Pokušajte ponovno." msgstr "Nažalost, to ne radi. Pokušajte ponovno."
@ -1014,7 +1014,7 @@ msgstr "Dodaj satove iz svijeta…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Svjetski satovi" msgstr "Svjetski satovi"
#: js/ui/dateMenu.js:225 #: js/ui/dateMenu.js:227
msgid "Weather" msgid "Weather"
msgstr "Vrijeme" msgstr "Vrijeme"
@ -1022,7 +1022,7 @@ msgstr "Vrijeme"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:291
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s cijeli dan." msgstr "%s cijeli dan."
@ -1031,7 +1031,7 @@ msgstr "%s cijeli dan."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:295 #: js/ui/dateMenu.js:297
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, zatim %s kasnije." msgstr "%s, zatim %s kasnije."
@ -1040,30 +1040,30 @@ msgstr "%s, zatim %s kasnije."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:301 #: js/ui/dateMenu.js:303
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, zatim %s, praćena s %s kasnije." msgstr "%s, zatim %s, praćena s %s kasnije."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:314
msgid "Select a location…" msgid "Select a location…"
msgstr "Odaberi lokaciju…" msgstr "Odaberi lokaciju…"
#: js/ui/dateMenu.js:315 #: js/ui/dateMenu.js:317
msgid "Loading…" msgid "Loading…"
msgstr "Pretraživanje…" msgstr "Pretraživanje…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:323
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Kao da je %s." msgstr "Kao da je %s."
#: js/ui/dateMenu.js:324 #: js/ui/dateMenu.js:326
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Posjetite za opširnije vremenske informacije" msgstr "Posjetite za opširnije vremenske informacije"
#: js/ui/dateMenu.js:326 #: js/ui/dateMenu.js:328
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Vremenske informacije su trenutno nedostupne" msgstr "Vremenske informacije su trenutno nedostupne"
@ -1977,16 +1977,16 @@ msgstr "Suspendiraj"
msgid "Power Off" msgid "Power Off"
msgstr "Isključivanje" msgstr "Isključivanje"
#: js/ui/status/thunderbolt.js:272 #: js/ui/status/thunderbolt.js:294
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:328 #: js/ui/status/thunderbolt.js:350
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Nepoznati Thunderbolt uređaj" msgstr "Nepoznati Thunderbolt uređaj"
#: js/ui/status/thunderbolt.js:329 #: js/ui/status/thunderbolt.js:351
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@ -1994,14 +1994,14 @@ msgstr ""
"Otkriven je novi uređaj dok ste bili odsutni. Odspojite i ponovno spojite " "Otkriven je novi uređaj dok ste bili odsutni. Odspojite i ponovno spojite "
"uređaj kako bi ga mogli koristiti." "uređaj kako bi ga mogli koristiti."
#: js/ui/status/thunderbolt.js:334 #: js/ui/status/thunderbolt.js:356
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Greška Thunderbolt ovjere" msgstr "Greška Thunderbolt odobravanja"
#: js/ui/status/thunderbolt.js:335 #: js/ui/status/thunderbolt.js:357
#, javascript-format #, javascript-format
msgid "Could not authorize the thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nemoguća ovjera Thunderbolt uređaja: %s" msgstr "Nemoguće odobravanje Thunderbolt uređaja: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:128
msgid "Volume changed" msgid "Volume changed"

453
po/ro.po

File diff suppressed because it is too large Load Diff

@ -18,8 +18,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2018-04-12 11:47+0000\n" "POT-Creation-Date: 2018-04-13 18:31+0000\n"
"PO-Revision-Date: 2018-04-12 16:48+0300\n" "PO-Revision-Date: 2018-04-19 23:31+0300\n"
"Last-Translator: Stas Solovey <whats_up@tut.by>\n" "Last-Translator: Stas Solovey <whats_up@tut.by>\n"
"Language-Team: Русский <gnome-cyr@gnome.org>\n" "Language-Team: Русский <gnome-cyr@gnome.org>\n"
"Language: ru\n" "Language: ru\n"
@ -344,7 +344,7 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "Возникла ошибка загрузки диалогового окна параметров для %s:" msgstr "Возникла ошибка загрузки диалогового окна параметров для %s:"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:149 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
msgid "Cancel" msgid "Cancel"
@ -563,7 +563,6 @@ msgstr "Вчера, %H%M"
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
# fix даты "11 мар., 20:35"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
@ -572,7 +571,6 @@ msgstr "%A, %H%M"
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%-d %B, %H%M" msgstr "%-d %B, %H%M"
# fix даты
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
@ -581,7 +579,6 @@ msgstr "%-d %B, %H%M"
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%-d %B %Y, %H%M" msgstr "%-d %B %Y, %H%M"
# по всей видимости разрабы коммент перепутали c "Translators: Time in 12h format"
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:257 #: js/misc/util.js:257
msgid "%l%M %p" msgid "%l%M %p"
@ -823,7 +820,6 @@ msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %-d %B" msgstr "%A, %-d %B"
# fix для даты в календаре и на экране блокировки
#: js/ui/calendar.js:868 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
@ -876,7 +872,7 @@ msgstr "Внешний диск отключён"
msgid "Open with %s" msgid "Open with %s"
msgstr "Открыть с помощью %s" msgstr "Открыть с помощью %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:285 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
msgid "Password:" msgid "Password:"
msgstr "Пароль:" msgstr "Пароль:"
@ -963,15 +959,15 @@ msgstr "Для подключения к «%s» требуется пароль.
msgid "Network Manager" msgid "Network Manager"
msgstr "Диспетчер сети" msgstr "Диспетчер сети"
#: js/ui/components/polkitAgent.js:44 #: js/ui/components/polkitAgent.js:48
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Требуется подтверждение подлинности" msgstr "Требуется подтверждение подлинности"
#: js/ui/components/polkitAgent.js:72 #: js/ui/components/polkitAgent.js:76
msgid "Administrator" msgid "Administrator"
msgstr "Администратор" msgstr "Администратор"
#: js/ui/components/polkitAgent.js:152 #: js/ui/components/polkitAgent.js:156
msgid "Authenticate" msgid "Authenticate"
msgstr "Подтвердить" msgstr "Подтвердить"
@ -979,7 +975,7 @@ msgstr "Подтвердить"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:271 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Не удалось подтвердить подлинность. Попробуйте снова." msgstr "Не удалось подтвердить подлинность. Попробуйте снова."
@ -1004,7 +1000,6 @@ msgstr "Показать приложения"
msgid "Dash" msgid "Dash"
msgstr "Панель приложений" msgstr "Панель приложений"
# fix для даты в календаре и на экране блокировки
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. #.
@ -1012,7 +1007,6 @@ msgstr "Панель приложений"
msgid "%B %e %Y" msgid "%B %e %Y"
msgstr "%-d %B %Y" msgstr "%-d %B %Y"
# fix для даты в календаре и на экране блокировки
#. Translators: This is the accessible name of the date button shown #. Translators: This is the accessible name of the date button shown
#. * below the time in the shell; it should combine the weekday and the #. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015". #. * date, e.g. "Tuesday February 17 2015".
@ -1029,7 +1023,7 @@ msgstr "Добавить мировые часы…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Мировые часы" msgstr "Мировые часы"
#: js/ui/dateMenu.js:225 #: js/ui/dateMenu.js:227
msgid "Weather" msgid "Weather"
msgstr "Погода" msgstr "Погода"
@ -1037,7 +1031,7 @@ msgstr "Погода"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:291
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s весь день." msgstr "%s весь день."
@ -1046,7 +1040,7 @@ msgstr "%s весь день."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:295 #: js/ui/dateMenu.js:297
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, затем позднее %s." msgstr "%s, затем позднее %s."
@ -1055,30 +1049,30 @@ msgstr "%s, затем позднее %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:301 #: js/ui/dateMenu.js:303
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, затем %s, позже %s." msgstr "%s, затем %s, позже %s."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:314
msgid "Select a location…" msgid "Select a location…"
msgstr "Выберите местоположение…" msgstr "Выберите местоположение…"
#: js/ui/dateMenu.js:315 #: js/ui/dateMenu.js:317
msgid "Loading…" msgid "Loading…"
msgstr "Загрузка…" msgstr "Загрузка…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:323
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Ощущается как %s." msgstr "Ощущается как %s."
#: js/ui/dateMenu.js:324 #: js/ui/dateMenu.js:326
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Подключите интернет для получения информации о погоде" msgstr "Подключите интернет для получения информации о погоде"
#: js/ui/dateMenu.js:326 #: js/ui/dateMenu.js:328
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Информация о погоде сейчас недоступна" msgstr "Информация о погоде сейчас недоступна"

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2018-03-18 10:36+0000\n" "POT-Creation-Date: 2018-04-17 15:11+0000\n"
"PO-Revision-Date: 2018-03-19 21:42+0100\n" "PO-Revision-Date: 2018-04-17 18:32+0200\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl\n" "Language: sl\n"
@ -66,19 +66,19 @@ msgstr "Upravljanje oken in zaganjanje programov"
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
"Omogoči dostop do orodij razvijalcev in preizkuševalcev programske opreme " "Omogoči dostop do orodij razvijalcev in preizkuševalcev programske opreme "
"preko Alt-F2 vnosnega polja." "prek vnosnega polja Alt-F2."
#: data/org.gnome.shell.gschema.xml.in:9 #: data/org.gnome.shell.gschema.xml.in:9
msgid "" msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 " "Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog." "dialog."
msgstr "" msgstr ""
"Dovoli dostop do razhroščevanja in drugih orodij nadzora preko Alt-F2 " "Dovoli dostop do razhroščevanja in drugih orodij nadzora prek vnosnega polja "
"vnosnega polja." "Alt-F2."
#: data/org.gnome.shell.gschema.xml.in:16 #: data/org.gnome.shell.gschema.xml.in:16
msgid "UUIDs of extensions to enable" msgid "UUIDs of extensions to enable"
msgstr "Določila UUID razširitev, ki bodo omogočene" msgstr "Določila razširitev UUID, ki bodo omogočene"
#: data/org.gnome.shell.gschema.xml.in:17 #: data/org.gnome.shell.gschema.xml.in:17
msgid "" msgid ""
@ -87,10 +87,9 @@ msgid ""
"list. You can also manipulate this list with the EnableExtension and " "list. You can also manipulate this list with the EnableExtension and "
"DisableExtension D-Bus methods on org.gnome.Shell." "DisableExtension D-Bus methods on org.gnome.Shell."
msgstr "" msgstr ""
"Razširitve lupine GNOME imajo določila UUID; ključ določa seznam razširitev, " "Razširitve lupine GNOME imajo nastavljeno določilo UUID; ključ določa seznam "
"ki bodo naložene. Razširitev, ki se naj naloži, mora biti zavedena na tem " "razširitev, ki naj bodo naložene ob zagonu. Upravljanje seznama je mogoče "
"seznamu. Upravljanje seznama je mogoče tudi preko vodila D-BUs na org.gnome." "tudi prek vodila D-BUs na org.gnome.Shell."
"Shell."
#: data/org.gnome.shell.gschema.xml.in:26 #: data/org.gnome.shell.gschema.xml.in:26
msgid "Disable user extensions" msgid "Disable user extensions"
@ -115,8 +114,8 @@ msgid ""
"load all extensions regardless of the versions they claim to support." "load all extensions regardless of the versions they claim to support."
msgstr "" msgstr ""
"Lupina GNOME naloži le razširitve, ki so skladne z nameščeno različico. " "Lupina GNOME naloži le razširitve, ki so skladne z nameščeno različico. "
"Izbrana možnost onemogoči preverjanje skladnosti, zato so lahko naložene " "Izbrana možnost onemogoči preverjanje, zato so lahko naložene tudi "
"tudi razširitve, katerih skladnost ni potrjena." "razširitve, katerih skladnost ni potrjena."
#: data/org.gnome.shell.gschema.xml.in:43 #: data/org.gnome.shell.gschema.xml.in:43
msgid "List of desktop file IDs for favorite applications" msgid "List of desktop file IDs for favorite applications"
@ -127,7 +126,7 @@ msgid ""
"The applications corresponding to these identifiers will be displayed in the " "The applications corresponding to these identifiers will be displayed in the "
"favorites area." "favorites area."
msgstr "" msgstr ""
"Programi določeni s temi določili bodo prikazani v območju priljubljenih " "Programi, ki ustrezajo določilom, bodo prikazani v polju priljubljenih "
"programov" "programov"
#: data/org.gnome.shell.gschema.xml.in:51 #: data/org.gnome.shell.gschema.xml.in:51
@ -145,18 +144,18 @@ msgstr "Zgodovina pogovornega okna ukazov (Alt-F2)"
#. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass
#: data/org.gnome.shell.gschema.xml.in:63 #: data/org.gnome.shell.gschema.xml.in:63
msgid "History for the looking glass dialog" msgid "History for the looking glass dialog"
msgstr "Zgodovina za pogovorno okno povečevalnega stekla" msgstr "Zgodovina za pogovorno okno povečevala"
#: data/org.gnome.shell.gschema.xml.in:67 #: data/org.gnome.shell.gschema.xml.in:67
msgid "Always show the “Log out” menu item in the user menu." msgid "Always show the “Log out” menu item in the user menu."
msgstr "Vedno pokaži možnost »Odjava« v uporabniškem meniju." msgstr "Vedno pokaži možnost »Odjave« v uporabniškem meniju."
#: data/org.gnome.shell.gschema.xml.in:68 #: data/org.gnome.shell.gschema.xml.in:68
msgid "" msgid ""
"This key overrides the automatic hiding of the “Log out” menu item in single-" "This key overrides the automatic hiding of the “Log out” menu item in single-"
"user, single-session situations." "user, single-session situations."
msgstr "" msgstr ""
"Izbira prepiše možnost samodejnega skrivanja predmeta »Odjava« na sistemskem " "Izbira prepiše možnost samodejnega skrivanja gumba za »Odjavo« na sistemskem "
"meniju pri eno-uporabniškem in eno-sejnem zagonu." "meniju pri eno-uporabniškem in eno-sejnem zagonu."
#: data/org.gnome.shell.gschema.xml.in:75 #: data/org.gnome.shell.gschema.xml.in:75
@ -174,8 +173,8 @@ msgid ""
"state of the checkbox." "state of the checkbox."
msgstr "" msgstr ""
"Za priklop oddaljenega datotečnega sistema ali šifrirane naprave bo po " "Za priklop oddaljenega datotečnega sistema ali šifrirane naprave bo po "
"izbiri možnosti zahtevano geslo. Na pogovornem oknu bo prikazana možnost " "izbiri podana zahteva za vnos gesla. Na pogovornem oknu bo prikazana tudi "
"»Shrani geslo«. Ta možnost določa privzeto stanje izbirnega polja." "možnost »Shrani geslo«. Ta možnost določa privzeto stanje izbirnega polja."
#: data/org.gnome.shell.gschema.xml.in:85 #: data/org.gnome.shell.gschema.xml.in:85
msgid "" msgid ""
@ -333,7 +332,7 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnostmi za %s:" msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnostmi za %s:"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
msgid "Cancel" msgid "Cancel"
@ -664,12 +663,12 @@ msgstr "Dodaj med priljubljene"
msgid "Show Details" msgid "Show Details"
msgstr "Pokaži besedilo" msgstr "Pokaži besedilo"
#: js/ui/appFavorites.js:138 #: js/ui/appFavorites.js:140
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "Program »%s« je dodan med priljubljeno." msgstr "Program »%s« je dodan med priljubljeno."
#: js/ui/appFavorites.js:172 #: js/ui/appFavorites.js:174
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Program »%s« je odstranjen iz priljubljenih." msgstr "Program »%s« je odstranjen iz priljubljenih."
@ -840,7 +839,7 @@ msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
msgstr "" msgstr ""
"Lahko še malo počakate, če začne morda program spet delovati, ali pa vsilite " "Lahko počakate, če se program morda začne spet odzivati, lahko pa vsilite "
"končanje delovanja." "končanje delovanja."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:61
@ -864,13 +863,13 @@ msgstr "Zunanji pogon je odklopljen"
msgid "Open with %s" msgid "Open with %s"
msgstr "Odpri s programom %s" msgstr "Odpri s programom %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295
msgid "Password:" msgid "Password:"
msgstr "Geslo:" msgstr "Geslo:"
#: js/ui/components/keyring.js:140 #: js/ui/components/keyring.js:140
msgid "Type again:" msgid "Type again:"
msgstr "Vpišite znova:" msgstr "Ponovni vpis:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245 #: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245
#: js/ui/status/network.js:336 js/ui/status/network.js:922 #: js/ui/status/network.js:336 js/ui/status/network.js:922
@ -887,19 +886,19 @@ msgstr "Geslo:"
#. static WEP #. static WEP
#: js/ui/components/networkAgent.js:210 #: js/ui/components/networkAgent.js:210
msgid "Key: " msgid "Key: "
msgstr "Ključ:" msgstr "Ključ: "
#: js/ui/components/networkAgent.js:249 #: js/ui/components/networkAgent.js:249
msgid "Identity: " msgid "Identity: "
msgstr "_Istovetnost:" msgstr "_Istovetnost: "
#: js/ui/components/networkAgent.js:251 #: js/ui/components/networkAgent.js:251
msgid "Private key password: " msgid "Private key password: "
msgstr "Geslo zasebnega ključa:" msgstr "Geslo zasebnega ključa: "
#: js/ui/components/networkAgent.js:263 #: js/ui/components/networkAgent.js:263
msgid "Service: " msgid "Service: "
msgstr "Storitev:" 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:659
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
@ -920,7 +919,7 @@ msgstr "Žična overitev 802.1X"
#: js/ui/components/networkAgent.js:299 #: js/ui/components/networkAgent.js:299
msgid "Network name: " msgid "Network name: "
msgstr "Naziv omrežja:" 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:667
msgid "DSL authentication" msgid "DSL authentication"
@ -952,15 +951,15 @@ msgstr "Za povezavo z omrežjem »%s« je zahtevano geslo."
msgid "Network Manager" msgid "Network Manager"
msgstr "Upravljalnik omrežij" msgstr "Upravljalnik omrežij"
#: js/ui/components/polkitAgent.js:43 #: js/ui/components/polkitAgent.js:48
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Zahtevana je overitev" msgstr "Zahtevana je overitev"
#: js/ui/components/polkitAgent.js:71 #: js/ui/components/polkitAgent.js:76
msgid "Administrator" msgid "Administrator"
msgstr "Skrbnik" msgstr "Skrbnik"
#: js/ui/components/polkitAgent.js:151 #: js/ui/components/polkitAgent.js:156
msgid "Authenticate" msgid "Authenticate"
msgstr "Overi" msgstr "Overi"
@ -968,7 +967,7 @@ msgstr "Overi"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Overitev je spodletela.. Poskusite znova." msgstr "Overitev je spodletela.. Poskusite znova."
@ -1016,7 +1015,7 @@ msgstr "Dodaj svetovni čas ..."
msgid "World Clocks" msgid "World Clocks"
msgstr "Svetovni časi" msgstr "Svetovni časi"
#: js/ui/dateMenu.js:225 #: js/ui/dateMenu.js:227
msgid "Weather" msgid "Weather"
msgstr "Vreme" msgstr "Vreme"
@ -1024,7 +1023,7 @@ msgstr "Vreme"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:291
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s ves dan." msgstr "%s ves dan."
@ -1033,7 +1032,7 @@ msgstr "%s ves dan."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:295 #: js/ui/dateMenu.js:297
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, sledi %s." msgstr "%s, sledi %s."
@ -1042,30 +1041,30 @@ msgstr "%s, sledi %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:301 #: js/ui/dateMenu.js:303
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, sledi %s, kasneje tudi %s." msgstr "%s, sledi %s, kasneje tudi %s."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:314
msgid "Select a location…" msgid "Select a location…"
msgstr "Izbor mesta ..." msgstr "Izbor mesta ..."
#: js/ui/dateMenu.js:315 #: js/ui/dateMenu.js:317
msgid "Loading…" msgid "Loading…"
msgstr "Poteka nalaganje ..." msgstr "Poteka nalaganje ..."
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:323
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Občuti se kot %s." msgstr "Občuti se kot %s."
#: js/ui/dateMenu.js:324 #: js/ui/dateMenu.js:326
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Preglej splet za podrobnosti o vremenu." msgstr "Preglej splet za podrobnosti o vremenu."
#: js/ui/dateMenu.js:326 #: js/ui/dateMenu.js:328
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Podatki o vremenu trenutno niso na voljo." msgstr "Podatki o vremenu trenutno niso na voljo."
@ -2014,8 +2013,8 @@ msgstr "Napaka overitve naprave Thunderbolt"
#: js/ui/status/thunderbolt.js:357 #: js/ui/status/thunderbolt.js:357
#, javascript-format #, javascript-format
msgid "Could not authorize the thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Naprave thunderbolt ni mogoče overiti: %s" msgstr "Naprave Thunderbolt ni mogoče overiti: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:128
msgid "Volume changed" msgid "Volume changed"

@ -308,9 +308,8 @@ st_entry_style_changed (StWidget *self)
} }
theme_node = st_widget_get_theme_node (self); theme_node = st_widget_get_theme_node (self);
st_theme_node_get_foreground_color (theme_node, &color); _st_set_text_from_style (CLUTTER_TEXT (priv->entry), theme_node);
clutter_text_set_color (CLUTTER_TEXT (priv->entry), &color);
if (st_theme_node_lookup_length (theme_node, "caret-size", TRUE, &size)) if (st_theme_node_lookup_length (theme_node, "caret-size", TRUE, &size))
clutter_text_set_cursor_size (CLUTTER_TEXT (priv->entry), (int)(.5 + size)); clutter_text_set_cursor_size (CLUTTER_TEXT (priv->entry), (int)(.5 + size));

@ -116,6 +116,7 @@ _st_set_text_from_style (ClutterText *text,
PangoAttrList *attribs = NULL; PangoAttrList *attribs = NULL;
const PangoFontDescription *font; const PangoFontDescription *font;
StTextAlign align; StTextAlign align;
gdouble spacing;
st_theme_node_get_foreground_color (theme_node, &color); st_theme_node_get_foreground_color (theme_node, &color);
clutter_text_set_color (text, &color); clutter_text_set_color (text, &color);
@ -123,11 +124,11 @@ _st_set_text_from_style (ClutterText *text,
font = st_theme_node_get_font (theme_node); font = st_theme_node_get_font (theme_node);
clutter_text_set_font_description (text, (PangoFontDescription *) font); clutter_text_set_font_description (text, (PangoFontDescription *) font);
attribs = pango_attr_list_new ();
decoration = st_theme_node_get_text_decoration (theme_node); decoration = st_theme_node_get_text_decoration (theme_node);
if (decoration) if (decoration)
{ {
attribs = pango_attr_list_new ();
if (decoration & ST_TEXT_DECORATION_UNDERLINE) if (decoration & ST_TEXT_DECORATION_UNDERLINE)
{ {
PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE); PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
@ -143,6 +144,13 @@ _st_set_text_from_style (ClutterText *text,
*/ */
} }
spacing = st_theme_node_get_letter_spacing (theme_node);
if (spacing)
{
PangoAttribute *letter_spacing = pango_attr_letter_spacing_new ((int)(.5 + spacing) * PANGO_SCALE);
pango_attr_list_insert (attribs, letter_spacing);
}
clutter_text_set_attributes (text, attribs); clutter_text_set_attributes (text, attribs);
if (attribs) if (attribs)

@ -2545,6 +2545,28 @@ st_theme_node_get_text_align(StThemeNode *node)
return ST_TEXT_ALIGN_LEFT; return ST_TEXT_ALIGN_LEFT;
} }
/**
* st_theme_node_get_letter_spacing:
* @node: a #StThemeNode
*
* Gets the value for the letter-spacing style property, in pixels.
*
* Return value: the value of the letter-spacing property, if
* found, or zero if such property has not been found.
*/
gdouble
st_theme_node_get_letter_spacing (StThemeNode *node)
{
gdouble spacing = 0.;
g_return_val_if_fail (ST_IS_THEME_NODE (node), spacing);
ensure_properties (node);
st_theme_node_lookup_length (node, "letter-spacing", FALSE, &spacing);
return spacing;
}
static gboolean static gboolean
font_family_from_terms (CRTerm *term, font_family_from_terms (CRTerm *term,
char **family) char **family)

@ -223,6 +223,8 @@ StTextDecoration st_theme_node_get_text_decoration (StThemeNode *node);
StTextAlign st_theme_node_get_text_align (StThemeNode *node); StTextAlign st_theme_node_get_text_align (StThemeNode *node);
double st_theme_node_get_letter_spacing (StThemeNode *node);
/* Font rule processing is pretty complicated, so we just hardcode it /* Font rule processing is pretty complicated, so we just hardcode it
* under the standard font/font-family/font-size/etc names. This means * under the standard font/font-family/font-size/etc names. This means
* you can't have multiple separate styled fonts for a single item, * you can't have multiple separate styled fonts for a single item,