Compare commits

..

2 Commits

Author SHA1 Message Date
Carlos Garnacho
7f66aede01 keyboard: Fix warnings on destroyed actors
Trying to hide a page gets hard when the page was previouly destroyed.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1281
2019-05-10 00:09:23 +02:00
Carlos Garnacho
bd5a1121d6 keyboard: Rename variable to JS style
This variable has been there since the OSK origins, and nothing guaranteed
the need for renaming it. It's enough of an eye sore though.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1281
2019-05-10 00:08:56 +02:00
108 changed files with 3337 additions and 4592 deletions

View File

@@ -15,7 +15,7 @@ variables:
- merge_requests
check_commit_log:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
stage: review
variables:
GIT_DEPTH: "100"
@@ -40,7 +40,7 @@ js_check:
when: on_failure
build:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/gnome-shell/master:v1
stage: build
before_script:
- .gitlab-ci/checkout-mutter.sh
@@ -58,7 +58,7 @@ build:
- build
test:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/gnome-shell/master:v1
stage: test
before_script:
- ninja -C mutter/build install
@@ -72,7 +72,7 @@ test:
when: on_failure
test-pot:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/gnome-shell/master:v1
stage: test
before_script:
- ninja -C mutter/build install

19
.gitlab-ci/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM registry.gitlab.gnome.org/gnome/mutter/master:v1
RUN dnf -y update && dnf -y upgrade && \
dnf install -y 'dnf-command(copr)' && \
dnf copr enable -y fmuellner/gnome-shell-ci && \
dnf builddep -y gnome-shell --setopt=install_weak_deps=False && \
# bt only exports HAVE_BLUETOOTH to js, rest are outdated build-requires
dnf remove -y gnome-bluetooth-libs-devel dbus-glib-devel \
upower-devel python3-devel && \
# We'll build mutter ourselves
dnf remove -y --noautoremove mutter mutter-devel && \
# Needed for tests
dnf install -y '*/xvfb-run' gdm-lib accountsservice-libs && \
dnf clean all && \
rm -rf /var/cache/dnf

46
NEWS
View File

@@ -1,49 +1,3 @@
3.33.2
======
* Fix keeping actors visible in scrollviews [Marco; #1061]
* Move some chrome above popup windows [Jonas D.; !358]
* Include 'sandboxed-app-id' in winodw introspection info [Florian; #1289]
* Port to libecal-2.0 [Milan; !501]
* Support TCRYPT in mount password dialog [segfault; !126]
* Misc. bug fixes and cleanups [Florian, Marco, Veerasamy; !517, #745, !499,
!510, !515, !546, !549]
Contributors:
Cosimo Cecchi, Milan Crha, Jonas Dreßler, Florian Müllner, segfault,
Veerasamy Sevagen, Marco Trevisan (Treviño)
Translators:
Daniel Mustieles [es]
3.33.1
======
* Refine the app menu [Florian; #968]
* Refine window preview style [Feichtmeier; !461]
* Only emit ::style-changed on actual changes [Carlos; #1153]
* Disable emoji on-screen keyboard support on X11 [Florian; #1172]
* Fix tablet button mapping overlay [Carlos; #1220]
* Don't crash for world clock locations with no timezone [Florian; #1062]
* Don't leak old on-screen keyboard layout groups [Carlos; mutter#556]
* Fix ellipsization in dialog subtitles/bodies [Marco; !531]
* Fix glitch of fullscreen window in workspace switch animation [Jonas D.; !322]
* Fix distortion of some image contents [Florian; !525]
* Allow dragging unfocused tiled/maximized windows from top bar [Dylan; #679290]
* Handle network interface name changes [Fabrice; !534]
* Avoid unnecessary style changes when computing :first/:last-child
[Florian; !529]
* Misc. bug fixes and cleanups [Florian, Marco, Robert, Georges, Carlos, Simon,
Jonas D.; !487, !441, !502, !503, !504, !506, #822, !551, !512, !509, !511,
#1054, !524, #1065, !331, !540]
Contributors:
Fabrice Bellet, Jonas Dreßler, Feichtmeier, Carlos Garnacho, Robert Mader,
Dylan McCall, Simon McVittie, Florian Müllner, Georges Basile Stavracas Neto,
Marco Trevisan (Treviño)
Translators:
Daniel Mustieles [es], Kukuh Syafaat [id], Fabio Tomat [fur],
Carmen Bianca BAKKER [eo], Dingzhong Chen [zh_CN], Tim Sabsch [de]
3.32.1
======
* Fix avatar scaling on login screen [Florian; #1024]

View File

@@ -20,16 +20,10 @@
<file>no-notifications.svg</file>
<file>noise-texture.png</file>
<file>pad-osd.css</file>
<file alias="icons/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
<file alias="icons/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
<file alias="icons/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
<file alias="icons/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
<file>process-working.svg</file>
<file>toggle-off.svg</file>
<file>toggle-off-dark.svg</file>
<file>toggle-off-intl.svg</file>
<file>toggle-off-hc.svg</file>
<file>toggle-on.svg</file>
<file>toggle-on-dark.svg</file>
<file>toggle-on-intl.svg</file>
<file>toggle-on-hc.svg</file>
</gresource>
</gresources>

View File

@@ -1,5 +1,3 @@
$variant: 'light';
@import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors
@import "gnome-shell-sass/_drawing";
@import "gnome-shell-sass/_common";

View File

@@ -3,11 +3,11 @@
$base_color: if($variant == 'light', #ffffff, lighten(desaturate(#241f31, 20%), 2%));
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
$bg_color: if($variant == 'light', #f6f5f4, desaturate(#3d3846, 10%));
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
$selected_fg_color: #ffffff;
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 20%));
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 10%));
$borders_edge: if($variant == 'light', transparentize(white, 0.2), transparentize($fg_color, 0.93));
@@ -21,15 +21,11 @@ $success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
$destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
$osd_fg_color: #eeeeec;
$osd_text_color: white;
$osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
$osd_bg_color: #2e3436;
$osd_borders_color: transparentize(black, 0.3);
$osd_outer_borders_color: transparentize(white, 0.84);
$osd_outer_borders_color: transparentize(white, 0.9);
$tooltip_borders_color: $osd_outer_borders_color;
$shadow_color: transparentize(black, 0.9);
//insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);

View File

@@ -4,6 +4,8 @@
$cakeisalie: "This stylesheet is generated, DO NOT EDIT";
/* #{$cakeisalie} */
$panel-corner-radius: 6px;
/* Copyright 2009, 2015 Red Hat, Inc.
*
* Portions adapted from Mx's data/style/default.css
@@ -23,18 +25,13 @@ $cakeisalie: "This stylesheet is generated, DO NOT EDIT";
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* GLOBALS */
$panel-corner-radius: 6px;
$medium_radius: 9px;
$_trough_color: transparentize($fg_color, 0.9);
$_bubble_borders_color: lighten($borders_color, if($variant=='light', 0%, 5%));
$_hover_bg_color: lighten($bg_color,if($variant=='light', 5%, 3%));
$_active_bg_color: if($variant == 'light', darken($bg_color, 14%), darken($bg_color, 9%));
$font-size: 11;
$font-family: Cantarell, Sans-Serif;
$_bubble_bg_color: opacify($osd_bg_color,0.25);
$_bubble_fg_color: $osd_fg_color;
$_bubble_borders_color: transparentize($osd_fg_color,0.8);
stage {
font-family: $font-family;
@@ -45,44 +42,42 @@ stage {
/* WIDGETS */
/* Buttons */
.button, %button {
border-radius: 5px;
.button {
border-radius: 3px;
border-width: 1px;
min-height: 22px;
padding: 4px 32px;
@include button(normal);
&:focus { @include button(focus, $c:$_hover_bg_color, $tc:$fg_color); }
&:hover { @include button(hover, $c:$_hover_bg_color, $tc:$fg_color); }
&:focus { @include button(focus); }
&:hover { @include button(hover); }
&:insensitive { @include button(insensitive); }
&:active { @include button(active, $c:$_active_bg_color, $tc:$fg_color); }
&:active { @include button(active); }
}
.modal-dialog-linked-button, %bubble_button {
.modal-dialog-linked-button {
border-right-width: 1px;
@include button(normal, $c:$bg_color, $tc:$fg_color);
&:insensitive { @include button(insensitive, $c:$bg_color, $tc:$fg_color); }
&:hover { @include button(hover, $c:$_hover_bg_color, $tc:$fg_color); }
&:focus { @include button(focus, $c:$_hover_bg_color, $tc:$fg_color); }
&:active { @include button(active, $c:$_active_bg_color, $tc:$fg_color); }
@include button(normal);
&:insensitive { @include button(insensitive); }
&:hover { @include button(hover); }
&:focus { @include button(focus); }
&:active { @include button(active); }
padding: 12px;
border-top: 1px solid $_bubble_borders_color;
&:first-child {
border-radius: 0px 0px 0px $medium_radius;
border-radius: 0px 0px 0px 6px;
}
&:last-child {
border-right-width: 0px;
border-radius: 0px 0px $medium_radius 0px;
border-radius: 0px 0px 6px 0px;
}
&:first-child:last-child {
border-right-width: 0px;
border-radius: 0px 0px $medium_radius $medium_radius;
border-radius: 0px 0px 6px 6px;
}
}
/* Entries */
StEntry {
border-radius: 5px;
border-radius: 3px;
padding: 4px;
border-width: 1px;
color: $fg_color;
@@ -135,21 +130,15 @@ StScrollBar {
.slider {
height: 1em;
-barlevel-height: 0.3em;
-barlevel-background-color: transparentize($fg_color, 0.9); //background of the trough
-barlevel-background-color: $insensitive_bg_color; //background of the trough
-barlevel-border-color: $borders_color; //trough border color
-barlevel-active-background-color: $selected_bg_color; //active trough fill
-barlevel-active-border-color: $selected_borders_color; //active trough border
-barlevel-active-border-color: darken($selected_bg_color,10%); //active trough border
-barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-border-color: darken($destructive_color,10%);
-barlevel-overdrive-separator-width: 0.2em;
-barlevel-border-width: 1px;
-slider-handle-radius: 8px;
-slider-handle-border-width: 1px;
-slider-handle-border-color: $borders_color;
color: $bg_color; /* FIXME to match gtk, we'd need to style the border of the slider, not
the whole widget */
&:hover { color: $_hover_bg_color; }
&:active { color: $_active_bg_color; }
-slider-handle-radius: 6px;
}
/* Check Boxes */
@@ -168,16 +157,11 @@ StScrollBar {
/* Switches */
.toggle-switch {
color: $fg_color;
width: 46px;
height: 22px;
background-size: contain;
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off.svg"),
url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
&:checked {
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on.svg"),
url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
}
background-image: url("resource:///org/gnome/shell/theme/toggle-off-intl.svg");
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-intl.svg"); }
}
/* links */
@@ -194,7 +178,9 @@ StScrollBar {
.modal-dialog {
border-radius: 9px;
@extend %bubble-panel;
color: $osd_fg_color;
background-color: transparentize(darken($osd_bg_color,10%),0.05);
border: 1px solid $_bubble_borders_color;
.modal-dialog-content-box {
padding: 24px;
}
@@ -206,8 +192,8 @@ StScrollBar {
.run-dialog-button-box { padding-top: 1em; }
.run-dialog-label {
@include fontsize($font-size + 1.1);
font-weight: normal;
color: $fg_color;
font-weight: bold;
color: darken($osd_fg_color,10%);
padding-bottom: .4em;
}
@@ -239,7 +225,7 @@ StScrollBar {
}
.message-dialog-subtitle {
color: $fg_color;
color: darken($fg_color,40%);
font-weight: bold;
}
@@ -362,7 +348,7 @@ StScrollBar {
}
.mount-dialog-app-list-item {
color: lighten($fg_color,10%);
color: darken($fg_color,10%);
&:hover { color: $fg_color; }
&:ltr { padding-right: 1em; }
&:rtl { padding-left: 1em; }
@@ -381,13 +367,13 @@ StScrollBar {
/* Password or Authentication Dialog */
.prompt-dialog {
@extend %bubble-panel;
//this is the width of the entire modal popup
width: 34em;
border: 3px solid $_bubble_borders_color;
.message-dialog-main-layout { spacing: 24px; padding: 10px; }
.message-dialog-content { spacing: 16px; }
.message-dialog-title { color: lighten($fg_color,15%); }
.message-dialog-title { color: darken($osd_fg_color,25%); }
}
.prompt-dialog-description:rtl {
@@ -419,23 +405,6 @@ StScrollBar {
padding-bottom: 8px;
}
.prompt-dialog-pim-box {
spacing: 1em;
}
.prompt-dialog-grid {
spacing-rows: 15px;
spacing-columns: 1em;
}
.prompt-dialog-keyfiles-box {
spacing: 1em;
}
.prompt-dialog-button.button {
padding: 8px;
}
/* Polkit Dialog */
@@ -461,7 +430,6 @@ StScrollBar {
/* Audio selection dialog */
.audio-device-selection-dialog {
@extend %bubble-panel;
spacing: 30px;
}
@@ -482,11 +450,7 @@ StScrollBar {
.audio-selection-device {
border: 1px solid $_bubble_borders_color;
border-radius: 12px;
&:hover,&:focus { background-color: $_hover_bg_color; }
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
&:active,&:hover,&:focus { background-color: $selected_bg_color; }
}
.audio-selection-device-box {
@@ -500,26 +464,22 @@ StScrollBar {
/* Access Dialog */
.access-dialog {
@extend %bubble-panel;
spacing: 30px;
}
/* Geolocation Dialog */
.geolocation-dialog {
@extend %bubble-panel;
spacing: 30px;
}
/* Extension Dialog */
.extension-dialog {
@extend %bubble-panel;
.message-dialog-main-layout { spacing: 24px; padding: 10px; }
.message-dialog-title { font-weight: normal; color: $fg_color; }
.message-dialog-title { color: darken($osd_fg_color,25%); }
}
/* Inhibit-Shortcuts Dialog */
.inhibit-shortcuts-dialog {
@extend %bubble-panel;
spacing: 30px;
}
@@ -539,13 +499,12 @@ StScrollBar {
.popup-menu {
min-width: 15em;
color: $fg_color;
border-color: $_bubble_borders_color;
.popup-menu-arrow { } //defined globally in the TOP BAR
.popup-sub-menu {
background-color: darken($bg_color,5%);
box-shadow: inset 0 -1px 0px $_bubble_borders_color;
padding-bottom: 1px;
background-color: darken($bg_color,2%);
box-shadow: inset 0 -1px 0px lighten($borders_color,5%);
}
.popup-menu-content { padding: 1em 0em; }
@@ -555,18 +514,12 @@ StScrollBar {
&:ltr { padding: .4em 1.75em .4em 0em; }
&:rtl { padding: .4em 0em .4em 1.75em; }
&:checked {
background-color: $bg_color;
box-shadow: inset 0 -1px 0px $_bubble_borders_color;
background-color: darken($bg_color,2%);
box-shadow: inset 0 1px 0px lighten($borders_color,5%);
font-weight: bold;
}
&.selected {
background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
color: $fg_color;
}
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
&.selected { background-color: transparentize($fg_color,0.9); color: $fg_color; }
&:active { background-color: $selected_bg_color; color: $selected_fg_color; }
&:insensitive { color: transparentize($fg_color,.5); }
}
@@ -590,10 +543,10 @@ StScrollBar {
}
.popup-menu-boxpointer,
.candidate-popup-boxpointer {
-arrow-border-radius: $medium_radius;
-arrow-border-radius: 3px;
-arrow-background-color: $bg_color;
-arrow-border-width: 1px;
-arrow-border-color: if($variant=='light', transparentize(black, 0.6), $borders_color);
-arrow-border-color: $borders_color;
-arrow-base: 24px;
-arrow-rise: 11px;
-arrow-box-shadow: 0 1px 3px black; //dreaming. bug #689995
@@ -604,7 +557,7 @@ StScrollBar {
height: 1px; //not really the whole box
margin: 6px 64px;
background-color: transparent;
border-color: $_bubble_borders_color;
border-color: lighten($borders_color,10%);
border-bottom-width: 1px;
border-bottom-style: solid;
}
@@ -632,7 +585,7 @@ StScrollBar {
.level {
height: 0.6em;
-barlevel-height: 0.6em;
-barlevel-background-color: transparentize($fg_color, if($variant=='light', 0.2, 0.9));
-barlevel-background-color: transparentize(darken($osd_bg_color,15%),0.5);
-barlevel-active-background-color: $osd_fg_color;
-barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-separator-width: 0.2em;
@@ -677,7 +630,7 @@ StScrollBar {
}
.switcher-list .item-box:selected {
background-color: transparentize($osd_fg_color, 0.7);
background-color: $selected_bg_color;
color: $selected_fg_color;
}
@@ -743,43 +696,13 @@ StScrollBar {
}
%osd-panel {
color: $osd_fg_color;
background-color: $osd_bg_color;
border: 1px solid $osd_outer_borders_color;
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
border: 1px solid $_bubble_borders_color;
border-radius: 12px;
padding: 12px;
}
%bubble-entry {
color: $fg_color;
background-color: darken($bg_color, 2%);
border-color: $_bubble_borders_color;
box-shadow: none;
&:focus { border: 2px solid $selected_bg_color; }
}
%bubble-panel {
color: $fg_color;
background-color: $bg_color;
border: 1px solid if($variant=='light', transparentize(black, 0.6), $borders_color);
StEntry { @extend %bubble-entry; }
.button {
&, &:hover, &:focus, &:active, &:disabled {
box-shadow: none;
border-color: $_bubble_borders_color;
}
background-color: $bg_color;
color: $fg_color;
&:hover { background-color: $_hover_bg_color; }
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
&:disabled { color: $insensitive_fg_color; }
}
}
/* Tiled window previews */
.tile-preview {
background-color: transparentize($selected_bg_color,0.5);
@@ -847,7 +770,7 @@ StScrollBar {
}
&:hover {
color: $selected_fg_color;
color: lighten($fg_color, 10%);
}
&:active, &:overview, &:focus, &:checked {
@@ -855,7 +778,7 @@ StScrollBar {
// a box-shadow
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0px lighten($selected_bg_color,5%);
color: $selected_fg_color;
color: lighten($fg_color,10%);
}
.system-status-icon { icon-size: 1.09em; padding: 0 5px; }
@@ -903,7 +826,7 @@ StScrollBar {
.datemenu-displays-box { spacing: 1em; }
.datemenu-calendar-column {
border: 0 solid $_bubble_borders_color;
border: 0 solid lighten($bg_color,5%);
&:ltr { border-left-width: 1px; }
&:rtl { border-right-width: 1px; }
}
@@ -928,8 +851,11 @@ StScrollBar {
.world-clocks-button,
.weather-button,
.events-section-title {
&:hover, focus { background-color: $_hover_bg_color }
&:active { background-color: $_active_bg_color }
&:hover,&:focus { background-color: lighten($bg_color,5%); }
&:active {
color: lighten($selected_fg_color,5%);
background-color: $selected_bg_color;
}
}
.datemenu-today-button .day-label {
@@ -974,7 +900,7 @@ StScrollBar {
}
.world-clocks-timezone {
color: $fg_color;
color: darken($fg_color,40%);
font-feature-settings: "tnum";
font-size: 0.9em;
}
@@ -989,7 +915,7 @@ StScrollBar {
}
.calendar-month-label {
color: lighten($fg_color,5%);
color: darken($fg_color,5%);
font-weight: bold;
padding: 8px 0;
&:focus {}
@@ -999,8 +925,8 @@ StScrollBar {
background-color: transparent;
width: 32px;
border-radius: 4px;
&:hover, focus { background-color: $_hover_bg_color; }
&:active { background-color: transparentize($fg_color, 0.84); }
&:hover, &:focus { background-color: transparentize($fg_color,0.95); }
&:active { background-color: transparentize($bg_color,0.95); }
}
.calendar-change-month-back StIcon, .calendar-change-month-forward StIcon { // arrows
@@ -1015,14 +941,14 @@ StScrollBar {
margin: 2px;
border-radius: 1.4em;
font-feature-settings: "tnum";
&:hover, focus { background-color: $_hover_bg_color; }
&:hover,&:focus { background-color: lighten($bg_color,5%); }
&:active,&:selected {
color: lighten($selected_fg_color,5%);
background-color: $selected_bg_color;
border-color: transparent; //avoid jumparound due to today
}
&.calendar-day-heading { //day of week heading
color: lighten($fg_color,5%);
color: darken($fg_color,40%);
margin-top: 1em;
font-size: 70%;
}
@@ -1042,7 +968,7 @@ StScrollBar {
font-weight: bold;
//color: lighten($fg_color,10%);
//background-color: darken($bg_color,5%);
border: 1px solid $_bubble_borders_color;
border: 1px solid transparentize($borders_color,0.5);
}
.calendar-day-with-events {
color: lighten($fg_color,10%);
@@ -1050,7 +976,7 @@ StScrollBar {
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
}
.calendar-other-month-day {
color: transparentize($fg_color ,0.5);
color: transparentize($fg_color,0.85);
opacity: 0.5;
}
.calendar-week-number {
@@ -1060,8 +986,8 @@ StScrollBar {
border-radius: 2px;
padding: 0.5em 0 0;
margin: 6px;
background-color: $_bubble_borders_color;
color: $fg_color;
background-color: transparentize($fg_color,0.7);
color: $bg_color;
}
/* Message list */
@@ -1070,7 +996,8 @@ StScrollBar {
}
.message-list-clear-button.button {
@extend %button;
background-color: transparent;
&:hover,&:focus { background-color: lighten($bg_color,5%); }
margin: 1.5em 1.5em 0;
}
@@ -1084,11 +1011,8 @@ StScrollBar {
}
.message {
border: 1px solid $_bubble_borders_color;
background-color: lighten($bg_color, 2%);
&:hover,&:focus { background-color: $_hover_bg_color; }
&:active { background-color: transparentize($fg_color, 0.84) }
border-radius: 5px;
&:hover,&:focus { background-color: lighten($bg_color,5%); }
border-radius: 3px;
}
.message-icon-bin {
@@ -1097,7 +1021,7 @@ StScrollBar {
}
.message-icon-bin > StIcon {
color: $fg_color;
color: darken($fg_color,20%);
icon-size: 1.09em;
-st-icon-style: symbolic;
}
@@ -1112,7 +1036,7 @@ StScrollBar {
}
.message-secondary-bin > .event-time {
color: $fg_color;
color: darken($fg_color,40%);
font-size: 0.7em;
/* HACK: the label should be baseline-aligned with a 1em label,
fake this with some bottom padding */
@@ -1124,17 +1048,17 @@ StScrollBar {
}
.message-title {
color: $fg_color;
color: darken($fg_color,5%);
}
.message-content {
color: darken($fg_color, 10%);
color: darken($fg_color,20%);
padding: 10px;
}
.message-media-control {
padding: 12px;
color: lighten($fg_color, 15%);
color: darken($fg_color, 20%);
&:last-child:ltr { padding-right: 18px; }
&:last-child:rtl { padding-left: 18px; }
@@ -1145,9 +1069,9 @@ StScrollBar {
.media-message-cover-icon {
icon-size: 48px !important;
&.fallback {
color: lighten($fg_color,10%);
color: lighten($bg_color,10%);
background-color: $bg_color;
border: 1px solid $bg_color;
border: 2px solid $bg_color;
border-radius: 2px;
icon-size: 32px !important;
padding: 6px; }
@@ -1189,18 +1113,15 @@ StScrollBar {
color: $fg_color;
border-radius: 32px; /* wish we could do 50% */
padding: 13px;
border: 1px solid $_bubble_borders_color;
border: 1px solid lighten($borders_color,5%);
&:hover, &:focus {
background-color: $_hover_bg_color;
background-color: transparentize($fg_color,0.9);
color: $fg_color;
border: none;
padding: 14px;
}
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
&:active { background-color: $selected_bg_color; color: $selected_fg_color; }
& > StIcon { icon-size: 16px; }
}
@@ -1222,15 +1143,6 @@ StScrollBar {
border: 1px solid $selected_bg_color;
}
// Pointer location
.ripple-pointer-location {
width: 50px;
height: 50px;
border-radius: 25px 25px 25px 25px; // radius the size of the box give us the curve
background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
}
// not really top bar only
.popup-menu-arrow { icon-size: 1.09em; }
.popup-menu-icon { icon-size: 1.09em; }
@@ -1258,19 +1170,9 @@ StScrollBar {
}
}
// Pointer accessibility notifications
.pie-timer {
width: 60px;
height: 60px;
-pie-border-width: 3px;
-pie-border-color: $selected_bg_color;
-pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
}
/* NETWORK DIALOGS */
.nm-dialog {
@extend %bubble-panel;
max-height: 34em;
min-height: 31em;
min-width: 32em;
@@ -1346,23 +1248,23 @@ StScrollBar {
}
//search entry
.search-entry, %search_entry {
.search-entry {
width: 320px;
padding: 7px 9px;
border-radius: 18px;
color: $fg_color;
background-color: $base_color;
border-color: $borders_color;
border-radius: 6px;
border-color: darken($osd_fg_color,50%);
color: $osd_fg_color;
background-color: $osd_bg_color;
&:focus {
padding: 6px 8px;
border-width: 2px;
border-color: $selected_bg_color;
}
.search-entry-icon { icon-size: 1em; padding: 0 4px; color: $fg_color; }
.search-entry-icon { icon-size: 1em; padding: 0 4px; color: transparentize($fg_color,.3); }
&:hover, &:focus {
.search-entry-icon { color: transparentize($fg_color,.3); }
.search-entry-icon { color: $fg_color; }
}
}
@@ -1391,7 +1293,7 @@ StScrollBar {
.list-search-result-content { spacing: 30px; }
.list-search-result-title { color: darken($osd_fg_color,5%); spacing: 12px; }
.list-search-result-description { color: darken($osd_fg_color, 30%); }
.list-search-result-description { color: transparentize(darken($osd_fg_color,15%), 0.5); }
.list-search-provider-details { width: 150px; color: darken($osd_fg_color,5%); margin-top: 0.24em; }
.list-search-provider-content { spacing: 20px; }
.search-provider-icon { padding: 15px; }
@@ -1400,9 +1302,12 @@ StScrollBar {
/* DASHBOARD */
#dash {
@extend %overview-panel;
font-size: 9pt;
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
padding: 4px 0;
border: 1px solid rgba(128, 128, 128, 0.4);
border-left: 0px;
border-radius: 0px 9px 9px 0px;
&:rtl {
@@ -1430,8 +1335,7 @@ StScrollBar {
border-radius: 7px;
padding: 4px 12px;
color: $osd_fg_color;
background-color: transparentize($osd_bg_color,0.05);
border: 1px solid $osd_outer_borders_color;
background-color: transparentize($osd_bg_color,0.3);
text-align: center;
-x-offset: 8px;
}
@@ -1458,29 +1362,13 @@ StScrollBar {
}
.app-view-control { //favorties | all toggle button
padding: 4px 32px;
margin: 0 4px;
&, &:hover, &:checked { @include button(undecorated); }
&, &:hover { color: darken($osd_fg_color, 25%); }
&:hover { box-shadow: inset 0 -2px darken($osd_fg_color, 25%); }
&:active {
box-shadow: inset 0 -2px $osd_fg_color;
}
&:checked {
color: $osd_fg_color;
box-shadow: inset 0 -2px $selected_bg_color;
}
&:checked { @include button(active); }
&:first-child {
border-right-width: 0;
border-radius: 0;
border-radius: 3px 0 0 3px;
}
&:last-child {
border-radius: 0;
border-radius: 0 3px 3px 0;
}
}
@@ -1503,7 +1391,8 @@ StScrollBar {
}
&:active .overview-icon,
&:checked .overview-icon {
background-color: transparentize(darken($osd_bg_color,10%), 0.5);
background-color: transparentize(darken($osd_bg_color,10%),.1);
box-shadow: inset 0 1px 2px $osd_borders_color;
}
&:hover .overview-icon,
&:focus .overview-icon,
@@ -1524,7 +1413,7 @@ StScrollBar {
%icon_tile {
color: $osd_fg_color;
border-radius: $medium_radius;
border-radius: 4px;
padding: 6px;
border: 1px solid transparent;
transition-duration: 100ms;
@@ -1545,7 +1434,7 @@ StScrollBar {
// Collections
.app-folder-popup { //expanded collection
-arrow-border-radius: 8px;
-arrow-background-color: transparentize(darken($osd_bg_color,10%), 0.5);
-arrow-background-color: transparentize($osd_bg_color,0.7);
-arrow-base: 24px;
-arrow-rise: 11px;
}
@@ -1598,7 +1487,7 @@ StScrollBar {
}
}
.workspace-thumbnail-indicator {
border: 2px solid $selected_bg_color;
border: 4px solid $selected_bg_color;
padding: 1px;
}
@@ -1611,15 +1500,15 @@ StScrollBar {
}
%overview-panel {
color: $osd_fg_color;
background-color: transparentize($osd_bg_color, 0.1);
border: none;
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
border: 1px solid $_bubble_borders_color;
}
%status_text {
font-size: 2em;
font-weight: bold;
color: $osd_fg_color;
color: $fg_color;
}
/* NOTIFICATIONS & MESSAGE TRAY */
@@ -1631,38 +1520,28 @@ StScrollBar {
font-size: 11pt;
width: 34em;
margin: 5px;
border-radius: $medium-radius;
border: if($variant == 'light', none, $_bubble_borders_color);
min-height: 64px;
box-shadow: 0 1px 2px transparentize(black, 0.7);
&:hover { background: $bg_color; }
&, &:focus, &:active {
background-color: $bg_color;
.message-title { color: $fg_color }
.message-content { color: $fg_color; }
}
border-radius: 6px;
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
border: 1px solid $borders_color;
//box-shadow: 0 1px 4px black;
&:hover { background-color: $_bubble_bg_color; }
&:focus { background-color: $_bubble_bg_color; }
.message-icon-bin > StIcon {
color: $fg_color;
}
StEntry { @extend %bubble-entry; }
.notification-icon { padding: 5px; }
.notification-icon { padding: 5px; }
.notification-content { padding: 5px; spacing: 5px; }
.secondary-icon { icon-size: 1.09em; }
.notification-actions {
padding-top: 0;
color: $fg_color;
border-top: 1px solid $_bubble_borders_color;
spacing: 0px;
background-color: $borders_color;
padding-top: 2px;
spacing: 1px;
}
.notification-button {
@extend %bubble_button;
&:focus { box-shadow: none; }
padding: 0 16px;
min-height: 35px;
border: none;
padding: 4px 4px 5px;
background-color: darken($_bubble_bg_color,5%);
&:first-child { border-radius: 0 0 0 6px; }
&:last-child { border-radius: 0 0 6px 0; }
&:hover, &focus { background-color: darken($_bubble_bg_color,2%); }
}
}
.summary-source-counter {
@@ -1673,7 +1552,7 @@ StScrollBar {
-shell-counter-overlap-y: 3px;
background-color: $selected_bg_color;
color: $selected_fg_color;
border: 2px solid $fg_color;
border: 2px solid $osd_fg_color;
box-shadow: 0 2px 2px rgba(0,0,0,0.5);
border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
}
@@ -1691,14 +1570,14 @@ StScrollBar {
}
.chat-sent {
padding-left: 18pt;
color: lighten($fg_color, 15%);
color: darken($fg_color, 15%);
&:rtl { padding-left: 0; padding-right: 18pt; }
}
.chat-meta-message {
padding-left: 4px;
font-size: 9pt;
font-weight: bold;
color: lighten($fg_color,18%);
color: darken($fg_color,20%);
&:rtl { padding-left: 0; padding-right: 4px; }
}
@@ -1708,8 +1587,6 @@ StScrollBar {
padding: 2px 72px 2px 12px;
}
.hotplug-notification-item {
@extend %bubble_button;
border: none; box-shadow: none;
padding: 2px 10px;
&:focus { padding: 1px 71px 1px 11px; }
}
@@ -1724,7 +1601,7 @@ StScrollBar {
.hotplug-resident-mount {
spacing: 8px;
border-radius: 4px;
&:hover { background-color: $_hover_bg_color; }
&:hover { background-color: transparentize($bg_color,0.7); }
}
.hotplug-resident-mount-label {
@@ -1830,7 +1707,7 @@ StScrollBar {
-arrow-border-radius: 10px;
-arrow-background-color: transparentize($osd_bg_color, 0.3);
-arrow-border-width: 2px;
-arrow-border-color: $osd_outer_borders_color;
-arrow-border-color: $_bubble_borders_color;
-arrow-base: 20px;
-arrow-rise: 10px;
-boxpointer-gap: 5px;
@@ -1905,68 +1782,18 @@ StScrollBar {
border: none;
background-color: transparent;
$_gdm_fg: #f6f5f4;
$_gdm_bg: lighten(#2e3436, 19%);
StEntry {
@extend %search_entry;
border-radius: 5px;
@if $variant=='dark' {
$_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
background-color: $_gdm_entry_bg;
border-color: $_gdm_entry_bg;
color: $osd_fg_color;
}
}
.modal-dialog-button-box { spacing: 3px; }
.modal-dialog-button {
padding: 4px 18px;
box-shadow: 0 1px 3px transparentize($shadow_color, 0.02);
background-color: $_gdm_bg;
border-color: $_gdm_bg;
color: $_gdm_fg;
$_hover_c: lighten($_gdm_bg, 5%);
&:hover, &:focus {
background-color: $_hover_c;
border-color: $_hover_c;
}
&:active {
$_active_c: darken($_gdm_bg, 5%);
box-shadow: none;
background-color: $_active_c;
border-color: $_active_c;
}
&:insensitive {
@include button(insensitive);
border-color: darken($_gdm_bg, 5%);
background-color: darken($_gdm_bg, 5%);
color: transparentize($_gdm_fg, 0.3);
}
padding: 3px 18px;
&:default {
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
border-color: $selected_bg_color;
&:hover, &:focus {
@include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
$_def_hover_c: lighten($selected_bg_color, 5%);
background-color: $_def_hover_c;
border-color: $_def_hover_c;
}
&:active {
@include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
$_def_active_c: darken($selected_bg_color, 5%);
background-color: $_def_active_c;
border-color: $_def_active_c;
}
&:insensitive {
@include button(insensitive);
border-color: darken($selected_bg_color, 10%);
background-color: darken($selected_bg_color, 10%);
color: transparentize($selected_fg_color, 0.3);
}
@include button(normal,$c:$selected_bg_color);
&:hover,&:focus { @include button(hover,$c:$selected_bg_color); }
&:active { @include button(active,$c:$selected_bg_color); }
&:insensitive { @include button(insensitive); }
}
}
}
.login-dialog-logo-bin { padding: 24px 0px; }
@@ -2048,8 +1875,6 @@ StScrollBar {
//SCREEN SHIELD
$_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
.screen-shield-arrows {
padding-bottom: 3em;
}
@@ -2059,12 +1884,12 @@ $_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
width: 80px;
height: 48px;
-arrow-thickness: 12px;
-arrow-shadow: $_screenshield_shadow;
-arrow-shadow: 0 1px 1px rgba(0,0,0,0.4);
}
.screen-shield-clock {
color: white;
text-shadow: $_screenshield_shadow;
text-shadow: 0px 1px 2px rgba(0,0,0,0.6);
font-weight: bold;
text-align: center;
padding-bottom: 1.5em;
@@ -2072,7 +1897,7 @@ $_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
.screen-shield-clock-time {
font-size: 72pt;
text-shadow: $_screenshield_shadow;
text-shadow: 0px 2px 2px rgba(0,0,0,0.4);
font-feature-settings: "tnum";
}
@@ -2094,9 +1919,9 @@ $_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
.notification,
.screen-shield-notification-source {
padding: 12px 6px;
border: 1px solid $osd_outer_borders_color;
border: 1px solid $_bubble_borders_color;
background-color: transparentize($osd_bg_color,0.5);
color: $osd_fg_color;
color: $_bubble_fg_color;
border-radius: 4px;
}
.notification { margin-right: 15px; } //compensate for space allocated to the scrollbar
@@ -2110,7 +1935,7 @@ $_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
.screen-shield-notification-count-text { padding: 0px 0px 0px 12px; }
#panel.lock-screen { background-color: transparentize($osd_bg_color, 0.5); }
#panel.lock-screen { background-color: transparentize($_bubble_bg_color, 0.5); }
.screen-shield-background { //just the shadow, really
background: black;
@@ -2118,7 +1943,7 @@ $_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
}
#lockDialogGroup {
background: lighten(#2e3436, 8%) url(resource:///org/gnome/shell/theme/noise-texture.png);
background: #2e3436 url(resource:///org/gnome/shell/theme/noise-texture.png);
background-repeat: repeat;
}

View File

@@ -37,13 +37,16 @@
// possible $t values:
// normal, focus, insensitive
//
$_inner_shadows: inset 0 2px 4px transparentize(black, 0.6);
@if $t==normal {
background-color: $base_color;
border-color: $borders_color;
@include _shadows($_inner_shadows);
}
@if $t==focus {
@include _shadows($_inner_shadows);
border-color: if($fc==$selected_bg_color,
$selected_borders_color,
darken($fc,35%));
@@ -108,7 +111,7 @@
}
}
@mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge) {
@mixin button($t, $c:$osd_bg_color, $tc:$fg_color, $edge: $borders_edge) {
//
// Button drawing function
//
@@ -127,39 +130,46 @@
$_hilight_color: _button_hilight_color($c);
$_button_edge: if($edge == none, none, _widget_edge($edge));
$_blank_edge: if($edge == none, none, _widget_edge(transparentize($edge,1)));
$_button_shadow: 0 1px 2px transparentize($shadow_color, 0.03);
@if $t==normal {
//
// normal button
//
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.5),
$osd_bg_color);
color: $tc;
background-color: $c;
border-color: $borders_color;
box-shadow: $_button_shadow;
color: $osd_fg_color;
background-color: $_bg;
border-color: $osd_borders_color;
box-shadow: inset 0 1px lighten($osd_bg_color,10%);
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
}
@if $t==focus {
//
// focused button
//
color: $tc;
//
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
lighten($osd_bg_color,3%));
color: $osd_fg_color;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 2px $selected_bg_color;
//border-color: $selected_bg_color;
box-shadow: inset 0px 0px 0px 1px $selected_bg_color;
}
@else if $t==hover {
//
// active osd button
//
color: $tc;
border-color: $borders_color;
background-color: $c;
box-shadow: $_button_shadow;
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
lighten($osd_bg_color,3%));
color: white;
border-color: $osd_borders_color;
background-color: $_bg;
box-shadow: inset 0 1px lighten($osd_bg_color,20%);
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
@@ -168,18 +178,27 @@
//
// active osd button
//
color: $tc;
border-color: $borders_color;
background-color: $c;
$_bg: if($c!=$bg_color, $c, $osd_borders_color);
color: white;
border-color: $osd_borders_color;
background-color: $selected_bg_color;
// This should be none, but it's creating some issues with borders, so to
// workaround it for now, use inset wich goes through a different code path.
// see https://bugzilla.gnome.org/show_bug.cgi?id=752934
box-shadow: inset 0 0 black;
text-shadow: none;
icon-shadow: none;
box-shadow: none;
}
@else if $t==insensitive {
//
// insensitive osd button
//
$_bg: transparentize(mix($insensitive_fg_color,$osd_bg_color,20%),0.3);
color: $insensitive_fg_color;
border-color: $insensitive_borders_color;
background-color: $insensitive_bg_color;
border-color: $osd_borders_color;
background-color: $_bg;
box-shadow: none;
text-shadow: none;
icon-shadow: none;

View File

@@ -26,7 +26,6 @@ $osd_borders_color: transparentize(black, 0.3);
$osd_outer_borders_color: transparentize(white, 0.9);
$tooltip_borders_color: $osd_outer_borders_color;
$shadow_color: transparentize(black, 0.9);
//insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20"
height="20"
id="svg2">
<g
id="layer1"
style="display:inline">
<g
id="id1"
transform="translate(-19,-0.75)">
<path
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="m 19.855469,0.45507812 c 0,6.69466128 0,13.38932288 0,20.08398388 1.414713,-1.38151 2.829427,-2.763021 4.24414,-4.144531 0.5882,1.18866 1.158389,2.386561 1.758464,3.569127 1.108631,1.640259 4.157538,0.465128 3.89799,-1.495859 0.01057,-0.470226 -0.405577,-0.908445 -0.434651,-1.313638 0.259401,-0.25321 0.518802,-0.50642 0.778203,-0.75963 0.5882,1.18866 1.158389,2.386561 1.758464,3.569127 1.108631,1.640259 4.157538,0.465128 3.89799,-1.495859 -0.192325,-0.904303 -0.717854,-1.698026 -1.068629,-2.548967 -0.238908,-0.512658 -0.477817,-1.025315 -0.716725,-1.537973 1.755859,0 3.511719,0 5.267578,0 C 34.777352,9.738932 30.31641,5.0970051 25.855469,0.45507812 c 0,2.08138018 0,4.16276048 0,6.24414068 -2,-2.0813802 -4,-4.1627605 -6,-6.24414068 z m 1.5,3.72656248 c 2,2.0813801 4,4.1627603 6,6.2441404 0,-2.0813801 0,-4.1627603 0,-6.2441404 2.786458,2.8997395 5.572917,5.7994789 8.359375,8.6992184 -1.366537,0 -2.733073,0 -4.09961,0 0.883468,1.903435 1.781983,3.800273 2.656081,5.707817 0.0065,0.622781 -1.227555,0.980575 -1.325116,0.207118 -0.80433,-1.640251 -1.608661,-3.280501 -2.412991,-4.920752 -1.020182,0.995443 -2.040365,1.990885 -3.060547,2.986328 0.263642,0.608048 0.596803,1.192457 0.814693,1.816134 -0.182662,0.601037 -1.26833,0.8373 -1.365856,0.06795 -0.796094,-1.623456 -1.592189,-3.246912 -2.388284,-4.870368 -1.059245,1.033854 -2.118489,2.067708 -3.177734,3.101562 -4e-6,-4.265002 -7e-6,-8.5300036 -1.1e-5,-12.7950054 z"
id="path5565" />
</g>
<g
id="id2"
transform="translate(-25,-0.75)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20"
height="20"
id="svg2">
<g
id="g835">
<path
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="M 10.705078 1.671875 C 9.8685536 1.7465699 8.886927 1.5353073 8.2578125 2.2480469 C 8.0785627 2.7511513 7.8667422 2.9777446 7.3125 2.8652344 C 6.5186841 2.8141575 5.6105879 2.9190179 5.125 3.6386719 C 4.5700923 4.4696324 4.8113194 5.4949043 4.7578125 6.4316406 L 4.7578125 7.9335938 C 4.2480917 7.6156216 3.6258927 7.8015358 3.0585938 7.7519531 C 2.6157606 7.7312277 2.1774807 7.7771069 1.7402344 7.84375 C 1.7971654 10.529678 1.813967 13.217089 1.8613281 15.902344 C 1.9550191 17.204635 3.0933719 18.307155 4.40625 18.326172 C 5.0391993 18.341272 5.8885801 18.332951 6.6308594 18.337891 C 9.8526764 18.325821 13.076973 18.38774 16.296875 18.28125 C 17.459088 18.161027 18.510143 17.092798 18.367188 15.884766 L 18.367188 6.4042969 C 17.660379 5.4636119 16.551912 4.623434 15.308594 4.8339844 C 15.009045 4.3804158 14.822476 3.3608651 14.082031 3.0351562 C 13.727176 2.744118 13.242443 2.9253873 12.822266 2.8730469 C 12.524824 2.8003648 11.966366 3.0655864 11.953125 2.6210938 C 11.795774 2.0995736 11.23789 1.7125276 10.705078 1.671875 z M 10.599609 3.1757812 C 10.764131 3.4472414 10.782382 3.9294982 10.818359 4.3007812 C 10.824915 4.3076775 10.838155 4.3066925 10.845703 4.3125 C 10.836598 4.3123268 10.827465 4.3126732 10.818359 4.3125 L 11.3125 10.212891 L 11.976562 4.3710938 L 13.322266 4.375 C 13.858345 4.7645492 13.735252 5.5154752 13.876953 6.0976562 C 13.865826 6.1651282 13.88335 6.1937019 13.892578 6.234375 C 13.891928 6.2343667 13.891276 6.2343833 13.890625 6.234375 L 13.902344 6.3203125 L 14.384766 10.185547 L 15.048828 6.265625 C 15.622863 6.228498 16.206517 6.3041365 16.607422 6.7675781 C 17.017062 6.9844433 16.823063 7.4565491 16.867188 7.8261719 L 16.867188 16.167969 C 16.530129 17.131654 15.267211 16.71624 14.492188 16.828125 C 11.121671 16.841205 7.7500508 16.861953 4.3808594 16.814453 C 3.4051926 16.786173 3.2389196 15.744474 3.3398438 14.972656 C 3.3282027 13.065594 3.2950998 11.158732 3.2617188 9.2519531 C 3.5880829 9.2584131 3.9376766 9.2391948 4.25 9.2617188 C 4.7438842 10.17694 4.7346154 11.262903 4.7578125 12.277344 C 5.2504494 12.270544 5.8011939 12.317174 6.2578125 12.277344 C 6.2669593 9.7577406 6.2393741 7.2373172 6.2714844 4.71875 C 6.3763823 4.198849 7.0022289 4.409587 7.3828125 4.3652344 L 8.0585938 4.3652344 L 8.546875 10.212891 L 9.2167969 4.3359375 L 9.2128906 4.3359375 C 9.2438386 3.9531035 9.0622615 3.4401006 9.4609375 3.2167969 L 10.599609 3.1757812 z "
id="path5630" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20"
height="20"
id="svg2"
version="1.1">
<g
id="layer1"
style="display:inline">
<g
id="id1"
transform="translate(-22.25,-0.75)">
<path
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="m 25.855469,0.45507812 c 0,6.69466128 0,13.38932288 0,20.08398388 1.414713,-1.380859 2.829427,-2.761719 4.24414,-4.142578 0.612408,1.215372 1.173049,2.460221 1.819709,3.656095 1.141947,1.476279 3.975266,0.389006 3.846009,-1.473608 -0.09413,-0.822519 -0.594755,-1.521423 -0.899969,-2.277599 -0.298869,-0.640171 -0.597739,-1.280342 -0.896608,-1.920513 1.75651,0 3.513021,0 5.269531,0 C 34.777344,9.738932 30.316406,5.0970051 25.855469,0.45507812 Z m 1.5,3.72656248 c 2.786458,2.8997395 5.572917,5.7994789 8.359375,8.6992184 -1.367188,0 -2.734375,0 -4.101563,0 0.885072,1.903196 1.781799,3.80152 2.659622,5.707744 0.0349,0.566084 -1.149057,0.988823 -1.282093,0.297971 -0.818567,-1.671162 -1.637133,-3.342323 -2.455699,-5.013485 -1.059896,1.034505 -2.119791,2.06901 -3.179687,3.103515 1.5e-5,-4.264988 3e-5,-8.5299756 4.5e-5,-12.7949634 z"
id="path5565" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20"
height="20"
id="svg2">
<g
id="layer1"
style="display:inline;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:1">
<g
transform="matrix(-1,0,0,1,42,-0.75)"
id="g5847"
style="stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:1">
<path
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="m 25.855469,0.45507812 c 0,6.69466128 0,13.38932288 0,20.08398388 1.414713,-1.380859 2.829427,-2.761719 4.24414,-4.142578 0.612408,1.215372 1.173049,2.460221 1.819709,3.656095 1.141947,1.476279 3.975266,0.389006 3.846009,-1.473608 -0.09413,-0.822519 -0.594755,-1.521423 -0.899969,-2.277599 -0.298869,-0.640171 -0.597739,-1.280342 -0.896608,-1.920513 1.75651,0 3.513021,0 5.269531,0 C 34.777344,9.738932 30.316406,5.0970051 25.855469,0.45507812 Z m 1.5,3.72656248 c 2.786458,2.8997395 5.572917,5.7994789 8.359375,8.6992184 -1.367188,0 -2.734375,0 -4.101563,0 0.885072,1.903196 1.781799,3.80152 2.659622,5.707744 0.0349,0.566084 -1.149057,0.988823 -1.282093,0.297971 -0.818567,-1.671162 -1.637133,-3.342323 -2.455699,-5.013485 -1.059896,1.034505 -2.119791,2.06901 -3.179687,3.103515 1.5e-5,-4.264988 3e-5,-8.5299756 4.5e-5,-12.7949634 z"
id="path5851" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-42.76)"/></defs><g transform="translate(0 -291.18)" stroke-width="1.085"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#323233" stroke="#272728"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none" fill="url(#b)" stroke="#151515"/></g></svg>

Before

Width:  |  Height:  |  Size: 725 B

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="46"
height="22"
viewBox="0 0 46 22"
version="1.1"
id="svg2751"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="toggle-off-intl.svg">
<defs
id="defs2745">
<linearGradient
inkscape:collect="always"
id="linearGradient3329">
<stop
style="stop-color:#39393a;stop-opacity:1;"
offset="0"
id="stop3325" />
<stop
style="stop-color:#302f30;stop-opacity:1"
offset="1"
id="stop3327" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3329"
id="linearGradient3331"
x1="53"
y1="294.42917"
x2="53"
y2="309.80417"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-42.760724)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#535353"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-19.436775"
inkscape:cy="-13.499723"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
borderlayer="true"
inkscape:showpageshadow="false"
showborder="false">
<inkscape:grid
type="xygrid"
id="grid3298" />
</sodipodi:namedview>
<metadata
id="metadata2748">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-291.17916)">
<rect
style="opacity:1;vector-effect:none;fill:#323233;fill-opacity:1;stroke:#272728;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
id="rect3296"
width="44.446434"
height="20.910645"
x="0.625"
y="291.71494"
rx="10.455324"
ry="10.073335" />
<rect
ry="10.455322"
rx="10.455322"
y="291.71494"
x="0.5428465"
height="20.910645"
width="21.142862"
id="rect3300"
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#151515;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="46" height="22"><g transform="translate(0 -291.18)"><rect style="marker:none;font-variant-east_asian:normal" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#e1dedb" stroke="#cdc7c2" stroke-linecap="round" stroke-linejoin="round"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none;font-variant-east_asian:normal" fill="#f8f7f7" stroke="#aa9f98" stroke-linecap="round" stroke-linejoin="round"/><g transform="matrix(.97148 0 0 1 1658.914 -2552.91)" stroke-width="1.015" stroke-linecap="round" stroke-linejoin="round"><rect ry="13.17" rx="13.556" y="1234.681" x="-1242.732" height="26" width="49.409" style="marker:none" fill="#e1dedb" stroke="#cdc7c2"/><rect style="marker:none" width="26.763" height="26" x="-1242.732" y="1234.769" rx="13.511" ry="13.126" fill="#f8f7f7" stroke="#aa9f98"/></g><g transform="matrix(.97148 0 0 1 1658.914 -2512.91)" stroke-width="1.015" stroke="#2b73cc"><rect style="marker:none" width="49.409" height="26" x="-1242.732" y="1234.681" rx="13.556" ry="13.17" fill="#3081e3"/><rect ry="13.126" rx="13.511" y="1234.769" x="-1220.086" height="26" width="26.763" style="marker:none" fill="#f8f7f7" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-19)"/></defs><g transform="translate(0 -291.18)" stroke="#030e1b" stroke-width="1.085"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#15539e"/><rect ry="10.455" rx="10.455" y="291.715" x="24.304" height="20.911" width="21.143" style="marker:none" fill="url(#b)"/></g></svg>

Before

Width:  |  Height:  |  Size: 707 B

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="46"
height="22"
viewBox="0 0 46 22"
version="1.1"
id="svg2751"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="toggle-on-intl.svg">
<defs
id="defs2745">
<linearGradient
inkscape:collect="always"
id="linearGradient3329">
<stop
style="stop-color:#39393a;stop-opacity:1;"
offset="0"
id="stop3325" />
<stop
style="stop-color:#302f30;stop-opacity:1"
offset="1"
id="stop3327" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3329"
id="linearGradient3331"
x1="53"
y1="294.42917"
x2="53"
y2="309.80417"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-19)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#535353"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="13.588971"
inkscape:cy="14.124546"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
borderlayer="true"
inkscape:showpageshadow="false"
showborder="false">
<inkscape:grid
type="xygrid"
id="grid3298" />
</sodipodi:namedview>
<metadata
id="metadata2748">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-291.17916)">
<rect
style="opacity:1;vector-effect:none;fill:#15539e;fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
id="rect3296"
width="44.446434"
height="20.910645"
x="0.625"
y="291.71494"
rx="10.455324"
ry="10.073335" />
<rect
ry="10.455322"
rx="10.455322"
y="291.71494"
x="24.30357"
height="20.910645"
width="21.142862"
id="rect3300"
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="46" height="22"><g transform="translate(0 -291.18)" stroke="#2b73cc"><rect style="marker:none;font-variant-east_asian:normal" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#3081e3"/><rect ry="10.455" rx="10.455" y="291.715" x="24.304" height="20.911" width="21.143" style="marker:none;font-variant-east_asian:normal" fill="#f8f7f7" stroke-linecap="round" stroke-linejoin="round"/></g></svg>

Before

Width:  |  Height:  |  Size: 473 B

View File

@@ -124,7 +124,7 @@ var Batch = class extends Task {
}
process() {
throw new GObject.NotImplementedError(`process in ${this.constructor.name}`);
throw new Error('Not implemented');
}
runTask() {

View File

@@ -652,7 +652,7 @@ var LoginDialog = GObject.registerClass({
bannerAllocation.x2 = Math.floor(centerX - centerGap / 2);
bannerAllocation.x1 = Math.floor(bannerAllocation.x2 - wideBannerWidth);
// figure out how tall it would like to be and try to accommodate
// figure out how tall it would like to be and try to accomodate
// but don't let it get too close to the logo
let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth);

View File

@@ -64,7 +64,6 @@
<file>ui/keyboard.js</file>
<file>ui/layout.js</file>
<file>ui/lightbox.js</file>
<file>ui/locatePointer.js</file>
<file>ui/lookingGlass.js</file>
<file>ui/magnifier.js</file>
<file>ui/magnifierDBus.js</file>
@@ -82,11 +81,9 @@
<file>ui/pageIndicators.js</file>
<file>ui/panel.js</file>
<file>ui/panelMenu.js</file>
<file>ui/pointerA11yTimeout.js</file>
<file>ui/pointerWatcher.js</file>
<file>ui/popupMenu.js</file>
<file>ui/remoteSearch.js</file>
<file>ui/ripples.js</file>
<file>ui/runDialog.js</file>
<file>ui/screenShield.js</file>
<file>ui/screencast.js</file>
@@ -123,7 +120,6 @@
<file>ui/status/accessibility.js</file>
<file>ui/status/brightness.js</file>
<file>ui/status/dwellClick.js</file>
<file>ui/status/location.js</file>
<file>ui/status/keyboard.js</file>
<file>ui/status/nightLight.js</file>

View File

@@ -42,6 +42,8 @@ var IntrospectService = class {
}
_isStandaloneApp(app) {
let windows = app.get_windows();
return app.get_windows().some(w => w.transient_for == null);
}
@@ -53,11 +55,6 @@ var IntrospectService = class {
return APP_WHITELIST.includes(sender);
}
_getSandboxedAppId(app) {
let ids = app.get_windows().map(w => w.get_sandboxed_app_id());
return ids.find(id => id != null);
}
_syncRunningApplications() {
let tracker = Shell.WindowTracker.get_default();
let apps = this._appSystem.get_running();
@@ -79,10 +76,6 @@ var IntrospectService = class {
newActiveApplication = app.get_id();
}
let sandboxedAppId = this._getSandboxedAppId(app);
if (sandboxedAppId)
appInfo['sandboxed-app-id'] = new GLib.Variant('s', sandboxedAppId);
newRunningApplications[app.get_id()] = appInfo;
}
@@ -144,7 +137,6 @@ var IntrospectService = class {
let frameRect = window.get_frame_rect();
let title = window.get_title();
let wmClass = window.get_wm_class();
let sandboxedAppId = window.get_sandboxed_app_id();
windowsList[windowId] = {
'app-id': GLib.Variant.new('s', app.get_id()),
@@ -161,10 +153,6 @@ var IntrospectService = class {
if (wmClass != null)
windowsList[windowId]['wm-class'] = GLib.Variant.new('s', wmClass);
if (sandboxedAppId != null)
windowsList[windowId]['sandboxed-app-id'] =
GLib.Variant.new('s', sandboxedAppId);
}
}
invocation.return_value(new GLib.Variant('(a{ta{sv}})', [windowsList]));

View File

@@ -48,28 +48,6 @@ function canLock() {
}
}
function registerSessionWithGDM() {
log("Registering session with GDM");
Gio.DBus.system.call('org.gnome.DisplayManager',
'/org/gnome/DisplayManager/Manager',
'org.gnome.DisplayManager.Manager',
'RegisterSession',
GLib.Variant.new('(a{sv})', [{}]), null,
Gio.DBusCallFlags.NONE, -1, null,
(source, result) => {
try {
source.call_finish(result);
} catch (e) {
if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD))
log(`Error registering session with GDM: ${e.message}`);
else
log("Not calling RegisterSession(): method not exported, GDM too old?");
}
}
);
}
let _loginManager = null;
/**

View File

@@ -71,7 +71,7 @@ function _findProviderForMccMnc(operator_name, operator_code) {
// Tries to find the operator name corresponding to the given SID
//
function _findProviderForSid(sid) {
if (!sid)
if (sid == 0)
return null;
let mpd = _getMobileProvidersDatabase();

View File

@@ -88,42 +88,42 @@ const SystemActions = GObject.registerClass({
name: C_("search-result", "Power Off"),
iconName: 'system-shutdown-symbolic',
// Translators: A list of keywords that match the power-off action, separated by semicolons
keywords: _("power off;shutdown;reboot;restart").split(/[; ]/),
keywords: _("power off;shutdown;reboot;restart").split(';'),
available: false });
this._actions.set(LOCK_SCREEN_ACTION_ID,
{ // Translators: The name of the lock screen action in search
name: C_("search-result", "Lock Screen"),
iconName: 'system-lock-screen-symbolic',
// Translators: A list of keywords that match the lock screen action, separated by semicolons
keywords: _("lock screen").split(/[; ]/),
keywords: _("lock screen").split(';'),
available: false });
this._actions.set(LOGOUT_ACTION_ID,
{ // Translators: The name of the logout action in search
name: C_("search-result", "Log Out"),
iconName: 'application-exit-symbolic',
// Translators: A list of keywords that match the logout action, separated by semicolons
keywords: _("logout;log out;sign off").split(/[; ]/),
keywords: _("logout;sign off").split(';'),
available: false });
this._actions.set(SUSPEND_ACTION_ID,
{ // Translators: The name of the suspend action in search
name: C_("search-result", "Suspend"),
iconName: 'media-playback-pause-symbolic',
// Translators: A list of keywords that match the suspend action, separated by semicolons
keywords: _("suspend;sleep").split(/[; ]/),
keywords: _("suspend;sleep").split(';'),
available: false });
this._actions.set(SWITCH_USER_ACTION_ID,
{ // Translators: The name of the switch user action in search
name: C_("search-result", "Switch User"),
iconName: 'system-switch-user-symbolic',
// Translators: A list of keywords that match the switch user action, separated by semicolons
keywords: _("switch user").split(/[; ]/),
keywords: _("switch user").split(';'),
available: false });
this._actions.set(LOCK_ORIENTATION_ACTION_ID,
{ // Translators: The name of the lock orientation action in search
name: C_("search-result", "Lock Orientation"),
iconName: '',
// Translators: A list of keywords that match the lock orientation action, separated by semicolons
keywords: _("lock orientation;screen;rotation").split(/[; ]/),
keywords: _("lock orientation;screen;rotation").split(';'),
available: false });
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
@@ -262,7 +262,7 @@ const SystemActions = GObject.registerClass({
let results = [];
for (let [key, {available, keywords}] of this._actions)
if (available && terms.every(t => keywords.some(k => k.startsWith(t))))
if (available && terms.every(t => keywords.some(k => (k.indexOf(t) >= 0))))
results.push(key);
return results;

View File

@@ -1,4 +1,4 @@
const { Clutter, Gio, GLib, GObject, Shell } = imports.gi;
const { Clutter, Gio, GLib, Shell } = imports.gi;
const CheckBox = imports.ui.checkBox;
const Dialog = imports.ui.dialog;
@@ -15,10 +15,9 @@ var DialogResponse = {
CLOSED: 2
};
var AccessDialog = GObject.registerClass(
class AccessDialog extends ModalDialog.ModalDialog {
_init(invocation, handle, title, subtitle, body, options) {
super._init({ styleClass: 'access-dialog' });
var AccessDialog = class extends ModalDialog.ModalDialog {
constructor(invocation, handle, title, subtitle, body, options) {
super({ styleClass: 'access-dialog' });
this._invocation = invocation;
this._handle = handle;
@@ -110,7 +109,7 @@ class AccessDialog extends ModalDialog.ModalDialog {
});
this.close();
}
});
};
var AccessDialogDBus = class {
constructor() {

View File

@@ -474,10 +474,12 @@ var CyclerList = GObject.registerClass({
}
});
var CyclerPopup = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT
}, class CyclerPopup extends SwitcherPopup.SwitcherPopup {
var CyclerPopup = GObject.registerClass(
class CyclerPopup extends SwitcherPopup.SwitcherPopup {
_init() {
if (this.constructor.name === CyclerPopup.prototype.constructor.name)
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
super._init();
this._items = this._getWindows();

View File

@@ -414,7 +414,7 @@ var AllView = class AllView extends BaseAppView {
this._refilterApps();
}
// Overridden from BaseAppView
// Overriden from BaseAppView
animate(animationDirection, onComplete) {
this._scrollView.reactive = false;
let completionFunc = () => {
@@ -632,9 +632,9 @@ var AllView = class AllView extends BaseAppView {
this._scrollView.get_effect('fade').fade_edges = true;
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
this._adjustment.value = 0;
this._grid.currentPage = 0;
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this._adjustment.value = 0;
this._grid.currentPage = 0;
this._pageIndicators.setNPages(this._grid.nPages());
this._pageIndicators.setCurrentPage(0);
});
@@ -1017,7 +1017,7 @@ var FolderView = class FolderView extends BaseAppView {
Util.ensureActorVisibleInScrollView(this.actor, actor);
}
// Overridden from BaseAppView
// Overriden from BaseAppView
animate(animationDirection) {
this._grid.animatePulse(animationDirection);
}
@@ -1081,7 +1081,7 @@ var FolderView = class FolderView extends BaseAppView {
let contentBox = this.actor.get_theme_node().get_content_box(pageBox);
// We only can show icons inside the collection view boxPointer
// so we have to subtract the required padding etc of the boxpointer
// so we have to substract the required padding etc of the boxpointer
return [(contentBox.x2 - contentBox.x1) - 2 * this._offsetForEachSide, (contentBox.y2 - contentBox.y1) - 2 * this._offsetForEachSide];
}

View File

@@ -1,4 +1,4 @@
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
@@ -13,11 +13,10 @@ var AudioDevice = {
const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection');
var AudioDeviceSelectionDialog = GObject.registerClass({
Signals: { 'device-selected': { param_types: [GObject.TYPE_UINT] } }
}, class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
_init(devices) {
super._init({ styleClass: 'audio-device-selection-dialog' });
var AudioDeviceSelectionDialog =
class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
constructor(devices) {
super({ styleClass: 'audio-device-selection-dialog' });
this._deviceItems = {};
@@ -34,6 +33,10 @@ var AudioDeviceSelectionDialog = GObject.registerClass({
throw new Error('Too few devices for a selection');
}
destroy() {
super.destroy();
}
_buildLayout(devices) {
let title = new St.Label({ style_class: 'audio-selection-title',
text: _("Select Audio Device"),
@@ -122,7 +125,7 @@ var AudioDeviceSelectionDialog = GObject.registerClass({
Main.overview.hide();
app.activate();
}
});
};
var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
constructor() {

View File

@@ -257,15 +257,14 @@ var Background = class Background {
this._refreshAnimation();
});
this._settingsChangedSignalId =
this._settings.connect('changed', this._emitChangedSignal.bind(this));
this._settingsChangedSignalId = this._settings.connect('changed', () => {
this.emit('changed');
});
this._load();
}
destroy() {
this.background = null;
this._cancellable.cancel();
this._removeAnimationTimeout();
@@ -289,22 +288,6 @@ var Background = class Background {
if (this._settingsChangedSignalId != 0)
this._settings.disconnect(this._settingsChangedSignalId);
this._settingsChangedSignalId = 0;
if (this._changedIdleId) {
GLib.source_remove(this._changedIdleId);
this._changedIdleId = 0;
}
}
_emitChangedSignal() {
if (this._changedIdleId)
return;
this._changedIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
this._changedIdleId = 0;
this.emit('changed');
return GLib.SOURCE_REMOVE;
});
}
updateResolution() {
@@ -360,7 +343,7 @@ var Background = class Background {
if (changedFile.equal(file)) {
let imageCache = Meta.BackgroundImageCache.get_default();
imageCache.purge(changedFile);
this._emitChangedSignal();
this.emit('changed');
}
});
this._fileWatches[key] = signalId;
@@ -716,6 +699,7 @@ var BackgroundManager = class BackgroundManager {
time: FADE_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete() {
oldBackgroundActor.background.run_dispose();
oldBackgroundActor.destroy();
}
});

View File

@@ -48,15 +48,6 @@ var BoxPointer = GObject.registerClass({
this._sourceAlignment = 0.5;
this._capturedEventId = 0;
this._muteInput();
this.connect('destroy', this._onDestroy.bind(this));
}
_onDestroy() {
if (this._sourceActorDestroyId) {
this._sourceActor.disconnect(this._sourceActorDestroyId);
delete this._sourceActorDestroyId;
}
}
get arrowSide() {
@@ -76,6 +67,36 @@ var BoxPointer = GObject.registerClass({
}
}
// BoxPointer.show() and BoxPointer.hide() are here for only compatibility
// purposes, and will be removed in 3.32.
show(animate, onComplete) {
if (animate !== undefined) {
try {
throw new Error('BoxPointer.show() has been moved to BoxPointer.open(), this code will break in the future.');
} catch(e) {
logError(e);
this.open(animate, onComplete);
return;
}
}
this.visible = true;
}
hide(animate, onComplete) {
if (animate !== undefined) {
try {
throw new Error('BoxPointer.hide() has been moved to BoxPointer.close(), this code will break in the future.');
} catch(e) {
logError(e);
this.close(animate, onComplete);
return;
}
}
this.visible = false;
}
open(animate, onComplete) {
let themeNode = this.get_theme_node();
let rise = themeNode.get_length('-arrow-rise');
@@ -204,10 +225,13 @@ var BoxPointer = GObject.registerClass({
this.set_allocation(box, flags);
let themeNode = this.get_theme_node();
box = themeNode.get_content_box(box);
let borderWidth = themeNode.get_length('-arrow-border-width');
let rise = themeNode.get_length('-arrow-rise');
let childBox = new Clutter.ActorBox();
let [availWidth, availHeight] = themeNode.get_content_box(box).get_size();
let availWidth = box.x2 - box.x1;
let availHeight = box.y2 - box.y1;
childBox.x1 = 0;
childBox.y1 = 0;
@@ -236,9 +260,8 @@ var BoxPointer = GObject.registerClass({
this.bin.allocate(childBox, flags);
if (this._sourceActor && this._sourceActor.mapped) {
this._reposition(box);
this._updateFlip(box);
this.set_allocation(box, flags);
this._reposition();
this._updateFlip();
}
}
@@ -425,25 +448,15 @@ var BoxPointer = GObject.registerClass({
}
setPosition(sourceActor, alignment) {
if (!this._sourceActor || sourceActor != this._sourceActor) {
if (this._sourceActorDestroyId) {
this._sourceActor.disconnect(this._sourceActorDestroyId);
delete this._sourceActorDestroyId;
}
this._sourceActor = sourceActor;
if (this._sourceActor) {
this._sourceActorDestroyId = this._sourceActor.connect('destroy', () => {
this._sourceActor = null;
delete this._sourceActorDestroyId;
})
}
}
// We need to show it now to force an allocation,
// so that we can query the correct size.
this.show();
this._sourceActor = sourceActor;
this._arrowAlignment = alignment;
this.queue_relayout();
this._reposition();
this._updateFlip();
}
setSourceAlignment(alignment) {
@@ -455,7 +468,7 @@ var BoxPointer = GObject.registerClass({
this.setPosition(this._sourceActor, this._arrowAlignment);
}
_reposition(allocationBox) {
_reposition() {
let sourceActor = this._sourceActor;
let alignment = this._arrowAlignment;
let monitorIndex = Main.layoutManager.findIndexForActor(sourceActor);
@@ -569,7 +582,8 @@ var BoxPointer = GObject.registerClass({
}
// Actually set the position
allocationBox.set_origin(Math.floor(x), Math.floor(y));
this.x = Math.floor(x);
this.y = Math.floor(y);
}
// @origin: Coordinate specifying middle of the arrow, along
@@ -623,11 +637,15 @@ var BoxPointer = GObject.registerClass({
return arrowSide;
}
_updateFlip(allocationBox) {
_updateFlip() {
let arrowSide = this._calculateArrowSide(this._userArrowSide);
if (this._arrowSide != arrowSide) {
this._arrowSide = arrowSide;
this._reposition(allocationBox);
this._reposition();
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this.queue_relayout();
return false;
});
this.emit('arrow-side-changed');
}

View File

@@ -5,7 +5,6 @@ const Mainloop = imports.mainloop;
const Params = imports.misc.params;
const GnomeSession = imports.misc.gnomeSession;
const Main = imports.ui.main;
const ShellMountOperation = imports.ui.shellMountOperation;
var GNOME_SESSION_AUTOMOUNT_INHIBIT = 16;
@@ -200,20 +199,12 @@ var AutomountManager = class {
// error strings are not unique for the cases in the comments below.
if (e.message.includes('No key available with this passphrase') || // cryptsetup
e.message.includes('No key available to unlock device') || // udisks (no password)
// libblockdev wrong password opening LUKS device
e.message.includes('Failed to activate device: Incorrect passphrase') ||
// cryptsetup returns EINVAL in many cases, including wrong TCRYPT password/parameters
e.message.includes('Failed to load device\'s parameters: Invalid argument')) {
e.message.includes('Error unlocking')) { // udisks (wrong password)
this._reaskPassword(volume);
} else {
if (e.message.includes('Compiled against a version of libcryptsetup that does not support the VeraCrypt PIM setting')) {
Main.notifyError(_("Unable to unlock volume"),
_("The installed udisks version does not support the PIM setting"));
}
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
log('Unable to mount volume ' + volume.get_name() + ': ' + e.toString());
this._closeOperation(volume);
}
}

View File

@@ -10,10 +10,9 @@ const CheckBox = imports.ui.checkBox;
var WORK_SPINNER_ICON_SIZE = 16;
var KeyringDialog = GObject.registerClass(
class KeyringDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'prompt-dialog' });
var KeyringDialog = class extends ModalDialog.ModalDialog {
constructor() {
super({ styleClass: 'prompt-dialog' });
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password', this._onShowPassword.bind(this));
@@ -24,8 +23,20 @@ class KeyringDialog extends ModalDialog.ModalDialog {
this._content = new Dialog.MessageDialogContent({ icon });
this.contentLayout.add(this._content);
// FIXME: Why does this break now?
/*
this.prompt.bind_property('message', this._content, 'title', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('description', this._content, 'body', GObject.BindingFlags.SYNC_CREATE);
*/
this.prompt.connect('notify::message', () => {
this._content.title = this.prompt.message;
});
this._content.title = this.prompt.message;
this.prompt.connect('notify::description', () => {
this._content.body = this.prompt.description;
});
this._content.body = this.prompt.description;
this._workSpinner = null;
this._controlTable = null;
@@ -213,7 +224,7 @@ class KeyringDialog extends ModalDialog.ModalDialog {
_onCancelButton() {
this.prompt.cancel();
}
});
};
var KeyringDummyDialog = class {
constructor() {

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, NM, Pango, Shell, St } = imports.gi;
const Signals = imports.signals;
const Config = imports.misc.config;
@@ -12,10 +12,9 @@ const ShellEntry = imports.ui.shellEntry;
const VPN_UI_GROUP = 'VPN Plugin UI';
var NetworkSecretDialog = GObject.registerClass(
class NetworkSecretDialog extends ModalDialog.ModalDialog {
_init(agent, requestId, connection, settingName, hints, flags, contentOverride) {
super._init({ styleClass: 'prompt-dialog' });
var NetworkSecretDialog = class extends ModalDialog.ModalDialog {
constructor(agent, requestId, connection, settingName, hints, flags, contentOverride) {
super({ styleClass: 'prompt-dialog' });
this._agent = agent;
this._requestId = requestId;
@@ -348,7 +347,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
return content;
}
});
};
var VPNRequestHandler = class {
constructor(agent, requestId, authHelper, serviceType, connection, hints, flags) {

View File

@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { AccountsService, Clutter, Gio, GLib,
GObject, Pango, PolkitAgent, Polkit, Shell, St } = imports.gi;
Pango, PolkitAgent, Polkit, Shell, St } = imports.gi;
const Signals = imports.signals;
const Animation = imports.ui.animation;
@@ -15,11 +15,9 @@ var DIALOG_ICON_SIZE = 48;
var WORK_SPINNER_ICON_SIZE = 16;
var AuthenticationDialog = GObject.registerClass({
Signals: { 'done': { param_types: [GObject.TYPE_BOOLEAN] } }
}, class AuthenticationDialog extends ModalDialog.ModalDialog {
_init(actionId, body, cookie, userNames) {
super._init({ styleClass: 'prompt-dialog' });
var AuthenticationDialog = class extends ModalDialog.ModalDialog {
constructor(actionId, body, cookie, userNames) {
super({ styleClass: 'prompt-dialog' });
this.actionId = actionId;
this.message = body;
@@ -27,7 +25,7 @@ var AuthenticationDialog = GObject.registerClass({
this._wasDismissed = false;
this._sessionUpdatedId = Main.sessionMode.connect('updated', () => {
this.visible = !Main.sessionMode.isLocked;
this._group.visible = !Main.sessionMode.isLocked;
});
this.connect('closed', this._onDialogClosed.bind(this));
@@ -328,7 +326,8 @@ var AuthenticationDialog = GObject.registerClass({
this._destroySession();
}
});
};
Signals.addSignalMethods(AuthenticationDialog.prototype);
var AuthenticationAgent = class {
constructor() {

View File

@@ -401,7 +401,7 @@ var ChatSource = class extends MessageTray.Source {
if (this._client.is_handling_channel(this._channel)) {
// We are handling the channel, try to pass it to Empathy or Polari
// (depending on the channel type)
// We don't check if either app is available - mission control will
// We don't check if either app is availble - mission control will
// fallback to something else if activation fails
let target;

View File

@@ -899,7 +899,7 @@ var Dash = class Dash {
favPos++;
}
// No drag placeholder means we don't want to favorite the app
// No drag placeholder means we don't wan't to favorite the app
// and we are dragging it to its original position
if (!this._dragPlaceholder)
return true;

View File

@@ -19,7 +19,7 @@
const Mainloop = imports.mainloop;
const { AccountsService, Clutter, Gio,
GLib, GObject, Pango, Polkit, Shell, St } = imports.gi;
GLib, Pango, Polkit, Shell, St } = imports.gi;
const CheckBox = imports.ui.checkBox;
const GnomeSession = imports.misc.gnomeSession;
@@ -226,11 +226,10 @@ function init() {
_endSessionDialog = new EndSessionDialog();
}
var EndSessionDialog = GObject.registerClass(
class EndSessionDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'end-session-dialog',
destroyOnClose: false });
var EndSessionDialog = class EndSessionDialog extends ModalDialog.ModalDialog {
constructor() {
super({ styleClass: 'end-session-dialog',
destroyOnClose: false });
this._loginManager = LoginManager.getLoginManager();
this._userManager = AccountsService.UserManager.get_default();
@@ -748,4 +747,4 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
Close(parameters, invocation) {
this.close();
}
});
};

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, GObject, Soup, St } = imports.gi;
const { Clutter, Gio, GLib, Soup, St } = imports.gi;
const Config = imports.misc.config;
const ExtensionUtils = imports.misc.extensionUtils;
@@ -176,10 +176,10 @@ function checkForUpdates() {
});
}
var InstallExtensionDialog = GObject.registerClass(
var InstallExtensionDialog =
class InstallExtensionDialog extends ModalDialog.ModalDialog {
_init(uuid, info, invocation) {
super._init({ styleClass: 'extension-dialog' });
constructor(uuid, info, invocation) {
super({ styleClass: 'extension-dialog' });
this._uuid = uuid;
this._info = info;
@@ -255,7 +255,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
this.close();
}
});
};
function init() {
_httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });

View File

@@ -43,9 +43,6 @@ function _popGrabHelper(grabHelper) {
// call grab().
var GrabHelper = class GrabHelper {
constructor(owner, params) {
if (!(owner instanceof Clutter.Actor))
throw new Error('GrabHelper owner must be a Clutter.Actor');
this._owner = owner;
this._modalParams = params;

View File

@@ -79,7 +79,7 @@ class BaseIcon extends St.Bin {
// This can be overridden by a subclass, or by the createIcon
// parameter to _init()
createIcon(size) {
throw new GObject.NotImplementedError(`createIcon in ${this.constructor.name}`);
throw new Error('no implementation of createIcon in ' + this);
}
setIconSize(size) {
@@ -322,7 +322,6 @@ var IconGrid = GObject.registerClass({
leftEmptySpace = availWidth - usedWidth;
}
let animating = this._clonesAnimating.length > 0;
let x = box.x1 + leftEmptySpace + this.leftPadding;
let y = box.y1 + this.topPadding;
let columnIndex = 0;
@@ -332,11 +331,10 @@ var IconGrid = GObject.registerClass({
if (this._rowLimit && rowIndex >= this._rowLimit ||
this._fillParent && childBox.y2 > availHeight - this.bottomPadding) {
children[i].opacity = 0;
children[i].hide();
} else {
if (!animating)
children[i].opacity = 255;
children[i].allocate(childBox, flags);
children[i].show();
}
columnIndex++;
@@ -380,7 +378,7 @@ var IconGrid = GObject.registerClass({
child != null;
child = child.get_next_sibling()) {
if (!child.visible || !child.opacity)
if (!child.visible)
continue;
let childVolume = child.get_transformed_paint_volume(this);
@@ -418,8 +416,7 @@ var IconGrid = GObject.registerClass({
animatePulse(animationDirection) {
if (animationDirection != AnimationDirection.IN)
throw new GObject.NotImplementedError("Pulse animation only implements " +
"'in' animation direction");
throw new Error("Pulse animation only implements 'in' animation direction");
this._cancelAnimation();
@@ -843,7 +840,7 @@ var PaginatedIconGrid = GObject.registerClass({
}
}
// Overridden from IconGrid
// Overriden from IconGrid
_getChildrenToAnimate() {
let children = this._getVisibleChildren();
let firstIndex = this._childrenPerPage * this.currentPage;

View File

@@ -282,7 +282,7 @@ var Key = class Key {
y_fill: true,
x_align: St.Align.START });
this._boxPointer.hide();
Main.layoutManager.addTopChrome(this._boxPointer);
Main.layoutManager.addChrome(this._boxPointer);
this._boxPointer.setPosition(this.keyButton, 0.5);
// Adds style to existing keyboard style to avoid repetition
@@ -1144,7 +1144,6 @@ var Keyboard = class Keyboard {
this._keyboardController.disconnect(this._keypadVisibleId);
if (this._focusNotifyId)
global.stage.disconnect(this._focusNotifyId);
this._clearShowIdle();
this._keyboard = null;
this.actor.destroy();
this.actor = null;
@@ -1230,7 +1229,6 @@ var Keyboard = class Keyboard {
if (!this._showIdleId) {
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
this.show(Main.layoutManager.focusIndex);
this._showIdleId = 0;
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.show');
@@ -1306,7 +1304,7 @@ var Keyboard = class Keyboard {
this._languagePopup.destroy();
this._languagePopup = new LanguageSelectionPopup(keyActor);
Main.layoutManager.addTopChrome(this._languagePopup.actor);
Main.layoutManager.addChrome(this._languagePopup.actor);
this._languagePopup.open(true);
}
@@ -1479,6 +1477,7 @@ var Keyboard = class Keyboard {
c.destroy();
});
this._currentPage = null;
this._groups = {};
this._onGroupChanged();
}
@@ -1521,24 +1520,13 @@ var Keyboard = class Keyboard {
_setActiveLayer(activeLevel) {
let activeGroupName = this._keyboardController.getCurrentGroup();
let layers = this._groups[activeGroupName];
let currentPage = layers[activeLevel];
if (this._currentPage == currentPage) {
this._updateCurrentPageVisible();
return;
}
if (this._currentPage != null) {
this._setCurrentLevelLatched(this._currentPage, false);
this._currentPage.disconnect(this._currentPage._destroyID);
this._currentPage.hide();
delete this._currentPage._destroyID;
}
this._currentPage = currentPage;
this._currentPage._destroyID = this._currentPage.connect('destroy', () => {
this._currentPage = null;
});
this._currentPage = layers[activeLevel];
this._updateCurrentPageVisible();
}
@@ -1626,6 +1614,18 @@ var Keyboard = class Keyboard {
this.setCursorLocation(null);
}
_hideSubkeys() {
if (this._subkeysBoxPointer) {
this._subkeysBoxPointer.hide(BoxPointer.PopupAnimation.FULL);
this._subkeysBoxPointer = null;
}
if (this._capturedEventId) {
this.actor.disconnect(this._capturedEventId);
this._capturedEventId = 0;
}
this._capturedPress = false;
}
resetSuggestions() {
if (this._suggestions)
this._suggestions.clear();

View File

@@ -11,7 +11,6 @@ const DND = imports.ui.dnd;
const Main = imports.ui.main;
const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
const Ripples = imports.ui.ripples;
var STARTUP_ANIMATION_TIME = 0.5;
var KEYBOARD_ANIMATION_TIME = 0.15;
@@ -217,17 +216,10 @@ var LayoutManager = GObject.registerClass({
this.uiGroup = new UiActor({ name: 'uiGroup' });
this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT);
global.stage.add_child(this.uiGroup);
global.stage.remove_actor(global.window_group);
this.uiGroup.add_actor(global.window_group);
// Using addChrome() to add actors to uiGroup will position actors
// underneath the top_window_group.
// To insert actors at the top of uiGroup, we use addTopChrome() or
// add the actor directly using uiGroup.add_actor().
global.stage.remove_actor(global.top_window_group);
this.uiGroup.add_actor(global.top_window_group);
global.stage.add_child(this.uiGroup);
this.overviewGroup = new St.Widget({ name: 'overviewGroup',
visible: false,
@@ -255,7 +247,7 @@ var LayoutManager = GObject.registerClass({
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
reactive: true,
track_hover: true });
this.addTopChrome(this.keyboardBox);
this.addChrome(this.keyboardBox);
this._keyboardHeightNotifyId = 0;
// A dummy actor that tracks the mouse or text cursor, based on the
@@ -263,6 +255,9 @@ var LayoutManager = GObject.registerClass({
this.dummyCursor = new St.Widget({ width: 0, height: 0, opacity: 0 });
this.uiGroup.add_actor(this.dummyCursor);
global.stage.remove_actor(global.top_window_group);
this.uiGroup.add_actor(global.top_window_group);
let feedbackGroup = Meta.get_feedback_group_for_display(global.display);
global.stage.remove_actor(feedbackGroup);
this.uiGroup.add_actor(feedbackGroup);
@@ -807,16 +802,6 @@ var LayoutManager = GObject.registerClass({
this._trackActor(actor, params);
}
// addTopChrome:
// @actor: an actor to add to the chrome
// @params: (optional) additional params
//
// Like addChrome(), but adds @actor above all windows, including popups.
addTopChrome(actor, params) {
this.uiGroup.add_actor(actor);
this._trackActor(actor, params);
}
// trackChrome:
// @actor: a descendant of the chrome to begin tracking
// @params: parameters describing how to track @actor
@@ -1073,7 +1058,8 @@ var LayoutManager = GObject.registerClass({
}
}
global.set_stage_input_region(rects);
if (!Meta.is_wayland_compositor())
global.set_stage_input_region(rects);
this._isPopupWindowVisible = isPopupMenuVisible;
let workspaceManager = global.workspace_manager;
@@ -1118,15 +1104,14 @@ var HotCorner = class HotCorner {
Shell.ActionMode.OVERVIEW);
this._pressureBarrier.connect('trigger', this._toggleOverview.bind(this));
let px = 0.0;
let py = 0.0;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
px = 1.0;
py = 0.0;
}
// Cache the three ripples instead of dynamically creating and destroying them.
this._ripple1 = new St.BoxLayout({ style_class: 'ripple-box', opacity: 0, visible: false });
this._ripple2 = new St.BoxLayout({ style_class: 'ripple-box', opacity: 0, visible: false });
this._ripple3 = new St.BoxLayout({ style_class: 'ripple-box', opacity: 0, visible: false });
this._ripples = new Ripples.Ripples(px, py, 'ripple-box');
this._ripples.addTo(layoutManager.uiGroup);
layoutManager.uiGroup.add_actor(this._ripple1);
layoutManager.uiGroup.add_actor(this._ripple2);
layoutManager.uiGroup.add_actor(this._ripple3);
}
setBarrierSize(size) {
@@ -1208,12 +1193,53 @@ var HotCorner = class HotCorner {
this.actor.destroy();
}
_animRipple(ripple, delay, time, startScale, startOpacity, finalScale) {
// We draw a ripple by using a source image and animating it scaling
// outwards and fading away. We want the ripples to move linearly
// or it looks unrealistic, but if the opacity of the ripple goes
// linearly to zero it fades away too quickly, so we use Tweener's
// 'onUpdate' to give a non-linear curve to the fade-away and make
// it more visible in the middle section.
ripple._opacity = startOpacity;
if (ripple.get_text_direction() == Clutter.TextDirection.RTL)
ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
ripple.visible = true;
ripple.opacity = 255 * Math.sqrt(startOpacity);
ripple.scale_x = ripple.scale_y = startScale;
ripple.x = this._x;
ripple.y = this._y;
Tweener.addTween(ripple, { _opacity: 0,
scale_x: finalScale,
scale_y: finalScale,
delay: delay,
time: time,
transition: 'linear',
onUpdate() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
onComplete() { ripple.visible = false; } });
}
_rippleAnimation() {
// Show three concentric ripples expanding outwards; the exact
// parameters were found by trial and error, so don't look
// for them to make perfect sense mathematically
// delay time scale opacity => scale
this._animRipple(this._ripple1, 0.0, 0.83, 0.25, 1.0, 1.5);
this._animRipple(this._ripple2, 0.05, 1.0, 0.0, 0.7, 1.25);
this._animRipple(this._ripple3, 0.35, 1.0, 0.0, 0.3, 1);
}
_toggleOverview() {
if (this._monitor.inFullscreen && !Main.overview.visible)
return;
if (Main.overview.shouldToggleByCornerOrButton()) {
this._ripples.playAnimation(this._x, this._y);
this._rippleAnimation();
Main.overview.toggle();
}
}

View File

@@ -7,7 +7,7 @@ const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
var DEFAULT_FADE_FACTOR = 0.4;
var VIGNETTE_BRIGHTNESS = 0.2;
var VIGNETTE_BRIGHTNESS = 0.8;
var VIGNETTE_SHARPNESS = 0.7;
const VIGNETTE_DECLARATIONS = '\

View File

@@ -1,24 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, St } = imports.gi;
const Ripples = imports.ui.ripples;
const Main = imports.ui.main;
const LOCATE_POINTER_KEY = "locate-pointer";
const LOCATE_POINTER_SCHEMA = "org.gnome.desktop.interface"
var locatePointer = class {
constructor() {
this._settings = new Gio.Settings({schema_id: LOCATE_POINTER_SCHEMA});
this._ripples = new Ripples.Ripples(0.5, 0.5, 'ripple-pointer-location');
this._ripples.addTo(Main.uiGroup);
}
show() {
if (!this._settings.get_boolean("locate-pointer"))
return;
let [x, y, mods] = global.get_pointer();
this._ripples.playAnimation(x, y);
}
};

View File

@@ -1272,7 +1272,7 @@ var ZoomRegion = class ZoomRegion {
/**
* getContrast:
* Retrieve the contrast of the magnified view.
* Retreive the contrast of the magnified view.
* @return Object containing the contrast for the red, green,
* and blue channels.
*/

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const AccessDialog = imports.ui.accessDialog;
@@ -37,12 +37,9 @@ const WindowManager = imports.ui.windowManager;
const Magnifier = imports.ui.magnifier;
const XdndHandler = imports.ui.xdndHandler;
const KbdA11yDialog = imports.ui.kbdA11yDialog;
const LocatePointer = imports.ui.locatePointer;
const PointerA11yTimeout = imports.ui.pointerA11yTimeout;
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
const LOG_DOMAIN = 'GNOME Shell';
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
var componentManager = null;
@@ -77,14 +74,12 @@ var layoutManager = null;
var kbdA11yDialog = null;
var inputMethod = null;
var introspectService = null;
var locatePointer = null;
let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
let _a11ySettings = null;
let _themeResource = null;
let _oskResource = null;
let pointerA11yTimeout = null;
function _sessionUpdated() {
if (sessionMode.isPrimary)
@@ -97,8 +92,6 @@ function _sessionUpdated() {
wm.allowKeybinding('overlay-key', Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW);
wm.allowKeybinding('locate-pointer-key', Shell.ActionMode.ALL);
wm.setCustomKeybindingHandler('panel-run-dialog',
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
@@ -172,8 +165,6 @@ function _initializeUI() {
kbdA11yDialog = new KbdA11yDialog.KbdA11yDialog();
wm = new WindowManager.WindowManager();
magnifier = new Magnifier.Magnifier();
locatePointer = new LocatePointer.locatePointer();
if (LoginManager.canLock())
screenShield = new ScreenShield.ScreenShield();
@@ -192,8 +183,6 @@ function _initializeUI() {
layoutManager.init();
overview.init();
pointerA11yTimeout = new PointerA11yTimeout.PointerA11yTimeout();
_a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
global.display.connect('overlay-key', () => {
@@ -201,10 +190,6 @@ function _initializeUI() {
overview.toggle();
});
global.connect('locate-pointer', () => {
locatePointer.show();
});
global.display.connect('show-restart-message', (display, message) => {
showRestartMessage(message);
return true;
@@ -244,14 +229,10 @@ function _initializeUI() {
}
if (sessionMode.currentMode != 'gdm' &&
sessionMode.currentMode != 'initial-setup') {
GLib.log_structured(LOG_DOMAIN, GLib.LogLevelFlags.LEVEL_MESSAGE, {
'MESSAGE': `GNOME Shell started at ${_startDate}`,
'MESSAGE_ID': GNOMESHELL_STARTED_MESSAGE_ID
});
Shell.Global.log_structured('GNOME Shell started at ' + _startDate,
['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]);
}
LoginManager.registerSessionWithGDM();
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
if (perfModuleName) {
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
@@ -655,7 +636,7 @@ function _queueBeforeRedraw(workId) {
* initialization as well, under the assumption that new actors
* will need it.
*
* Returns: A string work identifier
* Returns: A string work identifer
*/
function initializeDeferredWork(actor, callback, props) {
// Turn into a string so we can use as an object property
@@ -708,13 +689,12 @@ function queueDeferredWork(workId) {
}
}
var RestartMessage = GObject.registerClass(
class RestartMessage extends ModalDialog.ModalDialog {
_init(message) {
super._init({ shellReactive: true,
styleClass: 'restart-message headline',
shouldFadeIn: false,
destroyOnClose: true });
var RestartMessage = class extends ModalDialog.ModalDialog {
constructor(message) {
super({ shellReactive: true,
styleClass: 'restart-message headline',
shouldFadeIn: false,
destroyOnClose: true });
let label = new St.Label({ text: message });
@@ -724,7 +704,7 @@ class RestartMessage extends ModalDialog.ModalDialog {
y_align: St.Align.MIDDLE });
this.buttonLayout.hide();
}
});
};
function showRestartMessage(message) {
let restartMessage = new RestartMessage(message);

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Atk, Clutter, GObject, Shell, St } = imports.gi;
const { Atk, Clutter, Shell, St } = imports.gi;
const Signals = imports.signals;
const Dialog = imports.ui.dialog;
@@ -21,20 +21,8 @@ var State = {
FADED_OUT: 4
};
var ModalDialog = GObject.registerClass({
Properties: { 'state': GObject.ParamSpec.int('state', 'Dialog state', 'state',
GObject.ParamFlags.READABLE,
Math.min(...Object.values(State)),
Math.max(...Object.values(State)),
State.CLOSED) },
Signals: { 'opened': {}, 'closed': {} }
}, class ModalDialog extends St.Widget {
_init(params) {
super._init({ visible: false,
x: 0,
y: 0,
accessible_role: Atk.Role.DIALOG });
var ModalDialog = class {
constructor(params) {
params = Params.parse(params, { shellReactive: false,
styleClass: null,
actionMode: Shell.ActionMode.SYSTEM_MODAL,
@@ -42,7 +30,7 @@ var ModalDialog = GObject.registerClass({
shouldFadeOut: true,
destroyOnClose: true });
this._state = State.CLOSED;
this.state = State.CLOSED;
this._hasModal = false;
this._actionMode = params.actionMode;
this._shellReactive = params.shellReactive;
@@ -50,25 +38,31 @@ var ModalDialog = GObject.registerClass({
this._shouldFadeOut = params.shouldFadeOut;
this._destroyOnClose = params.destroyOnClose;
Main.layoutManager.modalDialogGroup.add_actor(this);
this._group = new St.Widget({ visible: false,
x: 0,
y: 0,
accessible_role: Atk.Role.DIALOG });
Main.layoutManager.modalDialogGroup.add_actor(this._group);
let constraint = new Clutter.BindConstraint({ source: global.stage,
coordinate: Clutter.BindCoordinate.ALL });
this.add_constraint(constraint);
this._group.add_constraint(constraint);
this._group.connect('destroy', this._onGroupDestroy.bind(this));
this.backgroundStack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._backgroundBin = new St.Bin({ child: this.backgroundStack,
x_fill: true, y_fill: true });
this._monitorConstraint = new Layout.MonitorConstraint();
this._backgroundBin.add_constraint(this._monitorConstraint);
this.add_actor(this._backgroundBin);
this._group.add_actor(this._backgroundBin);
this.dialogLayout = new Dialog.Dialog(this.backgroundStack, params.styleClass);
this.contentLayout = this.dialogLayout.contentLayout;
this.buttonLayout = this.dialogLayout.buttonLayout;
if (!this._shellReactive) {
this._lightbox = new Lightbox.Lightbox(this,
this._lightbox = new Lightbox.Lightbox(this._group,
{ inhibitEvents: true,
radialEffect: true });
this._lightbox.highlight(this._backgroundBin);
@@ -83,16 +77,8 @@ var ModalDialog = GObject.registerClass({
this._savedKeyFocus = null;
}
get state() {
return this._state;
}
_setState(state) {
if (this._state == state)
return;
this._state = state;
this.notify('state');
destroy() {
this._group.destroy();
}
clearButtons() {
@@ -110,25 +96,29 @@ var ModalDialog = GObject.registerClass({
return this.dialogLayout.addButton(buttonInfo);
}
_onGroupDestroy() {
this.emit('destroy');
}
_fadeOpen(onPrimary) {
if (onPrimary)
this._monitorConstraint.primary = true;
else
this._monitorConstraint.index = global.display.get_current_monitor();
this._setState(State.OPENING);
this.state = State.OPENING;
this.dialogLayout.opacity = 255;
if (this._lightbox)
this._lightbox.show();
this.opacity = 0;
this.show();
Tweener.addTween(this,
this._group.opacity = 0;
this._group.show();
Tweener.addTween(this._group,
{ opacity: 255,
time: this._shouldFadeIn ? OPEN_AND_CLOSE_TIME : 0,
transition: 'easeOutQuad',
onComplete: () => {
this._setState(State.OPENED);
this.state = State.OPENED;
this.emit('opened');
}
});
@@ -158,8 +148,8 @@ var ModalDialog = GObject.registerClass({
}
_closeComplete() {
this._setState(State.CLOSED);
this.hide();
this.state = State.CLOSED;
this._group.hide();
this.emit('closed');
if (this._destroyOnClose)
@@ -170,12 +160,12 @@ var ModalDialog = GObject.registerClass({
if (this.state == State.CLOSED || this.state == State.CLOSING)
return;
this._setState(State.CLOSING);
this.state = State.CLOSING;
this.popModal(timestamp);
this._savedKeyFocus = null;
if (this._shouldFadeOut)
Tweener.addTween(this,
Tweener.addTween(this._group,
{ opacity: 0,
time: OPEN_AND_CLOSE_TIME,
transition: 'easeOutQuad',
@@ -193,11 +183,11 @@ var ModalDialog = GObject.registerClass({
return;
let focus = global.stage.key_focus;
if (focus && this.contains(focus))
if (focus && this._group.contains(focus))
this._savedKeyFocus = focus;
else
this._savedKeyFocus = null;
Main.popModal(this, timestamp);
Main.popModal(this._group, timestamp);
this._hasModal = false;
if (!this._shellReactive)
@@ -211,7 +201,7 @@ var ModalDialog = GObject.registerClass({
let params = { actionMode: this._actionMode };
if (timestamp)
params['timestamp'] = timestamp;
if (!Main.pushModal(this, params))
if (!Main.pushModal(this._group, params))
return false;
this._hasModal = true;
@@ -234,10 +224,10 @@ var ModalDialog = GObject.registerClass({
// can be dismissed by a close call.
//
// The main point of this method is to give some indication to the user
// that the dialog response has been acknowledged but will take a few
// that the dialog reponse has been acknowledged but will take a few
// moments before being processed.
// e.g., if a user clicked "Log Out" then the dialog should go away
// immediately, but the lightbox should remain until the logout is
// imediately, but the lightbox should remain until the logout is
// complete.
_fadeOutDialog(timestamp) {
if (this.state == State.CLOSED || this.state == State.CLOSING)
@@ -252,8 +242,9 @@ var ModalDialog = GObject.registerClass({
time: FADE_OUT_DIALOG_TIME,
transition: 'easeOutQuad',
onComplete: () => {
this._setState(State.FADED_OUT);
this.state = State.FADED_OUT;
}
});
}
});
};
Signals.addSignalMethods(ModalDialog.prototype);

View File

@@ -122,7 +122,7 @@ var SlidingControl = class {
}
_getSlide() {
throw new GObject.NotImplementedError(`_getSlide in ${this.constructor.name}`);
throw new Error('getSlide() must be overridden');
}
_updateSlide() {

View File

@@ -66,7 +66,7 @@ function _unpremultiply(color) {
class AppMenu extends PopupMenu.PopupMenu {
constructor(sourceActor) {
super(sourceActor, 0.5, St.Side.TOP);
super(sourceActor, 0.0, St.Side.TOP);
this.actor.add_style_class_name('app-menu');
@@ -122,7 +122,7 @@ class AppMenu extends PopupMenu.PopupMenu {
_updateDetailsVisibility() {
let sw = this._appSystem.lookup_app('org.gnome.Software.desktop');
this._detailsItem.visible = (sw != null);
this._detailsItem.actor.visible = (sw != null);
}
isEmpty() {
@@ -160,7 +160,7 @@ class AppMenu extends PopupMenu.PopupMenu {
});
});
this._newWindowItem.visible =
this._newWindowItem.actor.visible =
app && app.can_open_new_window() && !actions.includes('new-window');
}
@@ -817,7 +817,6 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
'dateMenu': imports.ui.dateMenu.DateMenuButton,
'a11y': imports.ui.status.accessibility.ATIndicator,
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
'dwellClick': imports.ui.status.dwellClick.DwellClickIndicator,
};
var Panel = GObject.registerClass(

View File

@@ -1,104 +0,0 @@
const { Clutter, GLib, GObject, Meta, St } = imports.gi;
const Tweener = imports.ui.tweener;
const Main = imports.ui.main;
const Cairo = imports.cairo;
const ANIMATION_STEPS = 36.;
var PieTimer = GObject.registerClass(
class PieTimer extends St.DrawingArea {
_init() {
this._x = 0;
this._y = 0;
this._startTime = 0;
this._duration = 0;
super._init( { style_class: 'pie-timer',
visible: false,
can_focus: false,
reactive: false });
}
vfunc_repaint() {
let node = this.get_theme_node();
let backgroundColor = node.get_color('-pie-background-color');
let borderColor = node.get_color('-pie-border-color');
let borderWidth = node.get_length('-pie-border-width');
let [width, height] = this.get_surface_size();
let radius = Math.min(width / 2, height / 2);
let currentTime = GLib.get_monotonic_time() / 1000.0;
let ellapsed = currentTime - this._startTime;
let angle = (ellapsed / this._duration) * 2 * Math.PI;
let startAngle = 3 * Math.PI / 2;
let endAngle = startAngle + angle;
let cr = this.get_context();
cr.setLineCap(Cairo.LineCap.ROUND);
cr.setLineJoin(Cairo.LineJoin.ROUND);
cr.translate(width / 2, height / 2);
cr.moveTo(0, 0);
cr.arc(0, 0, radius - borderWidth, startAngle, endAngle);
cr.lineTo(0, 0);
cr.closePath();
cr.setLineWidth(0);
Clutter.cairo_set_source_color(cr, backgroundColor);
cr.fillPreserve();
cr.setLineWidth(borderWidth);
Clutter.cairo_set_source_color(cr, borderColor);
cr.stroke();
cr.$dispose();
}
start(x, y, duration) {
Tweener.removeTweens(this);
this.x = x - this.width / 2;
this.y = y - this.height / 2;
this.show();
Main.uiGroup.set_child_above_sibling(this, null);
this._startTime = GLib.get_monotonic_time() / 1000.0;
this._duration = duration;
Tweener.addTween(this,
{ opacity: 255,
time: duration / 1000,
transition: 'easeOutQuad',
onUpdateScope: this,
onUpdate() { this.queue_repaint() },
onCompleteScope: this,
onComplete() { this.stop(); }
});
}
stop() {
Tweener.removeTweens(this);
this.hide();
}
});
var PointerA11yTimeout = class PointerA11yTimeout {
constructor() {
let manager = Clutter.DeviceManager.get_default();
let pieTimer = new PieTimer();
Main.uiGroup.add_actor(pieTimer);
manager.connect('ptr-a11y-timeout-started', (manager, device, type, timeout) => {
let [x, y, mods] = global.get_pointer();
pieTimer.start(x, y, timeout);
if (type == Clutter.PointerA11yTimeoutType.GESTURE)
global.display.set_cursor(Meta.Cursor.CROSSHAIR);
});
manager.connect('ptr-a11y-timeout-stopped', (manager, device, type) => {
pieTimer.stop();
if (type == Clutter.PointerA11yTimeoutType.GESTURE)
global.display.set_cursor(Meta.Cursor.DEFAULT);
});
}
};

View File

@@ -51,64 +51,49 @@ function arrowIcon(side) {
return arrow;
}
var PopupBaseMenuItem = GObject.registerClass({
Properties: {
'active': GObject.ParamSpec.boolean('active', 'active', 'active',
GObject.ParamFlags.READWRITE,
GObject.TYPE_BOOLEAN,
false),
'sensitive': GObject.ParamSpec.boolean('sensitive', 'sensitive', 'sensitive',
GObject.ParamFlags.READWRITE,
GObject.TYPE_BOOLEAN,
true),
},
Signals: {
'activate': { param_types: [Clutter.Event.$gtype] },
}
}, class PopupBaseMenuItem extends St.BoxLayout {
_init(params) {
var PopupBaseMenuItem = class {
constructor(params) {
params = Params.parse (params, { reactive: true,
activate: true,
hover: true,
style_class: null,
can_focus: true
});
super._init({ style_class: 'popup-menu-item',
reactive: params.reactive,
track_hover: params.reactive,
can_focus: params.can_focus,
accessible_role: Atk.Role.MENU_ITEM });
this._delegate = this;
this.actor = new St.BoxLayout({ style_class: 'popup-menu-item',
reactive: params.reactive,
track_hover: params.reactive,
can_focus: params.can_focus,
accessible_role: Atk.Role.MENU_ITEM });
this.actor._delegate = this;
this._ornament = Ornament.NONE;
this._ornamentLabel = new St.Label({ style_class: 'popup-menu-ornament' });
this.add(this._ornamentLabel);
this.actor.add(this._ornamentLabel);
this._parent = null;
this._active = false;
this.active = false;
this._activatable = params.reactive && params.activate;
this._sensitive = true;
if (!this._activatable)
this.add_style_class_name('popup-inactive-menu-item');
this.actor.add_style_class_name('popup-inactive-menu-item');
if (params.style_class)
this.add_style_class_name(params.style_class);
this.actor.add_style_class_name(params.style_class);
if (this._activatable) {
this.connect('button-press-event', this._onButtonPressEvent.bind(this));
this.connect('button-release-event', this._onButtonReleaseEvent.bind(this));
this.connect('touch-event', this._onTouchEvent.bind(this));
this.connect('key-press-event', this._onKeyPressEvent.bind(this));
this.actor.connect('button-press-event', this._onButtonPressEvent.bind(this));
this.actor.connect('button-release-event', this._onButtonReleaseEvent.bind(this));
this.actor.connect('touch-event', this._onTouchEvent.bind(this));
this.actor.connect('key-press-event', this._onKeyPressEvent.bind(this));
}
if (params.reactive && params.hover)
this.bind_property('hover', this, 'active', GObject.BindingFlags.SYNC_CREATE);
}
this.actor.connect('notify::hover', this._onHoverChanged.bind(this));
get actor() {
/* This is kept for compatibility with current implementation, and we
don't want to warn here yet since PopupMenu depends on this */
return this;
this.actor.connect('key-focus-in', this._onKeyFocusIn.bind(this));
this.actor.connect('key-focus-out', this._onKeyFocusOut.bind(this));
this.actor.connect('destroy', this._onDestroy.bind(this));
}
_getTopMenu() {
@@ -124,24 +109,24 @@ var PopupBaseMenuItem = GObject.registerClass({
_onButtonPressEvent(actor, event) {
// This is the CSS active state
this.add_style_pseudo_class('active');
this.actor.add_style_pseudo_class ('active');
return Clutter.EVENT_PROPAGATE;
}
_onButtonReleaseEvent(actor, event) {
this.remove_style_pseudo_class('active');
this.actor.remove_style_pseudo_class ('active');
this.activate(event);
return Clutter.EVENT_STOP;
}
_onTouchEvent(actor, event) {
if (event.type() == Clutter.EventType.TOUCH_END) {
this.remove_style_pseudo_class('active');
this.actor.remove_style_pseudo_class ('active');
this.activate(event);
return Clutter.EVENT_STOP;
} else if (event.type() == Clutter.EventType.TOUCH_BEGIN) {
// This is the CSS active state
this.add_style_pseudo_class('active');
this.actor.add_style_pseudo_class ('active');
}
return Clutter.EVENT_PROPAGATE;
}
@@ -166,56 +151,54 @@ var PopupBaseMenuItem = GObject.registerClass({
return Clutter.EVENT_PROPAGATE;
}
vfunc_key_focus_in() {
super.vfunc_key_focus_in();
this.active = true;
_onKeyFocusIn(actor) {
this.setActive(true);
}
vfunc_key_focus_out() {
super.vfunc_key_focus_out();
this.active = false;
_onKeyFocusOut(actor) {
this.setActive(false);
}
_onHoverChanged(actor) {
this.setActive(actor.hover);
}
activate(event) {
this.emit('activate', event);
}
get active() {
return this._active;
}
set active(active) {
setActive(active) {
let activeChanged = active != this.active;
if (activeChanged) {
this._active = active;
this.active = active;
if (active) {
this.add_style_class_name('selected');
if (this.can_focus)
this.grab_key_focus();
this.actor.add_style_class_name('selected');
if (this.actor.can_focus)
this.actor.grab_key_focus();
} else {
this.remove_style_class_name('selected');
this.actor.remove_style_class_name('selected');
// Remove the CSS active state if the user press the button and
// while holding moves to another menu item, so we don't paint all items.
// The correct behaviour would be to set the new item with the CSS
// active state as well, but button-press-event is not trigered,
// so we should track it in our own, which would involve some work
// in the container
this.remove_style_pseudo_class('active');
this.actor.remove_style_pseudo_class ('active');
}
this.notify('active');
this.emit('active-changed', active);
}
}
syncSensitive() {
let sensitive = this.sensitive;
this.reactive = sensitive;
this.can_focus = sensitive;
this.notify('sensitive');
let sensitive = this.getSensitive();
this.actor.reactive = sensitive;
this.actor.can_focus = sensitive;
this.emit('sensitive-changed');
return sensitive;
}
getSensitive() {
let parentSensitive = this._parent ? this._parent.sensitive : true;
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
return this._activatable && this._sensitive && parentSensitive;
}
@@ -227,12 +210,12 @@ var PopupBaseMenuItem = GObject.registerClass({
this.syncSensitive();
}
get sensitive() {
return this.getSensitive();
destroy() {
this.actor.destroy();
}
set sensitive(sensitive) {
this.setSensitive(sensitive);
_onDestroy() {
this.emit('destroy');
}
setOrnament(ornament) {
@@ -243,38 +226,36 @@ var PopupBaseMenuItem = GObject.registerClass({
if (ornament == Ornament.DOT) {
this._ornamentLabel.text = '\u2022';
this.add_accessible_state(Atk.StateType.CHECKED);
this.actor.add_accessible_state(Atk.StateType.CHECKED);
} else if (ornament == Ornament.CHECK) {
this._ornamentLabel.text = '\u2713';
this.add_accessible_state(Atk.StateType.CHECKED);
this.actor.add_accessible_state(Atk.StateType.CHECKED);
} else if (ornament == Ornament.NONE) {
this._ornamentLabel.text = '';
this.remove_accessible_state(Atk.StateType.CHECKED);
this.actor.remove_accessible_state(Atk.StateType.CHECKED);
}
}
});
};
Signals.addSignalMethods(PopupBaseMenuItem.prototype);
var PopupMenuItem = GObject.registerClass(
class PopupMenuItem extends PopupBaseMenuItem {
_init(text, params) {
super._init(params);
var PopupMenuItem = class extends PopupBaseMenuItem {
constructor(text, params) {
super(params);
this.label = new St.Label({ text: text });
this.add_child(this.label);
this.label_actor = this.label
this.actor.add_child(this.label);
this.actor.label_actor = this.label
}
});
};
var PopupSeparatorMenuItem = GObject.registerClass(
class PopupSeparatorMenuItem extends PopupBaseMenuItem {
_init(text) {
super._init({ reactive: false,
can_focus: false });
var PopupSeparatorMenuItem = class extends PopupBaseMenuItem {
constructor(text) {
super({ reactive: false,
can_focus: false});
this.label = new St.Label({ text: text || '' });
this.add(this.label);
this.label_actor = this.label;
this.actor.add(this.label);
this.actor.label_actor = this.label;
this.label.connect('notify::text',
this._syncVisibility.bind(this));
@@ -283,78 +264,75 @@ class PopupSeparatorMenuItem extends PopupBaseMenuItem {
this._separator = new St.Widget({ style_class: 'popup-separator-menu-item',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.add(this._separator, { expand: true });
this.actor.add(this._separator, { expand: true });
}
_syncVisibility() {
this.label.visible = this.label.text != '';
}
});
};
var Switch = GObject.registerClass(
class Switch extends St.Bin {
_init(state) {
super._init({ style_class: 'toggle-switch',
accessible_role: Atk.Role.CHECK_BOX,
can_focus: true });
var Switch = class {
constructor(state) {
this.actor = new St.Bin({ style_class: 'toggle-switch',
accessible_role: Atk.Role.CHECK_BOX,
can_focus: true });
this.setToggleState(state);
}
setToggleState(state) {
if (state)
this.add_style_pseudo_class('checked');
this.actor.add_style_pseudo_class('checked');
else
this.remove_style_pseudo_class('checked');
this.actor.remove_style_pseudo_class('checked');
this.state = state;
}
toggle() {
this.setToggleState(!this.state);
}
});
};
var PopupSwitchMenuItem = GObject.registerClass({
Signals: { 'toggled': { param_types: [GObject.TYPE_BOOLEAN] }, },
},
class PopupSwitchMenuItem extends PopupBaseMenuItem {
_init(text, active, params) {
super._init(params);
var PopupSwitchMenuItem = class extends PopupBaseMenuItem {
constructor(text, active, params) {
super(params);
this.label = new St.Label({ text: text });
this._switch = new Switch(active);
this.accessible_role = Atk.Role.CHECK_MENU_ITEM;
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
this.checkAccessibleState();
this.label_actor = this.label;
this.actor.label_actor = this.label;
this.add_child(this.label);
this.actor.add_child(this.label);
this._statusBin = new St.Bin({ x_align: St.Align.END });
this.add(this._statusBin, { expand: true, x_align: St.Align.END });
this.actor.add(this._statusBin, { expand: true, x_align: St.Align.END });
this._statusLabel = new St.Label({ text: '',
style_class: 'popup-status-menu-item'
});
this._statusBin.child = this._switch;
this._statusBin.child = this._switch.actor;
}
setStatus(text) {
if (text != null) {
this._statusLabel.text = text;
this._statusBin.child = this._statusLabel;
this.reactive = false;
this.accessible_role = Atk.Role.MENU_ITEM;
this.actor.reactive = false;
this.actor.accessible_role = Atk.Role.MENU_ITEM;
} else {
this._statusBin.child = this._switch;
this.reactive = true;
this.accessible_role = Atk.Role.CHECK_MENU_ITEM;
this._statusBin.child = this._switch.actor;
this.actor.reactive = true;
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
}
this.checkAccessibleState();
}
activate(event) {
if (this._switch.mapped)
if (this._switch.actor.mapped) {
this.toggle();
}
// we allow pressing space to toggle the switch
// without closing the menu
@@ -381,30 +359,29 @@ class PopupSwitchMenuItem extends PopupBaseMenuItem {
}
checkAccessibleState() {
switch (this.accessible_role) {
switch (this.actor.accessible_role) {
case Atk.Role.CHECK_MENU_ITEM:
if (this._switch.state)
this.add_accessible_state(Atk.StateType.CHECKED);
this.actor.add_accessible_state (Atk.StateType.CHECKED);
else
this.remove_accessible_state(Atk.StateType.CHECKED);
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
break;
default:
this.remove_accessible_state(Atk.StateType.CHECKED);
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
}
}
});
};
var PopupImageMenuItem = GObject.registerClass(
class PopupImageMenuItem extends PopupBaseMenuItem {
_init(text, icon, params) {
super._init(params);
var PopupImageMenuItem = class extends PopupBaseMenuItem {
constructor(text, icon, params) {
super(params);
this._icon = new St.Icon({ style_class: 'popup-menu-icon',
x_align: Clutter.ActorAlign.END });
this.add_child(this._icon);
this.actor.add_child(this._icon);
this.label = new St.Label({ text: text });
this.add_child(this.label);
this.label_actor = this.label;
this.actor.add_child(this.label);
this.actor.label_actor = this.label;
this.setIcon(icon);
}
@@ -416,7 +393,7 @@ class PopupImageMenuItem extends PopupBaseMenuItem {
else
this._icon.icon_name = icon;
}
});
};
var PopupMenuBase = class {
constructor(sourceActor, styleClass) {
@@ -460,21 +437,13 @@ var PopupMenuBase = class {
}
getSensitive() {
let parentSensitive = this._parent ? this._parent.sensitive : true;
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
return this._sensitive && parentSensitive;
}
setSensitive(sensitive) {
this._sensitive = sensitive;
this.emit('notify::sensitive');
}
get sensitive() {
return this.getSensitive();
}
set sensitive(sensitive) {
this.setSensitive(sensitive);
this.emit('sensitive-changed');
}
_sessionUpdated() {
@@ -510,7 +479,7 @@ var PopupMenuBase = class {
app.activate();
});
menuItem.visible = Main.sessionMode.allowSettings;
menuItem.actor.visible = Main.sessionMode.allowSettings;
this._settingsActions[desktopFile] = menuItem;
return menuItem;
@@ -519,7 +488,7 @@ var PopupMenuBase = class {
_setSettingsVisibility(visible) {
for (let id in this._settingsActions) {
let item = this._settingsActions[id];
item.visible = visible;
item.actor.visible = visible;
}
}
@@ -542,17 +511,16 @@ var PopupMenuBase = class {
_subMenuActiveChanged(submenu, submenuItem) {
if (this._activeMenuItem && this._activeMenuItem != submenuItem)
this._activeMenuItem.active = false;
this._activeMenuItem.setActive(false);
this._activeMenuItem = submenuItem;
this.emit('active-changed', submenuItem);
}
_connectItemSignals(menuItem) {
menuItem._activeChangeId = menuItem.connect('notify::active', (menuItem) => {
let active = menuItem.active;
menuItem._activeChangeId = menuItem.connect('active-changed', (menuItem, active) => {
if (active && this._activeMenuItem != menuItem) {
if (this._activeMenuItem)
this._activeMenuItem.active = false;
this._activeMenuItem.setActive(false);
this._activeMenuItem = menuItem;
this.emit('active-changed', menuItem);
} else if (!active && this._activeMenuItem == menuItem) {
@@ -560,8 +528,8 @@ var PopupMenuBase = class {
this.emit('active-changed', null);
}
});
menuItem._sensitiveChangeId = menuItem.connect('notify::sensitive', () => {
let sensitive = menuItem.sensitive;
menuItem._sensitiveChangeId = menuItem.connect('sensitive-changed', () => {
let sensitive = menuItem.getSensitive();
if (!sensitive && this._activeMenuItem == menuItem) {
if (!this.actor.navigate_focus(menuItem.actor,
St.DirectionType.TAB_FORWARD,
@@ -572,12 +540,12 @@ var PopupMenuBase = class {
menuItem.actor.grab_key_focus();
}
});
menuItem._activateId = menuItem.connect_after('activate', (menuItem, event) => {
menuItem._activateId = menuItem.connect('activate', (menuItem, event) => {
this.emit('activate', menuItem);
this.itemActivated(BoxPointer.PopupAnimation.FULL);
});
menuItem._parentSensitiveChangeId = this.connect('notify::sensitive', () => {
menuItem._parentSensitiveChangeId = this.connect('sensitive-changed', () => {
menuItem.syncSensitive();
});
@@ -629,7 +597,7 @@ var PopupMenuBase = class {
return;
}
menuItem.show();
menuItem.actor.show();
}
moveMenuItem(menuItem, position) {
@@ -676,8 +644,8 @@ var PopupMenuBase = class {
let parentClosingId = this.connect('menu-closed', () => {
menuItem.emit('menu-closed');
});
let subMenuSensitiveChangedId = this.connect('notify::sensitive', () => {
menuItem.emit('notify::sensitive');
let subMenuSensitiveChangedId = this.connect('sensitive-changed', () => {
menuItem.emit('sensitive-changed');
});
menuItem.connect('destroy', () => {
@@ -883,7 +851,7 @@ var PopupMenu = class extends PopupMenuBase {
close(animate) {
if (this._activeMenuItem)
this._activeMenuItem.active = false;
this._activeMenuItem.setActive(false);
if (this._boxPointer.visible) {
this._boxPointer.close(animate, () => {
@@ -916,10 +884,6 @@ var PopupDummyMenu = class {
return true;
}
get sensitive() {
return this.getSensitive();
}
open() { this.emit('open-state-changed', true); }
close() { this.emit('open-state-changed', false); }
toggle() {}
@@ -959,11 +923,7 @@ var PopupSubMenu = class extends PopupMenuBase {
}
getSensitive() {
return this._sensitive && this.sourceActor.sensitive;
}
get sensitive() {
return this.getSensitive();
return this._sensitive && this.sourceActor._delegate.getSensitive();
}
open(animate) {
@@ -1030,7 +990,7 @@ var PopupSubMenu = class extends PopupMenuBase {
this.emit('open-state-changed', false);
if (this._activeMenuItem)
this._activeMenuItem.active = false;
this._activeMenuItem.setActive(false);
if (animate && this._needsScrollbar())
animate = false;
@@ -1062,7 +1022,7 @@ var PopupSubMenu = class extends PopupMenuBase {
if (this.isOpen && event.get_key_symbol() == Clutter.KEY_Left) {
this.close(BoxPointer.PopupAnimation.FULL);
this.sourceActor._delegate.active = true;
this.sourceActor._delegate.setActive(true);
return Clutter.EVENT_STOP;
}
@@ -1093,26 +1053,25 @@ var PopupMenuSection = class extends PopupMenuBase {
close() { this.emit('open-state-changed', false); }
};
var PopupSubMenuMenuItem = GObject.registerClass(
class PopupSubMenuMenuItem extends PopupBaseMenuItem {
_init(text, wantIcon) {
super._init();
var PopupSubMenuMenuItem = class extends PopupBaseMenuItem {
constructor(text, wantIcon) {
super();
this.add_style_class_name('popup-submenu-menu-item');
this.actor.add_style_class_name('popup-submenu-menu-item');
if (wantIcon) {
this.icon = new St.Icon({ style_class: 'popup-menu-icon' });
this.add_child(this.icon);
this.actor.add_child(this.icon);
}
this.label = new St.Label({ text: text,
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.add_child(this.label);
this.label_actor = this.label;
this.actor.add_child(this.label);
this.actor.label_actor = this.label;
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
this.add(expander, { expand: true });
this.actor.add(expander, { expand: true });
this._triangle = arrowIcon(St.Side.RIGHT);
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });
@@ -1121,12 +1080,11 @@ class PopupSubMenuMenuItem extends PopupBaseMenuItem {
y_align: Clutter.ActorAlign.CENTER });
this._triangleBin.add_child(this._triangle);
this.add_child(this._triangleBin);
this.add_accessible_state(Atk.StateType.EXPANDABLE);
this.actor.add_child(this._triangleBin);
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
this.menu = new PopupSubMenu(this, this._triangle);
this.menu = new PopupSubMenu(this.actor, this._triangle);
this.menu.connect('open-state-changed', this._subMenuOpenStateChanged.bind(this));
this.connect('destroy', () => { this.menu.destroy(); });
}
_setParent(parent) {
@@ -1143,18 +1101,24 @@ class PopupSubMenuMenuItem extends PopupBaseMenuItem {
_subMenuOpenStateChanged(menu, open) {
if (open) {
this.add_style_pseudo_class('open');
this.actor.add_style_pseudo_class('open');
this._getTopMenu()._setOpenedSubMenu(this.menu);
this.add_accessible_state(Atk.StateType.EXPANDED);
this.add_style_pseudo_class('checked');
this.actor.add_accessible_state (Atk.StateType.EXPANDED);
this.actor.add_style_pseudo_class('checked');
} else {
this.remove_style_pseudo_class('open');
this.actor.remove_style_pseudo_class('open');
this._getTopMenu()._setOpenedSubMenu(null);
this.remove_accessible_state (Atk.StateType.EXPANDED);
this.remove_style_pseudo_class('checked');
this.actor.remove_accessible_state (Atk.StateType.EXPANDED);
this.actor.remove_style_pseudo_class('checked');
}
}
destroy() {
this.menu.destroy();
super.destroy();
}
setSubmenuShown(open) {
if (open)
this.menu.open(BoxPointer.PopupAnimation.FULL);
@@ -1192,7 +1156,7 @@ class PopupSubMenuMenuItem extends PopupBaseMenuItem {
_onButtonReleaseEvent(actor) {
// Since we override the parent, we need to manage what the parent does
// with the active style class
this.remove_style_pseudo_class('active');
this.actor.remove_style_pseudo_class ('active');
this._setOpenState(!this._getOpenState());
return Clutter.EVENT_PROPAGATE;
}
@@ -1201,12 +1165,12 @@ class PopupSubMenuMenuItem extends PopupBaseMenuItem {
if (event.type() == Clutter.EventType.TOUCH_END) {
// Since we override the parent, we need to manage what the parent does
// with the active style class
this.remove_style_pseudo_class('active');
this.actor.remove_style_pseudo_class ('active');
this._setOpenState(!this._getOpenState());
}
return Clutter.EVENT_PROPAGATE;
}
});
};
/* Basic implementation of a menu manager.
* Call addMenu to add menus
@@ -1215,6 +1179,7 @@ var PopupMenuManager = class {
constructor(owner, grabParams) {
grabParams = Params.parse(grabParams,
{ actionMode: Shell.ActionMode.POPUP });
this._owner = owner;
this._grabHelper = new GrabHelper.GrabHelper(owner, grabParams);
this._menus = [];
}

View File

@@ -89,8 +89,6 @@ function loadRemoteSearchProviders(searchSettings, callback) {
try {
let desktopId = keyfile.get_string(group, 'DesktopId');
appInfo = Gio.DesktopAppInfo.new(desktopId);
if (!appInfo.should_show())
return;
} catch (e) {
log('Ignoring search provider ' + path + ': missing DesktopId');
return;

View File

@@ -1,97 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, St } = imports.gi;
const Tweener = imports.ui.tweener;
// Shamelessly copied from the layout "hotcorner" ripples implementation
var Ripples = class Ripples {
constructor(px, py, styleClass) {
this._x = 0;
this._y = 0;
this._px = px;
this._py = py;
this._ripple1 = new St.BoxLayout({ style_class: styleClass,
opacity: 0,
can_focus: false,
reactive: false,
visible: false });
this._ripple1.set_pivot_point(px, py);
this._ripple2 = new St.BoxLayout({ style_class: styleClass,
opacity: 0,
can_focus: false,
reactive: false,
visible: false });
this._ripple2.set_pivot_point(px, py);
this._ripple3 = new St.BoxLayout({ style_class: styleClass,
opacity: 0,
can_focus: false,
reactive: false,
visible: false });
this._ripple3.set_pivot_point(px, py);
}
_animRipple(ripple, delay, time, startScale, startOpacity, finalScale) {
// We draw a ripple by using a source image and animating it scaling
// outwards and fading away. We want the ripples to move linearly
// or it looks unrealistic, but if the opacity of the ripple goes
// linearly to zero it fades away too quickly, so we use Tweener's
// 'onUpdate' to give a non-linear curve to the fade-away and make
// it more visible in the middle section.
ripple.x = this._x;
ripple.y = this._y;
ripple._opacity = startOpacity;
ripple.visible = true;
ripple.opacity = 255 * Math.sqrt(startOpacity);
ripple.scale_x = ripple.scale_y = startScale;
ripple.set_translation( - this._px * ripple.width, - this._py * ripple.height, 0.0);
Tweener.addTween(ripple, { _opacity: 0,
scale_x: finalScale,
scale_y: finalScale,
delay: delay,
time: time,
transition: 'linear',
onUpdate() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
onComplete() { ripple.visible = false; } });
}
addTo(stage) {
if (this._stage !== undefined) {
throw new Error('Ripples already added');
return;
}
this._stage = stage;
this._stage.add_actor(this._ripple1);
this._stage.add_actor(this._ripple2);
this._stage.add_actor(this._ripple3);
}
playAnimation(x, y) {
if (this._stage === undefined) {
throw new Error('Ripples not added');
return;
}
this._x = x;
this._y = y;
this._stage.set_child_above_sibling(this._ripple1, null);
this._stage.set_child_above_sibling(this._ripple2, this._ripple1);
this._stage.set_child_above_sibling(this._ripple3, this._ripple2);
// Show three concentric ripples expanding outwards; the exact
// parameters were found by trial and error, so don't look
// for them to make perfect sense mathematically
// delay time scale opacity => scale
this._animRipple(this._ripple1, 0.0, 0.83, 0.25, 1.0, 1.5);
this._animRipple(this._ripple2, 0.05, 1.0, 0.0, 0.7, 1.25);
this._animRipple(this._ripple3, 0.35, 1.0, 0.0, 0.3, 1);
}
};

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
const Signals = imports.signals;
const Main = imports.ui.main;
@@ -23,11 +23,10 @@ const EXEC_ARG_KEY = 'exec-arg';
var DIALOG_GROW_TIME = 0.1;
var RunDialog = GObject.registerClass(
class RunDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'run-dialog',
destroyOnClose: false });
var RunDialog = class extends ModalDialog.ModalDialog {
constructor() {
super({ styleClass: 'run-dialog',
destroyOnClose: false });
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
this._terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA });
@@ -283,4 +282,5 @@ class RunDialog extends ModalDialog.ModalDialog {
super.open();
}
});
};
Signals.addSignalMethods(RunDialog.prototype);

View File

@@ -431,9 +431,6 @@ var SearchResults = class {
this._cancellable = new Gio.Cancellable();
this._registerProvider(new AppDisplay.AppSearchProvider());
let appSystem = Shell.AppSystem.get_default();
appSystem.connect('installed-changed', this._reloadRemoteProviders.bind(this));
this._reloadRemoteProviders();
}

View File

@@ -25,7 +25,6 @@ const _modes = {
hasWorkspaces: false,
hasWindows: false,
hasNotifications: false,
hasWmMenus: false,
isLocked: false,
isGreeter: false,
isPrimary: false,
@@ -48,7 +47,7 @@ const _modes = {
panel: {
left: [],
center: ['dateMenu'],
right: ['dwellClick', 'a11y', 'keyboard', 'aggregateMenu']
right: ['a11y', 'keyboard', 'aggregateMenu']
},
panelStyle: 'login-screen'
},
@@ -73,7 +72,7 @@ const _modes = {
panel: {
left: [],
center: [],
right: ['dwellClick', 'a11y', 'keyboard', 'aggregateMenu']
right: ['a11y', 'keyboard', 'aggregateMenu']
},
panelStyle: 'unlock-screen'
},
@@ -87,7 +86,6 @@ const _modes = {
hasRunDialog: true,
hasWorkspaces: true,
hasWindows: true,
hasWmMenus: true,
hasNotifications: true,
isLocked: false,
isPrimary: true,
@@ -101,7 +99,7 @@ const _modes = {
panel: {
left: ['activities', 'appMenu'],
center: ['dateMenu'],
right: ['dwellClick', 'a11y', 'keyboard', 'aggregateMenu']
right: ['a11y', 'keyboard', 'aggregateMenu']
}
}
};

View File

@@ -1,9 +1,8 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, GObject, Pango, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, Pango, Shell, St } = imports.gi;
const Signals = imports.signals;
const Animation = imports.ui.animation;
const CheckBox = imports.ui.checkBox;
const Dialog = imports.ui.dialog;
const Main = imports.ui.main;
@@ -15,7 +14,6 @@ const ShellEntry = imports.ui.shellEntry;
const { loadInterfaceXML } = imports.misc.fileUtils;
var LIST_ITEM_ICON_SIZE = 48;
var WORK_SPINNER_ICON_SIZE = 16;
const REMEMBER_MOUNT_PASSWORD_KEY = 'remember-mount-password';
@@ -150,7 +148,7 @@ var ShellMountOperation = class {
}
this._dialogId = this._dialog.connect('response',
(object, choice, password, remember, hiddenVolume, systemVolume, pim) => {
(object, choice, password, remember) => {
if (choice == -1) {
this.mountOp.reply(Gio.MountOperationResult.ABORTED);
} else {
@@ -160,9 +158,6 @@ var ShellMountOperation = class {
this.mountOp.set_password_save(Gio.PasswordSave.NEVER);
this.mountOp.set_password(password);
this.mountOp.set_is_tcrypt_hidden_volume(hiddenVolume);
this.mountOp.set_is_tcrypt_system_volume(systemVolume);
this.mountOp.set_pim(pim);
this.mountOp.reply(Gio.MountOperationResult.HANDLED);
}
});
@@ -269,11 +264,9 @@ var ShellUnmountNotifier = class extends MessageTray.Source {
}
};
var ShellMountQuestionDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT] } }
}, class ShellMountQuestionDialog extends ModalDialog.ModalDialog {
_init(icon) {
super._init({ styleClass: 'mount-dialog' });
var ShellMountQuestionDialog = class extends ModalDialog.ModalDialog {
constructor(icon) {
super({ styleClass: 'mount-dialog' });
this._content = new Dialog.MessageDialogContent({ icon });
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
@@ -283,107 +276,34 @@ var ShellMountQuestionDialog = GObject.registerClass({
_setLabelsForMessage(this._content, message);
_setButtonsForChoices(this, choices);
}
});
};
Signals.addSignalMethods(ShellMountQuestionDialog.prototype);
var ShellMountPasswordDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT,
GObject.TYPE_STRING,
GObject.TYPE_BOOLEAN,
GObject.TYPE_BOOLEAN,
GObject.TYPE_BOOLEAN,
GObject.TYPE_UINT] } }
}, class ShellMountPasswordDialog extends ModalDialog.ModalDialog {
_init(message, icon, flags) {
var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
constructor(message, icon, flags) {
let strings = message.split('\n');
let title = strings.shift() || null;
let body = strings.shift() || null;
super._init({ styleClass: 'prompt-dialog' });
let disksApp = Shell.AppSystem.get_default().lookup_app('org.gnome.DiskUtility.desktop');
super({ styleClass: 'prompt-dialog' });
let content = new Dialog.MessageDialogContent({ icon, title, body });
this.contentLayout.add_actor(content);
content._body.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
let grid = new St.Widget({ style_class: 'prompt-dialog-grid',
layout_manager: layout });
layout.hookup_style(grid);
let rtl = grid.get_text_direction() === Clutter.TextDirection.RTL;
this._passwordBox = new St.BoxLayout({ vertical: false, style_class: 'prompt-dialog-password-box' });
content.messageBox.add(this._passwordBox);
if (flags & Gio.AskPasswordFlags.TCRYPT) {
this._keyfilesLabel = new St.Label(({ style_class: 'prompt-dialog-keyfiles-label',
visible: false }));
this._passwordLabel = new St.Label(({ style_class: 'prompt-dialog-password-label',
text: _("Password") }));
this._passwordBox.add(this._passwordLabel, { y_fill: false, y_align: St.Align.MIDDLE });
this._hiddenVolume = new CheckBox.CheckBox(_("Hidden Volume"));
content.messageBox.add(this._hiddenVolume.actor);
this._systemVolume = new CheckBox.CheckBox(_("Windows System Volume"));
content.messageBox.add(this._systemVolume.actor);
this._keyfilesCheckbox = new CheckBox.CheckBox(_("Uses Keyfiles"));
this._keyfilesCheckbox.actor.connect("clicked", this._onKeyfilesCheckboxClicked.bind(this));
content.messageBox.add(this._keyfilesCheckbox.actor);
this._keyfilesLabel.clutter_text.set_markup(
/* Translators: %s is the Disks application */
_("To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead.").format(disksApp.get_name())
);
this._keyfilesLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._keyfilesLabel.clutter_text.line_wrap = true;
content.messageBox.add(this._keyfilesLabel, { y_fill: false, y_align: St.Align.MIDDLE, expand: true });
this._pimLabel = new St.Label({ style_class: 'prompt-dialog-password-label',
text: _("PIM Number"),
y_align: Clutter.ActorAlign.CENTER });
this._pimEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
can_focus: true,
x_expand: true });
this._pimEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this));
this._pimEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
ShellEntry.addContextMenu(this._pimEntry, { isPassword: true });
if (rtl) {
layout.attach(this._pimEntry, 0, 0, 1, 1);
layout.attach(this._pimLabel, 1, 0, 1, 1);
} else {
layout.attach(this._pimLabel, 0, 0, 1, 1);
layout.attach(this._pimEntry, 1, 0, 1, 1);
}
this._pimErrorMessageLabel = new St.Label({ style_class: 'prompt-dialog-password-entry',
text: _("The PIM must be a number or empty."),
visible: false });
layout.attach(this._pimErrorMessageLabel, 0, 2, 2, 1);
} else {
this._hiddenVolume = null;
this._systemVolume = null;
this._pimEntry = null;
this._pimErrorMessageLabel = null;
}
this._passwordLabel = new St.Label({ style_class: 'prompt-dialog-password-label',
text: _("Password"),
y_align: Clutter.ActorAlign.CENTER });
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
can_focus: true,
x_expand: true });
text: "",
can_focus: true});
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this));
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordBox.add(this._passwordEntry, {expand: true });
this.setInitialKeyFocus(this._passwordEntry);
this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE, true);
this._passwordEntry.secondary_icon = this._workSpinner.actor;
if (rtl) {
layout.attach(this._passwordEntry, 0, 1, 1, 1);
layout.attach(this._passwordLabel, 1, 1, 1, 1);
} else {
layout.attach(this._passwordLabel, 0, 1, 1, 1);
layout.attach(this._passwordEntry, 1, 1, 1, 1);
}
content.messageBox.add(grid);
this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label',
text: _("Sorry, that didnt work. Please try again.") });
@@ -393,7 +313,8 @@ var ShellMountPasswordDialog = GObject.registerClass({
content.messageBox.add(this._errorMessageLabel);
if (flags & Gio.AskPasswordFlags.SAVING_SUPPORTED) {
this._rememberChoice = new CheckBox.CheckBox(_("Remember Password"));
this._rememberChoice = new CheckBox.CheckBox();
this._rememberChoice.getLabelActor().text = _("Remember Password");
this._rememberChoice.actor.checked =
global.settings.get_boolean(REMEMBER_MOUNT_PASSWORD_KEY);
content.messageBox.add(this._rememberChoice.actor);
@@ -401,36 +322,25 @@ var ShellMountPasswordDialog = GObject.registerClass({
this._rememberChoice = null;
}
this._defaultButtons = [{ label: _("Cancel"),
action: this._onCancelButton.bind(this),
key: Clutter.Escape
},
{ label: _("Unlock"),
action: this._onUnlockButton.bind(this),
default: true
}];
let buttons = [{ label: _("Cancel"),
action: this._onCancelButton.bind(this),
key: Clutter.Escape
},
{ label: _("Unlock"),
action: this._onUnlockButton.bind(this),
default: true
}];
this._usesKeyfilesButtons = [{ label: _("Cancel"),
action: this._onCancelButton.bind(this),
key: Clutter.Escape
},
{ /* Translators: %s is the Disks application */
label: _("Open %s").format(disksApp.get_name()),
action: this._onOpenDisksButton.bind(this),
default: true
}];
this.setButtons(this._defaultButtons);
this.setButtons(buttons);
}
reaskPassword() {
this._passwordEntry.set_text('');
this._errorMessageLabel.show();
this._workSpinner.stop();
}
_onCancelButton() {
this.emit('response', -1, '', false, false, false, 0);
this.emit('response', -1, '', false);
}
_onUnlockButton() {
@@ -438,68 +348,18 @@ var ShellMountPasswordDialog = GObject.registerClass({
}
_onEntryActivate() {
let pim = 0;
if (this._pimEntry !== null)
pim = this._pimEntry.get_text();
if (isNaN(pim)) {
this._pimEntry.set_text('');
this._pimErrorMessageLabel.show();
return;
} else if (this._pimErrorMessageLabel !== null) {
this._pimErrorMessageLabel.hide();
}
global.settings.set_boolean(REMEMBER_MOUNT_PASSWORD_KEY,
this._rememberChoice && this._rememberChoice.actor.checked);
this._workSpinner.play();
this.emit('response', 1,
this._passwordEntry.get_text(),
this._rememberChoice &&
this._rememberChoice.actor.checked,
this._hiddenVolume &&
this._hiddenVolume.actor.checked,
this._systemVolume &&
this._systemVolume.actor.checked,
parseInt(pim));
this._rememberChoice.actor.checked);
}
};
_onKeyfilesCheckboxClicked() {
let useKeyfiles = this._keyfilesCheckbox.actor.checked;
this._passwordEntry.reactive = !useKeyfiles;
this._passwordEntry.can_focus = !useKeyfiles;
this._passwordEntry.clutter_text.editable = !useKeyfiles;
this._passwordEntry.clutter_text.selectable = !useKeyfiles;
this._pimEntry.reactive = !useKeyfiles;
this._pimEntry.can_focus = !useKeyfiles;
this._pimEntry.clutter_text.editable = !useKeyfiles;
this._pimEntry.clutter_text.selectable = !useKeyfiles;
this._rememberChoice.actor.reactive = !useKeyfiles;
this._rememberChoice.actor.can_focus = !useKeyfiles;
this._keyfilesLabel.visible = useKeyfiles;
this.setButtons(useKeyfiles ? this._usesKeyfilesButtons : this._defaultButtons);
}
_onOpenDisksButton() {
let app = Shell.AppSystem.get_default().lookup_app('org.gnome.DiskUtility.desktop');
if (app)
app.activate();
else
Main.notifyError(
/* Translators: %s is the Disks application */
_("Unable to start %s").format(app.get_name()),
/* Translators: %s is the Disks application */
_("Couldnt find the %s application").format(app.get_name())
);
this._onCancelButton();
}
});
var ShellProcessesDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT] } }
}, class ShellProcessesDialog extends ModalDialog.ModalDialog {
_init(icon) {
super._init({ styleClass: 'mount-dialog' });
var ShellProcessesDialog = class extends ModalDialog.ModalDialog {
constructor(icon) {
super({ styleClass: 'mount-dialog' });
this._content = new Dialog.MessageDialogContent({ icon });
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
@@ -552,7 +412,8 @@ var ShellProcessesDialog = GObject.registerClass({
_setLabelsForMessage(this._content, message);
_setButtonsForChoices(this, choices);
}
});
};
Signals.addSignalMethods(ShellProcessesDialog.prototype);
const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler');
@@ -654,7 +515,7 @@ var GnomeShellMountOpHandler = class {
this._dialog = new ShellMountPasswordDialog(message, this._createGIcon(iconName), flags);
this._dialog.connect('response',
(object, choice, password, remember, hiddenVolume, systemVolume, pim) => {
(object, choice, password, remember) => {
let details = {};
let response;
@@ -666,9 +527,6 @@ var GnomeShellMountOpHandler = class {
let passSave = remember ? Gio.PasswordSave.PERMANENTLY : Gio.PasswordSave.NEVER;
details['password_save'] = GLib.Variant.new('u', passSave);
details['password'] = GLib.Variant.new('s', password);
details['hidden_volume'] = GLib.Variant.new('b', hiddenVolume);
details['system_volume'] = GLib.Variant.new('b', systemVolume);
details['pim'] = GLib.Variant.new('u', pim);
}
this._clearCurrentRequest(response, details);

View File

@@ -32,7 +32,7 @@ const HIGH_CONTRAST_THEME = 'HighContrast';
var ATIndicator = GObject.registerClass(
class ATIndicator extends PanelMenu.Button {
_init() {
super._init(0.5, _("Accessibility"));
super._init(0.0, _("Accessibility"));
this._hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this._hbox.add_child(new St.Icon({ style_class: 'system-status-icon',

View File

@@ -118,9 +118,9 @@ var Indicator = class extends PanelMenu.SystemIndicator {
// Remember if there were setup devices and show the menu
// if we've seen setup devices and we're not hard blocked
if (nDevices > 0)
this._item.visible = !this._proxy.BluetoothHardwareAirplaneMode;
this._item.actor.visible = !this._proxy.BluetoothHardwareAirplaneMode;
else
this._item.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
if (nConnectedDevices > 0)
/* Translators: this is the number of connected bluetooth devices */

View File

@@ -37,12 +37,12 @@ var Indicator = class extends PanelMenu.SystemIndicator {
let icon = new St.Icon({ icon_name: 'display-brightness-symbolic',
style_class: 'popup-menu-icon' });
this._item.add(icon);
this._item.add(this._slider.actor, { expand: true });
this._item.connect('button-press-event', (actor, event) => {
this._item.actor.add(icon);
this._item.actor.add(this._slider.actor, { expand: true });
this._item.actor.connect('button-press-event', (actor, event) => {
return this._slider.startDragging(event);
});
this._item.connect('key-press-event', (actor, event) => {
this._item.actor.connect('key-press-event', (actor, event) => {
return this._slider.onKeyPressEvent(actor, event);
});
@@ -55,7 +55,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
_sync() {
let visible = this._proxy.Brightness >= 0;
this._item.visible = visible;
this._item.actor.visible = visible;
if (visible)
this._slider.setValue(this._proxy.Brightness / 100.0);
}

View File

@@ -1,86 +0,0 @@
const { Clutter, Gio, GLib, GObject, St } = imports.gi;
const Mainloop = imports.mainloop;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const MOUSE_A11Y_SCHEMA = 'org.gnome.desktop.a11y.mouse';
const KEY_DWELL_CLICK_ENABLED = 'dwell-click-enabled';
const KEY_DWELL_MODE = 'dwell-mode';
const DWELL_MODE_WINDOW = 'window';
const DWELL_CLICK_MODES = {
primary: {
name: _("Single Click"),
icon: 'pointer-primary-click-symbolic',
type: Clutter.PointerA11yDwellClickType.PRIMARY
},
double: {
name: _("Double Click"),
icon: 'pointer-double-click-symbolic',
type: Clutter.PointerA11yDwellClickType.DOUBLE
},
drag: {
name: _("Drag"),
icon: 'pointer-drag-symbolic',
type: Clutter.PointerA11yDwellClickType.DRAG
},
secondary: {
name: _("Secondary Click"),
icon: 'pointer-secondary-click-symbolic',
type: Clutter.PointerA11yDwellClickType.SECONDARY
},
};
var DwellClickIndicator = GObject.registerClass(
class DwellClickIndicator extends PanelMenu.Button {
_init() {
super._init(0.5, _("Dwell Click"));
this._hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this._icon = new St.Icon({ style_class: 'system-status-icon',
icon_name: 'pointer-primary-click-symbolic' });
this._hbox.add_child(this._icon);
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_child(this._hbox);
this._a11ySettings = new Gio.Settings({ schema_id: MOUSE_A11Y_SCHEMA });
this._a11ySettings.connect('changed::' + KEY_DWELL_CLICK_ENABLED, this._syncMenuVisibility.bind(this));
this._a11ySettings.connect('changed::' + KEY_DWELL_MODE, this._syncMenuVisibility.bind(this));
this._deviceManager = Clutter.DeviceManager.get_default();
this._deviceManager.connect('ptr-a11y-dwell-click-type-changed', this._updateClickType.bind(this));
this._addDwellAction(DWELL_CLICK_MODES.primary);
this._addDwellAction(DWELL_CLICK_MODES.double);
this._addDwellAction(DWELL_CLICK_MODES.drag);
this._addDwellAction(DWELL_CLICK_MODES.secondary);
this._setClickType(DWELL_CLICK_MODES.primary);
this._syncMenuVisibility();
}
_syncMenuVisibility() {
this.visible =
(this._a11ySettings.get_boolean(KEY_DWELL_CLICK_ENABLED) &&
this._a11ySettings.get_string(KEY_DWELL_MODE) == DWELL_MODE_WINDOW);
return GLib.SOURCE_REMOVE;
}
_addDwellAction(mode) {
this.menu.addAction(mode.name, this._setClickType.bind(this, mode), mode.icon);
}
_updateClickType(manager, click_type) {
for (let mode in DWELL_CLICK_MODES) {
if (DWELL_CLICK_MODES[mode].type == click_type)
this._icon.icon_name = DWELL_CLICK_MODES[mode].icon;
}
}
_setClickType(mode) {
this._deviceManager.set_pointer_a11y_dwell_click_type(mode.type);
this._icon.icon_name = mode.icon;
}
});

View File

@@ -15,18 +15,17 @@ const Util = imports.misc.util;
const INPUT_SOURCE_TYPE_XKB = 'xkb';
const INPUT_SOURCE_TYPE_IBUS = 'ibus';
var LayoutMenuItem = GObject.registerClass(
class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(displayName, shortName) {
super._init();
var LayoutMenuItem = class extends PopupMenu.PopupBaseMenuItem {
constructor(displayName, shortName) {
super();
this.label = new St.Label({ text: displayName });
this.indicator = new St.Label({ text: shortName });
this.add(this.label, { expand: true });
this.add(this.indicator);
this.label_actor = this.label;
this.actor.add(this.label, { expand: true });
this.actor.add(this.indicator);
this.actor.label_actor = this.label;
}
});
};
var InputSource = class {
constructor(type, id, displayName, shortName, index) {
@@ -810,7 +809,7 @@ class InputSourceIndicatorContainer extends St.Widget {
var InputSourceIndicator = GObject.registerClass(
class InputSourceIndicator extends PanelMenu.Button {
_init() {
super._init(0.5, _("Keyboard"));
super._init(0.0, _("Keyboard"));
this.connect('destroy', this._onDestroy.bind(this));
@@ -858,7 +857,7 @@ class InputSourceIndicator extends PanelMenu.Button {
// but at least for now it is used as "allow popping up windows
// from shell menus"; we can always add a separate sessionMode
// option if need arises.
this._showLayoutItem.visible = Main.sessionMode.allowSettings;
this._showLayoutItem.actor.visible = Main.sessionMode.allowSettings;
}
_sourcesChanged() {

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, GObject, Shell } = imports.gi;
const { Clutter, Gio, GLib, Shell } = imports.gi;
const Dialog = imports.ui.dialog;
const Main = imports.ui.main;
@@ -101,12 +101,12 @@ var Indicator = class extends PanelMenu.SystemIndicator {
_syncIndicator() {
if (this._managerProxy == null) {
this._indicator.visible = false;
this._item.visible = false;
this._item.actor.visible = false;
return;
}
this._indicator.visible = this._managerProxy.InUse;
this._item.visible = this._indicator.visible;
this._item.actor.visible = this._indicator.visible;
this._updateMenuLabels();
}
@@ -342,11 +342,9 @@ var AppAuthorizer = class {
}
};
var GeolocationDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_UINT] } }
}, class GeolocationDialog extends ModalDialog.ModalDialog {
_init(name, subtitle, reqAccuracyLevel) {
super._init({ styleClass: 'geolocation-dialog' });
var GeolocationDialog = class extends ModalDialog.ModalDialog {
constructor(name, subtitle, reqAccuracyLevel) {
super({ styleClass: 'geolocation-dialog' });
this.reqAccuracyLevel = reqAccuracyLevel;
let icon = new Gio.ThemedIcon({ name: 'find-location-symbolic' });
@@ -377,4 +375,5 @@ var GeolocationDialog = GObject.registerClass({
this.emit('response', GeoclueAccuracyLevel.NONE);
this.close();
}
});
};
Signals.addSignalMethods(GeolocationDialog.prototype);

View File

@@ -69,12 +69,9 @@ function ssidToLabel(ssid) {
function ensureActiveConnectionProps(active, client) {
if (!active._primaryDevice) {
let devices = active.get_devices();
if (devices.length > 0) {
// This list is guaranteed to have at most one device in it.
let device = devices[0]._delegate;
active._primaryDevice = device;
}
// This list is guaranteed to have only one device in it.
let device = active.get_devices()[0]._delegate;
active._primaryDevice = device;
}
}
@@ -238,14 +235,14 @@ var NMConnectionSection = class NMConnectionSection {
if (!this._connectionValid(connection))
return;
// This function is called every time the connection is added or updated.
// This function is called everytime connection is added or updated
// In the usual case, we already added this connection and UUID
// didn't change. So we need to check if we already have an item,
// and update it for properties in the connection that changed
// (the only one we care about is the name)
// But it's also possible we didn't know about this connection
// (eg, during coldplug, or because it was updated and suddenly
// it's valid for this device), in which case we add a new item.
// it's valid for this device), in which case we add a new item
let item = this._connectionItems.get(connection.get_uuid());
if (item)
@@ -392,8 +389,8 @@ var NMConnectionDevice = class NMConnectionDevice extends NMConnectionSection {
_sync() {
let nItems = this._connectionItems.size;
this._autoConnectItem.visible = (nItems == 0);
this._deactivateItem.visible = this._device.state > NM.DeviceState.DISCONNECTED;
this._autoConnectItem.actor.visible = (nItems == 0);
this._deactivateItem.actor.visible = this._device.state > NM.DeviceState.DISCONNECTED;
if (this._activeConnection == null) {
let activeConnection = this._device.active_connection;
@@ -480,7 +477,7 @@ var NMDeviceWired = class extends NMConnectionDevice {
}
_sync() {
this.item.visible = this._hasCarrier();
this.item.actor.visible = this._hasCarrier();
super._sync();
}
@@ -616,36 +613,31 @@ var NMDeviceBluetooth = class extends NMConnectionDevice {
}
};
var NMWirelessDialogItem = GObject.registerClass({
Signals: {
'selected': {},
}
}, class NMWirelessDialogItem extends St.BoxLayout {
_init(network) {
var NMWirelessDialogItem = class {
constructor(network) {
this._network = network;
this._ap = network.accessPoints[0];
super._init({ style_class: 'nm-dialog-item',
can_focus: true,
reactive: true });
this.connect('key-focus-in', () => { this.emit('selected'); });
this.actor = new St.BoxLayout({ style_class: 'nm-dialog-item',
can_focus: true,
reactive: true });
this.actor.connect('key-focus-in', () => { this.emit('selected'); });
let action = new Clutter.ClickAction();
action.connect('clicked', () => { this.grab_key_focus(); });
this.add_action(action);
action.connect('clicked', () => { this.actor.grab_key_focus(); });
this.actor.add_action(action);
let title = ssidToLabel(this._ap.get_ssid());
this._label = new St.Label({ text: title });
this.label_actor = this._label;
this.add(this._label, { x_align: St.Align.START });
this.actor.label_actor = this._label;
this.actor.add(this._label, { x_align: St.Align.START });
this._selectedIcon = new St.Icon({ style_class: 'nm-dialog-icon',
icon_name: 'object-select-symbolic' });
this.add(this._selectedIcon);
this.actor.add(this._selectedIcon);
this._icons = new St.BoxLayout({ style_class: 'nm-dialog-icons' });
this.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
this.actor.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
this._secureIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
if (this._ap._secType != NMAccessPointSecurity.NONE)
@@ -677,12 +669,12 @@ var NMWirelessDialogItem = GObject.registerClass({
else
return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
}
});
};
Signals.addSignalMethods(NMWirelessDialogItem.prototype);
var NMWirelessDialog = GObject.registerClass(
class NMWirelessDialog extends ModalDialog.ModalDialog {
_init(client, device) {
super._init({ styleClass: 'nm-dialog' });
var NMWirelessDialog = class extends ModalDialog.ModalDialog {
constructor(client, device) {
super({ styleClass: 'nm-dialog' });
this._client = client;
this._device = device;
@@ -728,11 +720,9 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
Main.sessionMode.disconnect(id);
this.close();
});
this.connect('destroy', this._onDestroy.bind(this));
}
_onDestroy() {
destroy() {
if (this._apAddedId) {
GObject.Object.prototype.disconnect.call(this._device, this._apAddedId);
this._apAddedId = 0;
@@ -758,6 +748,8 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
Mainloop.source_remove(this._scanTimeoutId);
this._scanTimeoutId = 0;
}
super.destroy();
}
_onScanTimeout() {
@@ -1084,7 +1076,7 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
let newPos = Util.insertSorted(this._networks, network, this._networkSortFunction);
this._createNetworkItem(network);
this._itemBox.insert_child_at_index(network.item, newPos);
this._itemBox.insert_child_at_index(network.item.actor, newPos);
}
this._syncView();
@@ -1102,7 +1094,7 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
network.accessPoints.splice(res.ap, 1);
if (network.accessPoints.length == 0) {
network.item.destroy();
network.item.actor.destroy();
this._networks.splice(res.network, 1);
} else {
network.item.updateBestAP(network.accessPoints[0]);
@@ -1118,7 +1110,7 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
this._itemBox.remove_all_children();
this._networks.forEach(network => {
this._itemBox.add_child(network.item);
this._itemBox.add_child(network.item.actor);
});
adjustment.value = scrollValue;
@@ -1126,29 +1118,29 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
_selectNetwork(network) {
if (this._selectedNetwork)
this._selectedNetwork.item.remove_style_pseudo_class('selected');
this._selectedNetwork.item.actor.remove_style_pseudo_class('selected');
this._selectedNetwork = network;
this._updateSensitivity();
if (this._selectedNetwork)
this._selectedNetwork.item.add_style_pseudo_class('selected');
this._selectedNetwork.item.actor.add_style_pseudo_class('selected');
}
_createNetworkItem(network) {
network.item = new NMWirelessDialogItem(network);
network.item.setActive(network == this._selectedNetwork);
network.item.connect('selected', () => {
Util.ensureActorVisibleInScrollView(this._scrollView, network.item);
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
this._selectNetwork(network);
});
network.item.connect('destroy', () => {
network.item.actor.connect('destroy', () => {
let keyFocus = global.stage.key_focus;
if (keyFocus && keyFocus.contains(network.item))
if (keyFocus && keyFocus.contains(network.item.actor))
this._itemBox.grab_key_focus();
});
}
});
};
var NMDeviceWireless = class {
constructor(client, device) {
@@ -1270,7 +1262,7 @@ var NMDeviceWireless = class {
_sync() {
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
this._toggleItem.visible = this._client.wireless_hardware_enabled;
this._toggleItem.actor.visible = this._client.wireless_hardware_enabled;
this.item.icon.icon_name = this._getMenuIcon();
this.item.label.text = this._getStatus();
@@ -1460,7 +1452,7 @@ var NMVpnSection = class extends NMConnectionSection {
_sync() {
let nItems = this._connectionItems.size;
this.item.visible = (nItems > 0);
this.item.actor.visible = (nItems > 0);
super._sync();
}
@@ -1543,7 +1535,7 @@ var DeviceCategory = class extends PopupMenu.PopupMenuSection {
this._summaryItem.menu.addSettingsAction(_('Network Settings'),
'gnome-network-panel.desktop');
this._summaryItem.hide();
this._summaryItem.actor.hide();
}
@@ -1552,7 +1544,7 @@ var DeviceCategory = class extends PopupMenu.PopupMenuSection {
(prev, child) => prev + (child.visible ? 1 : 0), 0);
this._summaryItem.label.text = this._getSummaryLabel(nDevices);
let shouldSummarize = nDevices > MAX_DEVICE_ITEMS;
this._summaryItem.visible = shouldSummarize;
this._summaryItem.actor.visible = shouldSummarize;
this.section.actor.visible = !shouldSummarize;
}
@@ -1739,24 +1731,14 @@ var NMApplet = class extends PanelMenu.SystemIndicator {
this._addDeviceWrapper(wrapper);
this._nmDevices.push(device);
this._deviceChanged(device, skipSyncDeviceNames);
if (!skipSyncDeviceNames)
this._syncDeviceNames();
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);
});
if (wrapper instanceof NMConnectionSection) {
this._connections.forEach(connection => {
wrapper.checkConnection(connection);
});
}
}
}

View File

@@ -61,6 +61,6 @@ var Indicator = class extends PanelMenu.SystemIndicator {
: _("Night Light On");
this._disableItem.label.text = disabled ? _("Resume")
: _("Disable Until Tomorrow");
this._item.visible = this._indicator.visible = visible;
this._item.actor.visible = this._indicator.visible = visible;
}
};

View File

@@ -96,11 +96,11 @@ var Indicator = class extends PanelMenu.SystemIndicator {
// Do we have batteries or a UPS?
let visible = this._proxy.IsPresent;
if (visible) {
this._item.show();
this._item.actor.show();
this._percentageLabel.visible = this._desktopSettings.get_boolean(SHOW_BATTERY_PERCENTAGE);
} else {
// If there's no battery, then we use the power icon.
this._item.hide();
this._item.actor.hide();
this._indicator.icon_name = 'system-shutdown-symbolic';
this._percentageLabel.hide();
return;

View File

@@ -53,10 +53,10 @@ var RemoteAccessApplet = class extends PanelMenu.SystemIndicator {
_sync() {
if (this._handles.size == 0) {
this._indicator.visible = false;
this._item.visible = false;
this._item.actor.visible = false;
} else {
this._indicator.visible = true;
this._item.visible = true;
this._item.actor.visible = true;
}
}

View File

@@ -97,7 +97,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
let showAirplaneMode = this._manager.shouldShowAirplaneMode;
this._indicator.visible = (airplaneMode && showAirplaneMode);
this._item.visible = (airplaneMode && showAirplaneMode);
this._item.actor.visible = (airplaneMode && showAirplaneMode);
this._offItem.setSensitive(!hwAirplaneMode);
if (hwAirplaneMode)

View File

@@ -116,10 +116,10 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this._createSubMenu();
this._loginScreenItem.connect('notify::visible',
() => { this._updateMultiUser(); });
this._logoutItem.connect('notify::visible',
() => { this._updateMultiUser(); });
this._loginScreenItem.actor.connect('notify::visible',
() => { this._updateMultiUser(); });
this._logoutItem.actor.connect('notify::visible',
() => { this._updateMultiUser(); });
// Whether shutdown is available or not depends on both lockdown
// settings (disable-log-out) and Polkit policy - the latter doesn't
// notify, so we update the menu item each time the menu opens or
@@ -142,7 +142,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this._lockScreenAction.visible ||
this._altSwitcher.actor.visible);
this.buttonGroup.visible = visible;
this._actionsItem.actor.visible = visible;
}
_sessionUpdated() {
@@ -150,10 +150,10 @@ var Indicator = class extends PanelMenu.SystemIndicator {
}
_updateMultiUser() {
let hasSwitchUser = this._loginScreenItem.visible;
let hasLogout = this._logoutItem.visible;
let hasSwitchUser = this._loginScreenItem.actor.visible;
let hasLogout = this._logoutItem.actor.visible;
this._switchUserSubMenu.visible = hasSwitchUser || hasLogout;
this._switchUserSubMenu.actor.visible = hasSwitchUser || hasLogout;
}
_updateSwitchUserSubMenu() {
@@ -208,7 +208,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this._switchUserSubMenu.menu.addMenuItem(item);
this._loginScreenItem = item;
this._systemActions.bind_property('can-switch-user',
this._loginScreenItem,
this._loginScreenItem.actor,
'visible',
bindFlags);
@@ -220,7 +220,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this._switchUserSubMenu.menu.addMenuItem(item);
this._logoutItem = item;
this._systemActions.bind_property('can-logout',
this._logoutItem,
this._logoutItem.actor,
'visible',
bindFlags);
@@ -236,7 +236,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
item = new PopupMenu.PopupBaseMenuItem({ reactive: false,
can_focus: false });
this.buttonGroup = item;
this.buttonGroup = item.actor;
let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app(
'gnome-control-center.desktop'
@@ -251,14 +251,14 @@ var Indicator = class extends PanelMenu.SystemIndicator {
log('Missing required core component Settings, expect trouble…');
this._settingsAction = new St.Widget();
}
item.add(this._settingsAction, { expand: true, x_fill: false });
item.actor.add(this._settingsAction, { expand: true, x_fill: false });
this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
this._orientationLockAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE),
this._systemActions.activateLockOrientation();
});
item.add(this._orientationLockAction, { expand: true, x_fill: false });
item.actor.add(this._orientationLockAction, { expand: true, x_fill: false });
this._systemActions.bind_property('can-lock-orientation',
this._orientationLockAction,
'visible',
@@ -273,7 +273,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateLockScreen();
});
item.add(this._lockScreenAction, { expand: true, x_fill: false });
item.actor.add(this._lockScreenAction, { expand: true, x_fill: false });
this._systemActions.bind_property('can-lock-screen',
this._lockScreenAction,
'visible',
@@ -300,8 +300,9 @@ var Indicator = class extends PanelMenu.SystemIndicator {
bindFlags);
this._altSwitcher = new AltSwitcher(this._powerOffAction, this._suspendAction);
item.add(this._altSwitcher.actor, { expand: true, x_fill: false });
item.actor.add(this._altSwitcher.actor, { expand: true, x_fill: false });
this._actionsItem = item;
this.menu.addMenuItem(item);

View File

@@ -41,12 +41,12 @@ var StreamSlider = class {
this._slider.connect('drag-end', this._notifyVolumeChange.bind(this));
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
this.item.add(this._icon);
this.item.add(this._slider.actor, { expand: true });
this.item.connect('button-press-event', (actor, event) => {
this.item.actor.add(this._icon);
this.item.actor.add(this._slider.actor, { expand: true });
this.item.actor.connect('button-press-event', (actor, event) => {
return this._slider.startDragging(event);
});
this.item.connect('key-press-event', (actor, event) => {
this.item.actor.connect('key-press-event', (actor, event) => {
return this._slider.onKeyPressEvent(actor, event);
});
@@ -93,7 +93,7 @@ var StreamSlider = class {
_updateVisibility() {
let visible = this._shouldBeVisible();
this.item.visible = visible;
this.item.actor.visible = visible;
}
scroll(event) {

View File

@@ -30,10 +30,12 @@ function primaryModifier(mask) {
return primary;
}
var SwitcherPopup = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT
}, class SwitcherPopup extends St.Widget {
var SwitcherPopup = GObject.registerClass(
class SwitcherPopup extends St.Widget {
_init(items) {
if (this.constructor.name === SwitcherPopup.prototype.constructor.name)
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
super._init({ style_class: 'switcher-popup',
reactive: true,
visible: false });
@@ -162,7 +164,7 @@ var SwitcherPopup = GObject.registerClass({
}
_keyPressHandler(keysym, action) {
throw new GObject.NotImplementedError(`_keyPressHandler in ${this.constructor.name}`);
throw new Error('Not implemented');
}
_keyPressEvent(actor, event) {

View File

@@ -152,7 +152,7 @@ function registerSpecialPropertySplitter(name, splitFunction, parameters) {
// Tweener to a Clutter.TimeLine. Now, Clutter.Timeline itself isn't a
// whole lot more sophisticated than a simple timeout at a fixed frame
// rate, but at least it knows how to drop frames. (See
// HippoAnimationManager for a more sophisticated view of continuous
// HippoAnimationManager for a more sophisticated view of continous
// time updates; even better is to pay attention to the vertical
// vblank and sync to that when possible.)
//

View File

@@ -69,6 +69,8 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
() => { this.destroy(); }));
this.signalIDs.push(this._window.connect('unmanaged',
() => { this.destroy(); }));
this.connect('destroy', this._onDestroy.bind(this));
}
_sync() {
@@ -77,6 +79,13 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
this.destroy();
}
_onDestroy() {
for(let i = 0; i < this.signalIDs.length; i++) {
this._window.disconnect(this.signalIDs[i]);
}
this.signalIDs = [];
}
_createPolicy() {
if (this._app && this._app.get_app_info()) {
let id = this._app.get_id().replace(/\.desktop$/,'');
@@ -90,14 +99,6 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
return this._app.create_icon_texture(size);
}
destroy(params) {
for (let i = 0; i < this.signalIDs.length; i++)
this._window.disconnect(this.signalIDs[i]);
this.signalIDs = [];
super.destroy(params);
}
open() {
Main.activateWindow(this._window);
}

View File

@@ -40,10 +40,9 @@ const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
const GsdWacomIface = loadInterfaceXML('org.gnome.SettingsDaemon.Wacom');
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
var DisplayChangeDialog = GObject.registerClass(
class DisplayChangeDialog extends ModalDialog.ModalDialog {
_init(wm) {
super._init({ styleClass: 'prompt-dialog' });
var DisplayChangeDialog = class extends ModalDialog.ModalDialog {
constructor(wm) {
super({ styleClass: 'prompt-dialog' });
this._wm = wm;
@@ -60,7 +59,7 @@ class DisplayChangeDialog extends ModalDialog.ModalDialog {
{ x_fill: true,
y_fill: true });
/* Translators: this and the following message should be limited in length,
/* Translators: this and the following message should be limited in lenght,
to avoid ellipsizing the labels.
*/
this._cancelButton = this.addButton({ label: _("Revert Settings"),
@@ -112,7 +111,7 @@ class DisplayChangeDialog extends ModalDialog.ModalDialog {
this._wm.complete_display_change(true);
this.close();
}
});
};
var WindowDimmer = class {
constructor(actor) {
@@ -2121,14 +2120,7 @@ var WindowManager = class {
Main.ctrlAltTabManager.popup(binding.is_reversed(), binding.get_name(), binding.get_mask());
}
_allowFavoriteShortcuts() {
return Main.sessionMode.hasOverview;
}
_switchToApplication(display, window, binding) {
if (!this._allowFavoriteShortcuts())
return;
let [,,,target] = binding.get_name().split('-');
let apps = AppFavorites.getAppFavorites().getFavorites();
let app = apps[target - 1];

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
const { GLib, Meta, St } = imports.gi;
const { Meta, St } = imports.gi;
const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
@@ -42,13 +42,13 @@ var WindowMenu = class extends PopupMenu.PopupMenu {
item.setSensitive(false);
item = this.addAction(_("Move"), event => {
this._grabAction(window, Meta.GrabOp.KEYBOARD_MOVING, event.get_time());
window.begin_grab_op(Meta.GrabOp.KEYBOARD_MOVING, true, event.get_time());
});
if (!window.allows_move())
item.setSensitive(false);
item = this.addAction(_("Resize"), event => {
this._grabAction(window, Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, event.get_time());
window.begin_grab_op(Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, true, event.get_time());
});
if (!window.allows_resize())
item.setSensitive(false);
@@ -169,26 +169,6 @@ var WindowMenu = class extends PopupMenu.PopupMenu {
if (!window.can_close())
item.setSensitive(false);
}
_grabAction(window, grabOp, time) {
if (global.display.get_grab_op() == Meta.GrabOp.NONE) {
window.begin_grab_op(grabOp, true, time);
return;
}
let waitId = 0;
let id = global.display.connect('grab-op-end', (display) => {
display.disconnect(id);
GLib.source_remove(waitId);
window.begin_grab_op(grabOp, true, time);
});
waitId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
global.display.disconnect(id);
return GLib.SOURCE_REMOVE;
});
}
};
var WindowMenuManager = class {
@@ -203,9 +183,6 @@ var WindowMenuManager = class {
}
showWindowMenuForWindow(window, type, rect) {
if (!Main.sessionMode.hasWmMenus)
return;
if (type != Meta.WindowMenuType.WM)
throw new Error('Unsupported window menu type');
let menu = new WindowMenu(window, this._sourceActor);

View File

@@ -813,7 +813,7 @@ var LayoutStrategy = class {
}
// Computes and returns an individual scaling factor for @window,
// to be applied in addition to the overall layout scale.
// to be applied in addition to the overal layout scale.
_computeWindowScale(window) {
// Since we align windows next to each other, the height of the
// thumbnails is much more important to preserve than the width of
@@ -835,7 +835,7 @@ var LayoutStrategy = class {
// (optionally) for each row in @layout.rows. This method is
// intended to be called by subclasses.
_computeRowSizes(layout) {
throw new GObject.NotImplementedError(`_computeRowSizes in ${this.constructor.name}`);
throw new Error('_computeRowSizes not implemented');
}
// Compute strategy-specific window slots for each window in
@@ -848,7 +848,7 @@ var LayoutStrategy = class {
// * gridHeight - The totial height used by the grid, unscaled, unspaced.
// * rows - A list of rows, which should be instantiated by _newRow.
computeLayout(windows, layout) {
throw new GObject.NotImplementedError(`computeLayout in ${this.constructor.name}`);
throw new Error('computeLayout not implemented');
}
// Given @layout, compute the overall scale and space of the layout.
@@ -1266,7 +1266,7 @@ var Workspace = class {
}
// We will reposition windows anyway when enter again overview or when ending the windows
// animations with fade animation.
// animations whith fade animation.
// In this way we avoid unwanted animations of windows repositioning while
// animating overview.
if (this.leavingOverview || this._animatingWindowsFade)
@@ -1886,10 +1886,10 @@ var Workspace = class {
// Win win -- better scale and better space
return true;
} else if (newLayout.scale > oldLayout.scale && newLayout.space <= oldLayout.space) {
// Keep new layout only if scale gain outweighs aspect space loss
// Keep new layout only if scale gain outweights aspect space loss
return scalePower > spacePower;
} else if (newLayout.scale <= oldLayout.scale && newLayout.space > oldLayout.space) {
// Keep new layout only if aspect space gain outweighs scale loss
// Keep new layout only if aspect space gain outweights scale loss
return spacePower > scalePower;
} else {
// Lose -- worse scale and space

View File

@@ -84,7 +84,7 @@ var WorkspacesView = class extends WorkspacesViewBase {
this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling
this._gestureActive = false; // touch(pad) gestures
this._animatingScroll = false; // programmatically updating the adjustment
this._animatingScroll = false; // programatically updating the adjustment
let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
@@ -483,6 +483,7 @@ var WorkspacesDisplay = class {
this._primaryIndex = Main.layoutManager.primaryIndex;
this._workspacesViews = [];
this._primaryScrollAdjustment = null;
switchGesture.enabled = this.actor.mapped;
this._settings = new Gio.Settings({ schema_id: MUTTER_SCHEMA });
@@ -490,6 +491,8 @@ var WorkspacesDisplay = class {
this._workspacesOnlyOnPrimaryChanged.bind(this));
this._workspacesOnlyOnPrimaryChanged();
this._switchWorkspaceNotifyId = 0;
this._notifyOpacityId = 0;
this._restackedNotifyId = 0;
this._scrollEventId = 0;

View File

@@ -1,5 +1,5 @@
project('gnome-shell', 'c',
version: '3.33.2',
version: '3.32.1',
meson_version: '>= 0.47.0',
license: 'GPLv2+'
)
@@ -14,16 +14,16 @@ cogl_pango_pc = 'mutter-cogl-pango-' + mutter_api_version
libmutter_pc = 'libmutter-' + mutter_api_version
croco_req = '>= 0.6.8'
ecal_req = '>= 3.33.1'
ecal_req = '>= 3.5.3'
eds_req = '>= 3.17.2'
gcr_req = '>= 3.7.5'
gdesktop_req = '>= 3.7.90'
gio_req = '>= 2.56.0'
gi_req = '>= 1.49.1'
gjs_req = '>= 1.57.2'
gjs_req = '>= 1.54.0'
gtk_req = '>= 3.15.0'
json_glib_req = '>= 0.13.2'
mutter_req = '>= 3.33.2'
mutter_req = '>= 3.32.0'
polkit_req = '>= 0.100'
schemas_req = '>= 3.27.90'
startup_req = '>= 0.11'
@@ -73,7 +73,7 @@ else
endif
atk_bridge_dep = dependency('atk-bridge-2.0')
ecal_dep = dependency('libecal-2.0', version: ecal_req)
ecal_dep = dependency('libecal-1.2', version: ecal_req)
eds_dep = dependency('libedataserver-1.2', version: eds_req)
gcr_dep = dependency('gcr-base-3', version: gcr_req)
gdk_x11_dep = dependency('gdk-x11-3.0')
@@ -167,57 +167,47 @@ cdata.set('HAVE_FDWALK',
cc.has_function('fdwalk')
)
buildtype = get_option('buildtype')
if buildtype != 'plain'
all_warnings = [
'-fno-strict-aliasing',
'-Wpointer-arith',
'-Wmissing-declarations',
'-Wimplicit-function-declaration',
'-Wformat=2',
'-Wformat-nonliteral',
'-Wformat-security',
'-Wstrict-prototypes',
'-Wmissing-prototypes',
'-Wnested-externs',
'-Wold-style-definition',
'-Wundef',
'-Wunused',
'-Wcast-align',
'-Wmissing-noreturn',
'-Wmissing-format-attribute',
'-Wmissing-include-dirs',
'-Wlogical-op',
'-Wignored-qualifiers',
'-Werror=redundant-decls',
'-Werror=implicit',
'-Werror=nonnull',
'-Werror=init-self',
'-Werror=main',
'-Werror=missing-braces',
'-Werror=sequence-point',
'-Werror=return-type',
'-Werror=trigraphs',
'-Werror=array-bounds',
'-Werror=write-strings',
'-Werror=address',
'-Werror=int-to-pointer-cast',
'-Werror=pointer-to-int-cast',
'-Werror=empty-body',
'-Werror=write-strings',
]
supported_warnings = cc.get_supported_arguments(all_warnings)
add_project_arguments(supported_warnings, language: 'c')
endif
all_warnings = [
'-fno-strict-aliasing',
'-Wpointer-arith',
'-Wmissing-declarations',
'-Wimplicit-function-declaration',
'-Wformat=2',
'-Wformat-nonliteral',
'-Wformat-security',
'-Wstrict-prototypes',
'-Wmissing-prototypes',
'-Wnested-externs',
'-Wold-style-definition',
'-Wundef',
'-Wunused',
'-Wcast-align',
'-Wmissing-noreturn',
'-Wmissing-format-attribute',
'-Wmissing-include-dirs',
'-Wlogical-op',
'-Wignored-qualifiers',
'-Werror=redundant-decls',
'-Werror=implicit',
'-Werror=nonnull',
'-Werror=init-self',
'-Werror=main',
'-Werror=missing-braces',
'-Werror=sequence-point',
'-Werror=return-type',
'-Werror=trigraphs',
'-Werror=array-bounds',
'-Werror=write-strings',
'-Werror=address',
'-Werror=int-to-pointer-cast',
'-Werror=pointer-to-int-cast',
'-Werror=empty-body',
'-Werror=write-strings',
]
if get_option('debug')
debug_c_args = [
'-DG_ENABLE_DEBUG',
'-fno-omit-frame-pointer'
]
supported_debug_c_args = cc.get_supported_arguments(debug_c_args)
add_project_arguments(supported_debug_c_args, language: 'c')
endif
supported_warnings = cc.get_supported_arguments(all_warnings)
add_project_arguments(supported_warnings, language: 'c')
config_h = configure_file(
input: 'config.h.meson',

View File

@@ -54,7 +54,6 @@ js/ui/shellMountOperation.js
js/ui/status/accessibility.js
js/ui/status/bluetooth.js
js/ui/status/brightness.js
js/ui/status/dwellClick.js
js/ui/status/keyboard.js
js/ui/status/location.js
js/ui/status/network.js

1031
po/ca.po

File diff suppressed because it is too large Load Diff

128
po/de.po
View File

@@ -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-2019.
# Tim Sabsch <tim@sabsch.com>, 2018.
#
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-05-08 10:16+0000\n"
"PO-Revision-Date: 2019-05-12 12:36+0200\n"
"POT-Creation-Date: 2019-03-02 19:56+0000\n"
"PO-Revision-Date: 2019-03-02 21:13+0100\n"
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n"
@@ -390,6 +390,11 @@ 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 "Somethings gone wrong"
msgstr "Etwas ist schiefgelaufen"
@@ -537,7 +542,7 @@ msgstr "abmelden;verlassen"
#: js/misc/systemActions.js:109
msgctxt "search-result"
msgid "Suspend"
msgstr "Bereitschaft"
msgstr "In Bereitschaft versetzen"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:112
@@ -757,12 +762,12 @@ msgstr "Zu Favoriten hinzufügen"
msgid "Show Details"
msgstr "Details anzeigen"
#: js/ui/appFavorites.js:149
#: js/ui/appFavorites.js:141
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
#: js/ui/appFavorites.js:183
#: js/ui/appFavorites.js:175
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s wurde aus Ihren Favoriten entfernt"
@@ -1048,7 +1053,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:1664
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1665
msgid "Network Manager"
msgstr "Netzwerk-Verwaltung"
@@ -1120,23 +1125,23 @@ msgstr "Weltuhren hinzufügen …"
msgid "World Clocks"
msgstr "Weltuhren"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:222
msgid "Weather"
msgstr "Wetter"
#: js/ui/dateMenu.js:311
#: js/ui/dateMenu.js:305
msgid "Select a location…"
msgstr "Ort auswählen …"
#: js/ui/dateMenu.js:319
#: js/ui/dateMenu.js:313
msgid "Loading…"
msgstr "Wird geladen …"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:323
msgid "Go online for weather information"
msgstr "Gehen Sie Online, um Wetterinformationen beziehen zu können"
#: js/ui/dateMenu.js:331
#: js/ui/dateMenu.js:325
msgid "Weather information is currently unavailable"
msgstr "Wetterinformationen sind momentan nicht verfügbar"
@@ -1299,26 +1304,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:78
#: js/ui/inhibitShortcutsDialog.js:50
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "%s möchte Tastenkombinationen sperren"
#: js/ui/inhibitShortcutsDialog.js:79
#: js/ui/inhibitShortcutsDialog.js:51
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:88
#: js/ui/inhibitShortcutsDialog.js:60
#, 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:93
#: js/ui/inhibitShortcutsDialog.js:65
msgid "Deny"
msgstr "Ablehnen"
#: js/ui/inhibitShortcutsDialog.js:100
#: js/ui/inhibitShortcutsDialog.js:71
msgid "Allow"
msgstr "Zulassen"
@@ -1371,13 +1376,13 @@ msgid "Leave On"
msgstr "Eingeschaltet lassen"
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:1263
#: js/ui/status/network.js:1264
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:1263 js/ui/status/network.js:1375
#: js/ui/status/network.js:1264 js/ui/status/network.js:1376
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
#: js/ui/status/rfkill.js:106
msgid "Turn Off"
@@ -1387,7 +1392,7 @@ msgstr "Ausschalten"
msgid "Leave Off"
msgstr "Ausgeschaltet lassen"
#: js/ui/keyboard.js:200
#: js/ui/keyboard.js:203
msgid "Region & Language Settings"
msgstr "Regions- und Spracheinstellungen"
@@ -1439,7 +1444,7 @@ msgstr "Quelle zeigen"
msgid "Web Page"
msgstr "Webseite"
#: js/ui/messageTray.js:1480
#: js/ui/messageTray.js:1474
msgid "System Information"
msgstr "Systeminformationen"
@@ -1523,11 +1528,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:470
#: js/ui/panel.js:471
msgid "Activities"
msgstr "Aktivitäten"
#: js/ui/panel.js:745
#: js/ui/panel.js:746
msgctxt "System menu in the top bar"
msgid "System"
msgstr "System"
@@ -1536,6 +1541,15 @@ 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"
@@ -1575,7 +1589,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:271
#: js/ui/screenShield.js:449 js/ui/status/system.js:270
msgid "Lock"
msgstr "Sperren"
@@ -1590,11 +1604,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:826 js/ui/screenShield.js:1299
#: js/ui/screenShield.js:834 js/ui/screenShield.js:1307
msgid "Unable to lock"
msgstr "Sperrung fehlgeschlagen"
#: js/ui/screenShield.js:827 js/ui/screenShield.js:1300
#: js/ui/screenShield.js:835 js/ui/screenShield.js:1308
msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert"
@@ -1758,7 +1772,7 @@ msgid "<unknown>"
msgstr "<Unbekannt>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
#: js/ui/status/network.js:416 js/ui/status/network.js:1293
#, javascript-format
msgid "%s Off"
msgstr "%s ausgeschaltet"
@@ -1784,7 +1798,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:1284
#: js/ui/status/network.js:434 js/ui/status/network.js:1285
#, javascript-format
msgid "%s Connecting"
msgstr "%s wird verbunden"
@@ -1824,7 +1838,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:1289
#: js/ui/status/network.js:553 js/ui/status/network.js:1290
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s-Hardware ausgeschaltet"
@@ -1896,72 +1910,72 @@ msgid "Wi-Fi Settings"
msgstr "Drahtlosnetzwerk-Einstellungen"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1280
#: js/ui/status/network.js:1281
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s eingeschaltet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1295
#: js/ui/status/network.js:1296
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nicht verbunden"
#: js/ui/status/network.js:1392
#: js/ui/status/network.js:1393
msgid "connecting…"
msgstr "Verbindungsaufbau …"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1395
#: js/ui/status/network.js:1396
msgid "authentication required"
msgstr "Anmeldung erforderlich"
#: js/ui/status/network.js:1397
#: js/ui/status/network.js:1398
msgid "connection failed"
msgstr "Verbindung gescheitert"
#: js/ui/status/network.js:1447
#: js/ui/status/network.js:1448
msgid "VPN Settings"
msgstr "VPN-Einstellungen"
#: js/ui/status/network.js:1464
#: js/ui/status/network.js:1465
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1474
#: js/ui/status/network.js:1475
msgid "VPN Off"
msgstr "VPN ausgeschaltet"
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
#: js/ui/status/network.js:1536 js/ui/status/rfkill.js:82
msgid "Network Settings"
msgstr "Netzwerkeinstellungen"
#: js/ui/status/network.js:1564
#: js/ui/status/network.js:1565
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Kabelverbindung"
msgstr[1] "%s Kabelverbindungen"
#: js/ui/status/network.js:1568
#: js/ui/status/network.js:1569
#, 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:1572
#: js/ui/status/network.js:1573
#, 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:1705
#: js/ui/status/network.js:1702
msgid "Connection failed"
msgstr "Verbindung gescheitert"
#: js/ui/status/network.js:1706
#: js/ui/status/network.js:1703
msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
@@ -2043,15 +2057,15 @@ msgstr "Abmelden"
msgid "Account Settings"
msgstr "Kontoeinstellungen"
#: js/ui/status/system.js:256
#: js/ui/status/system.js:255
msgid "Orientation Lock"
msgstr "Hoch-/Querformats-Fixierung"
#: js/ui/status/system.js:282
#: js/ui/status/system.js:281
msgid "Suspend"
msgstr "Bereitschaft"
msgstr "In Bereitschaft versetzen"
#: js/ui/status/system.js:292
#: js/ui/status/system.js:291
msgid "Power Off"
msgstr "Ausschalten"
@@ -2169,7 +2183,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:677
#: js/ui/windowManager.js:662
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2242,6 +2256,11 @@ 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"
@@ -2260,12 +2279,12 @@ msgstr ""
msgid "List possible modes"
msgstr "Die möglichen Modi auflisten"
#: src/shell-app.c:264
#: src/shell-app.c:260
msgctxt "program"
msgid "Unknown"
msgstr "Unbekannt"
#: src/shell-app.c:515
#: src/shell-app.c:511
#, c-format
msgid "Failed to launch “%s”"
msgstr "»%s« konnte nicht gestartet werden"
@@ -2304,15 +2323,6 @@ 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:"

113
po/eo.po
View File

@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-05-08 17:45+0000\n"
"PO-Revision-Date: 2019-05-09 20:12+0200\n"
"POT-Creation-Date: 2019-04-17 19:29+0000\n"
"PO-Revision-Date: 2019-05-01 16:29+0200\n"
"Last-Translator: Carmen Bianca BAKKER <carmen@carmenbianca.eu>\n"
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
"Language: eo\n"
@@ -383,7 +383,7 @@ msgstr "Foliumi en Programaro"
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:889
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
msgid "Cancel"
msgstr "Nuligi"
@@ -683,6 +683,7 @@ msgstr "Ĉiuj"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
#| msgid "Windows"
msgid "Open Windows"
msgstr "Malfermaj fenestroj"
@@ -919,7 +920,7 @@ msgstr ""
"Alternative vi povas konekti per premi la “WPS”-butonon de via enkursigilo."
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
#: js/ui/status/network.js:310 js/ui/status/network.js:892
#: js/ui/status/network.js:309 js/ui/status/network.js:891
msgid "Connect"
msgstr "Konekti"
@@ -949,7 +950,7 @@ msgstr "Servo: "
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
msgid "Authentication required by wireless network"
msgstr "Sendrata reto bezonas aŭtentigon"
msgstr "Aŭtentigo estas bezonata de sendrata reto"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#, javascript-format
@@ -977,7 +978,7 @@ msgstr "PIN-kodo bezonata"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-kodo necesas por la portebla larĝkapacita aparato"
msgstr "PIN-kodo estas bezonata por la portebla larĝkapacita aparato"
#: js/ui/components/networkAgent.js:333
msgid "PIN: "
@@ -991,9 +992,9 @@ msgstr "Portebla larĝkapacita retopasvorto"
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Pasvorto necesas por konekti al “%s”."
msgstr "Pasvorto estas bezonata por konekti al “%s”."
#: 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 "Retadministrilo"
@@ -1310,13 +1311,13 @@ msgid "Leave On"
msgstr "Lasi ŝaltita"
#: 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 "Ŝalti"
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:128 js/ui/status/network.js:311
#: js/ui/status/network.js:1264 js/ui/status/network.js:1376
#: js/ui/status/network.js:128 js/ui/status/network.js:310
#: 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"
@@ -1378,7 +1379,7 @@ msgstr "Montri fonton"
msgid "Web Page"
msgstr "Retpaĝo"
#: js/ui/messageTray.js:1479
#: js/ui/messageTray.js:1480
msgid "System Information"
msgstr "Sisteminformoj"
@@ -1472,7 +1473,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistemo"
#: js/ui/panel.js:861
#: js/ui/panel.js:864
msgid "Top Bar"
msgstr "Supra breto"
@@ -1610,11 +1611,11 @@ msgstr "Saltaj klavoj"
msgid "Mouse Keys"
msgstr "Musklavoj"
#: js/ui/status/accessibility.js:135
#: js/ui/status/accessibility.js:151
msgid "High Contrast"
msgstr "Alta kontrasto"
#: js/ui/status/accessibility.js:177
#: js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Granda teksto"
@@ -1622,7 +1623,7 @@ msgstr "Granda teksto"
msgid "Bluetooth"
msgstr "Bludento"
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
msgid "Bluetooth Settings"
msgstr "Bludento-agordoj"
@@ -1693,13 +1694,13 @@ msgid "<unknown>"
msgstr "<nekonata>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:417 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 malŝaltita"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420
#: js/ui/status/network.js:419
#, javascript-format
msgid "%s Connected"
msgstr "%s konektita"
@@ -1707,189 +1708,189 @@ msgstr "%s konektita"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:425
#: js/ui/status/network.js:424
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s nemastrumita"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:428
#: js/ui/status/network.js:427
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s malkonektante"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435 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 konektante"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:438
#: js/ui/status/network.js:437
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s postulas aŭtentigon"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:445
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Mikroprogramo mankas por %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:450
#: js/ui/status/network.js:449
#, javascript-format
msgid "%s Unavailable"
msgstr "%s nedisponebla"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s konekto malsukcesis"
#: js/ui/status/network.js:465
#: js/ui/status/network.js:464
msgid "Wired Settings"
msgstr "Drataj agordoj"
#: js/ui/status/network.js:507
#: js/ui/status/network.js:506
msgid "Mobile Broadband Settings"
msgstr "Porteblaj larĝkapacitaj agordoj"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:554 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 aparataro malŝaltita"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:558
#: js/ui/status/network.js:557
#, javascript-format
msgid "%s Disabled"
msgstr "%s malŝaltita"
#: js/ui/status/network.js:598
#: js/ui/status/network.js:597
msgid "Connect to Internet"
msgstr "Konekti al interreto"
#: js/ui/status/network.js:787
#: js/ui/status/network.js:786
msgid "Airplane Mode is On"
msgstr "Aviadila reĝimo ŝaltita"
#: js/ui/status/network.js:788
#: js/ui/status/network.js:787
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Vifio malebliĝas se aviadila reĝimo estas ŝaltita."
#: js/ui/status/network.js:789
#: js/ui/status/network.js:788
msgid "Turn Off Airplane Mode"
msgstr "Malŝalti aviadilan reĝimon"
#: js/ui/status/network.js:798
#: js/ui/status/network.js:797
msgid "Wi-Fi is Off"
msgstr "Vifio malŝaltita"
#: js/ui/status/network.js:799
#: js/ui/status/network.js:798
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Necesas ŝalti vifion por konekti al reto."
#: js/ui/status/network.js:800
#: js/ui/status/network.js:799
msgid "Turn On Wi-Fi"
msgstr "Ŝalti vifion"
#: js/ui/status/network.js:825
#: js/ui/status/network.js:824
msgid "Wi-Fi Networks"
msgstr "Vifiaj retoj"
#: js/ui/status/network.js:827
#: js/ui/status/network.js:826
msgid "Select a network"
msgstr "Elekti reton"
#: js/ui/status/network.js:856
#: js/ui/status/network.js:855
msgid "No Networks"
msgstr "Neniu reto"
#: js/ui/status/network.js:877 js/ui/status/rfkill.js:104
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
msgid "Use hardware switch to turn off"
msgstr "Uzi aparataran ŝaltilon por malŝalti"
#: js/ui/status/network.js:1153
#: js/ui/status/network.js:1152
msgid "Select Network"
msgstr "Elekti reton"
#: js/ui/status/network.js:1159
#: js/ui/status/network.js:1158
msgid "Wi-Fi Settings"
msgstr "Vifio-agordoj"
#. 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 "%s retkaptejo aktiva"
#. 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 ne konektita"
#: js/ui/status/network.js:1393
#: js/ui/status/network.js:1392
msgid "connecting…"
msgstr "konektante…"
#. 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 "aŭtentigo necesas"
#: js/ui/status/network.js:1398
#: js/ui/status/network.js:1397
msgid "connection failed"
msgstr "konekto malsukcesis"
#: js/ui/status/network.js:1448
#: js/ui/status/network.js:1447
msgid "VPN Settings"
msgstr "VPR-agordoj"
#: js/ui/status/network.js:1465
#: js/ui/status/network.js:1464
msgid "VPN"
msgstr "VPR"
#: js/ui/status/network.js:1475
#: js/ui/status/network.js:1474
msgid "VPN Off"
msgstr "VPR malŝaltita"
#: 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 "Ret-agordoj"
#: 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 drata konekto"
msgstr[1] "%s drataj konektoj"
#: 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 vifia konekto"
msgstr[1] "%s vifiaj konektoj"
#: 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 modema konekto"
msgstr[1] "%s modemaj konektoj"
#: js/ui/status/network.js:1706
#: js/ui/status/network.js:1705
msgid "Connection failed"
msgstr "Konekto malsukcesis"
#: js/ui/status/network.js:1707
#: js/ui/status/network.js:1706
msgid "Activation of network connection failed"
msgstr "Aktivigo de reto-konekto malsukcesis"

322
po/es.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-06-06 11:42+0000\n"
"PO-Revision-Date: 2019-06-10 12:04+0200\n"
"POT-Creation-Date: 2019-04-17 19:29+0000\n"
"PO-Revision-Date: 2019-04-23 10:15+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n"
@@ -428,11 +428,10 @@ msgstr ""
msgid "Browse in Software"
msgstr "Buscar en Software"
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:52
#: js/ui/components/networkAgent.js:118 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:431 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:404 js/ui/shellMountOperation.js:413
#: js/ui/status/network.js:894
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
msgid "Cancel"
msgstr "Cancelar"
@@ -440,7 +439,7 @@ msgstr "Cancelar"
msgid "Next"
msgstr "Siguiente"
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:408
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329
#: js/ui/unlockDialog.js:41
msgid "Unlock"
msgstr "Desbloquear"
@@ -471,8 +470,8 @@ msgstr "(ej., usuario o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username: "
msgstr "Nombre de usuario:"
@@ -523,7 +522,7 @@ msgstr "Cerrar la sesión"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:105
msgid "logout;log out;sign off"
msgid "logout;sign off"
msgstr "cerrar;sesión;salir"
#. Translators: The name of the suspend action in search
@@ -709,11 +708,11 @@ msgstr ""
#. No support for non-modal system dialogs, so ignore the option
#. let modal = options['modal'] || true;
#: js/ui/accessDialog.js:38 js/ui/status/location.js:362
#: js/ui/accessDialog.js:37 js/ui/status/location.js:360
msgid "Deny Access"
msgstr "Denegar acceso"
#: js/ui/accessDialog.js:39 js/ui/status/location.js:365
#: js/ui/accessDialog.js:38 js/ui/status/location.js:363
msgid "Grant Access"
msgstr "Conceder acceso"
@@ -731,6 +730,7 @@ msgstr "Todas"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
#| msgid "Windows"
msgid "Open Windows"
msgstr "Ventanas abiertas"
@@ -764,23 +764,23 @@ msgstr "Se ha añadido %s a sus favoritos."
msgid "%s has been removed from your favorites."
msgstr "Se ha quitado %s de sus favoritos."
#: js/ui/audioDeviceSelection.js:39
#: js/ui/audioDeviceSelection.js:42
msgid "Select Audio Device"
msgstr "Seleccionar dispositivo de sonido"
#: js/ui/audioDeviceSelection.js:50
#: js/ui/audioDeviceSelection.js:53
msgid "Sound Settings"
msgstr "Configuración de sonido"
#: js/ui/audioDeviceSelection.js:59
#: js/ui/audioDeviceSelection.js:62
msgid "Headphones"
msgstr "Auriculares"
#: js/ui/audioDeviceSelection.js:61
#: js/ui/audioDeviceSelection.js:64
msgid "Headset"
msgstr "Manos libres"
#: js/ui/audioDeviceSelection.js:63 js/ui/status/volume.js:247
#: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247
msgid "Microphone"
msgstr "Micrófono"
@@ -941,75 +941,67 @@ msgstr "Forzar la salida"
msgid "Wait"
msgstr "Esperar"
#: js/ui/components/automountManager.js:87
#: js/ui/components/automountManager.js:86
msgid "External drive connected"
msgstr "Dispositivo externo conectado"
#: js/ui/components/automountManager.js:99
#: js/ui/components/automountManager.js:98
msgid "External drive disconnected"
msgstr "Dispositivo externo desconectado"
#: js/ui/components/automountManager.js:211
msgid "Unable to unlock volume"
msgstr "No se puede desbloquear el volumen"
#: js/ui/components/automountManager.js:212
msgid "The installed udisks version does not support the PIM setting"
msgstr "La versión de udisks instalada no soporta la configuración PIM"
#: js/ui/components/autorunManager.js:334
#, javascript-format
msgid "Open with %s"
msgstr "Abrir con %s"
#: js/ui/components/keyring.js:66 js/ui/components/polkitAgent.js:257
#: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255
msgid "Password:"
msgstr "Contraseña:"
#: js/ui/components/keyring.js:97
#: js/ui/components/keyring.js:108
msgid "Type again:"
msgstr "Escriba de nuevo:"
#: js/ui/components/networkAgent.js:103
#: js/ui/components/networkAgent.js:102
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr ""
"Alternativamente puede conectarse pulsando el botón «WPS» de su router."
#: js/ui/components/networkAgent.js:113 js/ui/status/network.js:219
#: js/ui/status/network.js:310 js/ui/status/network.js:897
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
#: js/ui/status/network.js:309 js/ui/status/network.js:891
msgid "Connect"
msgstr "Conectar"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:212 js/ui/components/networkAgent.js:224
#: js/ui/components/networkAgent.js:247 js/ui/components/networkAgent.js:266
#: js/ui/components/networkAgent.js:286 js/ui/components/networkAgent.js:296
#: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295
msgid "Password: "
msgstr "Contraseña: "
#. static WEP
#: js/ui/components/networkAgent.js:217
#: js/ui/components/networkAgent.js:216
msgid "Key: "
msgstr "Clave:"
#: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:272
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271
msgid "Private key password: "
msgstr "Contraseña de la clave privada:"
#: js/ui/components/networkAgent.js:270
#: js/ui/components/networkAgent.js:269
msgid "Identity: "
msgstr "Identidad:"
#: js/ui/components/networkAgent.js:284
#: js/ui/components/networkAgent.js:283
msgid "Service: "
msgstr "Servicio:"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
msgid "Authentication required by wireless network"
msgstr "La red inalámbrica requiere autenticación"
#: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -1018,53 +1010,53 @@ msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%s»."
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689
msgid "Wired 802.1X authentication"
msgstr "Autenticación 802.1X cableada"
#: js/ui/components/networkAgent.js:320
#: js/ui/components/networkAgent.js:319
msgid "Network name: "
msgstr "Nombre de la red: "
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693
msgid "DSL authentication"
msgstr "Autenticación DSL"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Código PIN requerido"
#: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
#: js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:333
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706
msgid "Mobile broadband network password"
msgstr "Contraseña de la red de banda ancha móvil"
#: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:708
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Se requiere una contraseña para conectarse a «%s»."
#: js/ui/components/networkAgent.js:675 js/ui/status/network.js:1670
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
msgid "Network Manager"
msgstr "Gestor de la red"
#: js/ui/components/polkitAgent.js:36
#: js/ui/components/polkitAgent.js:34
msgid "Authentication Required"
msgstr "Se necesita autenticación"
#: js/ui/components/polkitAgent.js:64
#: js/ui/components/polkitAgent.js:62
msgid "Administrator"
msgstr "Administrador"
#: js/ui/components/polkitAgent.js:141
#: js/ui/components/polkitAgent.js:139
msgid "Authenticate"
msgstr "Autenticar"
@@ -1072,7 +1064,7 @@ msgstr "Autenticar"
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: js/ui/components/polkitAgent.js:243 js/ui/shellMountOperation.js:389
#: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309
msgid "Sorry, that didnt work. Please try again."
msgstr "Eso no ha funcionado. Inténtelo de nuevo."
@@ -1266,27 +1258,27 @@ msgstr ""
"puede tardar mucho tiempo: asegúrese de que tiene una copia de respaldo y de "
"que el equipo está enchufado."
#: js/ui/endSessionDialog.js:310
#: js/ui/endSessionDialog.js:309
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Funcionando con batería: conéctese antes de instalar las actualizaciones."
#: js/ui/endSessionDialog.js:327
#: js/ui/endSessionDialog.js:326
msgid "Some applications are busy or have unsaved work."
msgstr "Algunas aplicaciones están ocupadas o tienen trabajo sin guardar."
#: js/ui/endSessionDialog.js:334
#: js/ui/endSessionDialog.js:333
msgid "Other users are logged in."
msgstr "Hay otros usuarios con la sesión iniciada."
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:615
#: js/ui/endSessionDialog.js:614
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:618
#: js/ui/endSessionDialog.js:617
#, javascript-format
msgid "%s (console)"
msgstr "%s (consola)"
@@ -1373,13 +1365,13 @@ msgid "Leave On"
msgstr "Dejar activada"
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:1269
#: js/ui/status/network.js:1263
msgid "Turn On"
msgstr "Encender"
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:128 js/ui/status/network.js:311
#: js/ui/status/network.js:1269 js/ui/status/network.js:1381
#: js/ui/status/network.js:128 js/ui/status/network.js:310
#: 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"
@@ -1441,7 +1433,7 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
#: js/ui/messageTray.js:1479
#: js/ui/messageTray.js:1480
msgid "System Information"
msgstr "Información del sistema"
@@ -1534,23 +1526,23 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:862
#: js/ui/panel.js:864
msgid "Top Bar"
msgstr "Barra superior"
#: js/ui/runDialog.js:65
#: js/ui/runDialog.js:64
msgid "Enter a Command"
msgstr "Introducir un comando"
#: js/ui/runDialog.js:105 js/ui/windowMenu.js:166
#: js/ui/runDialog.js:104 js/ui/windowMenu.js:166
msgid "Close"
msgstr "Cerrar"
#: js/ui/runDialog.js:267
#: js/ui/runDialog.js:266
msgid "Restart is not available on Wayland"
msgstr "Reiniciar no está disponible en Wayland"
#: js/ui/runDialog.js:272
#: js/ui/runDialog.js:271
msgid "Restarting…"
msgstr "Reiniciando…"
@@ -1597,15 +1589,15 @@ msgstr "No se pudo bloquear"
msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió el bloqueo"
#: js/ui/search.js:638
#: js/ui/search.js:635
msgid "Searching…"
msgstr "Buscando…"
#: js/ui/search.js:640
#: js/ui/search.js:637
msgid "No results."
msgstr "No se encontraron resultados."
#: js/ui/search.js:764
#: js/ui/search.js:761
#, javascript-format
msgid "%d more"
msgid_plural "%d more"
@@ -1628,61 +1620,14 @@ msgstr "Mostrar texto"
msgid "Hide Text"
msgstr "Ocultar texto"
#: js/ui/shellMountOperation.js:318
msgid "Hidden Volume"
msgstr "Ocultar volumen"
#: js/ui/shellMountOperation.js:321
msgid "Windows System Volume"
msgstr "Volumen de sistema Windows"
#: js/ui/shellMountOperation.js:324
msgid "Uses Keyfiles"
msgstr "Usa archivos de claves"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:330
#, javascript-format
msgid ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
msgstr ""
"Para desbloquear un volumen que usa archivos de claves use la herramienta <i>"
"%s</i> en su lugar."
#: js/ui/shellMountOperation.js:337
msgid "PIM Number"
msgstr "Número PIM"
#: js/ui/shellMountOperation.js:355
msgid "The PIM must be a number or empty."
msgstr "El PIM debe ser un número o estar vacío."
#: js/ui/shellMountOperation.js:366
#: js/ui/shellMountOperation.js:296
msgid "Password"
msgstr "Contraseña"
#: js/ui/shellMountOperation.js:396
#: js/ui/shellMountOperation.js:317
msgid "Remember Password"
msgstr "Recordar contraseña"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:418
#, javascript-format
msgid "Open %s"
msgstr "Abrir %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:490
#, javascript-format
msgid "Unable to start %s"
msgstr "No se puede iniciar %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:492
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "No se pudo encontrar la aplicación %s"
#: js/ui/status/accessibility.js:35
msgid "Accessibility"
msgstr "Accesibilidad"
@@ -1719,11 +1664,11 @@ msgstr "Rechazo de teclas"
msgid "Mouse Keys"
msgstr "Teclas del ratón"
#: js/ui/status/accessibility.js:135
#: js/ui/status/accessibility.js:151
msgid "High Contrast"
msgstr "Contraste alto"
#: js/ui/status/accessibility.js:177
#: js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Texto grande"
@@ -1731,7 +1676,7 @@ msgstr "Texto grande"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
msgid "Bluetooth Settings"
msgstr "Configuración de Bluetooth"
@@ -1755,31 +1700,11 @@ msgstr "Encendido"
msgid "Brightness"
msgstr "Brillo"
#: js/ui/status/dwellClick.js:13
msgid "Single Click"
msgstr "Una sola pulsación"
#: js/ui/status/dwellClick.js:18
msgid "Double Click"
msgstr "Doble pulsación"
#: js/ui/status/dwellClick.js:23
msgid "Drag"
msgstr "Arrastrar"
#: js/ui/status/dwellClick.js:28
msgid "Secondary Click"
msgstr "Pulsación secundaria"
#: js/ui/status/dwellClick.js:37
msgid "Dwell Click"
msgstr "Pulsación al posarse"
#: js/ui/status/keyboard.js:813
#: js/ui/status/keyboard.js:812
msgid "Keyboard"
msgstr "Teclado"
#: js/ui/status/keyboard.js:835
#: js/ui/status/keyboard.js:834
msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado"
@@ -1808,12 +1733,12 @@ msgid "Enable"
msgstr "Activar"
#. Translators: %s is an application name
#: js/ui/status/location.js:355
#: js/ui/status/location.js:353
#, javascript-format
msgid "Give %s access to your location?"
msgstr "¿Conceder acceso a %s a su ubicación?"
#: js/ui/status/location.js:356
#: js/ui/status/location.js:354
msgid "Location access can be changed at any time from the privacy settings."
msgstr ""
"Los servicios de ubicación se pueden cambiar en cualquier momento desde la "
@@ -1824,13 +1749,13 @@ msgid "<unknown>"
msgstr "<desconocido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:417 js/ui/status/network.js:1298
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
#, javascript-format
msgid "%s Off"
msgstr "%s apagada"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420
#: js/ui/status/network.js:419
#, javascript-format
msgid "%s Connected"
msgstr "%s conectada"
@@ -1838,189 +1763,189 @@ msgstr "%s conectada"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:425
#: js/ui/status/network.js:424
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s sin gestionar"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:428
#: js/ui/status/network.js:427
#, javascript-format
msgid "%s Disconnecting"
msgstr "Desconectando %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435 js/ui/status/network.js:1290
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
#, javascript-format
msgid "%s Connecting"
msgstr "Conectando %s"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:438
#: js/ui/status/network.js:437
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s requiere autenticación"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:445
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Falta el «firmware» para %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:450
#: js/ui/status/network.js:449
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponible"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connection Failed"
msgstr "Falló la conexión %s"
#: js/ui/status/network.js:465
#: js/ui/status/network.js:464
msgid "Wired Settings"
msgstr "Configuración de red cableada"
#: js/ui/status/network.js:507
#: js/ui/status/network.js:506
msgid "Mobile Broadband Settings"
msgstr "Configuración de banda ancha móvil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:554 js/ui/status/network.js:1295
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hardware %s desactivado"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:558
#: js/ui/status/network.js:557
#, javascript-format
msgid "%s Disabled"
msgstr "%s desactivado"
#: js/ui/status/network.js:598
#: js/ui/status/network.js:597
msgid "Connect to Internet"
msgstr "Conectar a Internet"
#: js/ui/status/network.js:792
#: js/ui/status/network.js:786
msgid "Airplane Mode is On"
msgstr "El modo avión está activado"
#: js/ui/status/network.js:793
#: js/ui/status/network.js:787
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "La Wi-Fi se desactiva cuando se activa el modo avión."
#: js/ui/status/network.js:794
#: js/ui/status/network.js:788
msgid "Turn Off Airplane Mode"
msgstr "Apagar el modo avión"
#: js/ui/status/network.js:803
#: js/ui/status/network.js:797
msgid "Wi-Fi is Off"
msgstr "La Wi-Fi está desactivada"
#: js/ui/status/network.js:804
#: js/ui/status/network.js:798
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Se debe activar la Wi-Fi para poder conectarse a la red."
#: js/ui/status/network.js:805
#: js/ui/status/network.js:799
msgid "Turn On Wi-Fi"
msgstr "Activar la Wi-Fi"
#: js/ui/status/network.js:830
#: js/ui/status/network.js:824
msgid "Wi-Fi Networks"
msgstr "Redes Wi-Fi"
#: js/ui/status/network.js:832
#: js/ui/status/network.js:826
msgid "Select a network"
msgstr "Seleccionar una red"
#: js/ui/status/network.js:861
#: js/ui/status/network.js:855
msgid "No Networks"
msgstr "No hay redes"
#: js/ui/status/network.js:882 js/ui/status/rfkill.js:104
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
msgid "Use hardware switch to turn off"
msgstr "Usar el interruptor hardware para apagar"
#: js/ui/status/network.js:1158
#: js/ui/status/network.js:1152
msgid "Select Network"
msgstr "Seleccionar red"
#: js/ui/status/network.js:1164
#: js/ui/status/network.js:1158
msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1286
#: js/ui/status/network.js:1280
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Punto de acceso %s activo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1301
#: js/ui/status/network.js:1295
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no conectado"
#: js/ui/status/network.js:1398
#: js/ui/status/network.js:1392
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1401
#: js/ui/status/network.js:1395
msgid "authentication required"
msgstr "se necesita autenticación"
#: js/ui/status/network.js:1403
#: js/ui/status/network.js:1397
msgid "connection failed"
msgstr "falló la conexión"
#: js/ui/status/network.js:1453
#: js/ui/status/network.js:1447
msgid "VPN Settings"
msgstr "Configuración de VPN"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1464
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1480
#: js/ui/status/network.js:1474
msgid "VPN Off"
msgstr "VPN apagada"
#: js/ui/status/network.js:1541 js/ui/status/rfkill.js:82
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
msgid "Network Settings"
msgstr "Configuración de la red"
#: js/ui/status/network.js:1570
#: js/ui/status/network.js:1564
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conexión cableada"
msgstr[1] "%s conexiones cableadas"
#: js/ui/status/network.js:1574
#: js/ui/status/network.js:1568
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conexión inalámbrica"
msgstr[1] "%s conexiones inalámbricas"
#: js/ui/status/network.js:1578
#: js/ui/status/network.js:1572
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conexión por módem"
msgstr[1] "%s conexiones por módem"
#: js/ui/status/network.js:1711
#: js/ui/status/network.js:1705
msgid "Connection failed"
msgstr "Falló la conexión"
#: js/ui/status/network.js:1712
#: js/ui/status/network.js:1706
msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red"
@@ -2202,22 +2127,22 @@ msgstr "Buscar"
msgid "“%s” is ready"
msgstr "«%s» está preparado"
#: js/ui/windowManager.js:54
#: js/ui/windowManager.js:53
msgid "Do you want to keep these display settings?"
msgstr "¿Quiere mantener esta configuración de la pantalla?"
#. Translators: this and the following message should be limited in length,
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:66
#: js/ui/windowManager.js:65
msgid "Revert Settings"
msgstr "Revertir configuración"
#: js/ui/windowManager.js:69
#: js/ui/windowManager.js:68
msgid "Keep Changes"
msgstr "Mantener cambios"
#: js/ui/windowManager.js:87
#: js/ui/windowManager.js:86
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -2226,7 +2151,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
#. 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:678
#: js/ui/windowManager.js:677
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2327,11 +2252,11 @@ msgstr "Desconocido"
msgid "Failed to launch “%s”"
msgstr "Falló al lanzar «%s»"
#: src/shell-keyring-prompt.c:731
#: src/shell-keyring-prompt.c:730
msgid "Passwords do not match."
msgstr "Las contraseñas no coinciden."
#: src/shell-keyring-prompt.c:739
#: src/shell-keyring-prompt.c:738
msgid "Password cannot be blank"
msgstr "La contraseña no puede estar vacía"
@@ -2587,6 +2512,9 @@ msgstr "Sonidos del sistema"
#~ msgid "Internal error"
#~ msgstr "Error interno"
#~ msgid "Unable to connect to %s"
#~ msgstr "No se pudo conectar a %s"
#~ msgid "View account"
#~ msgstr "Ver cuenta"

336
po/fur.po
View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: video-subtitles master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-06-06 11:42+0000\n"
"PO-Revision-Date: 2019-06-11 11:25+0200\n"
"POT-Creation-Date: 2019-04-17 19:29+0000\n"
"PO-Revision-Date: 2019-04-26 16:10+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.3\n"
"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/50-gnome-shell-system.xml:6
@@ -419,11 +419,10 @@ msgstr ""
msgid "Browse in Software"
msgstr "Esplore in Software"
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:52
#: js/ui/components/networkAgent.js:118 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:431 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:404 js/ui/shellMountOperation.js:413
#: js/ui/status/network.js:894
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
msgid "Cancel"
msgstr "Anule"
@@ -431,7 +430,7 @@ msgstr "Anule"
msgid "Next"
msgstr "Indenant"
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:408
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329
#: js/ui/unlockDialog.js:41
msgid "Unlock"
msgstr "Sbloche"
@@ -462,10 +461,10 @@ msgstr "(p.e., utent o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username: "
msgstr "Non utent: "
msgstr "Non utent:"
#: js/gdm/loginDialog.js:1227
msgid "Login Window"
@@ -514,8 +513,8 @@ msgstr "Jessî"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:105
msgid "logout;log out;sign off"
msgstr "jessî;sierâ session;disconeti"
msgid "logout;sign off"
msgstr "jessî;sierâ session"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:109
@@ -701,11 +700,11 @@ msgstr ""
#. No support for non-modal system dialogs, so ignore the option
#. let modal = options['modal'] || true;
#: js/ui/accessDialog.js:38 js/ui/status/location.js:362
#: js/ui/accessDialog.js:37 js/ui/status/location.js:360
msgid "Deny Access"
msgstr "Dinee acès"
#: js/ui/accessDialog.js:39 js/ui/status/location.js:365
#: js/ui/accessDialog.js:38 js/ui/status/location.js:363
msgid "Grant Access"
msgstr "Garantìs l'acès"
@@ -756,23 +755,23 @@ msgstr "%s al è stât zontât tai tiei preferîts."
msgid "%s has been removed from your favorites."
msgstr "%s al è stât gjavât dai tiei preferîts."
#: js/ui/audioDeviceSelection.js:39
#: js/ui/audioDeviceSelection.js:42
msgid "Select Audio Device"
msgstr "Selezione dispositîf sonôr"
#: js/ui/audioDeviceSelection.js:50
#: js/ui/audioDeviceSelection.js:53
msgid "Sound Settings"
msgstr "Impostazions suns"
#: js/ui/audioDeviceSelection.js:59
#: js/ui/audioDeviceSelection.js:62
msgid "Headphones"
msgstr "Cufis"
#: js/ui/audioDeviceSelection.js:61
#: js/ui/audioDeviceSelection.js:64
msgid "Headset"
msgstr "Cufis cun microfon"
#: js/ui/audioDeviceSelection.js:63 js/ui/status/volume.js:247
#: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247
msgid "Microphone"
msgstr "Microfon"
@@ -933,75 +932,67 @@ msgstr "Sfuarce jessude"
msgid "Wait"
msgstr "Spiete"
#: js/ui/components/automountManager.js:87
#: js/ui/components/automountManager.js:86
msgid "External drive connected"
msgstr "Dispositîf esterni tacât"
#: js/ui/components/automountManager.js:99
#: js/ui/components/automountManager.js:98
msgid "External drive disconnected"
msgstr "Dispositîf esterni distacât"
#: js/ui/components/automountManager.js:211
msgid "Unable to unlock volume"
msgstr "Impussibil sblocâ il volum"
#: js/ui/components/automountManager.js:212
msgid "The installed udisks version does not support the PIM setting"
msgstr "La version di udisks instalade no supuarte la impostazion PIM"
#: js/ui/components/autorunManager.js:334
#, javascript-format
msgid "Open with %s"
msgstr "Vierç cun %s"
#: js/ui/components/keyring.js:66 js/ui/components/polkitAgent.js:257
#: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255
msgid "Password:"
msgstr "Password:"
#: js/ui/components/keyring.js:97
#: js/ui/components/keyring.js:108
msgid "Type again:"
msgstr "Scîf di gnûf:"
#: js/ui/components/networkAgent.js:103
#: js/ui/components/networkAgent.js:102
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr ""
"In alternative al è pussibil conetisi fracant il boton “WPS” sul router."
#: js/ui/components/networkAgent.js:113 js/ui/status/network.js:219
#: js/ui/status/network.js:310 js/ui/status/network.js:897
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
#: js/ui/status/network.js:309 js/ui/status/network.js:891
msgid "Connect"
msgstr "Conet"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:212 js/ui/components/networkAgent.js:224
#: js/ui/components/networkAgent.js:247 js/ui/components/networkAgent.js:266
#: js/ui/components/networkAgent.js:286 js/ui/components/networkAgent.js:296
#: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295
msgid "Password: "
msgstr "Password: "
#. static WEP
#: js/ui/components/networkAgent.js:217
#: js/ui/components/networkAgent.js:216
msgid "Key: "
msgstr "Clâf: "
msgstr "Clâf:"
#: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:272
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271
msgid "Private key password: "
msgstr "Password di clâf privade: "
msgstr "Password di clâf privade:"
#: js/ui/components/networkAgent.js:270
#: js/ui/components/networkAgent.js:269
msgid "Identity: "
msgstr "Identitât: "
msgstr "Identitât:"
#: js/ui/components/networkAgent.js:284
#: js/ui/components/networkAgent.js:283
msgid "Service: "
msgstr "Servizi: "
msgstr "Servizi:"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
msgid "Authentication required by wireless network"
msgstr "La rêt cence fîl e domande autenticazion"
#: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -1010,53 +1001,53 @@ msgstr ""
"Si scugne meti une password o une clâf di cifradure par jentrâ te rêt cence "
"fîl \"%s\"."
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689
msgid "Wired 802.1X authentication"
msgstr "Autenticazion vie fîl 802.1X"
#: js/ui/components/networkAgent.js:320
#: js/ui/components/networkAgent.js:319
msgid "Network name: "
msgstr "Non rêt: "
msgstr "Non rêt:"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693
msgid "DSL authentication"
msgstr "Autenticazion DSL"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Si pretint un codiç PIN"
#: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil"
#: js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:333
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706
msgid "Mobile broadband network password"
msgstr "Passowrd rêt mobil a bande largje"
#: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:708
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "A covente une password par tacâsi a '%s'."
#: js/ui/components/networkAgent.js:675 js/ui/status/network.js:1670
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
msgid "Network Manager"
msgstr "Ministradôr di rêt"
#: js/ui/components/polkitAgent.js:36
#: js/ui/components/polkitAgent.js:34
msgid "Authentication Required"
msgstr "Autenticazion Necessarie"
#: js/ui/components/polkitAgent.js:64
#: js/ui/components/polkitAgent.js:62
msgid "Administrator"
msgstr "Aministradôr"
#: js/ui/components/polkitAgent.js:141
#: js/ui/components/polkitAgent.js:139
msgid "Authenticate"
msgstr "Autentiche"
@@ -1064,7 +1055,7 @@ msgstr "Autentiche"
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: js/ui/components/polkitAgent.js:243 js/ui/shellMountOperation.js:389
#: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309
msgid "Sorry, that didnt work. Please try again."
msgstr "Mi displâs, no je lade drete. Prove di gnûf."
@@ -1258,28 +1249,28 @@ msgstr ""
"dal avanzament e pues tirâ a dilunc: siguriti di vê fat i backup e che il to "
"computer al sedi tacât."
#: js/ui/endSessionDialog.js:310
#: js/ui/endSessionDialog.js:309
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Funzionament su batarie: par plasê tache la spine prime di instalâ i "
"inzornaments."
#: js/ui/endSessionDialog.js:327
#: js/ui/endSessionDialog.js:326
msgid "Some applications are busy or have unsaved work."
msgstr "Cualchi aplicazion e je impegnade opûr e à lavôrs no salvâts."
#: js/ui/endSessionDialog.js:334
#: js/ui/endSessionDialog.js:333
msgid "Other users are logged in."
msgstr "Altris utents a son jentrâts."
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:615
#: js/ui/endSessionDialog.js:614
#, javascript-format
msgid "%s (remote)"
msgstr "%s (rimot)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:618
#: js/ui/endSessionDialog.js:617
#, javascript-format
msgid "%s (console)"
msgstr "%s (locâl vie tastiere)"
@@ -1365,13 +1356,13 @@ msgid "Leave On"
msgstr "Lasse ativât"
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:1269
#: js/ui/status/network.js:1263
msgid "Turn On"
msgstr "Impie"
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:128 js/ui/status/network.js:311
#: js/ui/status/network.js:1269 js/ui/status/network.js:1381
#: js/ui/status/network.js:128 js/ui/status/network.js:310
#: 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"
@@ -1433,7 +1424,7 @@ msgstr "Viôt sorzint"
msgid "Web Page"
msgstr "Pagjine Web"
#: js/ui/messageTray.js:1479
#: js/ui/messageTray.js:1480
msgid "System Information"
msgstr "Informazion di sisteme"
@@ -1527,24 +1518,24 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sisteme"
#: js/ui/panel.js:862
#: js/ui/panel.js:864
msgid "Top Bar"
msgstr "Sbare parsore"
#: js/ui/runDialog.js:65
#: js/ui/runDialog.js:64
msgid "Enter a Command"
msgstr "Scrîf un comant"
#: js/ui/runDialog.js:105 js/ui/windowMenu.js:166
#: js/ui/runDialog.js:104 js/ui/windowMenu.js:166
msgid "Close"
msgstr "Siere"
# torne invie o torne tache
#: js/ui/runDialog.js:267
#: js/ui/runDialog.js:266
msgid "Restart is not available on Wayland"
msgstr "Il tornâ a tacâ nol è disponibil in Wayland"
#: js/ui/runDialog.js:272
#: js/ui/runDialog.js:271
msgid "Restarting…"
msgstr "Daûr a tornâ a inviâ…"
@@ -1591,16 +1582,16 @@ msgstr "Impussibil blocâ"
msgid "Lock was blocked by an application"
msgstr "Il bloc al è stât dineât di une aplicazion"
#: js/ui/search.js:638
#: js/ui/search.js:635
msgid "Searching…"
msgstr "Daûr a cirî…"
#: js/ui/search.js:640
#: js/ui/search.js:637
msgid "No results."
msgstr "Nissun risultât."
# o ancjemò %d
#: js/ui/search.js:764
#: js/ui/search.js:761
#, javascript-format
msgid "%d more"
msgid_plural "%d more"
@@ -1623,61 +1614,14 @@ msgstr "Mostre Test"
msgid "Hide Text"
msgstr "Plate Test"
#: js/ui/shellMountOperation.js:318
msgid "Hidden Volume"
msgstr "Volum platât"
#: js/ui/shellMountOperation.js:321
msgid "Windows System Volume"
msgstr "Volum di sisteme Windows"
#: js/ui/shellMountOperation.js:324
msgid "Uses Keyfiles"
msgstr "Al dopre i File-clâf"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:330
#, javascript-format
msgid ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
msgstr ""
"Par sblocâ un volum che al dopre i file-clâf dopre invezit il program di "
"utilitât <i>%s</i>."
#: js/ui/shellMountOperation.js:337
msgid "PIM Number"
msgstr "Numar PIM"
#: js/ui/shellMountOperation.js:355
msgid "The PIM must be a number or empty."
msgstr "Il PIM al scugne jessi un numar o vueit."
#: js/ui/shellMountOperation.js:366
#: js/ui/shellMountOperation.js:296
msgid "Password"
msgstr "Password"
#: js/ui/shellMountOperation.js:396
#: js/ui/shellMountOperation.js:317
msgid "Remember Password"
msgstr "Visâsi Password"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:418
#, javascript-format
msgid "Open %s"
msgstr "Vierç %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:490
#, javascript-format
msgid "Unable to start %s"
msgstr "Impussibil inviâ %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:492
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Impussibil cjatâ la aplicazion %s"
#: js/ui/status/accessibility.js:35
msgid "Accessibility"
msgstr "Acessibilitât"
@@ -1714,11 +1658,11 @@ msgstr "Tascj che si sbalcin"
msgid "Mouse Keys"
msgstr "Mouse di tastiere"
#: js/ui/status/accessibility.js:135
#: js/ui/status/accessibility.js:151
msgid "High Contrast"
msgstr "Contrast elevât"
#: js/ui/status/accessibility.js:177
#: js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Test Larc"
@@ -1726,7 +1670,7 @@ msgstr "Test Larc"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
msgid "Bluetooth Settings"
msgstr "Impostazions Bluetooth"
@@ -1750,31 +1694,11 @@ msgstr "Impiât"
msgid "Brightness"
msgstr "Luminositât"
#: js/ui/status/dwellClick.js:13
msgid "Single Click"
msgstr "Clic singul"
#: js/ui/status/dwellClick.js:18
msgid "Double Click"
msgstr "Dopli clic"
#: js/ui/status/dwellClick.js:23
msgid "Drag"
msgstr "Strissinâ"
#: js/ui/status/dwellClick.js:28
msgid "Secondary Click"
msgstr "Clic secondari"
#: js/ui/status/dwellClick.js:37
msgid "Dwell Click"
msgstr "Clic in polse"
#: js/ui/status/keyboard.js:813
#: js/ui/status/keyboard.js:812
msgid "Keyboard"
msgstr "Tastiere"
#: js/ui/status/keyboard.js:835
#: js/ui/status/keyboard.js:834
msgid "Show Keyboard Layout"
msgstr "Mostre la disposizion de tastiere"
@@ -1803,12 +1727,12 @@ msgid "Enable"
msgstr "Abilite"
#. Translators: %s is an application name
#: js/ui/status/location.js:355
#: js/ui/status/location.js:353
#, javascript-format
msgid "Give %s access to your location?"
msgstr "Permeti a %s di cognossi la tô posizion?"
#: js/ui/status/location.js:356
#: js/ui/status/location.js:354
msgid "Location access can be changed at any time from the privacy settings."
msgstr ""
"L'acès ae posizion al pues jessi cambiât cuant che tu vuelis su impostazions "
@@ -1819,13 +1743,13 @@ msgid "<unknown>"
msgstr "<no cognossût>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:417 js/ui/status/network.js:1298
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
#, javascript-format
msgid "%s Off"
msgstr "%s distudât"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420
#: js/ui/status/network.js:419
#, javascript-format
msgid "%s Connected"
msgstr "%s tacât"
@@ -1833,189 +1757,189 @@ msgstr "%s tacât"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:425
#: js/ui/status/network.js:424
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s no ministrât"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:428
#: js/ui/status/network.js:427
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s daûr a disconeti"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435 js/ui/status/network.js:1290
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
#, javascript-format
msgid "%s Connecting"
msgstr "%s in conession"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:438
#: js/ui/status/network.js:437
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s al à dibisugne di autenticazion"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:445
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Al mancje il firmware par %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:450
#: js/ui/status/network.js:449
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponibil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connection Failed"
msgstr "Conession falide su %s"
#: js/ui/status/network.js:465
#: js/ui/status/network.js:464
msgid "Wired Settings"
msgstr "Impostazions rêt vie fîl"
#: js/ui/status/network.js:507
#: js/ui/status/network.js:506
msgid "Mobile Broadband Settings"
msgstr "Impostazions bande largje mobil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:554 js/ui/status/network.js:1295
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s disabilitât vie hardware"
msgstr "%s disabilitât vie hardware "
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:558
#: js/ui/status/network.js:557
#, javascript-format
msgid "%s Disabled"
msgstr "%s disabilitât"
#: js/ui/status/network.js:598
#: js/ui/status/network.js:597
msgid "Connect to Internet"
msgstr "Conet a internet"
#: js/ui/status/network.js:792
#: js/ui/status/network.js:786
msgid "Airplane Mode is On"
msgstr "Modalitât avion piade"
#: js/ui/status/network.js:793
#: js/ui/status/network.js:787
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Il Wi-Fi al è disabilitât cuant che la modalitât avion e je impiade."
#: js/ui/status/network.js:794
#: js/ui/status/network.js:788
msgid "Turn Off Airplane Mode"
msgstr "Distude modalitât avion"
#: js/ui/status/network.js:803
#: js/ui/status/network.js:797
msgid "Wi-Fi is Off"
msgstr "Il Wi-Fi al è distudât"
#: js/ui/status/network.js:804
#: js/ui/status/network.js:798
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Il Wi-Fi al scugne jessi impiât par podêsi tacâ a une rêt."
#: js/ui/status/network.js:805
#: js/ui/status/network.js:799
msgid "Turn On Wi-Fi"
msgstr "Impie il Wi-Fi"
#: js/ui/status/network.js:830
#: js/ui/status/network.js:824
msgid "Wi-Fi Networks"
msgstr "Rêts Wi-Fi"
#: js/ui/status/network.js:832
#: js/ui/status/network.js:826
msgid "Select a network"
msgstr "Selezione une rêt"
#: js/ui/status/network.js:861
#: js/ui/status/network.js:855
msgid "No Networks"
msgstr "Nissune rêt"
#: js/ui/status/network.js:882 js/ui/status/rfkill.js:104
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
msgid "Use hardware switch to turn off"
msgstr "Dopre interutôr fisic par distudâ"
#: js/ui/status/network.js:1158
#: js/ui/status/network.js:1152
msgid "Select Network"
msgstr "Selezione rêt"
#: js/ui/status/network.js:1164
#: js/ui/status/network.js:1158
msgid "Wi-Fi Settings"
msgstr "Impostazions Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1286
#: js/ui/status/network.js:1280
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s atîf"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1301
#: js/ui/status/network.js:1295
#, javascript-format
msgid "%s Not Connected"
msgstr "%s distacât"
#: js/ui/status/network.js:1398
#: js/ui/status/network.js:1392
msgid "connecting…"
msgstr "daûr a coneti…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1401
#: js/ui/status/network.js:1395
msgid "authentication required"
msgstr "autenticazion necessarie"
#: js/ui/status/network.js:1403
#: js/ui/status/network.js:1397
msgid "connection failed"
msgstr "conession falide"
#: js/ui/status/network.js:1453
#: js/ui/status/network.js:1447
msgid "VPN Settings"
msgstr "Impostazions VPN"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1464
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1480
#: js/ui/status/network.js:1474
msgid "VPN Off"
msgstr "VPN distudât"
#: js/ui/status/network.js:1541 js/ui/status/rfkill.js:82
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
msgid "Network Settings"
msgstr "Impostazions rêt"
#: js/ui/status/network.js:1570
#: js/ui/status/network.js:1564
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conession cablade"
msgstr[1] "%s conessions cabladis"
#: js/ui/status/network.js:1574
#: js/ui/status/network.js:1568
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conession cence fîi"
msgstr[1] "%s conessions cence fîi"
#: js/ui/status/network.js:1578
#: js/ui/status/network.js:1572
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conession modem"
msgstr[1] "%s conessions modem"
#: js/ui/status/network.js:1711
#: js/ui/status/network.js:1705
msgid "Connection failed"
msgstr "Conession falide"
#: js/ui/status/network.js:1712
#: js/ui/status/network.js:1706
msgid "Activation of network connection failed"
msgstr "Ativazion de conession di rêt falide"
@@ -2198,22 +2122,22 @@ msgstr "Cîr"
msgid "“%s” is ready"
msgstr "“%s” al è pront"
#: js/ui/windowManager.js:54
#: js/ui/windowManager.js:53
msgid "Do you want to keep these display settings?"
msgstr "Vûstu tignî chestis impostazions di visôr?"
#. Translators: this and the following message should be limited in length,
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:66
#: js/ui/windowManager.js:65
msgid "Revert Settings"
msgstr "Ripristine impostazions"
#: js/ui/windowManager.js:69
#: js/ui/windowManager.js:68
msgid "Keep Changes"
msgstr "Ten lis modifichis"
#: js/ui/windowManager.js:87
#: js/ui/windowManager.js:86
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -2224,7 +2148,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:678
#: js/ui/windowManager.js:677
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2323,11 +2247,11 @@ msgstr "No cognossût"
msgid "Failed to launch “%s”"
msgstr "No soi rivât a eseguî '%s'"
#: src/shell-keyring-prompt.c:731
#: src/shell-keyring-prompt.c:730
msgid "Passwords do not match."
msgstr "Lis password no corispuindin."
#: src/shell-keyring-prompt.c:739
#: src/shell-keyring-prompt.c:738
msgid "Password cannot be blank"
msgstr "La password no pues jessi vueide"

371
po/hr.po
View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-06-15 10:38+0000\n"
"PO-Revision-Date: 2019-06-22 01:55+0200\n"
"POT-Creation-Date: 2019-03-24 17:37+0000\n"
"PO-Revision-Date: 2019-03-26 12:33+0100\n"
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"Language: hr\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.2.1\n"
"X-Generator: Poedit 2.0.6\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -418,11 +418,10 @@ msgstr ""
msgid "Browse in Software"
msgstr "Pregledaj u Softveru"
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:52
#: js/ui/components/networkAgent.js:118 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:431 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:404 js/ui/shellMountOperation.js:413
#: js/ui/status/network.js:894
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
msgid "Cancel"
msgstr "Odustani"
@@ -430,7 +429,7 @@ msgstr "Odustani"
msgid "Next"
msgstr "Sljedeće"
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:408
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329
#: js/ui/unlockDialog.js:41
msgid "Unlock"
msgstr "Otključaj"
@@ -461,8 +460,8 @@ msgstr "(npr., korisnik ili %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username: "
msgstr "Korisničko ime: "
@@ -513,8 +512,8 @@ msgstr "Odjava"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:105
msgid "logout;log out;sign off"
msgstr "odjava;odjavljivanje"
msgid "logout;sign off"
msgstr "odjava:odjavljivanje"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:109
@@ -706,11 +705,11 @@ msgstr ""
#. No support for non-modal system dialogs, so ignore the option
#. let modal = options['modal'] || true;
#: js/ui/accessDialog.js:38 js/ui/status/location.js:362
#: js/ui/accessDialog.js:37 js/ui/status/location.js:360
msgid "Deny Access"
msgstr "Zabrani pristup"
#: js/ui/accessDialog.js:39 js/ui/status/location.js:365
#: js/ui/accessDialog.js:38 js/ui/status/location.js:363
msgid "Grant Access"
msgstr "Dopusti pristup"
@@ -726,58 +725,53 @@ msgstr "Najčešće"
msgid "All"
msgstr "Sve"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
msgid "Open Windows"
msgstr "Otvaranje prozora"
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
msgid "New Window"
msgstr "Novi prozor"
#: js/ui/appDisplay.js:1746
#: js/ui/appDisplay.js:1751
msgid "Launch using Dedicated Graphics Card"
msgstr "Pokreni pomoću namjenske grafičke kartice"
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih"
#: js/ui/appDisplay.js:1779
#: js/ui/appDisplay.js:1784
msgid "Add to Favorites"
msgstr "Dodaj u omiljene"
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
msgid "Show Details"
msgstr "Prikaži pojedinosti"
#: js/ui/appFavorites.js:149
#: js/ui/appFavorites.js:141
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s je dodan u omiljene."
#: js/ui/appFavorites.js:183
#: js/ui/appFavorites.js:175
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s je uklonjen iz omiljenih."
#: js/ui/audioDeviceSelection.js:39
#: js/ui/audioDeviceSelection.js:42
msgid "Select Audio Device"
msgstr "Odaberi zvučni uređaj"
#: js/ui/audioDeviceSelection.js:50
#: js/ui/audioDeviceSelection.js:53
msgid "Sound Settings"
msgstr "Postavke zvuka"
#: js/ui/audioDeviceSelection.js:59
#: js/ui/audioDeviceSelection.js:62
msgid "Headphones"
msgstr "Slušalice"
#: js/ui/audioDeviceSelection.js:61
#: js/ui/audioDeviceSelection.js:64
msgid "Headset"
msgstr "Slušalice s mikrofonom"
#: js/ui/audioDeviceSelection.js:63 js/ui/status/volume.js:247
#: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247
msgid "Microphone"
msgstr "Mikrofon"
@@ -938,75 +932,67 @@ msgstr "Prisilno zatvori"
msgid "Wait"
msgstr "Čekaj"
#: js/ui/components/automountManager.js:87
#: js/ui/components/automountManager.js:86
msgid "External drive connected"
msgstr "Vanjski uređaj povezan"
#: js/ui/components/automountManager.js:99
#: js/ui/components/automountManager.js:98
msgid "External drive disconnected"
msgstr "Vanjski uređaj odspojen"
#: js/ui/components/automountManager.js:211
msgid "Unable to unlock volume"
msgstr "Nemoguće otključavanje uređaja"
#: js/ui/components/automountManager.js:212
msgid "The installed udisks version does not support the PIM setting"
msgstr "Instalirana udisks inačica ne podržava PIM postavku"
#: js/ui/components/autorunManager.js:334
#, javascript-format
msgid "Open with %s"
msgstr "Otvori s(a) %s"
#: js/ui/components/keyring.js:66 js/ui/components/polkitAgent.js:257
#: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255
msgid "Password:"
msgstr "Lozinka:"
#: js/ui/components/keyring.js:97
#: js/ui/components/keyring.js:108
msgid "Type again:"
msgstr "Pokušaj ponovno:"
#: js/ui/components/networkAgent.js:103
#: js/ui/components/networkAgent.js:102
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr ""
"Alternativno se možete povezati pritiskom na “WPS” tipku vašeg usmjernika."
#: js/ui/components/networkAgent.js:113 js/ui/status/network.js:219
#: js/ui/status/network.js:310 js/ui/status/network.js:897
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
#: js/ui/status/network.js:309 js/ui/status/network.js:891
msgid "Connect"
msgstr "Povezivanje"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:212 js/ui/components/networkAgent.js:224
#: js/ui/components/networkAgent.js:247 js/ui/components/networkAgent.js:266
#: js/ui/components/networkAgent.js:286 js/ui/components/networkAgent.js:296
#: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295
msgid "Password: "
msgstr "Lozinka: "
#. static WEP
#: js/ui/components/networkAgent.js:217
#: js/ui/components/networkAgent.js:216
msgid "Key: "
msgstr "Ključ: "
#: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:272
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271
msgid "Private key password: "
msgstr "Lozinka privatnog ključa: "
#: js/ui/components/networkAgent.js:270
#: js/ui/components/networkAgent.js:269
msgid "Identity: "
msgstr "Identitet: "
#: js/ui/components/networkAgent.js:284
#: js/ui/components/networkAgent.js:283
msgid "Service: "
msgstr "Usluga: "
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
msgid "Authentication required by wireless network"
msgstr "Potrebna je ovjera za bežičnu mrežu"
#: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -1014,53 +1000,53 @@ msgid ""
msgstr ""
"Lozinka ili ključevi šifriranja su potrebni za pristup bežičnoj mreži “%s”."
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689
msgid "Wired 802.1X authentication"
msgstr "Wired 802.1X ovjera"
#: js/ui/components/networkAgent.js:320
#: js/ui/components/networkAgent.js:319
msgid "Network name: "
msgstr "Naziv mreže: "
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693
msgid "DSL authentication"
msgstr "DSL ovjera"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN kôd je potreban"
#: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN kôd je potreban za uređaj mobilnog interneta"
#: js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:333
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706
msgid "Mobile broadband network password"
msgstr "Lozinka mreže mobilnog interneta"
#: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:708
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Potrebna je lozinka za povezivanje s “%s”."
#: js/ui/components/networkAgent.js:675 js/ui/status/network.js:1670
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
msgid "Network Manager"
msgstr "Mrežni upravitelj"
#: js/ui/components/polkitAgent.js:36
#: js/ui/components/polkitAgent.js:34
msgid "Authentication Required"
msgstr "Potrebna je ovjera"
#: js/ui/components/polkitAgent.js:64
#: js/ui/components/polkitAgent.js:62
msgid "Administrator"
msgstr "Administrator"
#: js/ui/components/polkitAgent.js:141
#: js/ui/components/polkitAgent.js:139
msgid "Authenticate"
msgstr "Ovjeri"
@@ -1068,7 +1054,7 @@ msgstr "Ovjeri"
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: js/ui/components/polkitAgent.js:243 js/ui/shellMountOperation.js:389
#: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309
msgid "Sorry, that didnt work. Please try again."
msgstr "Nažalost, to ne radi. Pokušajte ponovno."
@@ -1118,23 +1104,23 @@ msgstr "Dodaj satove iz svijeta…"
msgid "World Clocks"
msgstr "Svjetski satovi"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:222
msgid "Weather"
msgstr "Vrijeme"
#: js/ui/dateMenu.js:311
#: js/ui/dateMenu.js:305
msgid "Select a location…"
msgstr "Odaberi lokaciju…"
#: js/ui/dateMenu.js:319
#: js/ui/dateMenu.js:313
msgid "Loading…"
msgstr "Pretraživanje…"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:323
msgid "Go online for weather information"
msgstr "Posjetite za opširnije vremenske informacije"
#: js/ui/dateMenu.js:331
#: js/ui/dateMenu.js:325
msgid "Weather information is currently unavailable"
msgstr "Vremenske informacije su trenutno nedostupne"
@@ -1269,28 +1255,28 @@ msgstr ""
"može potrajati duže vrijeme: pobrinite se da ste spremili svoj rad i "
"računalo je priključeno na izvor napajanja."
#: js/ui/endSessionDialog.js:310
#: js/ui/endSessionDialog.js:309
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Koristi se energija baterije: računalo priključite na izvor napajanja prije "
"instalacije nadopuna."
#: js/ui/endSessionDialog.js:327
#: js/ui/endSessionDialog.js:326
msgid "Some applications are busy or have unsaved work."
msgstr "Neke aplikacije su zauzete ili imaju nespremljeni rad."
#: js/ui/endSessionDialog.js:334
#: js/ui/endSessionDialog.js:333
msgid "Other users are logged in."
msgstr "Drugi korisnici su prijavljeni."
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:615
#: js/ui/endSessionDialog.js:614
#, javascript-format
msgid "%s (remote)"
msgstr "%s (udaljeno)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:618
#: js/ui/endSessionDialog.js:617
#, javascript-format
msgid "%s (console)"
msgstr "%s (konzola)"
@@ -1375,13 +1361,13 @@ msgid "Leave On"
msgstr "Ostavi"
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:1269
#: js/ui/status/network.js:1263
msgid "Turn On"
msgstr "Uključi"
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:128 js/ui/status/network.js:311
#: js/ui/status/network.js:1269 js/ui/status/network.js:1381
#: js/ui/status/network.js:128 js/ui/status/network.js:310
#: 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"
@@ -1443,7 +1429,7 @@ msgstr "Pogledaj izvor"
msgid "Web Page"
msgstr "Web stranica"
#: js/ui/messageTray.js:1479
#: js/ui/messageTray.js:1480
msgid "System Information"
msgstr "Informacije sustava"
@@ -1521,38 +1507,47 @@ msgstr "Pritisni Esc za prekidanje"
msgid "Press any key to exit"
msgstr "Pritisni bilo koju tipku za prekidanje"
#: js/ui/panel.js:113
#: js/ui/panel.js:108
msgid "Quit"
msgstr "Zatvori"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:468
#: js/ui/panel.js:471
msgid "Activities"
msgstr "Aktivnosti"
#: js/ui/panel.js:743
#: js/ui/panel.js:746
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sustav"
#: js/ui/panel.js:862
#: js/ui/panel.js:867
msgid "Top Bar"
msgstr "Gornja traka"
#: js/ui/runDialog.js:65
#. 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-us"
#: js/ui/runDialog.js:64
msgid "Enter a Command"
msgstr "Upiši naredbu"
#: js/ui/runDialog.js:105 js/ui/windowMenu.js:166
#: js/ui/runDialog.js:104 js/ui/windowMenu.js:166
msgid "Close"
msgstr "Zatvori"
#: js/ui/runDialog.js:267
#: js/ui/runDialog.js:266
msgid "Restart is not available on Wayland"
msgstr "Ponovno pokretanje nije dostupno na Waylandu"
#: js/ui/runDialog.js:272
#: js/ui/runDialog.js:271
msgid "Restarting…"
msgstr "Ponovno pokretanje…"
@@ -1599,17 +1594,17 @@ msgstr "Nemoguće zaključavanje"
#: js/ui/screenShield.js:827 js/ui/screenShield.js:1300
msgid "Lock was blocked by an application"
msgstr "Zaključavanje je blokirala aplikacija"
msgstr "Zaključavanje je blokirala apliakcija"
#: js/ui/search.js:638
#: js/ui/search.js:635
msgid "Searching…"
msgstr "Pretraživanje…"
#: js/ui/search.js:640
#: js/ui/search.js:637
msgid "No results."
msgstr "Nema rezultata."
#: js/ui/search.js:764
#: js/ui/search.js:761
#, javascript-format
msgid "%d more"
msgid_plural "%d more"
@@ -1633,61 +1628,14 @@ msgstr "Prikaži tekst"
msgid "Hide Text"
msgstr "Sakrij tekst"
#: js/ui/shellMountOperation.js:318
msgid "Hidden Volume"
msgstr "Skriveni uređaj"
#: js/ui/shellMountOperation.js:321
msgid "Windows System Volume"
msgstr "Uređaj Windows sustava"
#: js/ui/shellMountOperation.js:324
msgid "Uses Keyfiles"
msgstr "Koristi datoteke ključa"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:330
#, javascript-format
msgid ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
msgstr ""
"Za otključavanje uređaja koji koristi datoteke ključa, koristite <i>%s</i> "
"pomagalo."
#: js/ui/shellMountOperation.js:337
msgid "PIM Number"
msgstr "PIM broj"
#: js/ui/shellMountOperation.js:355
msgid "The PIM must be a number or empty."
msgstr "PIM mora biti broj ili prazan."
#: js/ui/shellMountOperation.js:366
#: js/ui/shellMountOperation.js:296
msgid "Password"
msgstr "Lozinka"
#: js/ui/shellMountOperation.js:396
#: js/ui/shellMountOperation.js:317
msgid "Remember Password"
msgstr "Zapamti lozinku"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:418
#, javascript-format
msgid "Open %s"
msgstr "Otvori %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:490
#, javascript-format
msgid "Unable to start %s"
msgstr "Nemoguće pokretanje %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:492
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Nemoguć pronalazak %s aplikacije"
#: js/ui/status/accessibility.js:35
msgid "Accessibility"
msgstr "Pristupačnost"
@@ -1724,11 +1672,11 @@ msgstr "Odbijanje tipki"
msgid "Mouse Keys"
msgstr "Tipke miša"
#: js/ui/status/accessibility.js:135
#: js/ui/status/accessibility.js:151
msgid "High Contrast"
msgstr "Visok kontrast"
#: js/ui/status/accessibility.js:177
#: js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Velik tekst"
@@ -1736,7 +1684,7 @@ msgstr "Velik tekst"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
msgid "Bluetooth Settings"
msgstr "Bluetooth postavke"
@@ -1761,31 +1709,11 @@ msgstr "Uključeno"
msgid "Brightness"
msgstr "Svjetlina"
#: js/ui/status/dwellClick.js:13
msgid "Single Click"
msgstr "Jednostruki klik"
#: js/ui/status/dwellClick.js:18
msgid "Double Click"
msgstr "Dvostruki klik"
#: js/ui/status/dwellClick.js:23
msgid "Drag"
msgstr "Povlačenje"
#: js/ui/status/dwellClick.js:28
msgid "Secondary Click"
msgstr "Pomoćni klik"
#: js/ui/status/dwellClick.js:37
msgid "Dwell Click"
msgstr "Zadržani klik"
#: js/ui/status/keyboard.js:813
#: js/ui/status/keyboard.js:812
msgid "Keyboard"
msgstr "Tipkovnica"
#: js/ui/status/keyboard.js:835
#: js/ui/status/keyboard.js:834
msgid "Show Keyboard Layout"
msgstr "Prikaži raspored tipkovnice"
@@ -1814,12 +1742,12 @@ msgid "Enable"
msgstr "Omogući"
#. Translators: %s is an application name
#: js/ui/status/location.js:355
#: js/ui/status/location.js:353
#, javascript-format
msgid "Give %s access to your location?"
msgstr "Dopustite %s pristup vašoj lokaciji?"
#: js/ui/status/location.js:356
#: js/ui/status/location.js:354
msgid "Location access can be changed at any time from the privacy settings."
msgstr ""
"Pristup lokaciji može se promijeniti u svako vrijeme iz postavka privatnosti."
@@ -1829,13 +1757,13 @@ msgid "<unknown>"
msgstr "<nepoznato>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:417 js/ui/status/network.js:1298
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
#, javascript-format
msgid "%s Off"
msgstr "%s isključena"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420
#: js/ui/status/network.js:419
#, javascript-format
msgid "%s Connected"
msgstr "%s povezana"
@@ -1843,164 +1771,164 @@ msgstr "%s povezana"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:425
#: js/ui/status/network.js:424
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s neupravljana"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:428
#: js/ui/status/network.js:427
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s prekidanje povezivanja"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435 js/ui/status/network.js:1290
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
#, javascript-format
msgid "%s Connecting"
msgstr "%s povezivanje"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:438
#: js/ui/status/network.js:437
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s zahtijeva ovjeru"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:445
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Nedostaje firmver za %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:450
#: js/ui/status/network.js:449
#, javascript-format
msgid "%s Unavailable"
msgstr "%s nedostupna"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s neuspješno povezivanje"
#: js/ui/status/network.js:465
#: js/ui/status/network.js:464
msgid "Wired Settings"
msgstr "Postavke žične mreže"
#: js/ui/status/network.js:507
#: js/ui/status/network.js:506
msgid "Mobile Broadband Settings"
msgstr "Mobilni internet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:554 js/ui/status/network.js:1295
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s hardverski onemogućena"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:558
#: js/ui/status/network.js:557
#, javascript-format
msgid "%s Disabled"
msgstr "%s onemogućeno"
#: js/ui/status/network.js:598
#: js/ui/status/network.js:597
msgid "Connect to Internet"
msgstr "Povežite se na internet"
#: js/ui/status/network.js:792
#: js/ui/status/network.js:786
msgid "Airplane Mode is On"
msgstr "Zrakoplovni način rada je omogućen"
#: js/ui/status/network.js:793
#: js/ui/status/network.js:787
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Bežična mreža je onemogućena u zrakoplovnom načinu rada."
#: js/ui/status/network.js:794
#: js/ui/status/network.js:788
msgid "Turn Off Airplane Mode"
msgstr "Isključi zrakoplovni način rada"
#: js/ui/status/network.js:803
#: js/ui/status/network.js:797
msgid "Wi-Fi is Off"
msgstr "Bežična mreža isključena"
#: js/ui/status/network.js:804
#: js/ui/status/network.js:798
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Bežična mreža se mora uključiti kako bi se povezala s internetom."
#: js/ui/status/network.js:805
#: js/ui/status/network.js:799
msgid "Turn On Wi-Fi"
msgstr "Uključi bežičnu mrežu"
#: js/ui/status/network.js:830
#: js/ui/status/network.js:824
msgid "Wi-Fi Networks"
msgstr "Bežične mreže"
#: js/ui/status/network.js:832
#: js/ui/status/network.js:826
msgid "Select a network"
msgstr "Odaberi mrežu"
#: js/ui/status/network.js:861
#: js/ui/status/network.js:855
msgid "No Networks"
msgstr "Nema mreža"
#: js/ui/status/network.js:882 js/ui/status/rfkill.js:104
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
msgid "Use hardware switch to turn off"
msgstr "Koristi hardverski prekidač za isključivanje"
#: js/ui/status/network.js:1158
#: js/ui/status/network.js:1152
msgid "Select Network"
msgstr "Odaberi mrežu"
#: js/ui/status/network.js:1164
#: js/ui/status/network.js:1158
msgid "Wi-Fi Settings"
msgstr "Postavke bežične mreže"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1286
#: js/ui/status/network.js:1280
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s pristupna točka aktivna"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1301
#: js/ui/status/network.js:1295
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nije povezana"
#: js/ui/status/network.js:1398
#: js/ui/status/network.js:1392
msgid "connecting…"
msgstr "povezivanje…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1401
#: js/ui/status/network.js:1395
msgid "authentication required"
msgstr "potrebna je ovjera"
#: js/ui/status/network.js:1403
#: js/ui/status/network.js:1397
msgid "connection failed"
msgstr "neuspješno povezivanje"
#: js/ui/status/network.js:1453
#: js/ui/status/network.js:1447
msgid "VPN Settings"
msgstr "VPN postavke"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1464
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1480
#: js/ui/status/network.js:1474
msgid "VPN Off"
msgstr "VPN isključen"
#: js/ui/status/network.js:1541 js/ui/status/rfkill.js:82
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
msgid "Network Settings"
msgstr "Mrežne postavke"
#: js/ui/status/network.js:1570
#: js/ui/status/network.js:1564
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@@ -2008,7 +1936,7 @@ msgstr[0] "%s žično povezivanje"
msgstr[1] "%s žična povezivanja"
msgstr[2] "%s žičnih povezivanja"
#: js/ui/status/network.js:1574
#: js/ui/status/network.js:1568
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@@ -2016,7 +1944,7 @@ msgstr[0] "%s bežično povezivanje"
msgstr[1] "%s bežična povezivanja"
msgstr[2] "%s bežičnih povezivanja"
#: js/ui/status/network.js:1578
#: js/ui/status/network.js:1572
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@@ -2024,11 +1952,11 @@ msgstr[0] "%s modemsko povezivanje"
msgstr[1] "%s modemska povezivanja"
msgstr[2] "%s modemskih povezivanja"
#: js/ui/status/network.js:1711
#: js/ui/status/network.js:1701
msgid "Connection failed"
msgstr "Neuspješno povezivanje"
#: js/ui/status/network.js:1712
#: js/ui/status/network.js:1702
msgid "Activation of network connection failed"
msgstr "Aktiviranje mrežnog povezivanja je neuspjelo"
@@ -2209,22 +2137,22 @@ msgstr "Pretraži"
msgid "“%s” is ready"
msgstr "“%s” je spreman"
#: js/ui/windowManager.js:54
#: js/ui/windowManager.js:53
msgid "Do you want to keep these display settings?"
msgstr "Želite li zadržati ove postavke zaslona?"
#. Translators: this and the following message should be limited in length,
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:66
#: js/ui/windowManager.js:65
msgid "Revert Settings"
msgstr "Vrati postavke"
#: js/ui/windowManager.js:69
#: js/ui/windowManager.js:68
msgid "Keep Changes"
msgstr "Zadrži promjene"
#: js/ui/windowManager.js:87
#: js/ui/windowManager.js:86
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -2234,7 +2162,7 @@ msgstr[2] "Promjene postavka će se vratiti za %d sekundi"
#. 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:678
#: js/ui/windowManager.js:662
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2333,11 +2261,11 @@ msgstr "Nepoznat"
msgid "Failed to launch “%s”"
msgstr "Neuspješno pokretanje “%s”"
#: src/shell-keyring-prompt.c:731
#: src/shell-keyring-prompt.c:730
msgid "Passwords do not match."
msgstr "Lozinke se ne podudaraju."
#: src/shell-keyring-prompt.c:739
#: src/shell-keyring-prompt.c:738
msgid "Password cannot be blank"
msgstr "Lozinka ne može biti prazna"
@@ -2369,9 +2297,6 @@ msgstr[2] "%u ulaza"
msgid "System Sounds"
msgstr "Zvukovi sustava"
#~ msgid "toggle-switch-us"
#~ msgstr "toggle-switch-us"
#~ msgid "network-workgroup"
#~ msgstr "network-workgroup"

386
po/hu.po
View File

@@ -4,22 +4,22 @@
#
# Gabor Kelemen <kelemeng at gnome dot hu>, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016.
# Lukács Bence <lukacs.bence1 at gmail dot com>, 2012.
# Balázs Meskó <meskobalazs at gmail dot com>, 2014, 2019.
# Balázs Úr <ur.balazs at fsf dot hu>, 2012, 2014, 2015, 2016, 2017, 2018, 2019.
# Balázs Meskó <meskobalazs at gmail dot com>, 2014.
# Balázs Úr <urbalazs at gmail dot com>, 2012, 2014, 2015, 2016, 2017, 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-05-28 17:15+0000\n"
"PO-Revision-Date: 2019-06-01 13:15+0200\n"
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
"POT-Creation-Date: 2019-03-03 10:16+0000\n"
"PO-Revision-Date: 2019-02-05 21:05+0100\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 18.12.3\n"
"X-Generator: Lokalize 1.2\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -373,6 +373,11 @@ msgstr ""
msgid "Network Login"
msgstr "Hálózati bejelentkezés"
#. 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 "Somethings gone wrong"
msgstr "Valami elromlott"
@@ -418,11 +423,10 @@ msgstr ""
msgid "Browse in Software"
msgstr "Tallózás a Szoftverekben"
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:52
#: js/ui/components/networkAgent.js:118 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:431 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:404 js/ui/shellMountOperation.js:413
#: js/ui/status/network.js:894
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
msgid "Cancel"
msgstr "Mégse"
@@ -430,7 +434,7 @@ msgstr "Mégse"
msgid "Next"
msgstr "Következő"
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:408
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329
#: js/ui/unlockDialog.js:41
msgid "Unlock"
msgstr "Feloldás"
@@ -461,8 +465,8 @@ msgstr "(például: felhasználó vagy %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username: "
msgstr "Felhasználónév: "
@@ -513,7 +517,7 @@ msgstr "Kijelentkezés"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:105
msgid "logout;log out;sign off"
msgid "logout;sign off"
msgstr "kijelentkezés;kilépés"
#. Translators: The name of the suspend action in search
@@ -700,11 +704,11 @@ msgstr ""
#. No support for non-modal system dialogs, so ignore the option
#. let modal = options['modal'] || true;
#: js/ui/accessDialog.js:38 js/ui/status/location.js:362
#: js/ui/accessDialog.js:37 js/ui/status/location.js:360
msgid "Deny Access"
msgstr "Hozzáférés tiltása"
#: js/ui/accessDialog.js:39 js/ui/status/location.js:365
#: js/ui/accessDialog.js:38 js/ui/status/location.js:363
msgid "Grant Access"
msgstr "Hozzáférés megadása"
@@ -720,58 +724,53 @@ msgstr "Gyakori"
msgid "All"
msgstr "Összes"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
msgid "Open Windows"
msgstr "Ablakok megnyitása"
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
msgid "New Window"
msgstr "Új ablak"
#: js/ui/appDisplay.js:1746
#: js/ui/appDisplay.js:1751
msgid "Launch using Dedicated Graphics Card"
msgstr "Futtatás a dedikált videokártyával"
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Eltávolítás a Kedvencek közül"
#: js/ui/appDisplay.js:1779
#: js/ui/appDisplay.js:1784
msgid "Add to Favorites"
msgstr "Hozzáadás a Kedvencekhez"
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
msgid "Show Details"
msgstr "Részletek megjelenítése"
#: js/ui/appFavorites.js:149
#: js/ui/appFavorites.js:141
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s felvéve a Kedvencek közé."
#: js/ui/appFavorites.js:183
#: js/ui/appFavorites.js:175
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s eltávolítva a Kedvencek közül."
msgstr "%s eltávolítva a Kedvencek közül"
#: js/ui/audioDeviceSelection.js:39
#: js/ui/audioDeviceSelection.js:42
msgid "Select Audio Device"
msgstr "Válasszon hangeszközt"
#: js/ui/audioDeviceSelection.js:50
#: js/ui/audioDeviceSelection.js:53
msgid "Sound Settings"
msgstr "Hangbeállítások"
#: js/ui/audioDeviceSelection.js:59
#: js/ui/audioDeviceSelection.js:62
msgid "Headphones"
msgstr "Fülhallgatók"
#: js/ui/audioDeviceSelection.js:61
#: js/ui/audioDeviceSelection.js:64
msgid "Headset"
msgstr "Fejhallgató"
#: js/ui/audioDeviceSelection.js:63 js/ui/status/volume.js:247
#: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247
msgid "Microphone"
msgstr "Mikrofon"
@@ -932,74 +931,66 @@ msgstr "Erőltetett kilépés"
msgid "Wait"
msgstr "Várakozás"
#: js/ui/components/automountManager.js:87
#: js/ui/components/automountManager.js:86
msgid "External drive connected"
msgstr "Külső meghajtó csatlakoztatva"
#: js/ui/components/automountManager.js:99
#: js/ui/components/automountManager.js:98
msgid "External drive disconnected"
msgstr "Külső meghajtó leválasztva"
#: js/ui/components/automountManager.js:211
msgid "Unable to unlock volume"
msgstr "Nem lehet feloldani a kötetet"
#: js/ui/components/automountManager.js:212
msgid "The installed udisks version does not support the PIM setting"
msgstr "A telepített udisks verzió nem támogatja a PIM beállítást"
#: js/ui/components/autorunManager.js:334
#, javascript-format
msgid "Open with %s"
msgstr "Megnyitás ezzel: %s"
#: js/ui/components/keyring.js:66 js/ui/components/polkitAgent.js:257
#: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255
msgid "Password:"
msgstr "Jelszó:"
#: js/ui/components/keyring.js:97
#: js/ui/components/keyring.js:108
msgid "Type again:"
msgstr "Írja be újra:"
#: js/ui/components/networkAgent.js:103
#: js/ui/components/networkAgent.js:102
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "Alternatívaként kapcsolódhat a „WPS” gomb megnyomásával az eszközön."
#: js/ui/components/networkAgent.js:113 js/ui/status/network.js:219
#: js/ui/status/network.js:310 js/ui/status/network.js:897
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
#: js/ui/status/network.js:309 js/ui/status/network.js:891
msgid "Connect"
msgstr "Kapcsolódás"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:212 js/ui/components/networkAgent.js:224
#: js/ui/components/networkAgent.js:247 js/ui/components/networkAgent.js:266
#: js/ui/components/networkAgent.js:286 js/ui/components/networkAgent.js:296
#: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295
msgid "Password: "
msgstr "Jelszó: "
#. static WEP
#: js/ui/components/networkAgent.js:217
#: js/ui/components/networkAgent.js:216
msgid "Key: "
msgstr "Kulcs: "
#: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:272
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271
msgid "Private key password: "
msgstr "Személyes kulcs jelszava: "
#: js/ui/components/networkAgent.js:270
#: js/ui/components/networkAgent.js:269
msgid "Identity: "
msgstr "Személyazonosság: "
#: js/ui/components/networkAgent.js:284
#: js/ui/components/networkAgent.js:283
msgid "Service: "
msgstr "Szolgáltatás: "
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
msgid "Authentication required by wireless network"
msgstr "A vezeték nélküli hálózat hitelesítést igényel"
#: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -1008,53 +999,53 @@ msgstr ""
"Jelszavak vagy titkosítási kulcsok szükségesek a(z) „%s” vezeték nélküli "
"hálózat eléréséhez."
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689
msgid "Wired 802.1X authentication"
msgstr "Vezetékes 802.1X hitelesítés"
#: js/ui/components/networkAgent.js:320
#: js/ui/components/networkAgent.js:319
msgid "Network name: "
msgstr "Hálózat neve: "
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693
msgid "DSL authentication"
msgstr "DSL hitelesítés"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN kód szükséges"
#: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN kód szükséges a mobil széles sávú eszközhöz"
#: js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:333
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706
msgid "Mobile broadband network password"
msgstr "Mobil széles sávú hálózat jelszava"
#: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:708
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Jelszó szükséges a kapcsolódáshoz a következőhöz: „%s”."
#: js/ui/components/networkAgent.js:675 js/ui/status/network.js:1670
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
msgid "Network Manager"
msgstr "Hálózatkezelő"
#: js/ui/components/polkitAgent.js:36
#: js/ui/components/polkitAgent.js:34
msgid "Authentication Required"
msgstr "Hitelesítés szükséges"
#: js/ui/components/polkitAgent.js:64
#: js/ui/components/polkitAgent.js:62
msgid "Administrator"
msgstr "Rendszergazda"
#: js/ui/components/polkitAgent.js:141
#: js/ui/components/polkitAgent.js:139
msgid "Authenticate"
msgstr "Hitelesítés"
@@ -1062,7 +1053,7 @@ msgstr "Hitelesítés"
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: js/ui/components/polkitAgent.js:243 js/ui/shellMountOperation.js:389
#: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309
msgid "Sorry, that didnt work. Please try again."
msgstr "Elnézést, ez nem sikerült. Próbálja újra."
@@ -1113,23 +1104,23 @@ msgstr "Világórák hozzáadása…"
msgid "World Clocks"
msgstr "Világórák"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:222
msgid "Weather"
msgstr "Időjárás"
#: js/ui/dateMenu.js:311
#: js/ui/dateMenu.js:305
msgid "Select a location…"
msgstr "Válasszon egy helyet…"
#: js/ui/dateMenu.js:319
#: js/ui/dateMenu.js:313
msgid "Loading…"
msgstr "Betöltés…"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:323
msgid "Go online for weather information"
msgstr "Időjárás-információkért kapcsolódjon az internetre"
#: js/ui/dateMenu.js:331
#: js/ui/dateMenu.js:325
msgid "Weather information is currently unavailable"
msgstr "Az időjárás-információk jelenleg nem érhetőek el"
@@ -1257,28 +1248,28 @@ msgstr ""
"eltarthat egy ideig: győződjön meg arról, hogy készített-e biztonsági "
"mentést, valamint a számítógép be van-e dugva."
#: js/ui/endSessionDialog.js:310
#: js/ui/endSessionDialog.js:309
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Akkumulátoros működés: a frissítések telepítése előtt dugja be eszközét a "
"konnektorba."
#: js/ui/endSessionDialog.js:327
#: js/ui/endSessionDialog.js:326
msgid "Some applications are busy or have unsaved work."
msgstr "Egyes alkalmazások elfoglaltak, vagy mentetlen munkát tartalmaznak."
#: js/ui/endSessionDialog.js:334
#: js/ui/endSessionDialog.js:333
msgid "Other users are logged in."
msgstr "Más felhasználók vannak bejelentkezve."
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:615
#: js/ui/endSessionDialog.js:614
#, javascript-format
msgid "%s (remote)"
msgstr "%s (távoli)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:618
#: js/ui/endSessionDialog.js:617
#, javascript-format
msgid "%s (console)"
msgstr "%s (konzol)"
@@ -1294,26 +1285,26 @@ msgstr ""
"Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
#. Translators: %s is an application name like "Settings"
#: js/ui/inhibitShortcutsDialog.js:78
#: js/ui/inhibitShortcutsDialog.js:50
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "A(z) %s meg akarja gátolni a gyorsbillentyűk használatát"
#: js/ui/inhibitShortcutsDialog.js:79
#: js/ui/inhibitShortcutsDialog.js:51
msgid "Application wants to inhibit shortcuts"
msgstr "Az alkalmazás meg akarja gátolni a gyorsbillentyűk használatát"
#. Translators: %s is a keyboard shortcut like "Super+x"
#: js/ui/inhibitShortcutsDialog.js:88
#: js/ui/inhibitShortcutsDialog.js:60
#, javascript-format
msgid "You can restore shortcuts by pressing %s."
msgstr "A(z) %s megnyomásával visszaállíthatja a gyorsbillentyűket."
#: js/ui/inhibitShortcutsDialog.js:93
#: js/ui/inhibitShortcutsDialog.js:65
msgid "Deny"
msgstr "Tiltás"
#: js/ui/inhibitShortcutsDialog.js:100
#: js/ui/inhibitShortcutsDialog.js:71
msgid "Allow"
msgstr "Engedélyezés"
@@ -1364,13 +1355,13 @@ msgid "Leave On"
msgstr "Bekapcsolva hagyás"
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:1269
#: js/ui/status/network.js:1263
msgid "Turn On"
msgstr "Bekapcsolás"
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:128 js/ui/status/network.js:311
#: js/ui/status/network.js:1269 js/ui/status/network.js:1381
#: js/ui/status/network.js:128 js/ui/status/network.js:310
#: 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"
@@ -1380,7 +1371,7 @@ msgstr "Kikapcsolás"
msgid "Leave Off"
msgstr "Kikapcsolva hagyás"
#: js/ui/keyboard.js:200
#: js/ui/keyboard.js:203
msgid "Region & Language Settings"
msgstr "Területi és nyelvi beállítások"
@@ -1432,7 +1423,7 @@ msgstr "Forrás megtekintése"
msgid "Web Page"
msgstr "Weblap"
#: js/ui/messageTray.js:1479
#: js/ui/messageTray.js:1480
msgid "System Information"
msgstr "Rendszerinformációk"
@@ -1510,38 +1501,47 @@ msgstr "Nyomja meg az Esc gombot a kilépéshez"
msgid "Press any key to exit"
msgstr "Nyomjon meg egy gombot a kilépéshez"
#: js/ui/panel.js:113
#: js/ui/panel.js:108
msgid "Quit"
msgstr "Kilépés"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:468
#: js/ui/panel.js:471
msgid "Activities"
msgstr "Tevékenységek"
#: js/ui/panel.js:743
#: js/ui/panel.js:746
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Rendszer"
#: js/ui/panel.js:861
#: js/ui/panel.js:866
msgid "Top Bar"
msgstr "Felső sáv"
#: js/ui/runDialog.js:65
#. 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 "Adjon meg egy parancsot"
#: js/ui/runDialog.js:105 js/ui/windowMenu.js:166
#: js/ui/runDialog.js:104 js/ui/windowMenu.js:166
msgid "Close"
msgstr "Bezárás"
#: js/ui/runDialog.js:267
#: js/ui/runDialog.js:266
msgid "Restart is not available on Wayland"
msgstr "Az újraindítás nem érhető el Wayland alatt"
#: js/ui/runDialog.js:272
#: js/ui/runDialog.js:271
msgid "Restarting…"
msgstr "Újraindítás…"
@@ -1565,7 +1565,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d új értesítés"
msgstr[1] "%d új értesítés"
#: js/ui/screenShield.js:449 js/ui/status/system.js:271
#: js/ui/screenShield.js:449 js/ui/status/system.js:270
msgid "Lock"
msgstr "Zárolás"
@@ -1580,11 +1580,11 @@ msgstr "A GNOME-nak zárolnia kell a képernyőt"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1299
#: js/ui/screenShield.js:834 js/ui/screenShield.js:1307
msgid "Unable to lock"
msgstr "Nem lehet zárolni"
#: js/ui/screenShield.js:827 js/ui/screenShield.js:1300
#: js/ui/screenShield.js:835 js/ui/screenShield.js:1308
msgid "Lock was blocked by an application"
msgstr "A zárolást egy alkalmazás blokkolta"
@@ -1619,61 +1619,14 @@ msgstr "Szöveg megjelenítése"
msgid "Hide Text"
msgstr "Szöveg elrejtése"
#: js/ui/shellMountOperation.js:318
msgid "Hidden Volume"
msgstr "Rejtett kötet"
#: js/ui/shellMountOperation.js:321
msgid "Windows System Volume"
msgstr "Windows rendszerkötet"
#: js/ui/shellMountOperation.js:324
msgid "Uses Keyfiles"
msgstr "Kulcsfájlokat használ"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:330
#, javascript-format
msgid ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
msgstr ""
"A kulcsfájlokat használó kötetek feloldásához használja inkább a(z) <i>%s</i> "
"segédprogramot."
#: js/ui/shellMountOperation.js:337
msgid "PIM Number"
msgstr "PIM-szám"
#: js/ui/shellMountOperation.js:355
msgid "The PIM must be a number or empty."
msgstr "A PIM-nek számnak vagy üresnek kell lennie."
#: js/ui/shellMountOperation.js:366
#: js/ui/shellMountOperation.js:296
msgid "Password"
msgstr "Jelszó"
#: js/ui/shellMountOperation.js:396
#: js/ui/shellMountOperation.js:317
msgid "Remember Password"
msgstr "Jelszó megjegyzése"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:418
#, javascript-format
msgid "Open %s"
msgstr "%s megnyitása"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:490
#, javascript-format
msgid "Unable to start %s"
msgstr "A(z) %s nem indítható el"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:492
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Nem sikerült megtalálni a(z) %s alkalmazást"
#: js/ui/status/accessibility.js:35
msgid "Accessibility"
msgstr "Akadálymentesítés"
@@ -1710,11 +1663,11 @@ msgstr "Billentyűszűrés"
msgid "Mouse Keys"
msgstr "Egérbillentyűk"
#: js/ui/status/accessibility.js:135
#: js/ui/status/accessibility.js:151
msgid "High Contrast"
msgstr "Nagy kontraszt"
#: js/ui/status/accessibility.js:177
#: js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Nagy szöveg"
@@ -1722,7 +1675,7 @@ msgstr "Nagy szöveg"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
msgid "Bluetooth Settings"
msgstr "Bluetooth-beállítások"
@@ -1746,11 +1699,11 @@ msgstr "Be"
msgid "Brightness"
msgstr "Fényerő"
#: js/ui/status/keyboard.js:813
#: js/ui/status/keyboard.js:812
msgid "Keyboard"
msgstr "Billentyűzet"
#: js/ui/status/keyboard.js:835
#: js/ui/status/keyboard.js:834
msgid "Show Keyboard Layout"
msgstr "Billentyűzetkiosztás megjelenítése"
@@ -1779,12 +1732,12 @@ msgid "Enable"
msgstr "Engedélyezés"
#. Translators: %s is an application name
#: js/ui/status/location.js:355
#: js/ui/status/location.js:353
#, javascript-format
msgid "Give %s access to your location?"
msgstr "Elérheti a(z) %s a földrajzi hely adatait?"
#: js/ui/status/location.js:356
#: js/ui/status/location.js:354
msgid "Location access can be changed at any time from the privacy settings."
msgstr ""
"A hely hozzáférése bármikor megváltoztatható az adatvédelmi beállításokban."
@@ -1794,13 +1747,13 @@ msgid "<unknown>"
msgstr "<ismeretlen>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:417 js/ui/status/network.js:1298
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
#, javascript-format
msgid "%s Off"
msgstr "%s ki"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420
#: js/ui/status/network.js:419
#, javascript-format
msgid "%s Connected"
msgstr "%s kapcsolódva"
@@ -1808,189 +1761,189 @@ msgstr "%s kapcsolódva"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:425
#: js/ui/status/network.js:424
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s felügyeletlen"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:428
#: js/ui/status/network.js:427
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s leválasztása"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435 js/ui/status/network.js:1290
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
#, javascript-format
msgid "%s Connecting"
msgstr "%s kapcsolódás"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:438
#: js/ui/status/network.js:437
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s hitelesítést igényel"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:445
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Hiányzó firmware ennél: %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:450
#: js/ui/status/network.js:449
#, javascript-format
msgid "%s Unavailable"
msgstr "%s nem érhető el"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s kapcsolódás meghiúsult"
#: js/ui/status/network.js:465
#: js/ui/status/network.js:464
msgid "Wired Settings"
msgstr "Vezetékes beállítások"
#: js/ui/status/network.js:507
#: js/ui/status/network.js:506
msgid "Mobile Broadband Settings"
msgstr "Mobil széles sáv beállításai"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:554 js/ui/status/network.js:1295
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s hardver letiltva"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:558
#: js/ui/status/network.js:557
#, javascript-format
msgid "%s Disabled"
msgstr "%s letiltva"
#: js/ui/status/network.js:598
#: js/ui/status/network.js:597
msgid "Connect to Internet"
msgstr "Kapcsolódás az internetre"
#: js/ui/status/network.js:792
#: js/ui/status/network.js:786
msgid "Airplane Mode is On"
msgstr "Repülőgép mód be"
#: js/ui/status/network.js:793
#: js/ui/status/network.js:787
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "A Wi-Fi ki van kapcsolva repülőgép üzemmódban."
#: js/ui/status/network.js:794
#: js/ui/status/network.js:788
msgid "Turn Off Airplane Mode"
msgstr "Repülőgép mód ki"
#: js/ui/status/network.js:803
#: js/ui/status/network.js:797
msgid "Wi-Fi is Off"
msgstr "Wi-Fi ki"
#: js/ui/status/network.js:804
#: js/ui/status/network.js:798
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "A Wi-Fi-t be kell kapcsolni a hálózatra kapcsolódáshoz."
#: js/ui/status/network.js:805
#: js/ui/status/network.js:799
msgid "Turn On Wi-Fi"
msgstr "Wi-Fi bekapcsolása"
#: js/ui/status/network.js:830
#: js/ui/status/network.js:824
msgid "Wi-Fi Networks"
msgstr "Wi-Fi hálózatok"
#: js/ui/status/network.js:832
#: js/ui/status/network.js:826
msgid "Select a network"
msgstr "Válasszon egy hálózatot"
#: js/ui/status/network.js:861
#: js/ui/status/network.js:855
msgid "No Networks"
msgstr "Nincs hálózat"
#: js/ui/status/network.js:882 js/ui/status/rfkill.js:104
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
msgid "Use hardware switch to turn off"
msgstr "A hardveres kapcsolóval kapcsolja ki"
#: js/ui/status/network.js:1158
#: js/ui/status/network.js:1152
msgid "Select Network"
msgstr "Válasszon hálózatot"
#: js/ui/status/network.js:1164
#: js/ui/status/network.js:1158
msgid "Wi-Fi Settings"
msgstr "Wi-Fi beállítások"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1286
#: js/ui/status/network.js:1280
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s hotspot aktív"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1301
#: js/ui/status/network.js:1295
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nincs kapcsolódva"
#: js/ui/status/network.js:1398
#: js/ui/status/network.js:1392
msgid "connecting…"
msgstr "kapcsolódás…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1401
#: js/ui/status/network.js:1395
msgid "authentication required"
msgstr "hitelesítés szükséges"
#: js/ui/status/network.js:1403
#: js/ui/status/network.js:1397
msgid "connection failed"
msgstr "a kapcsolódás meghiúsult"
#: js/ui/status/network.js:1453
#: js/ui/status/network.js:1447
msgid "VPN Settings"
msgstr "VPN beállítások"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1464
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1480
#: js/ui/status/network.js:1474
msgid "VPN Off"
msgstr "VPN ki"
#: js/ui/status/network.js:1541 js/ui/status/rfkill.js:82
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
msgid "Network Settings"
msgstr "Hálózati beállítások"
#: js/ui/status/network.js:1570
#: js/ui/status/network.js:1564
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s vezetékes kapcsolat"
msgstr[1] "%s vezetékes kapcsolat"
#: js/ui/status/network.js:1574
#: js/ui/status/network.js:1568
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Wi-Fi kapcsolat"
msgstr[1] "%s Wi-Fi kapcsolat"
#: js/ui/status/network.js:1578
#: js/ui/status/network.js:1572
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s modemes kapcsolat"
msgstr[1] "%s modemes kapcsolat"
#: js/ui/status/network.js:1711
#: js/ui/status/network.js:1701
msgid "Connection failed"
msgstr "Kapcsolódás meghiúsult"
#: js/ui/status/network.js:1712
#: js/ui/status/network.js:1702
msgid "Activation of network connection failed"
msgstr "A hálózati kapcsolat aktiválása meghiúsult"
@@ -2037,7 +1990,7 @@ msgstr "%d%02d van hátra (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: js/ui/status/power.js:89
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)"
msgstr "Töltésidő: %d%02d (%d%%)"
#: js/ui/status/power.js:117 js/ui/status/power.js:119
@@ -2072,15 +2025,15 @@ msgstr "Kijelentkezés"
msgid "Account Settings"
msgstr "Fiókbeállítások"
#: js/ui/status/system.js:256
#: js/ui/status/system.js:255
msgid "Orientation Lock"
msgstr "Tájolás zárolása"
#: js/ui/status/system.js:282
#: js/ui/status/system.js:281
msgid "Suspend"
msgstr "Felfüggesztés"
#: js/ui/status/system.js:292
#: js/ui/status/system.js:291
msgid "Power Off"
msgstr "Kikapcsolás"
@@ -2172,22 +2125,22 @@ msgstr "Oldalsáv"
msgid "“%s” is ready"
msgstr "„%s” kész"
#: js/ui/windowManager.js:54
#: js/ui/windowManager.js:53
msgid "Do you want to keep these display settings?"
msgstr "Meg szeretné tartani ezeket a kijelzőbeállításokat?"
#. Translators: this and the following message should be limited in length,
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:66
#: js/ui/windowManager.js:65
msgid "Revert Settings"
msgstr "Beállítások visszavonása"
#: js/ui/windowManager.js:69
#: js/ui/windowManager.js:68
msgid "Keep Changes"
msgstr "Módosítások megtartása"
#: js/ui/windowManager.js:87
#: js/ui/windowManager.js:86
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -2196,7 +2149,7 @@ msgstr[1] "A beállítások módosításai %d másodperc múlva visszavonásra k
#. 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:678
#: js/ui/windowManager.js:662
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2269,6 +2222,11 @@ msgstr "Áthelyezés a jobb oldali kijelzőre"
msgid "Evolution Calendar"
msgstr "Evolution naptár"
#. 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 "Verzió kiírása"
@@ -2286,21 +2244,21 @@ msgstr ""
msgid "List possible modes"
msgstr "Lehetséges módok listázása"
#: src/shell-app.c:264
#: src/shell-app.c:260
msgctxt "program"
msgid "Unknown"
msgstr "Ismeretlen"
#: src/shell-app.c:515
#: src/shell-app.c:511
#, c-format
msgid "Failed to launch “%s”"
msgstr "„%s” indítása meghiúsult"
#: src/shell-keyring-prompt.c:731
#: src/shell-keyring-prompt.c:730
msgid "Passwords do not match."
msgstr "A jelszavak nem egyeznek."
#: src/shell-keyring-prompt.c:739
#: src/shell-keyring-prompt.c:738
msgid "Password cannot be blank"
msgstr "A jelszó nem lehet üres"

334
po/id.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-06-06 11:42+0000\n"
"PO-Revision-Date: 2019-06-14 17:35+0700\n"
"POT-Creation-Date: 2019-04-17 19:29+0000\n"
"PO-Revision-Date: 2019-04-25 14:54+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural= n!=1;\n"
"X-Generator: Poedit 2.2.3\n"
"X-Generator: Poedit 2.2.1\n"
"X-DamnedLies-Scope: partial\n"
"X-Poedit-SourceCharset: UTF-8\n"
@@ -423,11 +423,10 @@ msgstr ""
msgid "Browse in Software"
msgstr "Ramban di Perangkat Lunak"
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:52
#: js/ui/components/networkAgent.js:118 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:431 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:404 js/ui/shellMountOperation.js:413
#: js/ui/status/network.js:894
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
msgid "Cancel"
msgstr "Batal"
@@ -435,7 +434,7 @@ msgstr "Batal"
msgid "Next"
msgstr "Selanjutnya"
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:408
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329
#: js/ui/unlockDialog.js:41
msgid "Unlock"
msgstr "Buka Kunci"
@@ -466,8 +465,8 @@ msgstr "(cth., pengguna dari %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username: "
msgstr "Nama pengguna: "
@@ -518,8 +517,8 @@ msgstr "Keluar"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:105
msgid "logout;log out;sign off"
msgstr "keluar;logout;log out;sign off"
msgid "logout;sign off"
msgstr "keluar"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:109
@@ -705,11 +704,11 @@ msgstr ""
#. No support for non-modal system dialogs, so ignore the option
#. let modal = options['modal'] || true;
#: js/ui/accessDialog.js:38 js/ui/status/location.js:362
#: js/ui/accessDialog.js:37 js/ui/status/location.js:360
msgid "Deny Access"
msgstr "Tolak Akses"
#: js/ui/accessDialog.js:39 js/ui/status/location.js:365
#: js/ui/accessDialog.js:38 js/ui/status/location.js:363
msgid "Grant Access"
msgstr "Beri Akses"
@@ -760,23 +759,23 @@ msgstr "%s telah ditambahkan ke favorit Anda."
msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda."
#: js/ui/audioDeviceSelection.js:39
#: js/ui/audioDeviceSelection.js:42
msgid "Select Audio Device"
msgstr "Pilih Perangkat Audio"
#: js/ui/audioDeviceSelection.js:50
#: js/ui/audioDeviceSelection.js:53
msgid "Sound Settings"
msgstr "Pengaturan Suara"
#: js/ui/audioDeviceSelection.js:59
#: js/ui/audioDeviceSelection.js:62
msgid "Headphones"
msgstr "Headphone"
#: js/ui/audioDeviceSelection.js:61
#: js/ui/audioDeviceSelection.js:64
msgid "Headset"
msgstr "Headset"
#: js/ui/audioDeviceSelection.js:63 js/ui/status/volume.js:247
#: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247
msgid "Microphone"
msgstr "Mikrofon"
@@ -937,76 +936,68 @@ msgstr "Tutup Paksa"
msgid "Wait"
msgstr "Tunggu"
#: js/ui/components/automountManager.js:87
#: js/ui/components/automountManager.js:86
msgid "External drive connected"
msgstr "Drive eksternal tersambung"
#: js/ui/components/automountManager.js:99
#: js/ui/components/automountManager.js:98
msgid "External drive disconnected"
msgstr "Drive eksternal terputus"
#: js/ui/components/automountManager.js:211
msgid "Unable to unlock volume"
msgstr "Tak bisa membuka kunci volume"
#: js/ui/components/automountManager.js:212
msgid "The installed udisks version does not support the PIM setting"
msgstr "Versi udisks yang dipasang tidak mendukung pengaturan PIM"
#: js/ui/components/autorunManager.js:334
#, javascript-format
msgid "Open with %s"
msgstr "Buka dengan %s"
#: js/ui/components/keyring.js:66 js/ui/components/polkitAgent.js:257
#: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255
msgid "Password:"
msgstr "Sandi:"
#: js/ui/components/keyring.js:97
#: js/ui/components/keyring.js:108
msgid "Type again:"
msgstr "Ketik lagi:"
#: js/ui/components/networkAgent.js:103
#: js/ui/components/networkAgent.js:102
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr ""
"Sebagai alternatif Anda dapat terhubung dengan menekan tombol \"WPS\" pada "
"router Anda."
#: js/ui/components/networkAgent.js:113 js/ui/status/network.js:219
#: js/ui/status/network.js:310 js/ui/status/network.js:897
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
#: js/ui/status/network.js:309 js/ui/status/network.js:891
msgid "Connect"
msgstr "Sambung"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:212 js/ui/components/networkAgent.js:224
#: js/ui/components/networkAgent.js:247 js/ui/components/networkAgent.js:266
#: js/ui/components/networkAgent.js:286 js/ui/components/networkAgent.js:296
#: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295
msgid "Password: "
msgstr "Sandi: "
#. static WEP
#: js/ui/components/networkAgent.js:217
#: js/ui/components/networkAgent.js:216
msgid "Key: "
msgstr "Tombol: "
#: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:272
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271
msgid "Private key password: "
msgstr "Sandi kunci privat: "
#: js/ui/components/networkAgent.js:270
#: js/ui/components/networkAgent.js:269
msgid "Identity: "
msgstr "Identitas: "
#: js/ui/components/networkAgent.js:284
#: js/ui/components/networkAgent.js:283
msgid "Service: "
msgstr "Layanan: "
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
msgid "Authentication required by wireless network"
msgstr "Autentikasi diperlukan oleh jaringan nirkabel"
msgstr "Otentikasi diperlukan oleh jaringan nirkabel"
#: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -1015,61 +1006,61 @@ msgstr ""
"Sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel \"%s"
"\"."
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689
msgid "Wired 802.1X authentication"
msgstr "Autentikasi 802.1X kabel"
msgstr "Otentikasi 802.1X kabel"
#: js/ui/components/networkAgent.js:320
#: js/ui/components/networkAgent.js:319
msgid "Network name: "
msgstr "Nama jaringan: "
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693
msgid "DSL authentication"
msgstr "Autentikasi DSL"
msgstr "Otentikasi DSL"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Perlu kode PIN"
#: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Kode PIN diperlukan untuk perangkat data seluler"
#: js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:333
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706
msgid "Mobile broadband network password"
msgstr "Sandi jaringan data seluler"
#: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:708
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Perlu suatu sandi untuk menyambung ke \"%s\"."
#: js/ui/components/networkAgent.js:675 js/ui/status/network.js:1670
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
msgid "Network Manager"
msgstr "Manajer Jaringan"
#: js/ui/components/polkitAgent.js:36
#: js/ui/components/polkitAgent.js:34
msgid "Authentication Required"
msgstr "Diperlukan Autentikasi"
#: js/ui/components/polkitAgent.js:64
#: js/ui/components/polkitAgent.js:62
msgid "Administrator"
msgstr "Administrator"
#: js/ui/components/polkitAgent.js:141
#: js/ui/components/polkitAgent.js:139
msgid "Authenticate"
msgstr "Autentikasi"
msgstr "Otentikasi"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: js/ui/components/polkitAgent.js:243 js/ui/shellMountOperation.js:389
#: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309
msgid "Sorry, that didnt work. Please try again."
msgstr "Maaf, tidak berhasil. Silakan coba lagi."
@@ -1263,27 +1254,27 @@ msgstr ""
"waktu lama: pastikan bahwa Anda telah melakukan back up dan komputer "
"tersambung ke listrik."
#: js/ui/endSessionDialog.js:310
#: js/ui/endSessionDialog.js:309
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Berjalan memakai daya baterai: harap tancapkan sebelum memasang pemutakhiran."
#: js/ui/endSessionDialog.js:327
#: js/ui/endSessionDialog.js:326
msgid "Some applications are busy or have unsaved work."
msgstr "Beberapa aplikasi sedang sibuk atau belum disimpan perubahannya."
#: js/ui/endSessionDialog.js:334
#: js/ui/endSessionDialog.js:333
msgid "Other users are logged in."
msgstr "Pengguna lain sedang log masuk."
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:615
#: js/ui/endSessionDialog.js:614
#, javascript-format
msgid "%s (remote)"
msgstr "%s (jarak jauh)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:618
#: js/ui/endSessionDialog.js:617
#, javascript-format
msgid "%s (console)"
msgstr "%s (konsol)"
@@ -1368,13 +1359,13 @@ msgid "Leave On"
msgstr "Biarkan Menyala"
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:1269
#: js/ui/status/network.js:1263
msgid "Turn On"
msgstr "Nyalakan"
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
#: js/ui/status/network.js:128 js/ui/status/network.js:311
#: js/ui/status/network.js:1269 js/ui/status/network.js:1381
#: js/ui/status/network.js:128 js/ui/status/network.js:310
#: 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"
@@ -1436,7 +1427,7 @@ msgstr "Tilik Sumber"
msgid "Web Page"
msgstr "Halaman Web"
#: js/ui/messageTray.js:1479
#: js/ui/messageTray.js:1480
msgid "System Information"
msgstr "Informasi Sistem"
@@ -1529,23 +1520,23 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistem"
#: js/ui/panel.js:862
#: js/ui/panel.js:864
msgid "Top Bar"
msgstr "Bar Atas"
#: js/ui/runDialog.js:65
#: js/ui/runDialog.js:64
msgid "Enter a Command"
msgstr "Ketikkan Perintah"
#: js/ui/runDialog.js:105 js/ui/windowMenu.js:166
#: js/ui/runDialog.js:104 js/ui/windowMenu.js:166
msgid "Close"
msgstr "Tutup"
#: js/ui/runDialog.js:267
#: js/ui/runDialog.js:266
msgid "Restart is not available on Wayland"
msgstr "Memulai ulang tidak tersedia di Wayland"
#: js/ui/runDialog.js:272
#: js/ui/runDialog.js:271
msgid "Restarting…"
msgstr "Memulai ulang…"
@@ -1592,15 +1583,15 @@ msgstr "Tak bisa mengunci"
msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi"
#: js/ui/search.js:638
#: js/ui/search.js:635
msgid "Searching…"
msgstr "Mencari…"
#: js/ui/search.js:640
#: js/ui/search.js:637
msgid "No results."
msgstr "Tak ada yang cocok."
#: js/ui/search.js:764
#: js/ui/search.js:761
#, javascript-format
msgid "%d more"
msgid_plural "%d more"
@@ -1623,61 +1614,14 @@ msgstr "Tampilkan Teks"
msgid "Hide Text"
msgstr "Sembunyikan Teks"
#: js/ui/shellMountOperation.js:318
msgid "Hidden Volume"
msgstr "Volume Tersembunyi"
#: js/ui/shellMountOperation.js:321
msgid "Windows System Volume"
msgstr "Volume Sistem Windows"
#: js/ui/shellMountOperation.js:324
msgid "Uses Keyfiles"
msgstr "Gunakan Berkas Kunci"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:330
#, javascript-format
msgid ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
msgstr ""
"Untuk membuka kunci volume yang menggunakan berkas kunci, gunakan utilitas "
"<i>%s</i>."
#: js/ui/shellMountOperation.js:337
msgid "PIM Number"
msgstr "Nomor PIM"
#: js/ui/shellMountOperation.js:355
msgid "The PIM must be a number or empty."
msgstr "PIM harus berupa angka atau kosong."
#: js/ui/shellMountOperation.js:366
#: js/ui/shellMountOperation.js:296
msgid "Password"
msgstr "Sandi"
#: js/ui/shellMountOperation.js:396
#: js/ui/shellMountOperation.js:317
msgid "Remember Password"
msgstr "Ingat Sandi"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:418
#, javascript-format
msgid "Open %s"
msgstr "Buka %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:490
#, javascript-format
msgid "Unable to start %s"
msgstr "Tak bisa memulai %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:492
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Tak bisa menemukan aplikasi %s"
#: js/ui/status/accessibility.js:35
msgid "Accessibility"
msgstr "Aksesibilitas"
@@ -1714,11 +1658,11 @@ msgstr "Tombol Pantul"
msgid "Mouse Keys"
msgstr "Tombol Tetikus"
#: js/ui/status/accessibility.js:135
#: js/ui/status/accessibility.js:151
msgid "High Contrast"
msgstr "Kontras Tinggi"
#: js/ui/status/accessibility.js:177
#: js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Teks Besar"
@@ -1726,7 +1670,7 @@ msgstr "Teks Besar"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
msgid "Bluetooth Settings"
msgstr "Pengaturan Bluetooth"
@@ -1750,31 +1694,11 @@ msgstr "Hidup"
msgid "Brightness"
msgstr "Kecerahan"
#: js/ui/status/dwellClick.js:13
msgid "Single Click"
msgstr "Klik Tunggal"
#: js/ui/status/dwellClick.js:18
msgid "Double Click"
msgstr "Klik Ganda"
#: js/ui/status/dwellClick.js:23
msgid "Drag"
msgstr "Seret"
#: js/ui/status/dwellClick.js:28
msgid "Secondary Click"
msgstr "Klik Sekunder"
#: js/ui/status/dwellClick.js:37
msgid "Dwell Click"
msgstr "Klik Menetap"
#: js/ui/status/keyboard.js:813
#: js/ui/status/keyboard.js:812
msgid "Keyboard"
msgstr "Papan Ketik"
#: js/ui/status/keyboard.js:835
#: js/ui/status/keyboard.js:834
msgid "Show Keyboard Layout"
msgstr "Tampilkan Tata Letak Papan Tik"
@@ -1803,12 +1727,12 @@ msgid "Enable"
msgstr "Fungsikan"
#. Translators: %s is an application name
#: js/ui/status/location.js:355
#: js/ui/status/location.js:353
#, javascript-format
msgid "Give %s access to your location?"
msgstr "Beri %s akses ke lokasi Anda?"
#: js/ui/status/location.js:356
#: js/ui/status/location.js:354
msgid "Location access can be changed at any time from the privacy settings."
msgstr "Akses lokasi dapat diubah setiap saat dari pengaturan privasi."
@@ -1817,13 +1741,13 @@ msgid "<unknown>"
msgstr "<tak dikenal>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:417 js/ui/status/network.js:1298
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
#, javascript-format
msgid "%s Off"
msgstr "%s Mati"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420
#: js/ui/status/network.js:419
#, javascript-format
msgid "%s Connected"
msgstr "%s Tersambung"
@@ -1831,189 +1755,189 @@ msgstr "%s Tersambung"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:425
#: js/ui/status/network.js:424
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s Tak Dikelola"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:428
#: js/ui/status/network.js:427
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s Memutus"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435 js/ui/status/network.js:1290
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
#, javascript-format
msgid "%s Connecting"
msgstr "%s Menyambung"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:438
#: js/ui/status/network.js:437
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s Memerlukan Autentikasi"
msgstr "%s Memerlukan Otentikasi"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:445
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Firmware Hilang Untuk %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:450
#: js/ui/status/network.js:449
#, javascript-format
msgid "%s Unavailable"
msgstr "%s Tak tersedia"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connection Failed"
msgstr "Koneksi %s Gagal"
#: js/ui/status/network.js:465
#: js/ui/status/network.js:464
msgid "Wired Settings"
msgstr "Pengaturan Kabel"
#: js/ui/status/network.js:507
#: js/ui/status/network.js:506
msgid "Mobile Broadband Settings"
msgstr "Pengaturan Data Seluler"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:554 js/ui/status/network.js:1295
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s Perangkat Keras Dinonaktifkan"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:558
#: js/ui/status/network.js:557
#, javascript-format
msgid "%s Disabled"
msgstr "%s Dinonaktifkan"
#: js/ui/status/network.js:598
#: js/ui/status/network.js:597
msgid "Connect to Internet"
msgstr "Sambungkan ke Internet"
#: js/ui/status/network.js:792
#: js/ui/status/network.js:786
msgid "Airplane Mode is On"
msgstr "Mode Pesawat Terbang Menyala"
#: js/ui/status/network.js:793
#: js/ui/status/network.js:787
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wi-Fi dinonaktifkan ketika mode pesawat terbang menyala."
#: js/ui/status/network.js:794
#: js/ui/status/network.js:788
msgid "Turn Off Airplane Mode"
msgstr "Matikan Mode Pesawat Terbang"
#: js/ui/status/network.js:803
#: js/ui/status/network.js:797
msgid "Wi-Fi is Off"
msgstr "Wi-Fi Mati"
#: js/ui/status/network.js:804
#: js/ui/status/network.js:798
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Wi-Fi perlu dinyalakan untuk menyambung ke suatu jaringan."
#: js/ui/status/network.js:805
#: js/ui/status/network.js:799
msgid "Turn On Wi-Fi"
msgstr "Nyalakan Wi-Fi"
#: js/ui/status/network.js:830
#: js/ui/status/network.js:824
msgid "Wi-Fi Networks"
msgstr "Jaringan Wi-Fi"
#: js/ui/status/network.js:832
#: js/ui/status/network.js:826
msgid "Select a network"
msgstr "Pilih jaringan"
#: js/ui/status/network.js:861
#: js/ui/status/network.js:855
msgid "No Networks"
msgstr "Tiada Jaringan"
#: js/ui/status/network.js:882 js/ui/status/rfkill.js:104
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
msgid "Use hardware switch to turn off"
msgstr "Pakai saklar perangkat keras untuk mematikan"
#: js/ui/status/network.js:1158
#: js/ui/status/network.js:1152
msgid "Select Network"
msgstr "Pilih Jaringan"
#: js/ui/status/network.js:1164
#: js/ui/status/network.js:1158
msgid "Wi-Fi Settings"
msgstr "Pengaturan Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1286
#: js/ui/status/network.js:1280
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s Hotspot Aktif"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1301
#: js/ui/status/network.js:1295
#, javascript-format
msgid "%s Not Connected"
msgstr "%s Tak Tersambung"
#: js/ui/status/network.js:1398
#: js/ui/status/network.js:1392
msgid "connecting…"
msgstr "menyambung…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1401
#: js/ui/status/network.js:1395
msgid "authentication required"
msgstr "diperlukan autentikasi"
msgstr "diperlukan otentikasi"
#: js/ui/status/network.js:1403
#: js/ui/status/network.js:1397
msgid "connection failed"
msgstr "koneksi gagal"
#: js/ui/status/network.js:1453
#: js/ui/status/network.js:1447
msgid "VPN Settings"
msgstr "Pengaturan VPN"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1464
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1480
#: js/ui/status/network.js:1474
msgid "VPN Off"
msgstr "VPN Mati"
#: js/ui/status/network.js:1541 js/ui/status/rfkill.js:82
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
msgid "Network Settings"
msgstr "Pengaturan Jaringan"
#: js/ui/status/network.js:1570
#: js/ui/status/network.js:1564
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Koneksi Kabel"
msgstr[1] "%s Koneksi Kabel"
#: js/ui/status/network.js:1574
#: js/ui/status/network.js:1568
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Koneksi Wi-Fi"
msgstr[1] "%s Koneksi Wi-Fi"
#: js/ui/status/network.js:1578
#: js/ui/status/network.js:1572
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Koneksi Modem"
msgstr[1] "%s Koneksi Modem"
#: js/ui/status/network.js:1711
#: js/ui/status/network.js:1705
msgid "Connection failed"
msgstr "Koneksi gagal"
#: js/ui/status/network.js:1712
#: js/ui/status/network.js:1706
msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal"
@@ -2195,22 +2119,22 @@ msgstr "Cari"
msgid "“%s” is ready"
msgstr "'%s' siap"
#: js/ui/windowManager.js:54
#: js/ui/windowManager.js:53
msgid "Do you want to keep these display settings?"
msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?"
#. Translators: this and the following message should be limited in length,
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:66
#: js/ui/windowManager.js:65
msgid "Revert Settings"
msgstr "Balikkan Tatanan"
#: js/ui/windowManager.js:69
#: js/ui/windowManager.js:68
msgid "Keep Changes"
msgstr "Simpan Perubahan"
#: js/ui/windowManager.js:87
#: js/ui/windowManager.js:86
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -2219,7 +2143,7 @@ msgstr[1] "Perubahan tatanan akan dikembalikan dalam %d detik"
#. 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:678
#: js/ui/windowManager.js:677
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2318,11 +2242,11 @@ msgstr "Tak dikenal"
msgid "Failed to launch “%s”"
msgstr "Gagal meluncurkan \"%s\""
#: src/shell-keyring-prompt.c:731
#: src/shell-keyring-prompt.c:730
msgid "Passwords do not match."
msgstr "Sandi tidak cocok."
#: src/shell-keyring-prompt.c:739
#: src/shell-keyring-prompt.c:738
msgid "Password cannot be blank"
msgstr "Sandi tidak boleh kosong"

487
po/nl.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -295,13 +295,13 @@ create_client_for_source (ESource *source,
CalendarSourceData *source_data)
{
ClientData *data;
EClient *client;
ECalClient *client;
GError *error = NULL;
client = g_hash_table_lookup (source_data->clients, source);
g_return_if_fail (client == NULL);
client = e_cal_client_connect_sync (source, source_type, -1, NULL, &error);
client = e_cal_client_new (source, source_type, &error);
if (!client)
{
g_warning ("Could not load source '%s': %s",
@@ -312,7 +312,7 @@ create_client_for_source (ESource *source,
}
data = g_slice_new0 (ClientData);
data->client = E_CAL_CLIENT (client); /* takes ownership */
data->client = client; /* takes ownership */
data->backend_died_id = g_signal_connect (client,
"backend-died",
G_CALLBACK (backend_died_cb),

View File

@@ -102,120 +102,97 @@ typedef struct
} CollectAppointmentsData;
static time_t
get_time_from_property (ICalComponent *icomp,
ICalPropertyKind prop_kind,
ICalTime * (* get_prop_func) (ICalProperty *prop),
ICalTimezone *default_zone)
get_time_from_property (icalcomponent *ical,
icalproperty_kind prop_kind,
struct icaltimetype (* get_prop_func) (const icalproperty *prop),
icaltimezone *default_zone)
{
ICalProperty *prop;
ICalTime *itt;
ICalParameter *param;
ICalTimezone *timezone = NULL;
time_t retval;
icalproperty *prop;
struct icaltimetype ical_time;
icalparameter *param;
icaltimezone *timezone = NULL;
prop = i_cal_component_get_first_property (icomp, prop_kind);
prop = icalcomponent_get_first_property (ical, prop_kind);
if (!prop)
return 0;
itt = get_prop_func (prop);
ical_time = get_prop_func (prop);
param = i_cal_property_get_first_parameter (prop, I_CAL_TZID_PARAMETER);
param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER);
if (param)
timezone = i_cal_timezone_get_builtin_timezone_from_tzid (i_cal_parameter_get_tzid (param));
else if (i_cal_time_is_utc (itt))
timezone = i_cal_timezone_get_utc_timezone ();
timezone = icaltimezone_get_builtin_timezone_from_tzid (icalparameter_get_tzid (param));
else if (icaltime_is_utc (ical_time))
timezone = icaltimezone_get_utc_timezone ();
else
timezone = default_zone;
retval = i_cal_time_as_timet_with_zone (itt, timezone);
g_clear_object (&param);
g_clear_object (&prop);
g_clear_object (&itt);
return retval;
return icaltime_as_timet_with_zone (ical_time, timezone);
}
static char *
get_ical_uid (ICalComponent *icomp)
get_ical_uid (icalcomponent *ical)
{
return g_strdup (i_cal_component_get_uid (icomp));
return g_strdup (icalcomponent_get_uid (ical));
}
static char *
get_ical_summary (ICalComponent *icomp)
get_ical_summary (icalcomponent *ical)
{
ICalProperty *prop;
char *retval;
icalproperty *prop;
prop = i_cal_component_get_first_property (icomp, I_CAL_SUMMARY_PROPERTY);
prop = icalcomponent_get_first_property (ical, ICAL_SUMMARY_PROPERTY);
if (!prop)
return NULL;
retval = g_strdup (i_cal_property_get_summary (prop));
g_object_unref (prop);
return retval;
return g_strdup (icalproperty_get_summary (prop));
}
static char *
get_ical_description (ICalComponent *icomp)
get_ical_description (icalcomponent *ical)
{
ICalProperty *prop;
char *retval;
icalproperty *prop;
prop = i_cal_component_get_first_property (icomp, I_CAL_DESCRIPTION_PROPERTY);
prop = icalcomponent_get_first_property (ical, ICAL_DESCRIPTION_PROPERTY);
if (!prop)
return NULL;
retval = g_strdup (i_cal_property_get_description (prop));
g_object_unref (prop);
return retval;
return g_strdup (icalproperty_get_description (prop));
}
static inline time_t
get_ical_start_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_start_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_DTSTART_PROPERTY,
i_cal_property_get_dtstart,
return get_time_from_property (ical,
ICAL_DTSTART_PROPERTY,
icalproperty_get_dtstart,
default_zone);
}
static inline time_t
get_ical_end_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_end_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_DTEND_PROPERTY,
i_cal_property_get_dtend,
return get_time_from_property (ical,
ICAL_DTEND_PROPERTY,
icalproperty_get_dtend,
default_zone);
}
static gboolean
get_ical_is_all_day (ICalComponent *icomp,
get_ical_is_all_day (icalcomponent *ical,
time_t start_time,
ICalTimezone *default_zone)
icaltimezone *default_zone)
{
ICalProperty *prop;
ICalDuration *duration;
ICalTime *dtstart;
struct tm *start_tm;
time_t end_time;
gboolean retval;
icalproperty *prop;
struct tm *start_tm;
time_t end_time;
struct icaldurationtype duration;
struct icaltimetype start_icaltime;
dtstart = i_cal_component_get_dtstart (icomp);
if (dtstart && i_cal_time_is_date (dtstart))
{
g_clear_object (&dtstart);
return TRUE;
}
g_clear_object (&dtstart);
start_icaltime = icalcomponent_get_dtstart (ical);
if (start_icaltime.is_date)
return TRUE;
start_tm = gmtime (&start_time);
if (start_tm->tm_sec != 0 ||
@@ -223,40 +200,35 @@ get_ical_is_all_day (ICalComponent *icomp,
start_tm->tm_hour != 0)
return FALSE;
if ((end_time = get_ical_end_time (icomp, default_zone)))
if ((end_time = get_ical_end_time (ical, default_zone)))
return (end_time - start_time) % 86400 == 0;
prop = i_cal_component_get_first_property (icomp, I_CAL_DURATION_PROPERTY);
prop = icalcomponent_get_first_property (ical, ICAL_DURATION_PROPERTY);
if (!prop)
return FALSE;
duration = i_cal_property_get_duration (prop);
duration = icalproperty_get_duration (prop);
retval = duration && (i_cal_duration_as_int (duration) % 86400) == 0;
g_clear_object (&duration);
g_clear_object (&prop);
return retval;
return icaldurationtype_as_int (duration) % 86400 == 0;
}
static inline time_t
get_ical_due_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_due_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_DUE_PROPERTY,
i_cal_property_get_due,
return get_time_from_property (ical,
ICAL_DUE_PROPERTY,
icalproperty_get_due,
default_zone);
}
static inline time_t
get_ical_completed_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_completed_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_COMPLETED_PROPERTY,
i_cal_property_get_completed,
return get_time_from_property (ical,
ICAL_COMPLETED_PROPERTY,
icalproperty_get_completed,
default_zone);
}
@@ -393,69 +365,67 @@ calendar_appointment_free (CalendarAppointment *appointment)
static void
calendar_appointment_init (CalendarAppointment *appointment,
ICalComponent *icomp,
icalcomponent *ical,
ECalClient *cal)
{
ICalTimezone *default_zone;
icaltimezone *default_zone;
const char *source_id;
source_id = e_source_get_uid (e_client_get_source (E_CLIENT (cal)));
default_zone = e_cal_client_get_default_timezone (cal);
appointment->uid = get_ical_uid (icomp);
appointment->uid = get_ical_uid (ical);
appointment->source_id = g_strdup (source_id);
appointment->backend_name = get_source_backend_name (cal);
appointment->summary = get_ical_summary (icomp);
appointment->description = get_ical_description (icomp);
appointment->summary = get_ical_summary (ical);
appointment->description = get_ical_description (ical);
appointment->color_string = get_source_color (cal);
appointment->start_time = get_ical_start_time (icomp, default_zone);
appointment->end_time = get_ical_end_time (icomp, default_zone);
appointment->is_all_day = get_ical_is_all_day (icomp,
appointment->start_time = get_ical_start_time (ical, default_zone);
appointment->end_time = get_ical_end_time (ical, default_zone);
appointment->is_all_day = get_ical_is_all_day (ical,
appointment->start_time,
default_zone);
}
static CalendarAppointment *
calendar_appointment_new (ICalComponent *icomp,
calendar_appointment_new (icalcomponent *ical,
ECalClient *cal)
{
CalendarAppointment *appointment;
appointment = g_new0 (CalendarAppointment, 1);
calendar_appointment_init (appointment, icomp, cal);
calendar_appointment_init (appointment, ical, cal);
return appointment;
}
static gboolean
generate_instances_cb (ICalComponent *icomp,
ICalTime *instance_start,
ICalTime *instance_end,
gpointer user_data,
GCancellable *cancellable,
GError **error)
generate_instances_cb (ECalComponent *comp,
time_t start,
time_t end,
gpointer data)
{
ECalClient *cal = ((CollectAppointmentsData *)user_data)->client;
GHashTable *appointments = ((CollectAppointmentsData *)user_data)->appointments;
ECalClient *cal = ((CollectAppointmentsData *)data)->client;
GHashTable *appointments = ((CollectAppointmentsData *)data)->appointments;
CalendarAppointment *appointment;
CalendarOccurrence *occurrence;
ICalTimezone *default_zone;
const gchar *uid;
const char *uid;
default_zone = e_cal_client_get_default_timezone (cal);
uid = i_cal_component_get_uid (icomp);
e_cal_component_get_uid (comp, &uid);
appointment = g_hash_table_lookup (appointments, uid);
if (appointment == NULL)
{
appointment = calendar_appointment_new (icomp, cal);
icalcomponent *ical = e_cal_component_get_icalcomponent (comp);
appointment = calendar_appointment_new (ical, cal);
g_hash_table_insert (appointments, g_strdup (uid), appointment);
}
occurrence = g_new0 (CalendarOccurrence, 1);
occurrence->start_time = i_cal_time_as_timet_with_zone (instance_start, default_zone);
occurrence->end_time = i_cal_time_as_timet_with_zone (instance_end, default_zone);
occurrence->rid = e_cal_util_component_get_recurid_as_string (icomp);
occurrence->start_time = start;
occurrence->end_time = end;
occurrence->rid = e_cal_component_get_recurid_as_string (comp);
appointment->occurrences = g_slist_append (appointment->occurrences, occurrence);
@@ -472,7 +442,7 @@ struct _App
time_t since;
time_t until;
ICalTimezone *zone;
icaltimezone *zone;
CalendarSources *sources;
gulong sources_signal_id;
@@ -498,9 +468,9 @@ app_update_timezone (App *app)
if (g_strcmp0 (location, app->timezone_location) != 0)
{
if (location == NULL)
app->zone = i_cal_timezone_get_utc_timezone ();
app->zone = icaltimezone_get_utc_timezone ();
else
app->zone = i_cal_timezone_get_builtin_timezone (location);
app->zone = icaltimezone_get_builtin_timezone (location);
g_free (app->timezone_location);
app->timezone_location = location;
print_debug ("Using timezone %s", app->timezone_location);
@@ -558,10 +528,10 @@ on_objects_added (ECalClientView *view,
for (l = objects; l != NULL; l = l->next)
{
ICalComponent *icomp = l->data;
icalcomponent *ical = l->data;
const char *uid;
uid = i_cal_component_get_uid (icomp);
uid = icalcomponent_get_uid (ical);
if (g_hash_table_lookup (app->appointments, uid) == NULL)
{
@@ -630,7 +600,7 @@ app_load_events (App *app)
since_iso8601 = isodate_from_time_t (app->since);
until_iso8601 = isodate_from_time_t (app->until);
tz_location = i_cal_timezone_get_location (app->zone);
tz_location = icaltimezone_get_location (app->zone);
print_debug ("Loading events since %s until %s",
since_iso8601,
@@ -652,12 +622,21 @@ app_load_events (App *app)
e_cal_client_set_default_timezone (cal, app->zone);
error = NULL;
if (!e_client_open_sync (E_CLIENT (cal), TRUE, NULL, &error))
{
ESource *source = e_client_get_source (E_CLIENT (cal));
g_warning ("Error opening calendar %s: %s\n",
e_source_get_uid (source), error->message);
g_error_free (error);
continue;
}
data.client = cal;
data.appointments = app->appointments;
e_cal_client_generate_instances_sync (cal,
app->since,
app->until,
NULL,
generate_instances_cb,
&data);

View File

@@ -346,13 +346,6 @@ gnome_shell_plugin_create_inhibit_shortcuts_dialog (MetaPlugin *plugin,
return _shell_wm_create_inhibit_shortcuts_dialog (get_shell_wm (), window);
}
static void
gnome_shell_plugin_locate_pointer (MetaPlugin *plugin)
{
GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin);
_shell_global_locate_pointer (shell_plugin->global);
}
static void
gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
{
@@ -385,8 +378,6 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
plugin_class->create_close_dialog = gnome_shell_plugin_create_close_dialog;
plugin_class->create_inhibit_shortcuts_dialog = gnome_shell_plugin_create_inhibit_shortcuts_dialog;
plugin_class->locate_pointer = gnome_shell_plugin_locate_pointer;
}
static void

View File

@@ -1114,7 +1114,7 @@ _shell_app_remove_window (ShellApp *app,
* shell_app_get_pids:
* @app: a #ShellApp
*
* Returns: (transfer container) (element-type int): An unordered list of process identifiers associated with this application.
* Returns: (transfer container) (element-type int): An unordered list of process identifers associated with this application.
*/
GSList *
shell_app_get_pids (ShellApp *app)
@@ -1151,10 +1151,11 @@ _shell_app_handle_startup_sequence (ShellApp *app,
if (starting && shell_app_get_state (app) == SHELL_APP_STATE_STOPPED)
{
MetaDisplay *display = shell_global_get_display (shell_global_get ());
MetaX11Display *x11_display = meta_display_get_x11_display (display);
shell_app_state_transition (app, SHELL_APP_STATE_STARTING);
meta_display_unset_input_focus (display,
meta_startup_sequence_get_timestamp (sequence));
meta_x11_display_focus_the_no_focus_window (x11_display,
meta_startup_sequence_get_timestamp (sequence));
app->started_on_workspace = meta_startup_sequence_get_workspace (sequence);
}

View File

@@ -18,6 +18,4 @@ GjsContext *_shell_global_get_gjs_context (ShellGlobal *global);
gboolean _shell_global_check_xdnd_event (ShellGlobal *global,
XEvent *xev);
void _shell_global_locate_pointer (ShellGlobal *global);
#endif /* __SHELL_GLOBAL_PRIVATE_H__ */

View File

@@ -29,6 +29,12 @@
#include <meta/meta-workspace-manager.h>
#include <meta/meta-x11-display.h>
#ifdef HAVE_SYSTEMD
#include <systemd/sd-journal.h>
#include <errno.h>
#include <unistd.h>
#endif
/* Memory report bits */
#ifdef HAVE_MALLINFO
#include <malloc.h>
@@ -55,6 +61,8 @@ struct _ShellGlobal {
MetaDisplay *meta_display;
MetaWorkspaceManager *workspace_manager;
GdkDisplay *gdk_display;
MetaX11Display *x11_display;
Display *xdisplay;
char *session_mode;
@@ -109,7 +117,6 @@ enum {
enum
{
NOTIFY_ERROR,
LOCATE_POINTER,
LAST_SIGNAL
};
@@ -352,13 +359,6 @@ shell_global_class_init (ShellGlobalClass *klass)
G_TYPE_NONE, 2,
G_TYPE_STRING,
G_TYPE_STRING);
shell_global_signals[LOCATE_POINTER] =
g_signal_new ("locate-pointer",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
g_object_class_install_property (gobject_class,
PROP_SESSION_MODE,
@@ -642,9 +642,6 @@ shell_global_set_stage_input_region (ShellGlobal *global,
g_return_if_fail (SHELL_IS_GLOBAL (global));
if (meta_is_wayland_compositor ())
return;
nrects = g_slist_length (rectangles);
rects = g_new (XRectangle, nrects);
for (r = rectangles, i = 0; r; r = r->next, i++)
@@ -849,6 +846,10 @@ _shell_global_set_plugin (ShellGlobal *global,
display = meta_plugin_get_display (plugin);
global->meta_display = display;
global->workspace_manager = meta_display_get_workspace_manager (display);
global->x11_display = meta_display_get_x11_display (display);
global->xdisplay = meta_x11_display_get_xdisplay (global->x11_display);
global->gdk_display = gdk_x11_lookup_xdisplay (global->xdisplay);
global->stage = CLUTTER_STAGE (meta_get_stage_for_display (display));
@@ -858,8 +859,6 @@ _shell_global_set_plugin (ShellGlobal *global,
}
else
{
MetaX11Display *x11_display = meta_display_get_x11_display (display);
global->xdisplay = meta_x11_display_get_xdisplay (x11_display);
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
}
@@ -1165,6 +1164,52 @@ shell_global_reexec_self (ShellGlobal *global)
#endif
}
/**
* shell_global_log_structured:
* @message: A message to print
* @keys: (allow-none) (array zero-terminated=1) (element-type utf8): Optional structured data
*
* Log structured data in an operating-system specific fashion. The
* parameter @opts should be an array of UTF-8 KEY=VALUE strings.
* This function does not support binary data. See
* http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html
* or more information about fields that can be used on a systemd
* system.
*
*/
void
shell_global_log_structured (const char *message,
const char *const *keys)
{
#ifdef HAVE_SYSTEMD
const char *const*iter;
char *msgkey;
guint i, n_opts;
struct iovec *iovs;
for (n_opts = 0, iter = keys; *iter; iter++, n_opts++)
;
n_opts++; /* Add one for MESSAGE= */
iovs = g_alloca (sizeof (struct iovec) * n_opts);
for (i = 0, iter = keys; *iter; iter++, i++) {
iovs[i].iov_base = (char*)keys[i];
iovs[i].iov_len = strlen (keys[i]);
}
g_assert(i == n_opts-1);
msgkey = g_strconcat ("MESSAGE=", message, NULL);
iovs[i].iov_base = msgkey;
iovs[i].iov_len = strlen (msgkey);
// The code location isn't useful since we're wrapping
sd_journal_sendv (iovs, n_opts);
g_free (msgkey);
#else
g_print ("%s\n", message);
#endif
}
/**
* shell_global_notify_error:
* @global: a #ShellGlobal
@@ -1516,8 +1561,7 @@ delete_variant_cb (GObject *object,
if (!g_file_delete_finish (G_FILE (object), result, &error))
{
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) &&
!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
{
g_warning ("Could not delete runtime/persistent state file: %s\n",
error->message);
@@ -1688,9 +1732,3 @@ shell_global_get_persistent_state (ShellGlobal *global,
{
return load_variant (global->userdatadir_path, property_type, property_name);
}
void
_shell_global_locate_pointer (ShellGlobal *global)
{
g_signal_emit (global, shell_global_signals[LOCATE_POINTER], 0);
}

View File

@@ -79,6 +79,9 @@ void shell_global_init_xdnd (ShellGlobal *global);
void shell_global_reexec_self (ShellGlobal *global);
void shell_global_log_structured (const char *message,
const char *const *keys);
const char * shell_global_get_session_mode (ShellGlobal *global);
void shell_global_set_runtime_state (ShellGlobal *global,

View File

@@ -280,7 +280,7 @@ shell_gtk_embed_allocate (ClutterActor *actor,
{
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
float wx, wy;
float wx = 0.0, wy = 0.0, x, y, ax, ay;
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->
allocate (actor, box, flags);
@@ -288,7 +288,16 @@ shell_gtk_embed_allocate (ClutterActor *actor,
/* Find the actor's new coordinates in terms of the stage (which is
* priv->window's parent window.
*/
clutter_actor_get_transformed_position (actor, &wx, &wy);
while (actor)
{
clutter_actor_get_position (actor, &x, &y);
clutter_actor_get_anchor_point (actor, &ax, &ay);
wx += x - ax;
wy += y - ay;
actor = clutter_actor_get_parent (actor);
}
_shell_embedded_window_allocate (priv->window,
(int)(0.5 + wx), (int)(0.5 + wy),

View File

@@ -115,10 +115,9 @@ remove_mnemonics (const GValue *value)
g_return_val_if_fail (G_VALUE_HOLDS_STRING (value), NULL);
label = g_value_get_string (value);
if (!label)
return NULL;
g_return_val_if_fail (label != NULL, NULL);
/* Stripped label will have the original label length at most */
/* Stripped label will have the original label lenght at most */
stripped_label = temp = g_new (gchar, strlen(label) + 1);
g_assert (stripped_label != NULL);

Some files were not shown because too many files have changed in this diff Show More