Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
3a060d755d | |||
e43c8f6364 | |||
e65bd48062 | |||
1c5f926a70 | |||
92f1e88e06 | |||
5100458c1b | |||
5150166336 | |||
d0d9c249de | |||
2d9ed18668 | |||
a1af8b94fd | |||
0539efc8df | |||
059c729da0 | |||
2d0e84469e | |||
59559d5fc2 | |||
c062be25d6 | |||
e5cfdf9f48 | |||
6db9f51bda | |||
8cefd91933 | |||
435d9ed750 | |||
78d6ccd804 | |||
f662864ada |
@ -17,6 +17,8 @@ variables:
|
||||
check_commit_log:
|
||||
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
|
||||
stage: review
|
||||
variables:
|
||||
GIT_DEPTH: "100"
|
||||
script:
|
||||
- ./.gitlab-ci/check-commit-log.sh
|
||||
only:
|
||||
|
@ -17,15 +17,19 @@ if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
|
||||
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||
|
||||
echo Looking for $merge_request_branch on remote ...
|
||||
if git fetch $merge_request_remote $merge_request_branch >/dev/null 2>&1; then
|
||||
if git fetch -q $merge_request_remote $merge_request_branch 2>/dev/null; then
|
||||
mutter_target=FETCH_HEAD
|
||||
else
|
||||
mutter_target=origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
echo Using $mutter_target instead
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$mutter_target" ]; then
|
||||
mutter_target=$(git branch -r -l $shell_branch)
|
||||
mutter_target=$(git branch -r -l origin/$shell_branch)
|
||||
mutter_target=${mutter_target:-$(git branch -r -l ${shell_branch#remotes/})}
|
||||
mutter_target=${mutter_target:-origin/master}
|
||||
echo Using $mutter_target instead
|
||||
fi
|
||||
|
||||
git checkout $mutter_target
|
||||
git checkout -q $mutter_target
|
||||
|
19
NEWS
19
NEWS
@ -1,3 +1,22 @@
|
||||
3.32.2
|
||||
======
|
||||
* Fix tablet button mapping overlay [Carlos; #1220]
|
||||
* Fix ellipsization in dialog subtitles/bodies [Marco; !531]
|
||||
* Don't crash for world clock locations with no timezone<Paste> [Florian; #1062]
|
||||
* Handle network interface name changes [Fabrice; !534]
|
||||
* Don't leak old on-screen keyboard layout groups [Carlos; mutter#556]
|
||||
* Avoid unnecessary style changes when computing :first/:last-child
|
||||
[Florian; !529]
|
||||
* Misc. bug fixes [Simon, Carlos, Florian; #822, !551, !509,
|
||||
!511, #1054, !506, #1065]
|
||||
|
||||
Contributors:
|
||||
Fabrice Bellet, Carlos Garnacho, Simon McVittie, Florian Müllner,
|
||||
Marco Trevisan (Treviño)
|
||||
|
||||
Translators:
|
||||
Dingzhong Chen [zh_CN], Tim Sabsch [de]
|
||||
|
||||
3.32.1
|
||||
======
|
||||
* Fix avatar scaling on login screen [Florian; #1024]
|
||||
|
@ -118,7 +118,7 @@ var WorldClocksSection = class WorldClocksSection {
|
||||
if (!clocks[i].location)
|
||||
continue;
|
||||
let l = world.deserialize(clocks[i].location);
|
||||
if (l)
|
||||
if (l && l.get_timezone() != null)
|
||||
this._locations.push({ location: l });
|
||||
}
|
||||
|
||||
|
@ -175,7 +175,7 @@ var MessageDialogContent = GObject.registerClass({
|
||||
this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
|
||||
});
|
||||
|
||||
let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE,
|
||||
let textProps = { ellipsize: Pango.EllipsizeMode.NONE,
|
||||
line_wrap: true };
|
||||
Object.assign(this._subtitle.clutter_text, textProps);
|
||||
Object.assign(this._body.clutter_text, textProps);
|
||||
|
@ -1470,7 +1470,12 @@ var Keyboard = class Keyboard {
|
||||
}
|
||||
|
||||
_onKeyboardGroupsChanged(keyboard) {
|
||||
this._groups = [];
|
||||
let nonGroupActors = [this._emojiSelection.actor, this._keypad.actor];
|
||||
this._aspectContainer.get_children().filter(c => !nonGroupActors.includes(c)).forEach(c => {
|
||||
c.destroy();
|
||||
});
|
||||
|
||||
this._groups = {};
|
||||
this._onGroupChanged();
|
||||
}
|
||||
|
||||
|
@ -369,17 +369,15 @@ class DashSpacer extends St.Widget {
|
||||
}
|
||||
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
let box = this.get_allocation_box();
|
||||
let minWidth = super.vfunc_get_preferred_width(forHeight)[0];
|
||||
let natWidth = box.x2 - box.x1;
|
||||
return [minWidth, natWidth];
|
||||
if (this._bindConstraint)
|
||||
return this._bindConstraint.source.get_preferred_width(forHeight);
|
||||
return super.vfunc_get_preferred_width(forHeight);
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
let box = this.get_allocation_box();
|
||||
let minHeight = super.vfunc_get_preferred_height(forWidth)[0];
|
||||
let natHeight = box.y2 - box.y1;
|
||||
return [minHeight, natHeight];
|
||||
if (this._bindConstraint)
|
||||
return this._bindConstraint.source.get_preferred_height(forWidth);
|
||||
return super.vfunc_get_preferred_height(forWidth);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -374,12 +374,12 @@ var PadDiagram = GObject.registerClass({
|
||||
svgData += this._cssString();
|
||||
svgData += this._wrappingSvgFooter();
|
||||
|
||||
let handle = new Rsvg.Handle();
|
||||
handle.set_base_uri(GLib.path_get_dirname(this._imagePath));
|
||||
handle.write(svgData);
|
||||
handle.close();
|
||||
let istream = new Gio.MemoryInputStream();
|
||||
istream.add_bytes(new GLib.Bytes(svgData));
|
||||
|
||||
return handle;
|
||||
return Rsvg.Handle.new_from_stream_sync(istream,
|
||||
Gio.File.new_for_path(this._imagePath),
|
||||
0, null);
|
||||
}
|
||||
|
||||
_updateDiagramScale() {
|
||||
|
@ -882,7 +882,7 @@ class Panel extends St.Widget {
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
super.vfunc_allocate(box, flags);
|
||||
this.set_allocation(box, flags);
|
||||
|
||||
let allocWidth = box.x2 - box.x1;
|
||||
let allocHeight = box.y2 - box.y1;
|
||||
|
@ -1730,14 +1730,24 @@ var NMApplet = class extends PanelMenu.SystemIndicator {
|
||||
this._addDeviceWrapper(wrapper);
|
||||
|
||||
this._nmDevices.push(device);
|
||||
if (!skipSyncDeviceNames)
|
||||
this._syncDeviceNames();
|
||||
this._deviceChanged(device, skipSyncDeviceNames);
|
||||
|
||||
if (wrapper instanceof NMConnectionSection) {
|
||||
this._connections.forEach(connection => {
|
||||
wrapper.checkConnection(connection);
|
||||
});
|
||||
}
|
||||
device.connect('notify::interface', () => {
|
||||
this._deviceChanged(device, false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_deviceChanged(device, skipSyncDeviceNames) {
|
||||
let wrapper = device._delegate;
|
||||
|
||||
if (!skipSyncDeviceNames)
|
||||
this._syncDeviceNames();
|
||||
|
||||
if (wrapper instanceof NMConnectionSection) {
|
||||
this._connections.forEach(connection => {
|
||||
wrapper.checkConnection(connection);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -479,12 +479,12 @@ var WorkspacesDisplay = class {
|
||||
this.actor.connect('notify::mapped', () => {
|
||||
switchGesture.enabled = this.actor.mapped;
|
||||
});
|
||||
switchGesture.enabled = this.actor.mapped;
|
||||
|
||||
this._primaryIndex = Main.layoutManager.primaryIndex;
|
||||
|
||||
this._workspacesViews = [];
|
||||
this._primaryScrollAdjustment = null;
|
||||
switchGesture.enabled = this.actor.mapped;
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: MUTTER_SCHEMA });
|
||||
this._settings.connect('changed::workspaces-only-on-primary',
|
||||
|
@ -1,5 +1,5 @@
|
||||
project('gnome-shell', 'c',
|
||||
version: '3.32.1',
|
||||
version: '3.32.2',
|
||||
meson_version: '>= 0.47.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
|
128
po/de.po
128
po/de.po
@ -16,14 +16,14 @@
|
||||
# Benjamin Steinwender <b@stbe.at>, 2013-2014.
|
||||
# Bernd Homuth <dev@hmt.im>, 2014-2015, 2016, 2019.
|
||||
# Franco Della-Monica <franco.della.monica@gmail.com>, 2016.
|
||||
# Tim Sabsch <tim@sabsch.com>, 2018.
|
||||
# Tim Sabsch <tim@sabsch.com>, 2018-2019.
|
||||
#
|
||||
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: 2019-03-02 19:56+0000\n"
|
||||
"PO-Revision-Date: 2019-03-02 21:13+0100\n"
|
||||
"POT-Creation-Date: 2019-05-08 10:16+0000\n"
|
||||
"PO-Revision-Date: 2019-05-12 12:36+0200\n"
|
||||
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: de\n"
|
||||
@ -390,11 +390,6 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Netzwerkanmeldung"
|
||||
|
||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9
|
||||
msgid "network-workgroup"
|
||||
msgstr "network-workgroup"
|
||||
|
||||
#: js/extensionPrefs/main.js:116
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Etwas ist schiefgelaufen"
|
||||
@ -542,7 +537,7 @@ msgstr "abmelden;verlassen"
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "In Bereitschaft versetzen"
|
||||
msgstr "Bereitschaft"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:112
|
||||
@ -762,12 +757,12 @@ msgstr "Zu Favoriten hinzufügen"
|
||||
msgid "Show Details"
|
||||
msgstr "Details anzeigen"
|
||||
|
||||
#: js/ui/appFavorites.js:141
|
||||
#: js/ui/appFavorites.js:149
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
|
||||
|
||||
#: js/ui/appFavorites.js:175
|
||||
#: js/ui/appFavorites.js:183
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s wurde aus Ihren Favoriten entfernt"
|
||||
@ -1053,7 +1048,7 @@ msgstr "Passwort der mobilen Breitbandverbindung"
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
|
||||
|
||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1665
|
||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
|
||||
msgid "Network Manager"
|
||||
msgstr "Netzwerk-Verwaltung"
|
||||
|
||||
@ -1125,23 +1120,23 @@ msgstr "Weltuhren hinzufügen …"
|
||||
msgid "World Clocks"
|
||||
msgstr "Weltuhren"
|
||||
|
||||
#: js/ui/dateMenu.js:222
|
||||
#: js/ui/dateMenu.js:228
|
||||
msgid "Weather"
|
||||
msgstr "Wetter"
|
||||
|
||||
#: js/ui/dateMenu.js:305
|
||||
#: js/ui/dateMenu.js:311
|
||||
msgid "Select a location…"
|
||||
msgstr "Ort auswählen …"
|
||||
|
||||
#: js/ui/dateMenu.js:313
|
||||
#: js/ui/dateMenu.js:319
|
||||
msgid "Loading…"
|
||||
msgstr "Wird geladen …"
|
||||
|
||||
#: js/ui/dateMenu.js:323
|
||||
#: js/ui/dateMenu.js:329
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Gehen Sie Online, um Wetterinformationen beziehen zu können"
|
||||
|
||||
#: js/ui/dateMenu.js:325
|
||||
#: js/ui/dateMenu.js:331
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Wetterinformationen sind momentan nicht verfügbar"
|
||||
|
||||
@ -1304,26 +1299,26 @@ msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
||||
|
||||
#. Translators: %s is an application name like "Settings"
|
||||
#: js/ui/inhibitShortcutsDialog.js:50
|
||||
#: js/ui/inhibitShortcutsDialog.js:78
|
||||
#, javascript-format
|
||||
msgid "%s wants to inhibit shortcuts"
|
||||
msgstr "%s möchte Tastenkombinationen sperren"
|
||||
|
||||
#: js/ui/inhibitShortcutsDialog.js:51
|
||||
#: js/ui/inhibitShortcutsDialog.js:79
|
||||
msgid "Application wants to inhibit shortcuts"
|
||||
msgstr "Die Anwendung möchte Tastenkombinationen sperren"
|
||||
|
||||
#. Translators: %s is a keyboard shortcut like "Super+x"
|
||||
#: js/ui/inhibitShortcutsDialog.js:60
|
||||
#: js/ui/inhibitShortcutsDialog.js:88
|
||||
#, javascript-format
|
||||
msgid "You can restore shortcuts by pressing %s."
|
||||
msgstr "Sie können Tastenkombinationen durch Drücken von %s wiederherstellen."
|
||||
|
||||
#: js/ui/inhibitShortcutsDialog.js:65
|
||||
#: js/ui/inhibitShortcutsDialog.js:93
|
||||
msgid "Deny"
|
||||
msgstr "Ablehnen"
|
||||
|
||||
#: js/ui/inhibitShortcutsDialog.js:71
|
||||
#: js/ui/inhibitShortcutsDialog.js:100
|
||||
msgid "Allow"
|
||||
msgstr "Zulassen"
|
||||
|
||||
@ -1376,13 +1371,13 @@ msgid "Leave On"
|
||||
msgstr "Eingeschaltet lassen"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
||||
#: js/ui/status/network.js:1264
|
||||
#: js/ui/status/network.js:1263
|
||||
msgid "Turn On"
|
||||
msgstr "Einschalten"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
||||
#: js/ui/status/network.js:128 js/ui/status/network.js:310
|
||||
#: js/ui/status/network.js:1264 js/ui/status/network.js:1376
|
||||
#: js/ui/status/network.js:1263 js/ui/status/network.js:1375
|
||||
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
||||
#: js/ui/status/rfkill.js:106
|
||||
msgid "Turn Off"
|
||||
@ -1392,7 +1387,7 @@ msgstr "Ausschalten"
|
||||
msgid "Leave Off"
|
||||
msgstr "Ausgeschaltet lassen"
|
||||
|
||||
#: js/ui/keyboard.js:203
|
||||
#: js/ui/keyboard.js:200
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Regions- und Spracheinstellungen"
|
||||
|
||||
@ -1444,7 +1439,7 @@ msgstr "Quelle zeigen"
|
||||
msgid "Web Page"
|
||||
msgstr "Webseite"
|
||||
|
||||
#: js/ui/messageTray.js:1474
|
||||
#: js/ui/messageTray.js:1480
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformationen"
|
||||
|
||||
@ -1528,11 +1523,11 @@ msgstr "Beenden"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:471
|
||||
#: js/ui/panel.js:470
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitäten"
|
||||
|
||||
#: js/ui/panel.js:746
|
||||
#: js/ui/panel.js:745
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
@ -1541,15 +1536,6 @@ msgstr "System"
|
||||
msgid "Top Bar"
|
||||
msgstr "Oberes Panel"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "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:285
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:64
|
||||
msgid "Enter a Command"
|
||||
msgstr "Bitte geben Sie einen Befehl ein"
|
||||
@ -1589,7 +1575,7 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d neue Benachrichtigung"
|
||||
msgstr[1] "%d neue Benachrichtigungen"
|
||||
|
||||
#: js/ui/screenShield.js:449 js/ui/status/system.js:270
|
||||
#: js/ui/screenShield.js:449 js/ui/status/system.js:271
|
||||
msgid "Lock"
|
||||
msgstr "Sperren"
|
||||
|
||||
@ -1604,11 +1590,11 @@ msgstr "GNOME muss den Bildschirm sperren"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:834 js/ui/screenShield.js:1307
|
||||
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1299
|
||||
msgid "Unable to lock"
|
||||
msgstr "Sperrung fehlgeschlagen"
|
||||
|
||||
#: js/ui/screenShield.js:835 js/ui/screenShield.js:1308
|
||||
#: js/ui/screenShield.js:827 js/ui/screenShield.js:1300
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Sperrung wurde von einer Anwendung blockiert"
|
||||
|
||||
@ -1772,7 +1758,7 @@ msgid "<unknown>"
|
||||
msgstr "<Unbekannt>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1293
|
||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s ausgeschaltet"
|
||||
@ -1798,7 +1784,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "%s wird getrennt"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1285
|
||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "%s wird verbunden"
|
||||
@ -1838,7 +1824,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Einstellungen der mobilen Breitbandverbindung"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1290
|
||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s-Hardware ausgeschaltet"
|
||||
@ -1910,72 +1896,72 @@ msgid "Wi-Fi Settings"
|
||||
msgstr "Drahtlosnetzwerk-Einstellungen"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1280
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "Hotspot %s eingeschaltet"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1296
|
||||
#: js/ui/status/network.js:1295
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s nicht verbunden"
|
||||
|
||||
#: js/ui/status/network.js:1393
|
||||
#: js/ui/status/network.js:1392
|
||||
msgid "connecting…"
|
||||
msgstr "Verbindungsaufbau …"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1395
|
||||
msgid "authentication required"
|
||||
msgstr "Anmeldung erforderlich"
|
||||
|
||||
#: js/ui/status/network.js:1398
|
||||
#: js/ui/status/network.js:1397
|
||||
msgid "connection failed"
|
||||
msgstr "Verbindung gescheitert"
|
||||
|
||||
#: js/ui/status/network.js:1448
|
||||
#: js/ui/status/network.js:1447
|
||||
msgid "VPN Settings"
|
||||
msgstr "VPN-Einstellungen"
|
||||
|
||||
#: js/ui/status/network.js:1465
|
||||
#: js/ui/status/network.js:1464
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1475
|
||||
#: js/ui/status/network.js:1474
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN ausgeschaltet"
|
||||
|
||||
#: js/ui/status/network.js:1536 js/ui/status/rfkill.js:82
|
||||
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
|
||||
msgid "Network Settings"
|
||||
msgstr "Netzwerkeinstellungen"
|
||||
|
||||
#: js/ui/status/network.js:1565
|
||||
#: js/ui/status/network.js:1564
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s Kabelverbindung"
|
||||
msgstr[1] "%s Kabelverbindungen"
|
||||
|
||||
#: js/ui/status/network.js:1569
|
||||
#: js/ui/status/network.js:1568
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s Funknetzwerkverbindung"
|
||||
msgstr[1] "%s Funknetzwerkverbindungen"
|
||||
|
||||
#: js/ui/status/network.js:1573
|
||||
#: js/ui/status/network.js:1572
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s Modem-Verbindung"
|
||||
msgstr[1] "%s Modem-Verbindungen"
|
||||
|
||||
#: js/ui/status/network.js:1702
|
||||
#: js/ui/status/network.js:1705
|
||||
msgid "Connection failed"
|
||||
msgstr "Verbindung gescheitert"
|
||||
|
||||
#: js/ui/status/network.js:1703
|
||||
#: js/ui/status/network.js:1706
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
|
||||
|
||||
@ -2057,15 +2043,15 @@ msgstr "Abmelden"
|
||||
msgid "Account Settings"
|
||||
msgstr "Kontoeinstellungen"
|
||||
|
||||
#: js/ui/status/system.js:255
|
||||
#: js/ui/status/system.js:256
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Hoch-/Querformats-Fixierung"
|
||||
|
||||
#: js/ui/status/system.js:281
|
||||
#: js/ui/status/system.js:282
|
||||
msgid "Suspend"
|
||||
msgstr "In Bereitschaft versetzen"
|
||||
msgstr "Bereitschaft"
|
||||
|
||||
#: js/ui/status/system.js:291
|
||||
#: js/ui/status/system.js:292
|
||||
msgid "Power Off"
|
||||
msgstr "Ausschalten"
|
||||
|
||||
@ -2183,7 +2169,7 @@ msgstr[1] ""
|
||||
|
||||
#. 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:662
|
||||
#: js/ui/windowManager.js:677
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2256,11 +2242,6 @@ msgstr "Auf den Bildschirm nach rechts verschieben"
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Evolution-Kalender"
|
||||
|
||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||
#: src/calendar-server/evolution-calendar.desktop.in:6
|
||||
msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
#: src/main.c:408
|
||||
msgid "Print version"
|
||||
msgstr "Version ausgeben"
|
||||
@ -2279,12 +2260,12 @@ msgstr ""
|
||||
msgid "List possible modes"
|
||||
msgstr "Die möglichen Modi auflisten"
|
||||
|
||||
#: src/shell-app.c:260
|
||||
#: src/shell-app.c:264
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:515
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "»%s« konnte nicht gestartet werden"
|
||||
@ -2323,6 +2304,15 @@ msgstr[1] "%u Eingänge"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systemklänge"
|
||||
|
||||
#~ msgid "network-workgroup"
|
||||
#~ msgstr "network-workgroup"
|
||||
|
||||
#~ msgid "toggle-switch-us"
|
||||
#~ msgstr "toggle-switch-intl"
|
||||
|
||||
#~ msgid "evolution"
|
||||
#~ msgstr "evolution"
|
||||
|
||||
#~ msgid "There was an error loading the preferences dialog for %s:"
|
||||
#~ msgstr ""
|
||||
#~ "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:"
|
||||
|
1083
po/zh_CN.po
1083
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
@ -1069,9 +1069,9 @@ _shell_app_add_window (ShellApp *app,
|
||||
|
||||
app->running_state->window_sort_stale = TRUE;
|
||||
app->running_state->windows = g_slist_prepend (app->running_state->windows, g_object_ref (window));
|
||||
g_signal_connect (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app);
|
||||
g_signal_connect (window, "notify::user-time", G_CALLBACK(shell_app_on_user_time_changed), app);
|
||||
g_signal_connect (window, "notify::skip-taskbar", G_CALLBACK(shell_app_on_skip_taskbar_changed), app);
|
||||
g_signal_connect_object (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app, 0);
|
||||
g_signal_connect_object (window, "notify::user-time", G_CALLBACK(shell_app_on_user_time_changed), app, 0);
|
||||
g_signal_connect_object (window, "notify::skip-taskbar", G_CALLBACK(shell_app_on_skip_taskbar_changed), app, 0);
|
||||
|
||||
shell_app_update_app_actions (app, window);
|
||||
shell_app_ensure_busy_watch (app);
|
||||
|
@ -65,6 +65,8 @@ struct _StWidgetPrivate
|
||||
StThemeNodeTransition *transition_animation;
|
||||
|
||||
guint is_style_dirty : 1;
|
||||
guint first_child_dirty : 1;
|
||||
guint last_child_dirty : 1;
|
||||
guint draw_bg_color : 1;
|
||||
guint draw_border_internal : 1;
|
||||
guint track_hover : 1;
|
||||
@ -72,6 +74,7 @@ struct _StWidgetPrivate
|
||||
guint can_focus : 1;
|
||||
|
||||
gulong texture_file_changed_id;
|
||||
guint update_child_styles_id;
|
||||
|
||||
AtkObject *accessible;
|
||||
AtkRole accessible_role;
|
||||
@ -323,6 +326,8 @@ st_widget_dispose (GObject *gobject)
|
||||
g_clear_object (&priv->last_visible_child);
|
||||
|
||||
G_OBJECT_CLASS (st_widget_parent_class)->dispose (gobject);
|
||||
|
||||
g_clear_handle_id (&priv->update_child_styles_id, g_source_remove);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1608,47 +1613,85 @@ find_nearest_visible_forward (ClutterActor *actor)
|
||||
return next;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
st_widget_update_child_styles (StWidget *widget)
|
||||
{
|
||||
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
|
||||
|
||||
if (priv->first_child_dirty)
|
||||
{
|
||||
ClutterActor *first_child;
|
||||
|
||||
priv->first_child_dirty = FALSE;
|
||||
|
||||
first_child = clutter_actor_get_first_child (CLUTTER_ACTOR (widget));
|
||||
st_widget_set_first_visible_child (widget,
|
||||
find_nearest_visible_forward (first_child));
|
||||
}
|
||||
|
||||
if (priv->last_child_dirty)
|
||||
{
|
||||
ClutterActor *last_child;
|
||||
|
||||
priv->last_child_dirty = FALSE;
|
||||
|
||||
last_child = clutter_actor_get_last_child (CLUTTER_ACTOR (widget));
|
||||
st_widget_set_last_visible_child (widget,
|
||||
find_nearest_visible_backwards (last_child));
|
||||
}
|
||||
|
||||
priv->update_child_styles_id = 0;
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
static void
|
||||
st_widget_queue_child_styles_update (StWidget *widget)
|
||||
{
|
||||
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
|
||||
|
||||
if (priv->update_child_styles_id != 0)
|
||||
return;
|
||||
|
||||
priv->update_child_styles_id = g_idle_add ((GSourceFunc) st_widget_update_child_styles, widget);
|
||||
}
|
||||
|
||||
static void
|
||||
st_widget_visible_notify (StWidget *widget,
|
||||
GParamSpec *pspec,
|
||||
gpointer data)
|
||||
{
|
||||
StWidgetPrivate *parent_priv;
|
||||
ClutterActor *actor = CLUTTER_ACTOR (widget);
|
||||
ClutterActor *parent = clutter_actor_get_parent (actor);
|
||||
|
||||
if (parent == NULL || !ST_IS_WIDGET (parent))
|
||||
return;
|
||||
|
||||
parent_priv = st_widget_get_instance_private (ST_WIDGET (parent));
|
||||
|
||||
if (clutter_actor_is_visible (actor))
|
||||
{
|
||||
ClutterActor *before, *after;
|
||||
|
||||
before = clutter_actor_get_previous_sibling (actor);
|
||||
if (find_nearest_visible_backwards (before) == NULL)
|
||||
st_widget_set_first_visible_child (ST_WIDGET (parent), actor);
|
||||
parent_priv->first_child_dirty = TRUE;
|
||||
|
||||
after = clutter_actor_get_next_sibling (actor);
|
||||
if (find_nearest_visible_forward (after) == NULL)
|
||||
st_widget_set_last_visible_child (ST_WIDGET (parent), actor);
|
||||
parent_priv->last_child_dirty = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (st_widget_has_style_pseudo_class (widget, "first-child"))
|
||||
{
|
||||
ClutterActor *new_first;
|
||||
|
||||
new_first = find_nearest_visible_forward (CLUTTER_ACTOR (widget));
|
||||
st_widget_set_first_visible_child (ST_WIDGET (parent), new_first);
|
||||
}
|
||||
parent_priv->first_child_dirty = TRUE;
|
||||
|
||||
if (st_widget_has_style_pseudo_class (widget, "last-child"))
|
||||
{
|
||||
ClutterActor *new_last;
|
||||
|
||||
new_last = find_nearest_visible_backwards (CLUTTER_ACTOR (widget));
|
||||
st_widget_set_last_visible_child (ST_WIDGET (parent), new_last);
|
||||
}
|
||||
parent_priv->last_child_dirty = TRUE;
|
||||
}
|
||||
|
||||
if (parent_priv->first_child_dirty || parent_priv->last_child_dirty)
|
||||
st_widget_queue_child_styles_update (ST_WIDGET (parent));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1656,10 +1699,10 @@ st_widget_first_child_notify (StWidget *widget,
|
||||
GParamSpec *pspec,
|
||||
gpointer data)
|
||||
{
|
||||
ClutterActor *first_child;
|
||||
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
|
||||
|
||||
first_child = clutter_actor_get_first_child (CLUTTER_ACTOR (widget));
|
||||
st_widget_set_first_visible_child (widget, find_nearest_visible_forward (first_child));
|
||||
priv->first_child_dirty = TRUE;
|
||||
st_widget_queue_child_styles_update (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1667,10 +1710,10 @@ st_widget_last_child_notify (StWidget *widget,
|
||||
GParamSpec *pspec,
|
||||
gpointer data)
|
||||
{
|
||||
ClutterActor *last_child;
|
||||
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
|
||||
|
||||
last_child = clutter_actor_get_last_child (CLUTTER_ACTOR (widget));
|
||||
st_widget_set_last_visible_child (widget, find_nearest_visible_backwards (last_child));
|
||||
priv->last_child_dirty = TRUE;
|
||||
st_widget_queue_child_styles_update (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user