Compare commits
76 Commits
3.26.0
...
wip/rancel
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c3ae81a5b3 | ||
![]() |
74f4447b38 | ||
![]() |
a3736d3a39 | ||
![]() |
b7b59d78b5 | ||
![]() |
ac596ca1c1 | ||
![]() |
d5805f9f0d | ||
![]() |
3b4be770a0 | ||
![]() |
580ba22954 | ||
![]() |
af79d975b0 | ||
![]() |
bfe2558d68 | ||
![]() |
8f4e45abfa | ||
![]() |
6dd973be12 | ||
![]() |
98be314e64 | ||
![]() |
c0ef30d416 | ||
![]() |
fd103ff703 | ||
![]() |
49c144a64c | ||
![]() |
2c2479581a | ||
![]() |
f15650e060 | ||
![]() |
78d58deb5a | ||
![]() |
f4237a4ae7 | ||
![]() |
40616015e5 | ||
![]() |
43ec5280b4 | ||
![]() |
5f8a511483 | ||
![]() |
f036786d4a | ||
![]() |
bf2a824fd1 | ||
![]() |
d439456048 | ||
![]() |
4543ca1620 | ||
![]() |
7da5a76aaa | ||
![]() |
0b02f757f8 | ||
![]() |
1939e22c22 | ||
![]() |
8143f734f8 | ||
![]() |
156032a7ec | ||
![]() |
5c37facc08 | ||
![]() |
59fc26f821 | ||
![]() |
9822c4c1d6 | ||
![]() |
1510640067 | ||
![]() |
15f0e05db4 | ||
![]() |
e2ecae466b | ||
![]() |
f453b3780f | ||
![]() |
b5f5a594ba | ||
![]() |
6321bbb773 | ||
![]() |
3eb80dc6c0 | ||
![]() |
023b50e7a7 | ||
![]() |
9a7dbfba99 | ||
![]() |
a7021f993d | ||
![]() |
1ef8722c52 | ||
![]() |
ce7ff27c0c | ||
![]() |
de4c0bdca6 | ||
![]() |
ab0e98dfdd | ||
![]() |
2ae63691e9 | ||
![]() |
9ecacdbded | ||
![]() |
9d01828b5b | ||
![]() |
7f381dd2fe | ||
![]() |
fcdb73752e | ||
![]() |
ec9b2cef7d | ||
![]() |
18f36b68ee | ||
![]() |
f88e963edf | ||
![]() |
6ecbaac0a8 | ||
![]() |
7015bb2ca9 | ||
![]() |
703187e996 | ||
![]() |
d86a4dc43b | ||
![]() |
f5a28c2f24 | ||
![]() |
9f0bb526f7 | ||
![]() |
80151a7d64 | ||
![]() |
5a414fff44 | ||
![]() |
2d11b5cea0 | ||
![]() |
ecddf1fffd | ||
![]() |
90c55e1977 | ||
![]() |
8331436ab3 | ||
![]() |
289f982949 | ||
![]() |
e914d11a5f | ||
![]() |
e5ed0ab60f | ||
![]() |
5ec0ad4e9c | ||
![]() |
bddc2c0016 | ||
![]() |
56f4ce37cd | ||
![]() |
053b8da89c |
39
NEWS
39
NEWS
@@ -1,3 +1,42 @@
|
||||
3.26.2
|
||||
======
|
||||
* Dump javascript stack on aborts, traps and segfaults [Marco; #789237]
|
||||
* Misc. bug fixes [Jonas, Florian, Alessandro; #788607, #789018, #789231,
|
||||
#788542, #789103]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Alessandro Bono, Florian Müllner, Marco Trevisan (Treviño)
|
||||
|
||||
Translations:
|
||||
Xavi Ivars [ca@valencia], Fabio Tomat [fur], Matej Urbančič [sl],
|
||||
Hannie Dumoleyn [nl]
|
||||
|
||||
3.26.1
|
||||
======
|
||||
* Don't detach launched apps to not break pkexec and friends [Florian; #763531]
|
||||
* Allow search providers to not autostart [Bastien, Florian; #785380, #787986]
|
||||
* Fix crash when tray icons are hidden/shown in quick succession [Ray; #787361]
|
||||
* Make window group switcher more consistent [Didier; #786009]
|
||||
* Improve legibility of the top bar when translucent [Jakub; #787940]
|
||||
* Don't crash when running outside a logind session [Florian; #788046]
|
||||
* Allow to run headless [Mario, Jonas; #730551]
|
||||
* Update calendar on timezone changes [Martin; #678507]
|
||||
* Improve keyboard navigation of window previews [Florian; #786546]
|
||||
* Run unit tests on `meson test` [Florian; #786497]
|
||||
* Misc. bug fixes [Florian, Marc-Antoine, Mario, Jakub, Krzesimir; #787423,
|
||||
#766368, #787580, #787907, #787901, #788039, #788003, #786343, #787902,
|
||||
#788265, #788339, #787905, #788282, #787676]
|
||||
|
||||
Contributors:
|
||||
Martin Andersson, Florian Müllner, Bastien Nocera, Krzesimir Nowak,
|
||||
Marc-Antoine Perennou, Didier Roche, Mario Sanchez Prada, Jakub Steiner,
|
||||
Ray Strode
|
||||
|
||||
Translations:
|
||||
Efstathios Iosifidis [el], Khaled Hosny [ar], Stas Solovey [ru],
|
||||
Arash Mousavi [fa], Sveinn í Felli [is], Athul R T [ml],
|
||||
Cheng-Chia Tseng [zh_TW], Anders Jonsson [sv]
|
||||
|
||||
3.26.0
|
||||
======
|
||||
* Misc. bug fixes [Ray, Michael, Jonas; #786332] #786783, #786886, #786868]
|
||||
|
3
configure
vendored
3
configure
vendored
@@ -52,7 +52,6 @@ sanitycheck() {
|
||||
}
|
||||
|
||||
sanitycheck MESON 'meson'
|
||||
sanitycheck MESONTEST 'mesontest'
|
||||
sanitycheck NINJA 'ninja' 'ninja-build'
|
||||
|
||||
enable_docs='-Denable-gtk-doc=false'
|
||||
@@ -121,7 +120,7 @@ install:
|
||||
DESTDIR="\$(DESTDIR)" ${NINJA} ${NINJA_OPT} install
|
||||
|
||||
check:
|
||||
${MESONTEST} ${NINJA_OPT}
|
||||
${MESON} test ${NINJA_OPT}
|
||||
END
|
||||
|
||||
echo "Summary:"
|
||||
|
@@ -9,6 +9,8 @@
|
||||
<file>checkbox-off.svg</file>
|
||||
<file>checkbox.svg</file>
|
||||
<file>close-window.svg</file>
|
||||
<file>close-window-active.svg</file>
|
||||
<file>close-window-hover.svg</file>
|
||||
<file>close.svg</file>
|
||||
<file>corner-ripple-ltr.png</file>
|
||||
<file>corner-ripple-rtl.png</file>
|
||||
@@ -18,6 +20,7 @@
|
||||
<file>gnome-shell.css</file>
|
||||
<file>gnome-shell-high-contrast.css</file>
|
||||
<file>logged-in-indicator.svg</file>
|
||||
<file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
|
||||
<file>no-events.svg</file>
|
||||
<file>no-notifications.svg</file>
|
||||
<file>noise-texture.png</file>
|
||||
|
@@ -78,11 +78,18 @@ install_data('50-gnome-shell-system.xml', install_dir: keysdir)
|
||||
|
||||
schemaconf = configuration_data()
|
||||
schemaconf.set('GETTEXT_PACKAGE', meson.project_name())
|
||||
configure_file(
|
||||
schema = configure_file(
|
||||
input: 'org.gnome.shell.gschema.xml.in',
|
||||
output: 'org.gnome.shell.gschema.xml',
|
||||
configuration: schemaconf,
|
||||
install_dir: schemadir
|
||||
)
|
||||
|
||||
# for unit tests - gnome.compile_schemas() only looks in srcdir
|
||||
custom_target('compile-schemas',
|
||||
input: schema,
|
||||
output: 'gschemas.compiled',
|
||||
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
|
||||
build_by_default: true)
|
||||
|
||||
install_data('gnome-shell-overrides.convert', install_dir: convertdir)
|
||||
|
81
data/theme/close-window-active.svg
Normal file
81
data/theme/close-window-active.svg
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||
|
||||
<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"
|
||||
version="1.0"
|
||||
id="Foreground"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
enable-background="new 0 0 16 16"
|
||||
xml:space="preserve"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="close-window-active.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
|
||||
id="metadata2399"><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><defs
|
||||
id="defs2397"><linearGradient
|
||||
id="linearGradient3173"><stop
|
||||
style="stop-color:#c4c4c4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3175" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3177" /></linearGradient><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 11 : 1"
|
||||
inkscape:vp_y="0 : 1375 : 0"
|
||||
inkscape:vp_z="22 : 11 : 1"
|
||||
inkscape:persp3d-origin="11 : 7.3333334 : 1"
|
||||
id="perspective2401" /></defs><sodipodi:namedview
|
||||
inkscape:window-height="1106"
|
||||
inkscape:window-width="1700"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
objecttolerance="10.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#797979"
|
||||
id="base"
|
||||
showgrid="false"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="28.483745"
|
||||
inkscape:cy="67.714004"
|
||||
inkscape:window-x="1427"
|
||||
inkscape:window-y="127"
|
||||
inkscape:current-layer="Foreground"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:document-rotation="0"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid11246"
|
||||
empspacing="32"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
|
||||
d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z"
|
||||
id="path883"
|
||||
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#a5c8ec;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||
sodipodi:nodetypes="csssc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path887"
|
||||
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new"
|
||||
sodipodi:nodetypes="ccsccccccccccccccccccccccc" /></svg>
|
After Width: | Height: | Size: 4.6 KiB |
81
data/theme/close-window-hover.svg
Normal file
81
data/theme/close-window-hover.svg
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||
|
||||
<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"
|
||||
version="1.0"
|
||||
id="Foreground"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
enable-background="new 0 0 16 16"
|
||||
xml:space="preserve"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="close-window-hover.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
|
||||
id="metadata2399"><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 /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs2397"><linearGradient
|
||||
id="linearGradient3173"><stop
|
||||
style="stop-color:#c4c4c4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3175" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3177" /></linearGradient><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 11 : 1"
|
||||
inkscape:vp_y="0 : 1375 : 0"
|
||||
inkscape:vp_z="22 : 11 : 1"
|
||||
inkscape:persp3d-origin="11 : 7.3333334 : 1"
|
||||
id="perspective2401" /></defs><sodipodi:namedview
|
||||
inkscape:window-height="1106"
|
||||
inkscape:window-width="1700"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
objecttolerance="10.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#797979"
|
||||
id="base"
|
||||
showgrid="false"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="28.483745"
|
||||
inkscape:cy="67.714004"
|
||||
inkscape:window-x="1427"
|
||||
inkscape:window-y="127"
|
||||
inkscape:current-layer="Foreground"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:document-rotation="0"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid11246"
|
||||
empspacing="32"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="csssc"
|
||||
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#2975c4;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||
id="path822"
|
||||
d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z" /><path
|
||||
sodipodi:nodetypes="ccsccccccccccccccccccccccc"
|
||||
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new"
|
||||
id="path826"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z" /></svg>
|
After Width: | Height: | Size: 4.6 KiB |
@@ -19,7 +19,7 @@
|
||||
enable-background="new 0 0 16 16"
|
||||
xml:space="preserve"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.92+devel unknown"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="close-window.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
|
||||
id="metadata2399"><rdf:RDF><cc:Work
|
||||
@@ -39,8 +39,8 @@
|
||||
inkscape:vp_z="22 : 11 : 1"
|
||||
inkscape:persp3d-origin="11 : 7.3333334 : 1"
|
||||
id="perspective2401" /></defs><sodipodi:namedview
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-width="3440"
|
||||
inkscape:window-height="1106"
|
||||
inkscape:window-width="1700"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10.0"
|
||||
@@ -51,28 +51,27 @@
|
||||
pagecolor="#797979"
|
||||
id="base"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="-17.664395"
|
||||
inkscape:cy="7.2420799"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="28.483745"
|
||||
inkscape:cy="67.714004"
|
||||
inkscape:window-x="1427"
|
||||
inkscape:window-y="127"
|
||||
inkscape:current-layer="Foreground"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:document-rotation="0"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid11246"
|
||||
empspacing="5"
|
||||
empspacing="32"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
|
||||
clip-rule="evenodd"
|
||||
d="m 4.4362021,15.860384 c 0,-6.410121 5.1728276,-11.6072804 11.5529359,-11.6072804 6.380109,0 11.552937,5.1971594 11.552937,11.6072804 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 -6.3801083,0 -11.5529359,-5.197159 -11.5529359,-11.607281 z"
|
||||
d="m 4.4362021,15.860384 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 -6.3801083,0 -11.5529359,-5.197159 -11.5529359,-11.607281 z"
|
||||
id="path2394-32"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||
sodipodi:nodetypes="csssc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.49900004;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.74932218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
@@ -647,7 +647,7 @@ StScrollBar {
|
||||
border: 1px solid #215d9c; }
|
||||
|
||||
.tile-preview-left.on-primary {
|
||||
border-radius: 6px 6px 0 0; }
|
||||
border-radius: 6px 0 0 0; }
|
||||
|
||||
.tile-preview-right.on-primary {
|
||||
border-radius: 0 6px 0 0; }
|
||||
@@ -657,7 +657,7 @@ StScrollBar {
|
||||
|
||||
/* TOP BAR */
|
||||
#panel {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
background-color: rgba(0, 0, 0, 0.35);
|
||||
/* transition from solid to transparent */
|
||||
transition-duration: 500ms;
|
||||
font-weight: bold;
|
||||
@@ -668,7 +668,7 @@ StScrollBar {
|
||||
spacing: 4px; }
|
||||
#panel .panel-corner {
|
||||
-panel-corner-radius: 6px;
|
||||
-panel-corner-background-color: rgba(0, 0, 0, 0.2);
|
||||
-panel-corner-background-color: rgba(0, 0, 0, 0.35);
|
||||
-panel-corner-border-width: 2px;
|
||||
-panel-corner-border-color: transparent; }
|
||||
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
|
||||
@@ -682,7 +682,7 @@ StScrollBar {
|
||||
-minimum-hpadding: 6px;
|
||||
font-weight: bold;
|
||||
color: #eee;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9);
|
||||
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
|
||||
transition-duration: 100ms; }
|
||||
#panel .panel-button .app-menu-icon {
|
||||
-st-icon-style: symbolic;
|
||||
@@ -691,14 +691,14 @@ StScrollBar {
|
||||
#panel .panel-button .system-status-icon,
|
||||
#panel .panel-button .app-menu-icon > StIcon,
|
||||
#panel .panel-button .popup-menu-arrow {
|
||||
icon-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9); }
|
||||
icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); }
|
||||
#panel .panel-button:hover {
|
||||
color: white;
|
||||
text-shadow: 0px 0px 8px black; }
|
||||
text-shadow: 0px 1px 6px black; }
|
||||
#panel .panel-button:hover .system-status-icon,
|
||||
#panel .panel-button:hover .app-menu-icon > StIcon,
|
||||
#panel .panel-button:hover .popup-menu-arrow {
|
||||
icon-shadow: 0px 0px 8px black; }
|
||||
icon-shadow: 0px 1px 6px black; }
|
||||
#panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
|
||||
background-color: rgba(0, 0, 0, 0.01);
|
||||
box-shadow: inset 0 -2px 0px #256ab1;
|
||||
@@ -918,17 +918,17 @@ StScrollBar {
|
||||
background-color: #0d0d0d; }
|
||||
|
||||
.message-icon-bin {
|
||||
padding: 10px 3px 10px 10px; }
|
||||
padding: 0.68em 0.2em 0.68em 0.68em; }
|
||||
.message-icon-bin:rtl {
|
||||
padding: 10px 10px 10px 3px; }
|
||||
padding: 0.68em 0.68em 0.68em 0.2em; }
|
||||
|
||||
.message-icon-bin > StIcon {
|
||||
color: #cccccc;
|
||||
icon-size: 16px;
|
||||
icon-size: 1.09em;
|
||||
-st-icon-style: symbolic; }
|
||||
|
||||
.message-secondary-bin {
|
||||
padding: 0 12px; }
|
||||
padding: 0 0.82em; }
|
||||
|
||||
.message-secondary-bin > .event-time {
|
||||
color: #999999;
|
||||
@@ -938,7 +938,7 @@ StScrollBar {
|
||||
padding-bottom: 0.13em; }
|
||||
|
||||
.message-secondary-bin > StIcon {
|
||||
icon-size: 16px; }
|
||||
icon-size: 1.09em; }
|
||||
|
||||
.message-title {
|
||||
color: #f2f2f2; }
|
||||
@@ -1025,12 +1025,12 @@ StScrollBar {
|
||||
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
|
||||
background-size: 32px;
|
||||
height: 32px;
|
||||
width: 32px; }
|
||||
|
||||
.window-close {
|
||||
width: 32px;
|
||||
-shell-close-overlap: 16px; }
|
||||
.window-close:rtl {
|
||||
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
|
||||
.window-close:hover {
|
||||
background-image: url("resource:///org/gnome/shell/theme/close-window-hover.svg"); }
|
||||
.window-close:active {
|
||||
background-image: url("resource:///org/gnome/shell/theme/close-window-active.svg"); }
|
||||
|
||||
/* NETWORK DIALOGS */
|
||||
.nm-dialog {
|
||||
@@ -1339,6 +1339,10 @@ StScrollBar {
|
||||
border-radius: 9px 0 0 9px; }
|
||||
.workspace-thumbnails:rtl {
|
||||
border-radius: 0 9px 9px 0; }
|
||||
.workspace-thumbnails .placeholder {
|
||||
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
||||
background-size: contain;
|
||||
height: 24px; }
|
||||
|
||||
.workspace-thumbnail-indicator {
|
||||
border: 4px solid #215d9c;
|
||||
|
Submodule data/theme/gnome-shell-sass updated: 81c5a273cf...32361ac692
@@ -647,7 +647,7 @@ StScrollBar {
|
||||
border: 1px solid #215d9c; }
|
||||
|
||||
.tile-preview-left.on-primary {
|
||||
border-radius: 6px 6px 0 0; }
|
||||
border-radius: 6px 0 0 0; }
|
||||
|
||||
.tile-preview-right.on-primary {
|
||||
border-radius: 0 6px 0 0; }
|
||||
@@ -657,7 +657,7 @@ StScrollBar {
|
||||
|
||||
/* TOP BAR */
|
||||
#panel {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
background-color: rgba(0, 0, 0, 0.35);
|
||||
/* transition from solid to transparent */
|
||||
transition-duration: 500ms;
|
||||
font-weight: bold;
|
||||
@@ -668,7 +668,7 @@ StScrollBar {
|
||||
spacing: 4px; }
|
||||
#panel .panel-corner {
|
||||
-panel-corner-radius: 6px;
|
||||
-panel-corner-background-color: rgba(0, 0, 0, 0.2);
|
||||
-panel-corner-background-color: rgba(0, 0, 0, 0.35);
|
||||
-panel-corner-border-width: 2px;
|
||||
-panel-corner-border-color: transparent; }
|
||||
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
|
||||
@@ -682,7 +682,7 @@ StScrollBar {
|
||||
-minimum-hpadding: 6px;
|
||||
font-weight: bold;
|
||||
color: #eee;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9);
|
||||
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
|
||||
transition-duration: 100ms; }
|
||||
#panel .panel-button .app-menu-icon {
|
||||
-st-icon-style: symbolic;
|
||||
@@ -691,14 +691,14 @@ StScrollBar {
|
||||
#panel .panel-button .system-status-icon,
|
||||
#panel .panel-button .app-menu-icon > StIcon,
|
||||
#panel .panel-button .popup-menu-arrow {
|
||||
icon-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9); }
|
||||
icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); }
|
||||
#panel .panel-button:hover {
|
||||
color: white;
|
||||
text-shadow: 0px 0px 8px black; }
|
||||
text-shadow: 0px 1px 6px black; }
|
||||
#panel .panel-button:hover .system-status-icon,
|
||||
#panel .panel-button:hover .app-menu-icon > StIcon,
|
||||
#panel .panel-button:hover .popup-menu-arrow {
|
||||
icon-shadow: 0px 0px 8px black; }
|
||||
icon-shadow: 0px 1px 6px black; }
|
||||
#panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
|
||||
background-color: rgba(0, 0, 0, 0.01);
|
||||
box-shadow: inset 0 -2px 0px #256ab1;
|
||||
@@ -918,17 +918,17 @@ StScrollBar {
|
||||
background-color: #454c4c; }
|
||||
|
||||
.message-icon-bin {
|
||||
padding: 10px 3px 10px 10px; }
|
||||
padding: 0.68em 0.2em 0.68em 0.68em; }
|
||||
.message-icon-bin:rtl {
|
||||
padding: 10px 10px 10px 3px; }
|
||||
padding: 0.68em 0.68em 0.68em 0.2em; }
|
||||
|
||||
.message-icon-bin > StIcon {
|
||||
color: #bebeb6;
|
||||
icon-size: 16px;
|
||||
icon-size: 1.09em;
|
||||
-st-icon-style: symbolic; }
|
||||
|
||||
.message-secondary-bin {
|
||||
padding: 0 12px; }
|
||||
padding: 0 0.82em; }
|
||||
|
||||
.message-secondary-bin > .event-time {
|
||||
color: #8e8e80;
|
||||
@@ -938,7 +938,7 @@ StScrollBar {
|
||||
padding-bottom: 0.13em; }
|
||||
|
||||
.message-secondary-bin > StIcon {
|
||||
icon-size: 16px; }
|
||||
icon-size: 1.09em; }
|
||||
|
||||
.message-title {
|
||||
color: #e2e2df; }
|
||||
@@ -1025,12 +1025,12 @@ StScrollBar {
|
||||
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
|
||||
background-size: 32px;
|
||||
height: 32px;
|
||||
width: 32px; }
|
||||
|
||||
.window-close {
|
||||
width: 32px;
|
||||
-shell-close-overlap: 16px; }
|
||||
.window-close:rtl {
|
||||
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
|
||||
.window-close:hover {
|
||||
background-image: url("resource:///org/gnome/shell/theme/close-window-hover.svg"); }
|
||||
.window-close:active {
|
||||
background-image: url("resource:///org/gnome/shell/theme/close-window-active.svg"); }
|
||||
|
||||
/* NETWORK DIALOGS */
|
||||
.nm-dialog {
|
||||
@@ -1339,6 +1339,10 @@ StScrollBar {
|
||||
border-radius: 9px 0 0 9px; }
|
||||
.workspace-thumbnails:rtl {
|
||||
border-radius: 0 9px 9px 0; }
|
||||
.workspace-thumbnails .placeholder {
|
||||
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
||||
background-size: contain;
|
||||
height: 24px; }
|
||||
|
||||
.workspace-thumbnail-indicator {
|
||||
border: 4px solid #215d9c;
|
||||
|
40
data/theme/message-indicator-symbolic.svg
Normal file
40
data/theme/message-indicator-symbolic.svg
Normal file
@@ -0,0 +1,40 @@
|
||||
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 4.2333333 4.2333333"
|
||||
version="1.1"
|
||||
id="svg8">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<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
|
||||
id="layer1"
|
||||
style="display:inline"
|
||||
transform="translate(0,-292.76667)">
|
||||
<path
|
||||
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.17969394"
|
||||
d="m 3.1749998,294.88333 a 1.0583333,1.0583333 0 0 1 -1.0583332,1.05833 1.0583333,1.0583333 0 0 1 -1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583332,1.05833 z"
|
||||
id="path4485" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@@ -402,6 +402,40 @@ var SessionMenuButton = new Lang.Class({
|
||||
});
|
||||
Signals.addSignalMethods(SessionMenuButton.prototype);
|
||||
|
||||
var GuestUser = new Lang.Class({
|
||||
Name: 'GuestUser',
|
||||
|
||||
_init: function() {
|
||||
this.is_loaded = true;
|
||||
this.locked = false;
|
||||
},
|
||||
|
||||
connect: function() {
|
||||
},
|
||||
disconnect: function() {
|
||||
},
|
||||
|
||||
is_system_account: function() {
|
||||
return false;
|
||||
},
|
||||
|
||||
get_icon_file: function() {
|
||||
return null; // FIXME: Use an icon for guest?
|
||||
},
|
||||
|
||||
get_real_name: function() {
|
||||
return 'Guest'; // FIXME: Translatable
|
||||
},
|
||||
|
||||
get_user_name: function() {
|
||||
return '*guest'; // FIXME: No a real username...
|
||||
},
|
||||
|
||||
is_logged_in: function() {
|
||||
return false; // FIXME: Can be logged in..
|
||||
}
|
||||
});
|
||||
|
||||
var LoginDialog = new Lang.Class({
|
||||
Name: 'LoginDialog',
|
||||
|
||||
@@ -446,6 +480,8 @@ var LoginDialog = new Lang.Class({
|
||||
x_fill: true,
|
||||
y_fill: true });
|
||||
|
||||
this._guestUser = new GuestUser();
|
||||
|
||||
this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN);
|
||||
this._authPrompt.connect('prompted', Lang.bind(this, this._onPrompted));
|
||||
this._authPrompt.connect('reset', Lang.bind(this, this._onReset));
|
||||
@@ -1204,6 +1240,7 @@ var LoginDialog = new Lang.Class({
|
||||
for (let i = 0; i < users.length; i++) {
|
||||
this._userList.addUser(users[i]);
|
||||
}
|
||||
this._userList.addUser(this._guestUser);
|
||||
|
||||
this._updateDisableUserList();
|
||||
|
||||
|
@@ -423,7 +423,21 @@ var ShellUserVerifier = new Lang.Class({
|
||||
|
||||
_startService: function(serviceName) {
|
||||
this._hold.acquire();
|
||||
if (this._userName) {
|
||||
if (this._userName == "*guest") {
|
||||
this._userVerifier.call_begin_verification_for_guest(this._cancellable,
|
||||
Lang.bind(this, function(obj, result) {
|
||||
try {
|
||||
obj.call_begin_verification_for_guest_finish(result);
|
||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
|
||||
return;
|
||||
} catch(e) {
|
||||
this._reportInitError('Failed to start verification for guest', e);
|
||||
return;
|
||||
}
|
||||
|
||||
this._hold.release();
|
||||
}));
|
||||
} else if (this._userName) {
|
||||
this._userVerifier.call_begin_verification_for_user(serviceName,
|
||||
this._userName,
|
||||
this._cancellable,
|
||||
|
@@ -119,7 +119,13 @@ var LoginManagerSystemd = new Lang.Class({
|
||||
return;
|
||||
}
|
||||
|
||||
this._proxy.GetSessionRemote(GLib.getenv('XDG_SESSION_ID'), Lang.bind(this,
|
||||
let sessionId = GLib.getenv('XDG_SESSION_ID');
|
||||
if (!sessionId) {
|
||||
log('Unset XDG_SESSION_ID, getCurrentSessionProxy() called outside a user session.');
|
||||
return;
|
||||
}
|
||||
|
||||
this._proxy.GetSessionRemote(sessionId, Lang.bind(this,
|
||||
function(result, error) {
|
||||
if (error) {
|
||||
logError(error, 'Could not get a proxy for the current session');
|
||||
|
@@ -158,7 +158,10 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
|
||||
_keyPressHandler: function(keysym, action) {
|
||||
if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
|
||||
this._select(this._selectedIndex, this._nextWindow());
|
||||
if (!this._thumbnailsFocused)
|
||||
this._select(this._selectedIndex, 0);
|
||||
else
|
||||
this._select(this._selectedIndex, this._nextWindow());
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_GROUP_BACKWARD) {
|
||||
this._select(this._selectedIndex, this._previousWindow());
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_APPLICATIONS) {
|
||||
|
@@ -20,7 +20,7 @@ var MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||
var SHOW_WEEKDATE_KEY = 'show-weekdate';
|
||||
var ELLIPSIS_CHAR = '\u2026';
|
||||
|
||||
var MESSAGE_ICON_SIZE = 16;
|
||||
var MESSAGE_ICON_SIZE = -1; // pick up from CSS
|
||||
|
||||
// alias to prevent xgettext from picking up strings translated in GTK+
|
||||
const gtk30_ = Gettext_gtk30.gettext;
|
||||
@@ -428,6 +428,13 @@ var Calendar = new Lang.Class({
|
||||
this.emit('selected-date-changed', new Date(this._selectedDate));
|
||||
},
|
||||
|
||||
updateTimeZone: function() {
|
||||
// The calendar need to be rebuilt after a time zone update because
|
||||
// the date might have changed.
|
||||
this._rebuildCalendar();
|
||||
this._update();
|
||||
},
|
||||
|
||||
_buildHeader: function() {
|
||||
let layout = this.actor.layout_manager;
|
||||
let offsetCols = this._useWeekdate ? 1 : 0;
|
||||
|
@@ -255,7 +255,11 @@ var AutorunDispatcher = new Lang.Class({
|
||||
if (!shouldAutorunMount(mount))
|
||||
return;
|
||||
|
||||
let setting = this._getAutorunSettingForType(contentTypes[0]);
|
||||
let setting;
|
||||
if (contentTypes.length > 0)
|
||||
setting = this._getAutorunSettingForType(contentTypes[0]);
|
||||
else
|
||||
setting = AutorunSetting.ASK;
|
||||
|
||||
// check at the settings for the first content type
|
||||
// to see whether we should ask
|
||||
|
@@ -50,6 +50,10 @@ var DashItemContainer = new Lang.Class({
|
||||
this._childScale = 0;
|
||||
this._childOpacity = 0;
|
||||
this.animatingOut = false;
|
||||
|
||||
this.connect('destroy', () => {
|
||||
this.label.destroy();
|
||||
});
|
||||
},
|
||||
|
||||
vfunc_allocate: function(box, flags) {
|
||||
@@ -177,16 +181,8 @@ var DashItemContainer = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
if (this.label)
|
||||
this.label.destroy();
|
||||
|
||||
this.parent();
|
||||
},
|
||||
|
||||
animateOutAndDestroy: function() {
|
||||
if (this.label)
|
||||
this.label.destroy();
|
||||
this.label.hide();
|
||||
|
||||
if (this.child == null) {
|
||||
this.destroy();
|
||||
|
@@ -22,6 +22,7 @@ const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Calendar = imports.ui.calendar;
|
||||
const Weather = imports.misc.weather;
|
||||
const System = imports.system;
|
||||
|
||||
function _isToday(date) {
|
||||
let now = new Date();
|
||||
@@ -131,8 +132,11 @@ var WorldClocksSection = new Lang.Class({
|
||||
let world = GWeather.Location.get_world();
|
||||
let clocks = settings.get_value('world-clocks').deep_unpack();
|
||||
for (let i = 0; i < clocks.length; i++) {
|
||||
if (!clocks[i].location)
|
||||
continue;
|
||||
let l = world.deserialize(clocks[i].location);
|
||||
this._locations.push({ location: l });
|
||||
if (l)
|
||||
this._locations.push({ location: l });
|
||||
}
|
||||
|
||||
this._locations.sort(function(a, b) {
|
||||
@@ -237,12 +241,14 @@ var WeatherSection = new Lang.Class({
|
||||
let options = capitalize ? GWeather.FormatOptions.SENTENCE_CAPITALIZATION
|
||||
: GWeather.FormatOptions.NO_CAPITALIZATION;
|
||||
|
||||
let [ok, phenom, qualifier] = info.get_value_conditions();
|
||||
let [ok, phenomenon, qualifier] = info.get_value_conditions();
|
||||
if (ok)
|
||||
return GWeather.conditions_to_string_full(phenom, qualifier, options);
|
||||
return new GWeather.Conditions({ significant: true,
|
||||
phenomenon,
|
||||
qualifier }).to_string_full(options);
|
||||
|
||||
let [, sky] = info.get_value_sky();
|
||||
return GWeather.sky_to_string_full(sky, options);
|
||||
return GWeather.Sky.to_string_full(sky, options);
|
||||
},
|
||||
|
||||
_sameSummary: function(info1, info2) {
|
||||
@@ -337,8 +343,10 @@ var MessagesIndicator = new Lang.Class({
|
||||
Name: 'MessagesIndicator',
|
||||
|
||||
_init: function() {
|
||||
this.actor = new St.Label({ text: '⚫', visible: false, y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
this.actor = new St.Icon({ icon_name: 'message-indicator-symbolic',
|
||||
icon_size: 16,
|
||||
visible: false, y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
|
||||
this._sources = [];
|
||||
|
||||
@@ -543,6 +551,7 @@ var DateMenuButton = new Lang.Class({
|
||||
|
||||
this._clock = new GnomeDesktop.WallClock();
|
||||
this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||
this._clock.connect('notify::timezone', Lang.bind(this, this._updateTimeZone));
|
||||
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
this._sessionUpdated();
|
||||
@@ -562,6 +571,15 @@ var DateMenuButton = new Lang.Class({
|
||||
this._eventSource = eventSource;
|
||||
},
|
||||
|
||||
_updateTimeZone: function() {
|
||||
// SpiderMonkey caches the time zone so we must explicitly clear it
|
||||
// before we can update the calendar, see
|
||||
// https://bugzilla.gnome.org/show_bug.cgi?id=678507
|
||||
System.clearDateCaches();
|
||||
|
||||
this._calendar.updateTimeZone();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
let eventSource;
|
||||
let showEvents = Main.sessionMode.showCalendarEvents;
|
||||
|
@@ -15,6 +15,8 @@ var Dialog = new Lang.Class({
|
||||
this.parent({ layout_manager: new Clutter.BinLayout() });
|
||||
this.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
|
||||
this._initialKeyFocus = null;
|
||||
this._initialKeyFocusDestroyId = 0;
|
||||
this._pressedKey = null;
|
||||
this._buttonKeys = {};
|
||||
this._createDialog();
|
||||
@@ -86,6 +88,22 @@ var Dialog = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_setInitialKeyFocus: function(actor) {
|
||||
if (this._initialKeyFocus)
|
||||
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
|
||||
|
||||
this._initialKeyFocus = actor;
|
||||
|
||||
this._initialKeyFocusDestroyId = actor.connect('destroy', () => {
|
||||
this._initialKeyFocus = null;
|
||||
this._initialKeyFocusDestroyId = 0;
|
||||
});
|
||||
},
|
||||
|
||||
get initialKeyFocus() {
|
||||
return this._initialKeyFocus || this;
|
||||
},
|
||||
|
||||
addContent: function (actor) {
|
||||
this.contentLayout.add (actor, { expand: true });
|
||||
},
|
||||
@@ -116,8 +134,8 @@ var Dialog = new Lang.Class({
|
||||
if (isDefault)
|
||||
button.add_style_pseudo_class('default');
|
||||
|
||||
if (!this._initialKeyFocusDestroyId)
|
||||
this._initialKeyFocus = button;
|
||||
if (this._initialKeyFocus == null || isDefault)
|
||||
this._setInitialKeyFocus(button);
|
||||
|
||||
for (let i in keys)
|
||||
this._buttonKeys[keys[i]] = buttonInfo;
|
||||
|
@@ -38,10 +38,10 @@ var DragDropResult = {
|
||||
SUCCESS: 1,
|
||||
CONTINUE: 2
|
||||
};
|
||||
var dragMonitors = [];
|
||||
|
||||
let eventHandlerActor = null;
|
||||
let currentDraggable = null;
|
||||
let dragMonitors = [];
|
||||
|
||||
function _getEventHandlerActor() {
|
||||
if (!eventHandlerActor) {
|
||||
@@ -94,6 +94,7 @@ var _Draggable = new Lang.Class({
|
||||
this.disconnectAll();
|
||||
}));
|
||||
this._onEventId = null;
|
||||
this._touchSequence = null;
|
||||
|
||||
this._restoreOnSuccess = params.restoreOnSuccess;
|
||||
this._dragActorMaxSize = params.dragActorMaxSize;
|
||||
@@ -530,7 +531,7 @@ var _Draggable = new Lang.Class({
|
||||
// Snap the clone back to its source
|
||||
[x, y] = this._dragActorSource.get_transformed_position();
|
||||
let [sourceScaledWidth, sourceScaledHeight] = this._dragActorSource.get_transformed_size();
|
||||
scale = this._dragActor.width / sourceScaledWidth;
|
||||
scale = sourceScaledWidth ? this._dragActor.width / sourceScaledWidth : 0;
|
||||
} else if (this._dragOrigParent) {
|
||||
// Snap the actor back to its original position within
|
||||
// its parent, adjusting for the fact that the parent
|
||||
|
@@ -129,6 +129,9 @@ var MonitorConstraint = new Lang.Class({
|
||||
if (!this._primary && this._index < 0)
|
||||
return;
|
||||
|
||||
if (!Main.layoutManager.primaryMonitor)
|
||||
return;
|
||||
|
||||
let index;
|
||||
if (this._primary)
|
||||
index = Main.layoutManager.primaryIndex;
|
||||
@@ -189,6 +192,7 @@ var LayoutManager = new Lang.Class({
|
||||
this._topActors = [];
|
||||
this._isPopupWindowVisible = false;
|
||||
this._startingUp = true;
|
||||
this._pendingLoadBackground = false;
|
||||
|
||||
// We don't want to paint the stage background color because either
|
||||
// the SystemBackground we create or the MetaBackgroundActor inside
|
||||
@@ -323,7 +327,9 @@ var LayoutManager = new Lang.Class({
|
||||
for (let i = 0; i < nMonitors; i++)
|
||||
this.monitors.push(new Monitor(i, screen.get_monitor_geometry(i)));
|
||||
|
||||
if (nMonitors == 1) {
|
||||
if (nMonitors == 0) {
|
||||
this.primaryIndex = this.bottomIndex = -1;
|
||||
} else if (nMonitors == 1) {
|
||||
this.primaryIndex = this.bottomIndex = 0;
|
||||
} else {
|
||||
// If there are monitors below the primary, then we need
|
||||
@@ -337,8 +343,18 @@ var LayoutManager = new Lang.Class({
|
||||
}
|
||||
}
|
||||
}
|
||||
this.primaryMonitor = this.monitors[this.primaryIndex];
|
||||
this.bottomMonitor = this.monitors[this.bottomIndex];
|
||||
if (this.primaryIndex != -1) {
|
||||
this.primaryMonitor = this.monitors[this.primaryIndex];
|
||||
this.bottomMonitor = this.monitors[this.bottomIndex];
|
||||
|
||||
if (this._pendingLoadBackground) {
|
||||
this._loadBackground();
|
||||
this._pendingLoadBackground = false;
|
||||
}
|
||||
} else {
|
||||
this.primaryMonitor = null;
|
||||
this.bottomMonitor = null;
|
||||
}
|
||||
},
|
||||
|
||||
_updateHotCorners: function() {
|
||||
@@ -458,6 +474,9 @@ var LayoutManager = new Lang.Class({
|
||||
this.screenShieldGroup.set_position(0, 0);
|
||||
this.screenShieldGroup.set_size(global.screen_width, global.screen_height);
|
||||
|
||||
if (!this.primaryMonitor)
|
||||
return;
|
||||
|
||||
this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y);
|
||||
this.panelBox.set_size(this.primaryMonitor.width, -1);
|
||||
|
||||
@@ -480,6 +499,9 @@ var LayoutManager = new Lang.Class({
|
||||
this._rightPanelBarrier = null;
|
||||
}
|
||||
|
||||
if (!this.primaryMonitor)
|
||||
return;
|
||||
|
||||
if (this.panelBox.height) {
|
||||
let primary = this.primaryMonitor;
|
||||
|
||||
@@ -549,6 +571,10 @@ var LayoutManager = new Lang.Class({
|
||||
},
|
||||
|
||||
_loadBackground: function() {
|
||||
if (!this.primaryMonitor) {
|
||||
this._pendingLoadBackground = true;
|
||||
return;
|
||||
}
|
||||
this._systemBackground = new Background.SystemBackground();
|
||||
this._systemBackground.actor.hide();
|
||||
|
||||
|
@@ -122,6 +122,7 @@ function start() {
|
||||
sessionMode.connect('updated', _sessionUpdated);
|
||||
Gtk.Settings.get_default().connect('notify::gtk-theme-name',
|
||||
_loadDefaultStylesheet);
|
||||
Gtk.IconTheme.get_default().add_resource_path('/org/gnome/shell/theme/icons');
|
||||
_initializeUI();
|
||||
|
||||
shellAccessDialogDBusService = new AccessDialog.AccessDialogDBus();
|
||||
|
@@ -1205,8 +1205,9 @@ var MessageTray = new Lang.Class({
|
||||
// _updateState() figures out what (if anything) needs to be done
|
||||
// at the present time.
|
||||
_updateState: function() {
|
||||
this.actor.visible = !this._bannerBlocked && this._banner != null;
|
||||
if (this._bannerBlocked)
|
||||
let hasMonitor = Main.layoutManager.primaryMonitor != null;
|
||||
this.actor.visible = !this._bannerBlocked && hasMonitor && this._banner != null;
|
||||
if (this._bannerBlocked || !hasMonitor)
|
||||
return;
|
||||
|
||||
// If our state changes caused _updateState to be called,
|
||||
|
@@ -84,7 +84,7 @@ var ModalDialog = new Lang.Class({
|
||||
}
|
||||
|
||||
global.focus_manager.add_group(this.dialogLayout);
|
||||
this._initialKeyFocus = this.dialogLayout;
|
||||
this._initialKeyFocus = null;
|
||||
this._initialKeyFocusDestroyId = 0;
|
||||
this._savedKeyFocus = null;
|
||||
},
|
||||
@@ -157,7 +157,7 @@ var ModalDialog = new Lang.Class({
|
||||
this._initialKeyFocus = actor;
|
||||
|
||||
this._initialKeyFocusDestroyId = actor.connect('destroy', Lang.bind(this, function() {
|
||||
this._initialKeyFocus = this.dialogLayout;
|
||||
this._initialKeyFocus = null;
|
||||
this._initialKeyFocusDestroyId = 0;
|
||||
}));
|
||||
},
|
||||
@@ -237,7 +237,8 @@ var ModalDialog = new Lang.Class({
|
||||
this._savedKeyFocus.grab_key_focus();
|
||||
this._savedKeyFocus = null;
|
||||
} else {
|
||||
this._initialKeyFocus.grab_key_focus();
|
||||
let focus = this._initialKeyFocus || this.dialogLayout.initialKeyFocus;
|
||||
focus.grab_key_focus();
|
||||
}
|
||||
|
||||
if (!this._shellReactive)
|
||||
|
@@ -670,7 +670,7 @@ const FdoApplicationIface = '<node> \
|
||||
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
|
||||
|
||||
function objectPathFromAppId(appId) {
|
||||
return '/' + appId.replace(/\./g, '/');
|
||||
return '/' + appId.replace(/\./g, '/').replace(/-/g, '_');
|
||||
}
|
||||
|
||||
function getPlatformData() {
|
||||
@@ -687,6 +687,8 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
_init: function(appId) {
|
||||
this._appId = appId;
|
||||
this._objectPath = objectPathFromAppId(appId);
|
||||
if (!GLib.Variant.is_object_path(this._objectPath))
|
||||
throw new InvalidAppError();
|
||||
|
||||
this._app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
|
||||
if (!this._app)
|
||||
|
@@ -392,6 +392,9 @@ var Overview = new Lang.Class({
|
||||
// when it is next shown.
|
||||
this.hide();
|
||||
|
||||
if (!Main.layoutManager.primaryMonitor)
|
||||
return;
|
||||
|
||||
let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
|
||||
|
||||
this._coverPane.set_position(0, workArea.y);
|
||||
@@ -414,7 +417,7 @@ var Overview = new Lang.Class({
|
||||
|
||||
beginItemDrag: function(source) {
|
||||
this.emit('item-drag-begin');
|
||||
this._inDrag = true;
|
||||
this._inItemDrag = true;
|
||||
},
|
||||
|
||||
cancelledItemDrag: function(source) {
|
||||
@@ -422,13 +425,15 @@ var Overview = new Lang.Class({
|
||||
},
|
||||
|
||||
endItemDrag: function(source) {
|
||||
if (!this._inItemDrag)
|
||||
return;
|
||||
this.emit('item-drag-end');
|
||||
this._inDrag = false;
|
||||
this._inItemDrag = false;
|
||||
},
|
||||
|
||||
beginWindowDrag: function(window) {
|
||||
this.emit('window-drag-begin', window);
|
||||
this._inDrag = true;
|
||||
this._inWindowDrag = true;
|
||||
},
|
||||
|
||||
cancelledWindowDrag: function(window) {
|
||||
@@ -436,8 +441,10 @@ var Overview = new Lang.Class({
|
||||
},
|
||||
|
||||
endWindowDrag: function(window) {
|
||||
if (!this._inWindowDrag)
|
||||
return;
|
||||
this.emit('window-drag-end', window);
|
||||
this._inDrag = false;
|
||||
this._inWindowDrag = false;
|
||||
},
|
||||
|
||||
focusSearch: function() {
|
||||
@@ -481,7 +488,7 @@ var Overview = new Lang.Class({
|
||||
shouldToggleByCornerOrButton: function() {
|
||||
if (this.animationInProgress)
|
||||
return false;
|
||||
if (this._inDrag)
|
||||
if (this._inItemDrag || this._inWindowDrag)
|
||||
return false;
|
||||
if (this._activationTime == 0 || Date.now() / 1000 - this._activationTime > OVERVIEW_ACTIVATION_TIMEOUT)
|
||||
return true;
|
||||
|
@@ -839,8 +839,14 @@ var Panel = new Lang.Class({
|
||||
},
|
||||
|
||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||
let primaryMonitor = Main.layoutManager.primaryMonitor;
|
||||
|
||||
alloc.min_size = -1;
|
||||
alloc.natural_size = Main.layoutManager.primaryMonitor.width;
|
||||
|
||||
if (primaryMonitor)
|
||||
alloc.natural_size = primaryMonitor.width;
|
||||
else
|
||||
alloc.natural_size = -1;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
@@ -859,15 +865,16 @@ var Panel = new Lang.Class({
|
||||
|
||||
let sideWidth, centerWidth;
|
||||
centerWidth = centerNaturalWidth;
|
||||
sideWidth = (allocWidth - centerWidth) / 2;
|
||||
sideWidth = Math.max(0, (allocWidth - centerWidth) / 2);
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
|
||||
leftNaturalWidth);
|
||||
childBox.x1 = Math.max(allocWidth - Math.min(Math.floor(sideWidth),
|
||||
leftNaturalWidth),
|
||||
0);
|
||||
childBox.x2 = allocWidth;
|
||||
} else {
|
||||
childBox.x1 = 0;
|
||||
@@ -889,8 +896,9 @@ var Panel = new Lang.Class({
|
||||
childBox.x2 = Math.min(Math.floor(sideWidth),
|
||||
rightNaturalWidth);
|
||||
} else {
|
||||
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
|
||||
rightNaturalWidth);
|
||||
childBox.x1 = Math.max(allocWidth - Math.min(Math.floor(sideWidth),
|
||||
rightNaturalWidth),
|
||||
0);
|
||||
childBox.x2 = allocWidth;
|
||||
}
|
||||
this._rightBox.allocate(childBox, flags);
|
||||
@@ -1044,6 +1052,9 @@ var Panel = new Lang.Class({
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Main.layoutManager.primaryMonitor)
|
||||
return;
|
||||
|
||||
/* Get all the windows in the active workspace that are in the primary monitor and visible */
|
||||
let activeWorkspace = global.screen.get_active_workspace();
|
||||
let windows = activeWorkspace.list_windows().filter(function(metaWindow) {
|
||||
@@ -1073,8 +1084,6 @@ var Panel = new Lang.Class({
|
||||
let indicator = this.statusArea[role];
|
||||
if (!indicator)
|
||||
continue;
|
||||
if (indicator.menu)
|
||||
indicator.menu.close();
|
||||
indicator.container.hide();
|
||||
}
|
||||
},
|
||||
|
@@ -405,7 +405,7 @@ var PopupImageMenuItem = new Lang.Class({
|
||||
|
||||
setIcon: function(icon) {
|
||||
// The 'icon' parameter can be either a Gio.Icon or a string.
|
||||
if (GObject.type_is_a(icon, Gio.Icon))
|
||||
if (icon instanceof GObject.Object && GObject.type_is_a(icon, Gio.Icon))
|
||||
this._icon.gicon = icon;
|
||||
else
|
||||
this._icon.icon_name = icon;
|
||||
@@ -465,6 +465,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
|
||||
_sessionUpdated: function() {
|
||||
this._setSettingsVisibility(Main.sessionMode.allowSettings);
|
||||
this.close();
|
||||
},
|
||||
|
||||
addAction: function(title, callback, icon) {
|
||||
|
@@ -98,6 +98,13 @@ function loadRemoteSearchProviders(searchSettings, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
let autoStart = true;
|
||||
try {
|
||||
autoStart = keyfile.get_boolean(group, 'AutoStart');
|
||||
} catch(e) {
|
||||
// ignore error
|
||||
}
|
||||
|
||||
let version = '1';
|
||||
try {
|
||||
version = keyfile.get_string(group, 'Version');
|
||||
@@ -106,9 +113,9 @@ function loadRemoteSearchProviders(searchSettings, callback) {
|
||||
}
|
||||
|
||||
if (version >= 2)
|
||||
remoteProvider = new RemoteSearchProvider2(appInfo, busName, objectPath);
|
||||
remoteProvider = new RemoteSearchProvider2(appInfo, busName, objectPath, autoStart);
|
||||
else
|
||||
remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath);
|
||||
remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath, autoStart);
|
||||
|
||||
remoteProvider.defaultEnabled = true;
|
||||
try {
|
||||
@@ -184,17 +191,22 @@ function loadRemoteSearchProviders(searchSettings, callback) {
|
||||
var RemoteSearchProvider = new Lang.Class({
|
||||
Name: 'RemoteSearchProvider',
|
||||
|
||||
_init: function(appInfo, dbusName, dbusPath, proxyInfo) {
|
||||
_init: function(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
|
||||
if (!proxyInfo)
|
||||
proxyInfo = SearchProviderProxyInfo;
|
||||
|
||||
let g_flags = Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES;
|
||||
if (autoStart)
|
||||
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION;
|
||||
else
|
||||
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START;
|
||||
|
||||
this.proxy = new Gio.DBusProxy({ g_bus_type: Gio.BusType.SESSION,
|
||||
g_name: dbusName,
|
||||
g_object_path: dbusPath,
|
||||
g_interface_info: proxyInfo,
|
||||
g_interface_name: proxyInfo.name,
|
||||
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION |
|
||||
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
||||
g_flags });
|
||||
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null, null);
|
||||
|
||||
this.appInfo = appInfo;
|
||||
@@ -307,8 +319,8 @@ var RemoteSearchProvider2 = new Lang.Class({
|
||||
Name: 'RemoteSearchProvider2',
|
||||
Extends: RemoteSearchProvider,
|
||||
|
||||
_init: function(appInfo, dbusName, dbusPath) {
|
||||
this.parent(appInfo, dbusName, dbusPath, SearchProvider2ProxyInfo);
|
||||
_init: function(appInfo, dbusName, dbusPath, autoStart) {
|
||||
this.parent(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo);
|
||||
|
||||
this.canLaunchSearch = true;
|
||||
},
|
||||
|
@@ -529,6 +529,7 @@ var InputSourceManager = new Lang.Class({
|
||||
let sources = this._settings.inputSources;
|
||||
let nSources = sources.length;
|
||||
|
||||
this._currentSource = null;
|
||||
this._inputSources = {};
|
||||
this._ibusSources = {};
|
||||
|
||||
@@ -827,6 +828,9 @@ var InputSourceIndicator = new Lang.Class({
|
||||
for (let i in this._indicatorLabels)
|
||||
this._indicatorLabels[i].destroy();
|
||||
|
||||
this._menuItems = {};
|
||||
this._indicatorLabels = {};
|
||||
|
||||
let menuIndex = 0;
|
||||
for (let i in this._inputSourceManager.inputSources) {
|
||||
let is = this._inputSourceManager.inputSources[i];
|
||||
|
@@ -951,7 +951,7 @@ var NMWirelessDialog = new Lang.Class({
|
||||
|| (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
|
||||
// 802.1x-enabled APs require further configuration, so they're
|
||||
// handled in gnome-control-center
|
||||
Util.spawn(['gnome-control-center', 'network', 'connect-8021x-wifi',
|
||||
Util.spawn(['gnome-control-center', 'wifi', 'connect-8021x-wifi',
|
||||
this._device.get_path(), accessPoints[0].dbus_path]);
|
||||
} else {
|
||||
let connection = new NetworkManager.Connection();
|
||||
|
@@ -516,7 +516,7 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
|
||||
let [dx, dy] = event.get_gesture_motion_delta(event);
|
||||
let [dx, dy] = event.get_gesture_motion_delta();
|
||||
|
||||
this._dx += dx;
|
||||
this._dy += dy;
|
||||
@@ -985,7 +985,8 @@ var WindowManager = new Lang.Class({
|
||||
gesture.connect('activated', Lang.bind(this, this._switchApp));
|
||||
global.stage.add_action(gesture);
|
||||
|
||||
gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, Shell.ActionMode.ALL);
|
||||
let mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN;
|
||||
gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode);
|
||||
gesture.connect('activated', Lang.bind(this, function() {
|
||||
Main.keyboard.show(Main.layoutManager.bottomIndex);
|
||||
}));
|
||||
|
@@ -132,6 +132,7 @@ var WindowClone = new Lang.Class({
|
||||
|
||||
this.actor._delegate = this;
|
||||
|
||||
this.slotId = 0;
|
||||
this._slot = [0, 0, 0, 0];
|
||||
this._dragSlot = [0, 0, 0, 0];
|
||||
this._stackAbove = null;
|
||||
@@ -661,6 +662,7 @@ var WindowOverlay = new Lang.Class({
|
||||
if (this._hidden)
|
||||
return;
|
||||
|
||||
this._windowClone.actor.grab_key_focus();
|
||||
this._animateVisible();
|
||||
this.emit('show-close-button');
|
||||
},
|
||||
@@ -1068,6 +1070,22 @@ function rectEqual(one, two) {
|
||||
one.height == two.height);
|
||||
}
|
||||
|
||||
const WorkspaceActor = new Lang.Class({
|
||||
Name: 'WorkspaceActor',
|
||||
Extends: St.Widget,
|
||||
|
||||
vfunc_get_focus_chain: function() {
|
||||
return this.get_children().filter(c => c.visible).sort((a,b) => {
|
||||
let cloneA = (a._delegate && a._delegate instanceof WindowClone) ? a._delegate: null;
|
||||
let cloneB = (b._delegate && b._delegate instanceof WindowClone) ? b._delegate: null;
|
||||
if (cloneA && cloneB)
|
||||
return cloneA.slotId - cloneB.slotId;
|
||||
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @metaWorkspace: a #Meta.Workspace, or null
|
||||
*/
|
||||
@@ -1090,6 +1108,7 @@ var Workspace = new Lang.Class({
|
||||
// do some simple aspect ratio like math to fit the layout calculated
|
||||
// for the full geometry into this area.
|
||||
this._actualGeometry = null;
|
||||
this._actualGeometryLater = 0;
|
||||
|
||||
this._currentLayout = null;
|
||||
|
||||
@@ -1099,7 +1118,7 @@ var Workspace = new Lang.Class({
|
||||
// Without this the drop area will be overlapped.
|
||||
this._windowOverlaysGroup.set_size(0, 0);
|
||||
|
||||
this.actor = new St.Widget({ style_class: 'window-picker' });
|
||||
this.actor = new WorkspaceActor({ style_class: 'window-picker' });
|
||||
if (monitorIndex != Main.layoutManager.primaryIndex)
|
||||
this.actor.add_style_class_name('external-monitor');
|
||||
this.actor.set_size(0, 0);
|
||||
|
@@ -31,6 +31,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
|
||||
this._itemSpacing = 0;
|
||||
this._childHeight = 0;
|
||||
this._childWidth = 0;
|
||||
this._timeoutId = 0;
|
||||
this._list.connect('style-changed', Lang.bind(this, function() {
|
||||
this._itemSpacing = this._list.get_theme_node().get_length('spacing');
|
||||
}));
|
||||
|
@@ -937,7 +937,8 @@ var ThumbnailsBox = new Lang.Class({
|
||||
},
|
||||
|
||||
addThumbnails: function(start, count) {
|
||||
this._ensurePorthole();
|
||||
if (!this._ensurePorthole())
|
||||
return;
|
||||
for (let k = start; k < start + count; k++) {
|
||||
let metaWorkspace = global.screen.get_workspace_by_index(k);
|
||||
let thumbnail = new WorkspaceThumbnail(metaWorkspace);
|
||||
@@ -1125,7 +1126,12 @@ var ThumbnailsBox = new Lang.Class({
|
||||
// the size request to our children because we know how big they are and know
|
||||
// that the actors aren't depending on the virtual functions being called.
|
||||
|
||||
this._ensurePorthole();
|
||||
if (!this._ensurePorthole()) {
|
||||
alloc.min_size = -1;
|
||||
alloc.natural_size = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
|
||||
let spacing = themeNode.get_length('spacing');
|
||||
@@ -1137,7 +1143,11 @@ var ThumbnailsBox = new Lang.Class({
|
||||
},
|
||||
|
||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||
this._ensurePorthole();
|
||||
if (!this._ensurePorthole()) {
|
||||
alloc.min_size = -1;
|
||||
alloc.natural_size = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
|
||||
@@ -1158,8 +1168,13 @@ var ThumbnailsBox = new Lang.Class({
|
||||
// The "porthole" is the portion of the screen that we show in the
|
||||
// workspaces
|
||||
_ensurePorthole: function() {
|
||||
if (!Main.layoutManager.primaryMonitor)
|
||||
return false;
|
||||
|
||||
if (!this._porthole)
|
||||
this._porthole = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
project('gnome-shell', 'c',
|
||||
version: '3.26.0',
|
||||
meson_version: '>= 0.41.0',
|
||||
version: '3.26.2',
|
||||
meson_version: '>= 0.42.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
|
||||
|
2571
po/ca@valencia.po
2571
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
2
po/cs.po
2
po/cs.po
@@ -1319,7 +1319,7 @@ msgstr "Přehled"
|
||||
#. characters.
|
||||
#: js/ui/overview.js:240
|
||||
msgid "Type to search…"
|
||||
msgstr "vyhledávejte psaním…"
|
||||
msgstr "Vyhledávejte psaním…"
|
||||
|
||||
#: js/ui/padOsd.js:103
|
||||
msgid "New shortcut…"
|
||||
|
65
po/fur.po
65
po/fur.po
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: video-subtitles master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
|
||||
"PO-Revision-Date: 2017-08-23 17:01+0200\n"
|
||||
"POT-Creation-Date: 2017-10-04 18:03+0000\n"
|
||||
"PO-Revision-Date: 2017-10-11 08:34+0200\n"
|
||||
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
||||
"Language-Team: Friulian <fur@li.org>\n"
|
||||
"Language: fur\n"
|
||||
@@ -659,12 +659,12 @@ msgstr "Zonte tai preferîts"
|
||||
msgid "Show Details"
|
||||
msgstr "Mostre Detais"
|
||||
|
||||
#: js/ui/appFavorites.js:140
|
||||
#: js/ui/appFavorites.js:141
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s al è stât zontât tai tiei preferîts."
|
||||
|
||||
#: js/ui/appFavorites.js:174
|
||||
#: js/ui/appFavorites.js:175
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s al è stât gjavât dai tiei preferîts."
|
||||
@@ -753,51 +753,51 @@ msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
#: js/ui/calendar.js:442
|
||||
#: js/ui/calendar.js:449
|
||||
msgid "Previous month"
|
||||
msgstr "Mês indaûr"
|
||||
|
||||
#: js/ui/calendar.js:452
|
||||
#: js/ui/calendar.js:459
|
||||
msgid "Next month"
|
||||
msgstr "Prossim mês"
|
||||
|
||||
#: js/ui/calendar.js:605
|
||||
#: js/ui/calendar.js:612
|
||||
#, no-javascript-format
|
||||
msgctxt "date day number format"
|
||||
msgid "%d"
|
||||
msgstr "%d"
|
||||
|
||||
#: js/ui/calendar.js:660
|
||||
#: js/ui/calendar.js:667
|
||||
msgid "Week %V"
|
||||
msgstr "Setemane %V"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#.
|
||||
#: js/ui/calendar.js:729
|
||||
#: js/ui/calendar.js:736
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Dut il dì"
|
||||
|
||||
#: js/ui/calendar.js:862
|
||||
#: js/ui/calendar.js:869
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d di %B"
|
||||
|
||||
#: js/ui/calendar.js:866
|
||||
#: js/ui/calendar.js:873
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d di %B dal %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1093
|
||||
msgid "No Notifications"
|
||||
msgstr "Nissune notifiche"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1096
|
||||
msgid "No Events"
|
||||
msgstr "Nissun event"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1124
|
||||
msgid "Clear All"
|
||||
msgstr "Nete dut"
|
||||
|
||||
@@ -831,7 +831,7 @@ msgstr "Dispositîf esterni tacât"
|
||||
msgid "External drive disconnected"
|
||||
msgstr "Dispositîf esterni distacât"
|
||||
|
||||
#: js/ui/components/autorunManager.js:354
|
||||
#: js/ui/components/autorunManager.js:358
|
||||
#, javascript-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Vierç cun %s"
|
||||
@@ -968,7 +968,7 @@ msgstr "Dash"
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: js/ui/dateMenu.js:75
|
||||
#: js/ui/dateMenu.js:76
|
||||
msgid "%B %e %Y"
|
||||
msgstr "%e di %B dal %Y"
|
||||
|
||||
@@ -976,19 +976,19 @@ msgstr "%e di %B dal %Y"
|
||||
#. * below the time in the shell; it should combine the weekday and the
|
||||
#. * date, e.g. "Tuesday February 17 2015".
|
||||
#.
|
||||
#: js/ui/dateMenu.js:82
|
||||
#: js/ui/dateMenu.js:83
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%A %e di %B dal %Y"
|
||||
|
||||
#: js/ui/dateMenu.js:144
|
||||
#: js/ui/dateMenu.js:145
|
||||
msgid "Add world clocks…"
|
||||
msgstr "Zonte orlois mondiâi..."
|
||||
|
||||
#: js/ui/dateMenu.js:145
|
||||
#: js/ui/dateMenu.js:146
|
||||
msgid "World Clocks"
|
||||
msgstr "Orlois mondiâi"
|
||||
|
||||
#: js/ui/dateMenu.js:224
|
||||
#: js/ui/dateMenu.js:225
|
||||
msgid "Weather"
|
||||
msgstr "Timp"
|
||||
|
||||
@@ -996,7 +996,7 @@ msgstr "Timp"
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:286
|
||||
#: js/ui/dateMenu.js:289
|
||||
#, javascript-format
|
||||
msgid "%s all day."
|
||||
msgstr "%s dut il dì."
|
||||
@@ -1005,7 +1005,7 @@ msgstr "%s dut il dì."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:292
|
||||
#: js/ui/dateMenu.js:295
|
||||
#, javascript-format
|
||||
msgid "%s, then %s later."
|
||||
msgstr "%s, plui tart %s."
|
||||
@@ -1014,30 +1014,30 @@ msgstr "%s, plui tart %s."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:298
|
||||
#: js/ui/dateMenu.js:301
|
||||
#, javascript-format
|
||||
msgid "%s, then %s, followed by %s later."
|
||||
msgstr "%s, chi di un pôc %s, e plui tart %s."
|
||||
|
||||
#: js/ui/dateMenu.js:309
|
||||
#: js/ui/dateMenu.js:312
|
||||
msgid "Select a location…"
|
||||
msgstr "Selezione une posizion..."
|
||||
|
||||
#: js/ui/dateMenu.js:312
|
||||
#: js/ui/dateMenu.js:315
|
||||
msgid "Loading…"
|
||||
msgstr "Daûr a cjariâ..."
|
||||
|
||||
#. Translators: %s is a temperature with unit, e.g. "23℃"
|
||||
#: js/ui/dateMenu.js:318
|
||||
#: js/ui/dateMenu.js:321
|
||||
#, javascript-format
|
||||
msgid "Feels like %s."
|
||||
msgstr "Si sint %s."
|
||||
|
||||
#: js/ui/dateMenu.js:321
|
||||
#: js/ui/dateMenu.js:324
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Va in rêt pes informazions sul timp"
|
||||
|
||||
#: js/ui/dateMenu.js:323
|
||||
#: js/ui/dateMenu.js:326
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Lis informazions sul timp al moment no son disponibilis"
|
||||
|
||||
@@ -1276,7 +1276,7 @@ msgstr "Viôt sorzint"
|
||||
msgid "Web Page"
|
||||
msgstr "Pagjine Web"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1494
|
||||
msgid "System Information"
|
||||
msgstr "Informazion di sisteme"
|
||||
|
||||
@@ -1449,12 +1449,11 @@ msgstr "Nissun risultât."
|
||||
|
||||
# o ancjemò %d
|
||||
#: js/ui/search.js:777
|
||||
#, fuzzy, javascript-format
|
||||
#| msgid "%d more"
|
||||
#, javascript-format
|
||||
msgid "%d more"
|
||||
msgid_plural "%d more"
|
||||
msgstr[0] "Ancjemò %d"
|
||||
msgstr[1] "Ancjemò %d"
|
||||
msgstr[0] "%d altri"
|
||||
msgstr[1] "%d altris"
|
||||
|
||||
#: js/ui/shellEntry.js:25
|
||||
msgid "Copy"
|
||||
|
96
po/nl.po
96
po/nl.po
@@ -15,8 +15,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-s"
|
||||
"hell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-31 02:16+0000\n"
|
||||
"PO-Revision-Date: 2017-09-01 10:25+0100\n"
|
||||
"POT-Creation-Date: 2017-10-23 10:13+0000\n"
|
||||
"PO-Revision-Date: 2017-10-25 10:55+0100\n"
|
||||
"Last-Translator: Hannie Dumoleyn <hannie@ubuntu-nl.org>\n"
|
||||
"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
|
||||
"Language: nl\n"
|
||||
@@ -71,16 +71,16 @@ msgstr "Vensterbeheer en toepassingen starten"
|
||||
#: data/org.gnome.shell.gschema.xml.in:6
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
"Interne hulpprogramma's inschakelen die nuttig zijn voor ontwikkwlaars en"
|
||||
" testers via Alt-F2"
|
||||
"Interne hulpprogramma's inschakelen die nuttig zijn voor ontwikkwlaars en "
|
||||
"testers via Alt-F2"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:9
|
||||
msgid ""
|
||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||
"dialog."
|
||||
msgstr ""
|
||||
"Geeft toegang tot interne debugging- en observatieprogramma's met behulp van"
|
||||
" het Alt-F2-dialoogvenster."
|
||||
"Geeft toegang tot interne debugging- en observatieprogramma's met behulp van "
|
||||
"het Alt-F2-dialoogvenster."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:16
|
||||
msgid "UUIDs of extensions to enable"
|
||||
@@ -107,8 +107,8 @@ msgid ""
|
||||
"Disable all extensions the user has enabled without affecting the “enabled-"
|
||||
"extension” setting."
|
||||
msgstr ""
|
||||
"Schakel alle door de gebruiker ingeschakelde uitbreidingen uit, zonder de"
|
||||
" instelling ‘enabled-extension’ te wijzigen."
|
||||
"Schakel alle door de gebruiker ingeschakelde uitbreidingen uit, zonder de "
|
||||
"instelling ‘enabled-extension’ te wijzigen."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:34
|
||||
msgid "Disables the validation of extension version compatibility"
|
||||
@@ -122,8 +122,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Gnome Shell zal alleen uitbreidingen laden die aangeven de huidige versie te "
|
||||
"ondersteunen. Door deze optie in te schakelen wordt deze controle "
|
||||
"overgeslagen en worden alle uitbreidingen geladen, ongeacht de versies die ze"
|
||||
" zouden moeten ondersteunen."
|
||||
"overgeslagen en worden alle uitbreidingen geladen, ongeacht de versies die "
|
||||
"ze zouden moeten ondersteunen."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:43
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
@@ -134,8 +134,8 @@ msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"De toepassingen die aan deze identifiers voldoen worden in het"
|
||||
" favorietengebied weergegeven."
|
||||
"De toepassingen die aan deze identifiers voldoen worden in het "
|
||||
"favorietengebied weergegeven."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:51
|
||||
msgid "App Picker View"
|
||||
@@ -171,8 +171,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr ""
|
||||
"Of wachtwoorden voor versleutelde bestandssystemen of bestandssystemen op"
|
||||
" afstand onthouden moeten worden"
|
||||
"Of wachtwoorden voor versleutelde bestandssystemen of bestandssystemen op "
|
||||
"afstand onthouden moeten worden"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:76
|
||||
msgid ""
|
||||
@@ -310,8 +310,8 @@ msgstr "Deze waarde overschrijft de waarde in org.gnome.mutter in Gnome Shell."
|
||||
#: data/org.gnome.shell.gschema.xml.in:206
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Vensters langs de randen positioneren bij verslepen naar de rand van het"
|
||||
" scherm"
|
||||
"Vensters langs de randen positioneren bij verslepen naar de rand van het "
|
||||
"scherm"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:214
|
||||
msgid "Workspaces are managed dynamically"
|
||||
@@ -755,51 +755,51 @@ msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "Z"
|
||||
|
||||
#: js/ui/calendar.js:442
|
||||
#: js/ui/calendar.js:449
|
||||
msgid "Previous month"
|
||||
msgstr "Vorige maand"
|
||||
|
||||
#: js/ui/calendar.js:452
|
||||
#: js/ui/calendar.js:459
|
||||
msgid "Next month"
|
||||
msgstr "Volgende maand"
|
||||
|
||||
#: js/ui/calendar.js:605
|
||||
#: js/ui/calendar.js:612
|
||||
#, no-javascript-format
|
||||
msgctxt "date day number format"
|
||||
msgid "%d"
|
||||
msgstr "%d"
|
||||
|
||||
#: js/ui/calendar.js:660
|
||||
#: js/ui/calendar.js:667
|
||||
msgid "Week %V"
|
||||
msgstr "Week %V"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#.
|
||||
#: js/ui/calendar.js:729
|
||||
#: js/ui/calendar.js:736
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Gehele dag"
|
||||
|
||||
#: js/ui/calendar.js:862
|
||||
#: js/ui/calendar.js:869
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%a %d %B"
|
||||
|
||||
#: js/ui/calendar.js:866
|
||||
#: js/ui/calendar.js:873
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%a %d %B %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1093
|
||||
msgid "No Notifications"
|
||||
msgstr "Geen notificaties"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1096
|
||||
msgid "No Events"
|
||||
msgstr "Geen gebeurtenissen"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1124
|
||||
msgid "Clear All"
|
||||
msgstr "Alles wissen"
|
||||
|
||||
@@ -814,8 +814,8 @@ msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"U kan even wachten tot de toepassing weer reageert, of ze dwingen"
|
||||
" onmiddellijk af te sluiten."
|
||||
"U kan even wachten tot de toepassing weer reageert, of ze dwingen "
|
||||
"onmiddellijk af te sluiten."
|
||||
|
||||
#: js/ui/closeDialog.js:61
|
||||
msgid "Force Quit"
|
||||
@@ -833,7 +833,7 @@ msgstr "Verbinding met externe schijf gemaakt"
|
||||
msgid "External drive disconnected"
|
||||
msgstr "Verbinding met externe schijf verbroken"
|
||||
|
||||
#: js/ui/components/autorunManager.js:354
|
||||
#: js/ui/components/autorunManager.js:358
|
||||
#, javascript-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Openen met %s"
|
||||
@@ -972,7 +972,7 @@ msgstr "Zijbalk"
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: js/ui/dateMenu.js:75
|
||||
#: js/ui/dateMenu.js:76
|
||||
msgid "%B %e %Y"
|
||||
msgstr "%e %B %Y"
|
||||
|
||||
@@ -980,19 +980,19 @@ msgstr "%e %B %Y"
|
||||
#. * below the time in the shell; it should combine the weekday and the
|
||||
#. * date, e.g. "Tuesday February 17 2015".
|
||||
#.
|
||||
#: js/ui/dateMenu.js:82
|
||||
#: js/ui/dateMenu.js:83
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%A %e %B %Y"
|
||||
|
||||
#: js/ui/dateMenu.js:144
|
||||
#: js/ui/dateMenu.js:145
|
||||
msgid "Add world clocks…"
|
||||
msgstr "Wereldklokken toevoegen…"
|
||||
|
||||
#: js/ui/dateMenu.js:145
|
||||
#: js/ui/dateMenu.js:146
|
||||
msgid "World Clocks"
|
||||
msgstr "Wereldklokken"
|
||||
|
||||
#: js/ui/dateMenu.js:224
|
||||
#: js/ui/dateMenu.js:225
|
||||
msgid "Weather"
|
||||
msgstr "Weer"
|
||||
|
||||
@@ -1000,7 +1000,7 @@ msgstr "Weer"
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:286
|
||||
#: js/ui/dateMenu.js:289
|
||||
#, javascript-format
|
||||
msgid "%s all day."
|
||||
msgstr "De hele dag %s."
|
||||
@@ -1009,7 +1009,7 @@ msgstr "De hele dag %s."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:292
|
||||
#: js/ui/dateMenu.js:295
|
||||
#, javascript-format
|
||||
msgid "%s, then %s later."
|
||||
msgstr "%s, daarna %s."
|
||||
@@ -1018,30 +1018,30 @@ msgstr "%s, daarna %s."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:298
|
||||
#: js/ui/dateMenu.js:301
|
||||
#, javascript-format
|
||||
msgid "%s, then %s, followed by %s later."
|
||||
msgstr "%s, daarna %s, gevolgd door %s."
|
||||
|
||||
#: js/ui/dateMenu.js:309
|
||||
#: js/ui/dateMenu.js:312
|
||||
msgid "Select a location…"
|
||||
msgstr "Selecteer een locatie…"
|
||||
|
||||
#: js/ui/dateMenu.js:312
|
||||
#: js/ui/dateMenu.js:315
|
||||
msgid "Loading…"
|
||||
msgstr "Laden…"
|
||||
|
||||
#. Translators: %s is a temperature with unit, e.g. "23℃"
|
||||
#: js/ui/dateMenu.js:318
|
||||
#: js/ui/dateMenu.js:321
|
||||
#, javascript-format
|
||||
msgid "Feels like %s."
|
||||
msgstr "Voelt aan als %s."
|
||||
|
||||
#: js/ui/dateMenu.js:321
|
||||
#: js/ui/dateMenu.js:324
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Ga online voor informatie over het weer"
|
||||
|
||||
#: js/ui/dateMenu.js:323
|
||||
#: js/ui/dateMenu.js:326
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Informatie over het weer is momenteel niet beschikbaar"
|
||||
|
||||
@@ -1278,7 +1278,7 @@ msgstr "Broncode weergeven"
|
||||
msgid "Web Page"
|
||||
msgstr "Webpagina"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1494
|
||||
msgid "System Information"
|
||||
msgstr "Systeeminformatie"
|
||||
|
||||
@@ -1369,7 +1369,7 @@ msgstr "Systeem"
|
||||
|
||||
#: js/ui/panel.js:812
|
||||
msgid "Top Bar"
|
||||
msgstr "Bovenbalk"
|
||||
msgstr "Menubalk"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
@@ -2042,19 +2042,19 @@ msgstr "Evolution-agenda"
|
||||
msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
#: src/main.c:380
|
||||
#: src/main.c:429
|
||||
msgid "Print version"
|
||||
msgstr "Versie weergeven"
|
||||
|
||||
#: src/main.c:386
|
||||
#: src/main.c:435
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "De modus die door GDM voor het aanmeldscherm gebruikt wordt"
|
||||
|
||||
#: src/main.c:392
|
||||
#: src/main.c:441
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "Specifieke modus gebruiken, bijv. “gdm” voor het aanmeldscherm"
|
||||
|
||||
#: src/main.c:398
|
||||
#: src/main.c:447
|
||||
msgid "List possible modes"
|
||||
msgstr "Mogelijke modi tonen"
|
||||
|
||||
|
64
po/sl.po
64
po/sl.po
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-28 19:35+0200\n"
|
||||
"PO-Revision-Date: 2017-08-28 19:38+0200\n"
|
||||
"PO-Revision-Date: 2017-10-14 20:09+0200\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: sl\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
||||
"%100==4 ? 3 : 0);\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Generator: Poedit 2.0.1\n"
|
||||
"X-Generator: Poedit 2.0.4\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
msgid "System"
|
||||
@@ -363,7 +363,7 @@ msgstr "Izbor seje"
|
||||
#. manually entering the username.
|
||||
#: js/gdm/loginDialog.js:458
|
||||
msgid "Not listed?"
|
||||
msgstr "Ali je ni na seznamu?"
|
||||
msgstr "Ali uporabniškega imena ni na seznamu?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
@@ -665,12 +665,12 @@ msgstr "Dodaj med priljubljene"
|
||||
msgid "Show Details"
|
||||
msgstr "Pokaži besedilo"
|
||||
|
||||
#: js/ui/appFavorites.js:140
|
||||
#: js/ui/appFavorites.js:141
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "Program »%s« je dodan med priljubljeno."
|
||||
|
||||
#: js/ui/appFavorites.js:174
|
||||
#: js/ui/appFavorites.js:175
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "Program »%s« je odstranjen iz priljubljenih."
|
||||
@@ -759,51 +759,51 @@ msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
#: js/ui/calendar.js:442
|
||||
#: js/ui/calendar.js:449
|
||||
msgid "Previous month"
|
||||
msgstr "Predhodni mesec"
|
||||
|
||||
#: js/ui/calendar.js:452
|
||||
#: js/ui/calendar.js:459
|
||||
msgid "Next month"
|
||||
msgstr "Naslednji mesec"
|
||||
|
||||
#: js/ui/calendar.js:605
|
||||
#: js/ui/calendar.js:612
|
||||
#, no-javascript-format
|
||||
msgctxt "date day number format"
|
||||
msgid "%d"
|
||||
msgstr "%d"
|
||||
|
||||
#: js/ui/calendar.js:660
|
||||
#: js/ui/calendar.js:667
|
||||
msgid "Week %V"
|
||||
msgstr "Teden %V"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#.
|
||||
#: js/ui/calendar.js:729
|
||||
#: js/ui/calendar.js:736
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Celodnevno"
|
||||
|
||||
#: js/ui/calendar.js:862
|
||||
#: js/ui/calendar.js:869
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %m."
|
||||
|
||||
#: js/ui/calendar.js:866
|
||||
#: js/ui/calendar.js:873
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d %B %Y"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
#: js/ui/calendar.js:1093
|
||||
msgid "No Notifications"
|
||||
msgstr "Ni obvestil"
|
||||
|
||||
#: js/ui/calendar.js:1089
|
||||
#: js/ui/calendar.js:1096
|
||||
msgid "No Events"
|
||||
msgstr "Ni dogodkov"
|
||||
|
||||
#: js/ui/calendar.js:1117
|
||||
#: js/ui/calendar.js:1124
|
||||
msgid "Clear All"
|
||||
msgstr "Počisti vse"
|
||||
|
||||
@@ -837,7 +837,7 @@ msgstr "Zunanji pogon je priklopljen"
|
||||
msgid "External drive disconnected"
|
||||
msgstr "Zunanji pogon je odklopljen"
|
||||
|
||||
#: js/ui/components/autorunManager.js:354
|
||||
#: js/ui/components/autorunManager.js:358
|
||||
#, javascript-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Odpri s programom %s"
|
||||
@@ -914,7 +914,7 @@ msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN."
|
||||
|
||||
#: js/ui/components/networkAgent.js:313
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
msgstr "Koda PIN: "
|
||||
|
||||
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
|
||||
msgid "Mobile broadband network password"
|
||||
@@ -974,7 +974,7 @@ msgstr "Pregledna plošča"
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: js/ui/dateMenu.js:75
|
||||
#: js/ui/dateMenu.js:76
|
||||
msgid "%B %e %Y"
|
||||
msgstr "%B %e %Y"
|
||||
|
||||
@@ -982,19 +982,19 @@ msgstr "%B %e %Y"
|
||||
#. * below the time in the shell; it should combine the weekday and the
|
||||
#. * date, e.g. "Tuesday February 17 2015".
|
||||
#.
|
||||
#: js/ui/dateMenu.js:82
|
||||
#: js/ui/dateMenu.js:83
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%A %B %e %Y"
|
||||
|
||||
#: js/ui/dateMenu.js:144
|
||||
#: js/ui/dateMenu.js:145
|
||||
msgid "Add world clocks…"
|
||||
msgstr "Dodaj svetovni čas ..."
|
||||
|
||||
#: js/ui/dateMenu.js:145
|
||||
#: js/ui/dateMenu.js:146
|
||||
msgid "World Clocks"
|
||||
msgstr "Svetovni časi"
|
||||
|
||||
#: js/ui/dateMenu.js:224
|
||||
#: js/ui/dateMenu.js:225
|
||||
msgid "Weather"
|
||||
msgstr "Vreme"
|
||||
|
||||
@@ -1002,7 +1002,7 @@ msgstr "Vreme"
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:286
|
||||
#: js/ui/dateMenu.js:289
|
||||
#, javascript-format
|
||||
msgid "%s all day."
|
||||
msgstr "%s – ves dan."
|
||||
@@ -1011,7 +1011,7 @@ msgstr "%s – ves dan."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:292
|
||||
#: js/ui/dateMenu.js:295
|
||||
#, javascript-format
|
||||
msgid "%s, then %s later."
|
||||
msgstr "%s, sledi %s."
|
||||
@@ -1020,30 +1020,30 @@ msgstr "%s, sledi %s."
|
||||
#. libgweather for the possible condition strings. If at all
|
||||
#. possible, the sentence should match the grammatical case etc. of
|
||||
#. the inserted conditions.
|
||||
#: js/ui/dateMenu.js:298
|
||||
#: js/ui/dateMenu.js:301
|
||||
#, javascript-format
|
||||
msgid "%s, then %s, followed by %s later."
|
||||
msgstr "%s, sledi %s, kasneje tudi %s."
|
||||
|
||||
#: js/ui/dateMenu.js:309
|
||||
#: js/ui/dateMenu.js:312
|
||||
msgid "Select a location…"
|
||||
msgstr "Izbor mesta ..."
|
||||
|
||||
#: js/ui/dateMenu.js:312
|
||||
#: js/ui/dateMenu.js:315
|
||||
msgid "Loading…"
|
||||
msgstr "Poteka nalaganje ..."
|
||||
|
||||
#. Translators: %s is a temperature with unit, e.g. "23℃"
|
||||
#: js/ui/dateMenu.js:318
|
||||
#: js/ui/dateMenu.js:321
|
||||
#, javascript-format
|
||||
msgid "Feels like %s."
|
||||
msgstr "Občuti se kot %s."
|
||||
|
||||
#: js/ui/dateMenu.js:321
|
||||
#: js/ui/dateMenu.js:324
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Preglej splet za podrobnosti o vremenu."
|
||||
|
||||
#: js/ui/dateMenu.js:323
|
||||
#: js/ui/dateMenu.js:326
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Podatki o vremenu trenutno niso na voljo."
|
||||
|
||||
@@ -1293,7 +1293,7 @@ msgstr "Poglej vir"
|
||||
msgid "Web Page"
|
||||
msgstr "Spletna stran"
|
||||
|
||||
#: js/ui/messageTray.js:1493
|
||||
#: js/ui/messageTray.js:1494
|
||||
msgid "System Information"
|
||||
msgstr "Podrobnosti sistema"
|
||||
|
||||
@@ -1951,7 +1951,7 @@ msgstr "Le vgrajeno"
|
||||
|
||||
#: js/ui/unlockDialog.js:67
|
||||
msgid "Log in as another user"
|
||||
msgstr "Prijava kot drug uporabnik"
|
||||
msgstr "Prijavi z drugim uporabniškim imenom"
|
||||
|
||||
#: js/ui/unlockDialog.js:84
|
||||
msgid "Unlock Window"
|
||||
|
10
po/sv.po
10
po/sv.po
@@ -12,16 +12,16 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-09-08 09:41+0000\n"
|
||||
"PO-Revision-Date: 2017-09-09 13:07+0200\n"
|
||||
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-09-09 11:09+0000\n"
|
||||
"PO-Revision-Date: 2017-10-02 20:48+0200\n"
|
||||
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||
"Language: sv\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: Poedit 2.0.3\n"
|
||||
"X-Generator: Poedit 2.0.4\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
msgid "System"
|
||||
@@ -1983,7 +1983,7 @@ msgstr "Ändra storlek"
|
||||
|
||||
#: js/ui/windowMenu.js:65
|
||||
msgid "Move Titlebar Onscreen"
|
||||
msgstr "Flytta titelrad på skärm"
|
||||
msgstr "Flytta namnlist på skärm"
|
||||
|
||||
#: js/ui/windowMenu.js:70
|
||||
msgid "Always on Top"
|
||||
|
24
po/zh_TW.po
24
po/zh_TW.po
@@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell 3.3.90\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
|
||||
"PO-Revision-Date: 2017-08-27 13:31+0800\n"
|
||||
"POT-Creation-Date: 2017-08-27 05:39+0000\n"
|
||||
"PO-Revision-Date: 2017-10-01 22:25+0800\n"
|
||||
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
|
||||
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
|
||||
"Language: zh_TW\n"
|
||||
@@ -413,7 +413,6 @@ msgstr "暫停"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:123
|
||||
#| msgid "Suspend"
|
||||
msgid "suspend;sleep"
|
||||
msgstr "suspend;sleep;暫停;睡眠"
|
||||
|
||||
@@ -425,7 +424,6 @@ msgstr "切換使用者"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:130
|
||||
#| msgid "Switch User"
|
||||
msgid "switch user"
|
||||
msgstr "switch user;切換使用者"
|
||||
|
||||
@@ -524,7 +522,7 @@ msgstr "%A %H∶%M"
|
||||
#: js/misc/util.js:246
|
||||
#, no-c-format
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%b月%d日 %H∶%M"
|
||||
msgstr "%b%d日 %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
@@ -532,7 +530,7 @@ msgstr "%b月%d日 %H∶%M"
|
||||
#: js/misc/util.js:252
|
||||
#, no-c-format
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%Y年%b月%d日 %H:%M"
|
||||
msgstr "%Y年%b%d日 %H:%M"
|
||||
|
||||
#. Translators: Time in 12h format
|
||||
#: js/misc/util.js:257
|
||||
@@ -559,7 +557,7 @@ msgstr "%A%p %l∶%M"
|
||||
#: js/misc/util.js:275
|
||||
#, no-c-format
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%b月%d日%p %l∶%M"
|
||||
msgstr "%b%d日%p %l∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
@@ -567,7 +565,7 @@ msgstr "%b月%d日%p %l∶%M"
|
||||
#: js/misc/util.js:281
|
||||
#, no-c-format
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%Y年%b月%d日%p %l∶%M"
|
||||
msgstr "%Y年%b%d日%p %l∶%M"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login window
|
||||
#: js/portalHelper/main.js:66
|
||||
@@ -747,12 +745,12 @@ msgstr "整天"
|
||||
#: js/ui/calendar.js:862
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%b月%d日%A"
|
||||
msgstr "%b%d日%A"
|
||||
|
||||
#: js/ui/calendar.js:866
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%Y年%b月%d日%A"
|
||||
msgstr "%Y年%b%d日%A"
|
||||
|
||||
#: js/ui/calendar.js:1086
|
||||
msgid "No Notifications"
|
||||
@@ -931,7 +929,7 @@ msgstr "Dash"
|
||||
#.
|
||||
#: js/ui/dateMenu.js:75
|
||||
msgid "%B %e %Y"
|
||||
msgstr "%Y年%b月%e日"
|
||||
msgstr "%Y年%b%e日"
|
||||
|
||||
#. Translators: This is the accessible name of the date button shown
|
||||
#. * below the time in the shell; it should combine the weekday and the
|
||||
@@ -939,7 +937,7 @@ msgstr "%Y年%b月%e日"
|
||||
#.
|
||||
#: js/ui/dateMenu.js:82
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%Y年%b月%e日%A"
|
||||
msgstr "%Y年%b%e日%A"
|
||||
|
||||
#: js/ui/dateMenu.js:144
|
||||
msgid "Add world clocks…"
|
||||
@@ -1347,7 +1345,7 @@ msgstr "重新啟動…"
|
||||
#. long format
|
||||
#: js/ui/screenShield.js:88
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%b月%d日%A"
|
||||
msgstr "%b%d日%A"
|
||||
|
||||
#: js/ui/screenShield.js:147
|
||||
#, javascript-format
|
||||
|
70
src/main.c
70
src/main.c
@@ -38,14 +38,17 @@ extern GType gnome_shell_plugin_get_type (void);
|
||||
|
||||
static gboolean is_gdm_mode = FALSE;
|
||||
static char *session_mode = NULL;
|
||||
static int caught_signal = 0;
|
||||
|
||||
#define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1
|
||||
#define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4
|
||||
|
||||
enum {
|
||||
SHELL_DEBUG_BACKTRACE_WARNINGS = 1,
|
||||
SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2,
|
||||
};
|
||||
static int _shell_debug;
|
||||
static gboolean _tracked_signals[NSIG] = { 0 };
|
||||
|
||||
static void
|
||||
shell_dbus_acquire_name (GDBusProxy *bus,
|
||||
@@ -290,7 +293,8 @@ static void
|
||||
shell_init_debug (const char *debug_env)
|
||||
{
|
||||
static const GDebugKey keys[] = {
|
||||
{ "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS }
|
||||
{ "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS },
|
||||
{ "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
|
||||
};
|
||||
|
||||
_shell_debug = g_parse_debug_string (debug_env, keys,
|
||||
@@ -328,6 +332,59 @@ shut_up (const char *domain,
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
dump_gjs_stack_alarm_sigaction (int signo)
|
||||
{
|
||||
g_log_set_default_handler (g_log_default_handler, NULL);
|
||||
g_warning ("Failed to dump Javascript stack, got stuck");
|
||||
g_log_set_default_handler (default_log_handler, NULL);
|
||||
|
||||
raise (caught_signal);
|
||||
}
|
||||
|
||||
static void
|
||||
dump_gjs_stack_on_signal_handler (int signo)
|
||||
{
|
||||
struct sigaction sa = { 0 };
|
||||
gsize i;
|
||||
|
||||
/* Ignore all the signals starting this point, a part the one we'll raise
|
||||
* (which is implicitly ignored here through SA_RESETHAND), this is needed
|
||||
* not to get this handler being called by other signals that we were
|
||||
* tracking and that might be emitted by code called starting from now.
|
||||
*/
|
||||
for (i = 0; i < G_N_ELEMENTS (_tracked_signals); ++i)
|
||||
{
|
||||
if (_tracked_signals[i] && i != signo)
|
||||
signal (i, SIG_IGN);
|
||||
}
|
||||
|
||||
/* Waiting at least 5 seconds for the dumpstack, if it fails, we raise the error */
|
||||
caught_signal = signo;
|
||||
sa.sa_handler = dump_gjs_stack_alarm_sigaction;
|
||||
sigemptyset (&sa.sa_mask);
|
||||
sigaction (SIGALRM, &sa, NULL);
|
||||
|
||||
alarm (5);
|
||||
gjs_dumpstack ();
|
||||
alarm (0);
|
||||
|
||||
raise (signo);
|
||||
}
|
||||
|
||||
static void
|
||||
dump_gjs_stack_on_signal (int signo)
|
||||
{
|
||||
struct sigaction sa = { 0 };
|
||||
|
||||
sa.sa_flags = SA_RESETHAND | SA_NODEFER;
|
||||
sa.sa_handler = dump_gjs_stack_on_signal_handler;
|
||||
sigemptyset (&sa.sa_mask);
|
||||
|
||||
sigaction (signo, &sa, NULL);
|
||||
_tracked_signals[signo] = TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
list_modes (const char *option_name,
|
||||
const char *value,
|
||||
@@ -459,6 +516,17 @@ main (int argc, char **argv)
|
||||
|
||||
shell_prefs_init ();
|
||||
|
||||
dump_gjs_stack_on_signal (SIGABRT);
|
||||
dump_gjs_stack_on_signal (SIGFPE);
|
||||
dump_gjs_stack_on_signal (SIGIOT);
|
||||
dump_gjs_stack_on_signal (SIGTRAP);
|
||||
|
||||
if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS))
|
||||
{
|
||||
dump_gjs_stack_on_signal (SIGBUS);
|
||||
dump_gjs_stack_on_signal (SIGSEGV);
|
||||
}
|
||||
|
||||
ecode = meta_run ();
|
||||
|
||||
g_debug ("Doing final cleanup");
|
||||
|
@@ -37,7 +37,6 @@ gnome_shell_cflags = [
|
||||
'-DGNOME_SHELL_PKGLIBDIR="@0@"'.format(pkglibdir)
|
||||
]
|
||||
|
||||
rpath_link_args = ['-Wl,-rpath', mutter_typelibdir]
|
||||
install_rpath = ':'.join([mutter_typelibdir, pkglibdir])
|
||||
|
||||
gnome_shell_deps = [
|
||||
@@ -81,7 +80,7 @@ libshell_menu = library('gnome-shell-menu',
|
||||
sources: libshell_menu_gir_sources + libshell_menu_no_gir_sources,
|
||||
dependencies: [gio_dep, clutter_dep],
|
||||
include_directories: conf_inc,
|
||||
link_args: rpath_link_args,
|
||||
build_rpath: mutter_typelibdir,
|
||||
install_rpath: mutter_typelibdir,
|
||||
install_dir: pkglibdir,
|
||||
install: true
|
||||
@@ -183,10 +182,8 @@ if enable_recorder
|
||||
endif
|
||||
|
||||
|
||||
libshell_enums = gnome.mkenums('shell-enum-types',
|
||||
sources: libshell_public_headers,
|
||||
c_template: 'shell-enum-types.c.in',
|
||||
h_template: 'shell-enum-types.h.in'
|
||||
libshell_enums = gnome.mkenums_simple('shell-enum-types',
|
||||
sources: libshell_public_headers
|
||||
)
|
||||
|
||||
libshell_gir_sources = [
|
||||
@@ -214,7 +211,7 @@ libshell = library('gnome-shell',
|
||||
include_directories: [conf_inc, st_inc, include_directories('tray')],
|
||||
c_args: gnome_shell_cflags,
|
||||
link_with: [libtray],
|
||||
link_args: rpath_link_args,
|
||||
build_rpath: mutter_typelibdir,
|
||||
install_rpath: install_rpath,
|
||||
install_dir: pkglibdir,
|
||||
install: true
|
||||
@@ -256,7 +253,7 @@ executable('gnome-shell', 'main.c',
|
||||
],
|
||||
dependencies: gnome_shell_deps + [libshell_dep, libst_dep, mutter_dep],
|
||||
include_directories: [conf_inc, st_inc, include_directories('tray')],
|
||||
link_args: rpath_link_args,
|
||||
build_rpath: mutter_typelibdir,
|
||||
install_rpath: install_rpath,
|
||||
install: true
|
||||
)
|
||||
@@ -266,7 +263,7 @@ executable('gnome-shell-extension-prefs',
|
||||
c_args: gnome_shell_cflags,
|
||||
dependencies: gnome_shell_deps,
|
||||
include_directories: [conf_inc],
|
||||
link_args: rpath_link_args,
|
||||
build_rpath: mutter_typelibdir,
|
||||
install_rpath: install_rpath,
|
||||
install: true
|
||||
)
|
||||
@@ -278,7 +275,7 @@ if have_networkmanager
|
||||
c_args: gnome_shell_cflags,
|
||||
dependencies: gnome_shell_deps,
|
||||
include_directories: [conf_inc],
|
||||
link_args: rpath_link_args,
|
||||
build_rpath: mutter_typelibdir,
|
||||
install_rpath: install_rpath,
|
||||
install_dir: libexecdir,
|
||||
install: true
|
||||
@@ -288,7 +285,7 @@ endif
|
||||
executable('gnome-shell-perf-helper', 'shell-perf-helper.c',
|
||||
dependencies: [gtk_dep, gio_dep, m_dep],
|
||||
include_directories: [conf_inc],
|
||||
link_args: rpath_link_args,
|
||||
build_rpath: mutter_typelibdir,
|
||||
install_rpath: install_rpath,
|
||||
install_dir: libexecdir,
|
||||
install: true
|
||||
@@ -298,5 +295,5 @@ executable('run-js-test', 'run-js-test.c',
|
||||
dependencies: [mutter_dep, gio_dep, gjs_dep],
|
||||
include_directories: [conf_inc],
|
||||
link_with: libshell,
|
||||
link_args: rpath_link_args
|
||||
build_rpath: mutter_typelibdir,
|
||||
)
|
||||
|
@@ -1067,16 +1067,10 @@ _shell_app_remove_window (ShellApp *app,
|
||||
|
||||
if (!meta_window_is_skip_taskbar (window))
|
||||
app->running_state->interesting_windows--;
|
||||
shell_app_sync_running_state (app);
|
||||
|
||||
if (app->running_state->windows == NULL)
|
||||
{
|
||||
g_clear_pointer (&app->running_state, unref_running_state);
|
||||
shell_app_state_transition (app, SHELL_APP_STATE_STOPPED);
|
||||
}
|
||||
else
|
||||
{
|
||||
shell_app_sync_running_state (app);
|
||||
}
|
||||
g_clear_pointer (&app->running_state, unref_running_state);
|
||||
|
||||
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
||||
}
|
||||
@@ -1196,6 +1190,14 @@ app_child_setup (gpointer user_data)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
wait_pid (GDesktopAppInfo *appinfo,
|
||||
GPid pid,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_child_watch_add (pid, (GChildWatchFunc) g_spawn_close_pid, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_launch:
|
||||
* @timestamp: Event timestamp, or 0 for current event timestamp
|
||||
@@ -1234,13 +1236,13 @@ shell_app_launch (ShellApp *app,
|
||||
|
||||
ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL,
|
||||
context,
|
||||
G_SPAWN_SEARCH_PATH,
|
||||
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
|
||||
#ifdef HAVE_SYSTEMD
|
||||
app_child_setup, (gpointer)shell_app_get_id (app),
|
||||
#else
|
||||
NULL, NULL,
|
||||
#endif
|
||||
NULL, NULL,
|
||||
wait_pid, NULL,
|
||||
error);
|
||||
g_object_unref (context);
|
||||
|
||||
|
@@ -1,30 +0,0 @@
|
||||
/*** BEGIN file-header ***/
|
||||
#include "shell-enum-types.h"
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
/* enumerations from "@filename@" */
|
||||
#include "@filename@"
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN value-header ***/
|
||||
GType
|
||||
@enum_name@_get_type(void) {
|
||||
static GType enum_type_id = 0;
|
||||
if (G_UNLIKELY (!enum_type_id))
|
||||
{
|
||||
static const G@Type@Value values[] = {
|
||||
/*** END value-header ***/
|
||||
|
||||
/*** BEGIN value-production ***/
|
||||
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
|
||||
/*** END value-production ***/
|
||||
|
||||
/*** BEGIN value-tail ***/
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
enum_type_id = g_@type@_register_static("@EnumName@", values);
|
||||
}
|
||||
return enum_type_id;
|
||||
}
|
||||
/*** END value-tail ***/
|
@@ -1,25 +0,0 @@
|
||||
/*** BEGIN file-header ***/
|
||||
#ifndef __SHELL_ENUM_TYPES_H__
|
||||
#define __SHELL_ENUM_TYPES_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
/* enumerations from "@filename@" */
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN file-tail ***/
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* !__SHELL_ENUM_TYPES_H__ */
|
||||
/*** END file-tail ***/
|
||||
|
||||
/*** BEGIN value-header ***/
|
||||
GType @enum_name@_get_type (void) G_GNUC_CONST;
|
||||
#define SHELL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
|
||||
|
||||
/*** END value-header ***/
|
@@ -124,13 +124,14 @@ shell_gtk_embed_on_window_mapped (GtkWidget *object,
|
||||
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
|
||||
MetaDisplay *display = shell_global_get_display (shell_global_get ());
|
||||
|
||||
/* Listen for new windows so we can detect when Mutter has
|
||||
created a MutterWindow for this window */
|
||||
priv->window_created_handler =
|
||||
g_signal_connect (display,
|
||||
"window-created",
|
||||
G_CALLBACK (shell_gtk_embed_window_created_cb),
|
||||
embed);
|
||||
if (priv->window_created_handler == 0 && priv->window_actor == NULL)
|
||||
/* Listen for new windows so we can detect when Mutter has
|
||||
created a MutterWindow for this window */
|
||||
priv->window_created_handler =
|
||||
g_signal_connect (display,
|
||||
"window-created",
|
||||
G_CALLBACK (shell_gtk_embed_window_created_cb),
|
||||
embed);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -82,10 +82,12 @@ st_sources = [
|
||||
'st-widget.c'
|
||||
]
|
||||
|
||||
st_enums = gnome.mkenums('st-enum-types',
|
||||
st_enums = gnome.mkenums_simple('st-enum-types',
|
||||
sources: st_headers,
|
||||
c_template: 'st-enum-types.c.in',
|
||||
h_template: 'st-enum-types.h.in'
|
||||
header_prefix: '''
|
||||
#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION)
|
||||
#error "Only <st/st.h> can be included directly.h"
|
||||
#endif'''
|
||||
)
|
||||
|
||||
st_gir_sources = st_sources + st_private_headers + st_headers + st_enums
|
||||
|
@@ -1106,7 +1106,7 @@ st_entry_get_text (StEntry *entry)
|
||||
g_return_val_if_fail (ST_IS_ENTRY (entry), NULL);
|
||||
|
||||
priv = st_entry_get_instance_private (entry);
|
||||
if (clutter_actor_is_visible (priv->hint_actor))
|
||||
if (priv->hint_actor != NULL && clutter_actor_is_visible (priv->hint_actor))
|
||||
return "";
|
||||
else
|
||||
return clutter_text_get_text (CLUTTER_TEXT (priv->entry));
|
||||
|
@@ -1,33 +0,0 @@
|
||||
/*** BEGIN file-header ***/
|
||||
#ifndef ST_COMPILATION
|
||||
#define ST_COMPILATION
|
||||
#endif
|
||||
#include "st-enum-types.h"
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
/* enumerations from "@filename@" */
|
||||
#include "@filename@"
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN value-header ***/
|
||||
GType
|
||||
@enum_name@_get_type(void) {
|
||||
static GType enum_type_id = 0;
|
||||
if (G_UNLIKELY (!enum_type_id))
|
||||
{
|
||||
static const G@Type@Value values[] = {
|
||||
/*** END value-header ***/
|
||||
|
||||
/*** BEGIN value-production ***/
|
||||
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
|
||||
/*** END value-production ***/
|
||||
|
||||
/*** BEGIN value-tail ***/
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
enum_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
||||
}
|
||||
return enum_type_id;
|
||||
}
|
||||
/*** END value-tail ***/
|
@@ -1,29 +0,0 @@
|
||||
/*** BEGIN file-header ***/
|
||||
#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION)
|
||||
#error "Only <st/st.h> can be included directly.h"
|
||||
#endif
|
||||
|
||||
#ifndef __ST_ENUM_TYPES_H__
|
||||
#define __ST_ENUM_TYPES_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
/* enumerations from "@filename@" */
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN file-tail ***/
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* !__ST_ENUM_TYPES_H__ */
|
||||
/*** END file-tail ***/
|
||||
|
||||
/*** BEGIN value-header ***/
|
||||
GType @enum_name@_get_type (void) G_GNUC_CONST;
|
||||
#define ST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
|
||||
|
||||
/*** END value-header ***/
|
@@ -275,14 +275,7 @@ st_icon_update_shadow_pipeline (StIcon *icon)
|
||||
g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
|
||||
|
||||
if (priv->shadow_spec)
|
||||
{
|
||||
gint width, height;
|
||||
|
||||
clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->icon_texture),
|
||||
&width, &height);
|
||||
|
||||
priv->shadow_pipeline = _st_create_shadow_pipeline_from_actor (priv->shadow_spec, priv->icon_texture);
|
||||
}
|
||||
priv->shadow_pipeline = _st_create_shadow_pipeline_from_actor (priv->shadow_spec, priv->icon_texture);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -414,31 +414,34 @@ _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
|
||||
ClutterActor *actor)
|
||||
{
|
||||
CoglPipeline *shadow_pipeline = NULL;
|
||||
ClutterActorBox box;
|
||||
float width, height;
|
||||
|
||||
clutter_actor_get_allocation_box (actor, &box);
|
||||
clutter_actor_box_get_size (&box, &width, &height);
|
||||
|
||||
if (width == 0 || height == 0)
|
||||
return NULL;
|
||||
|
||||
if (CLUTTER_IS_TEXTURE (actor))
|
||||
{
|
||||
CoglTexture *texture;
|
||||
|
||||
texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor));
|
||||
if (texture)
|
||||
if (texture &&
|
||||
cogl_texture_get_width (texture) == width &&
|
||||
cogl_texture_get_height (texture) == height)
|
||||
shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, texture);
|
||||
}
|
||||
else
|
||||
|
||||
if (shadow_pipeline == NULL)
|
||||
{
|
||||
CoglTexture *buffer;
|
||||
CoglOffscreen *offscreen;
|
||||
CoglFramebuffer *fb;
|
||||
ClutterActorBox box;
|
||||
CoglColor clear_color;
|
||||
float width, height;
|
||||
CoglError *catch_error = NULL;
|
||||
|
||||
clutter_actor_get_allocation_box (actor, &box);
|
||||
clutter_actor_box_get_size (&box, &width, &height);
|
||||
|
||||
if (width == 0 || height == 0)
|
||||
return NULL;
|
||||
|
||||
buffer = cogl_texture_new_with_size (width,
|
||||
height,
|
||||
COGL_TEXTURE_NO_SLICING,
|
||||
|
@@ -1,8 +1,18 @@
|
||||
testconf = configuration_data()
|
||||
testconf.set('MUTTER_TYPELIB_DIR', mutter_typelibdir)
|
||||
testconf.set('srcdir', meson.current_source_dir())
|
||||
configure_file(
|
||||
run_test = configure_file(
|
||||
input: 'run-test.sh.in',
|
||||
output: 'run-test.sh',
|
||||
configuration: testconf
|
||||
)
|
||||
|
||||
testenv = environment()
|
||||
testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
|
||||
|
||||
foreach test : ['insertSorted', 'jsParse', 'markup', 'url']
|
||||
test(test, run_test,
|
||||
args: 'unit/@0@.js'.format(test),
|
||||
env: testenv,
|
||||
workdir: meson.current_source_dir())
|
||||
endforeach
|
||||
|
@@ -176,7 +176,7 @@ for (let i = 0; i < testsModifyScope.length; i++) {
|
||||
|
||||
let matches = text.match(/(.*)\.(.*)/);
|
||||
if (matches) {
|
||||
[expr, base, attrHead] = matches;
|
||||
let [expr, base, attrHead] = matches;
|
||||
|
||||
if (!JsParse.isUnsafeExpression(base)) {
|
||||
with (obj) {
|
||||
|
@@ -1,26 +0,0 @@
|
||||
#!/usr/bin/python3
|
||||
#
|
||||
# This is a simple script that we use to check for files in git
|
||||
# and not in the distribution. It was previously written in shell
|
||||
# and inlined in the Makefile.am, but 'git ls-files --exclude=<pattern>'
|
||||
# was changed to no longer do anything useful, which made that
|
||||
# too challenging to be worthwhile.
|
||||
|
||||
import fnmatch, os, subprocess, sys
|
||||
|
||||
srcdir=sys.argv[1]
|
||||
distdir=sys.argv[2]
|
||||
excludes=sys.argv[3:]
|
||||
|
||||
cwd=os.getcwd()
|
||||
os.chdir(srcdir)
|
||||
|
||||
status=0
|
||||
for f in subprocess.Popen(["git", "ls-files"], stdout=subprocess.PIPE).stdout:
|
||||
f = f.decode('utf-8').strip()
|
||||
if (not os.path.exists(os.path.join(cwd, distdir, f)) and
|
||||
not any((fnmatch.fnmatch(f, p) for p in excludes))):
|
||||
print("File missing from distribution:", f)
|
||||
status=1
|
||||
|
||||
sys.exit(status)
|
Reference in New Issue
Block a user