Compare commits
73 Commits
wip/nielsd
...
issue369
Author | SHA1 | Date | |
---|---|---|---|
bb6d9734e4 | |||
53be76c9e2 | |||
be40de5a9b | |||
7359e431d3 | |||
8a5de327bb | |||
1778adae0d | |||
0d035a4e53 | |||
46874eed05 | |||
e95f3febd6 | |||
0bdd1b6fc4 | |||
8a22092632 | |||
915415d919 | |||
14d7897a93 | |||
1398aa6562 | |||
8fcd6c7153 | |||
6ed5bc2f6c | |||
5ec4c2e43e | |||
6f8dd065a4 | |||
02db21fc55 | |||
8c28f9a77d | |||
95b80eec01 | |||
02c76695e5 | |||
d5a1a888d9 | |||
6c33aff6d1 | |||
61f86cbc54 | |||
4c5206954a | |||
8fda3116f0 | |||
7ac35c644e | |||
29b04fcbf2 | |||
55235c2552 | |||
f250643385 | |||
d008c6c5c5 | |||
e2e02c9a2f | |||
e56d7f5021 | |||
e7d44bb349 | |||
321730fcb9 | |||
fe83cd91bb | |||
0b08ee54bb | |||
f6b4b96737 | |||
b87455c089 | |||
2c1a81f448 | |||
b3736f45e6 | |||
3c382c4bbe | |||
5f3bad9c94 | |||
6970f43e66 | |||
9476aa598a | |||
69725e5d41 | |||
42dabef8c7 | |||
e10a768ddb | |||
a8f0787c91 | |||
074129682b | |||
c67460a1e3 | |||
eab320dab5 | |||
04c7cb6fbe | |||
d4582491f5 | |||
0641b1e279 | |||
ae0450b68e | |||
cb0a5de83b | |||
2f5086efaf | |||
68e580e394 | |||
b143869d5d | |||
6a477be874 | |||
03bb8cdcbd | |||
8864816b94 | |||
751cd2f1c1 | |||
6f6b6fb9d6 | |||
fe346b89f0 | |||
0744c6af2e | |||
2e070ab834 | |||
00f9b7bf69 | |||
94ba52af0c | |||
44e1a6ce06 | |||
ccf646f54a |
27
NEWS
27
NEWS
@ -1,3 +1,30 @@
|
||||
3.33.3
|
||||
======
|
||||
* Prepare for optional X11 [Carlos; !378]
|
||||
* Fix opening window menu [Marco; !557]
|
||||
* Reload search providers when installed applications change [Cosimo; !562]
|
||||
* Implement locate-pointer accessibility feature [Olivier; #981]
|
||||
* Allow to disable window menus via session mode [Cosimo; !569]
|
||||
* Implement mouse accessibility [Olivier; !474]
|
||||
* Call GDM's RegisterSession() after startup [Iain; !570]
|
||||
* Fix extended keys popups being hidden by on-screen keyboard [Marco; !583]
|
||||
* Fix top bar being hidden by lock screen [Jonas; !571]
|
||||
* Update theme to better match GTK's Adwaita [Frederik; #841]
|
||||
* Set up GJS profiler when GJS_TRACE_FD is set [Christian; !573]
|
||||
* Misc. bug fixes and cleanups [Jonas, Cosimo, Robert, Florian, Marco, Simon,
|
||||
Laurent, Niels, Will; !551, !555, !464, #1333, !565, !572, !568, !558, #1205,
|
||||
#1336, !579, !576, #1392, !582, !586, #1406, #1351]
|
||||
|
||||
Contributors:
|
||||
Laurent Bigonville, Cosimo Cecchi, Piotr Drąg, Jonas Dreßler,
|
||||
Frederik Feichtmeier, Olivier Fourdan, Carlos Garnacho, Niels De Graef,
|
||||
Christian Hergert, Iain Lane, Robert Mader, Florian Müllner, Simon Schampijer,
|
||||
Jakub Steiner, Will Thompson, Marco Trevisan (Treviño)
|
||||
|
||||
Translators:
|
||||
Kukuh Syafaat [id], Balázs Meskó [hu], Daniel Mustieles [es],
|
||||
Fabio Tomat [fur], Nathan Follens [nl], Goran Vidović [hr], Jordi Mas [ca]
|
||||
|
||||
3.33.2
|
||||
======
|
||||
* Fix keeping actors visible in scrollviews [Marco; #1061]
|
||||
|
@ -25,9 +25,11 @@
|
||||
<file alias="icons/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
|
||||
<file alias="icons/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
|
||||
<file>process-working.svg</file>
|
||||
<file>toggle-off-intl.svg</file>
|
||||
<file>toggle-off.svg</file>
|
||||
<file>toggle-off-dark.svg</file>
|
||||
<file>toggle-off-hc.svg</file>
|
||||
<file>toggle-on-intl.svg</file>
|
||||
<file>toggle-on.svg</file>
|
||||
<file>toggle-on-dark.svg</file>
|
||||
<file>toggle-on-hc.svg</file>
|
||||
</gresource>
|
||||
</gresources>
|
||||
|
@ -99,7 +99,6 @@
|
||||
</description>
|
||||
</key>
|
||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
||||
</schema>
|
||||
|
||||
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
|
||||
@ -183,17 +182,6 @@
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
|
||||
gettext-domain="@GETTEXT_PACKAGE@">
|
||||
<key name="keyboard-type" type="s">
|
||||
<default>'touch'</default>
|
||||
<summary>Which keyboard to use</summary>
|
||||
<description>
|
||||
The type of keyboard to use.
|
||||
</description>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
<schema id="org.gnome.shell.app-switcher"
|
||||
path="/org/gnome/shell/app-switcher/"
|
||||
gettext-domain="@GETTEXT_PACKAGE@">
|
||||
|
@ -1,3 +1,5 @@
|
||||
$variant: 'light';
|
||||
|
||||
@import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors
|
||||
@import "gnome-shell-sass/_drawing";
|
||||
@import "gnome-shell-sass/_common";
|
||||
|
@ -3,11 +3,11 @@
|
||||
|
||||
|
||||
$base_color: if($variant == 'light', #ffffff, lighten(desaturate(#241f31, 20%), 2%));
|
||||
$bg_color: if($variant == 'light', #f6f5f4, desaturate(#3d3846, 10%));
|
||||
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
|
||||
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
|
||||
|
||||
$selected_fg_color: #ffffff;
|
||||
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 20%));
|
||||
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
|
||||
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
|
||||
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 10%));
|
||||
$borders_edge: if($variant == 'light', transparentize(white, 0.2), transparentize($fg_color, 0.93));
|
||||
@ -21,11 +21,15 @@ $success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
|
||||
$destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
|
||||
|
||||
$osd_fg_color: #eeeeec;
|
||||
$osd_bg_color: #2e3436;
|
||||
$osd_text_color: white;
|
||||
$osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
|
||||
$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
|
||||
$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
|
||||
$osd_borders_color: transparentize(black, 0.3);
|
||||
$osd_outer_borders_color: transparentize(white, 0.9);
|
||||
$osd_outer_borders_color: transparentize(white, 0.84);
|
||||
|
||||
$tooltip_borders_color: $osd_outer_borders_color;
|
||||
$shadow_color: transparentize(black, 0.9);
|
||||
|
||||
//insensitive state derived colors
|
||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -37,16 +37,13 @@
|
||||
// possible $t values:
|
||||
// normal, focus, insensitive
|
||||
//
|
||||
$_inner_shadows: inset 0 2px 4px transparentize(black, 0.6);
|
||||
|
||||
@if $t==normal {
|
||||
background-color: $base_color;
|
||||
border-color: $borders_color;
|
||||
@include _shadows($_inner_shadows);
|
||||
|
||||
}
|
||||
@if $t==focus {
|
||||
@include _shadows($_inner_shadows);
|
||||
border-color: if($fc==$selected_bg_color,
|
||||
$selected_borders_color,
|
||||
darken($fc,35%));
|
||||
@ -111,7 +108,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@mixin button($t, $c:$osd_bg_color, $tc:$fg_color, $edge: $borders_edge) {
|
||||
@mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge) {
|
||||
//
|
||||
// Button drawing function
|
||||
//
|
||||
@ -130,19 +127,17 @@
|
||||
$_hilight_color: _button_hilight_color($c);
|
||||
$_button_edge: if($edge == none, none, _widget_edge($edge));
|
||||
$_blank_edge: if($edge == none, none, _widget_edge(transparentize($edge,1)));
|
||||
|
||||
$_button_shadow: 0 1px 2px transparentize($shadow_color, 0.03);
|
||||
|
||||
@if $t==normal {
|
||||
//
|
||||
// normal button
|
||||
//
|
||||
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.5),
|
||||
$osd_bg_color);
|
||||
|
||||
color: $osd_fg_color;
|
||||
background-color: $_bg;
|
||||
border-color: $osd_borders_color;
|
||||
box-shadow: inset 0 1px lighten($osd_bg_color,10%);
|
||||
color: $tc;
|
||||
background-color: $c;
|
||||
border-color: $borders_color;
|
||||
box-shadow: $_button_shadow;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black;
|
||||
}
|
||||
@ -150,26 +145,21 @@
|
||||
//
|
||||
// focused button
|
||||
//
|
||||
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
|
||||
lighten($osd_bg_color,3%));
|
||||
|
||||
color: $osd_fg_color;
|
||||
color: $tc;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black;
|
||||
box-shadow: inset 0px 0px 0px 1px $selected_bg_color;
|
||||
box-shadow: inset 0px 0px 0px 2px $selected_bg_color;
|
||||
//border-color: $selected_bg_color;
|
||||
}
|
||||
|
||||
@else if $t==hover {
|
||||
//
|
||||
// active osd button
|
||||
//
|
||||
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
|
||||
lighten($osd_bg_color,3%));
|
||||
|
||||
color: white;
|
||||
border-color: $osd_borders_color;
|
||||
background-color: $_bg;
|
||||
box-shadow: inset 0 1px lighten($osd_bg_color,20%);
|
||||
color: $tc;
|
||||
border-color: $borders_color;
|
||||
background-color: $c;
|
||||
box-shadow: $_button_shadow;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black;
|
||||
|
||||
@ -178,27 +168,18 @@
|
||||
//
|
||||
// active osd button
|
||||
//
|
||||
$_bg: if($c!=$bg_color, $c, $osd_borders_color);
|
||||
|
||||
color: white;
|
||||
border-color: $osd_borders_color;
|
||||
background-color: $selected_bg_color;
|
||||
// This should be none, but it's creating some issues with borders, so to
|
||||
// workaround it for now, use inset wich goes through a different code path.
|
||||
// see https://bugzilla.gnome.org/show_bug.cgi?id=752934
|
||||
box-shadow: inset 0 0 black;
|
||||
color: $tc;
|
||||
border-color: $borders_color;
|
||||
background-color: $c;
|
||||
text-shadow: none;
|
||||
icon-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
@else if $t==insensitive {
|
||||
//
|
||||
// insensitive osd button
|
||||
//
|
||||
$_bg: transparentize(mix($insensitive_fg_color,$osd_bg_color,20%),0.3);
|
||||
|
||||
color: $insensitive_fg_color;
|
||||
border-color: $osd_borders_color;
|
||||
background-color: $_bg;
|
||||
border-color: $insensitive_borders_color;
|
||||
background-color: $insensitive_bg_color;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
icon-shadow: none;
|
||||
|
@ -26,6 +26,7 @@ $osd_borders_color: transparentize(black, 0.3);
|
||||
$osd_outer_borders_color: transparentize(white, 0.9);
|
||||
|
||||
$tooltip_borders_color: $osd_outer_borders_color;
|
||||
$shadow_color: transparentize(black, 0.9);
|
||||
|
||||
//insensitive state derived colors
|
||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||
|
1
data/theme/toggle-off-dark.svg
Normal file
1
data/theme/toggle-off-dark.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-42.76)"/></defs><g transform="translate(0 -291.18)" stroke-width="1.085"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#323233" stroke="#272728"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none" fill="url(#b)" stroke="#151515"/></g></svg>
|
After Width: | Height: | Size: 725 B |
@ -1,103 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="46"
|
||||
height="22"
|
||||
viewBox="0 0 46 22"
|
||||
version="1.1"
|
||||
id="svg2751"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
sodipodi:docname="toggle-off-intl.svg">
|
||||
<defs
|
||||
id="defs2745">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3329">
|
||||
<stop
|
||||
style="stop-color:#39393a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3325" />
|
||||
<stop
|
||||
style="stop-color:#302f30;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3327" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3329"
|
||||
id="linearGradient3331"
|
||||
x1="53"
|
||||
y1="294.42917"
|
||||
x2="53"
|
||||
y2="309.80417"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-42.760724)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#535353"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="-19.436775"
|
||||
inkscape:cy="-13.499723"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
showborder="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3298" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2748">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-291.17916)">
|
||||
<rect
|
||||
style="opacity:1;vector-effect:none;fill:#323233;fill-opacity:1;stroke:#272728;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
||||
id="rect3296"
|
||||
width="44.446434"
|
||||
height="20.910645"
|
||||
x="0.625"
|
||||
y="291.71494"
|
||||
rx="10.455324"
|
||||
ry="10.073335" />
|
||||
<rect
|
||||
ry="10.455322"
|
||||
rx="10.455322"
|
||||
y="291.71494"
|
||||
x="0.5428465"
|
||||
height="20.910645"
|
||||
width="21.142862"
|
||||
id="rect3300"
|
||||
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#151515;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 3.3 KiB |
1
data/theme/toggle-off.svg
Normal file
1
data/theme/toggle-off.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="46" height="22"><g transform="translate(0 -291.18)"><rect style="marker:none;font-variant-east_asian:normal" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#e1dedb" stroke="#cdc7c2" stroke-linecap="round" stroke-linejoin="round"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none;font-variant-east_asian:normal" fill="#f8f7f7" stroke="#aa9f98" stroke-linecap="round" stroke-linejoin="round"/><g transform="matrix(.97148 0 0 1 1658.914 -2552.91)" stroke-width="1.015" stroke-linecap="round" stroke-linejoin="round"><rect ry="13.17" rx="13.556" y="1234.681" x="-1242.732" height="26" width="49.409" style="marker:none" fill="#e1dedb" stroke="#cdc7c2"/><rect style="marker:none" width="26.763" height="26" x="-1242.732" y="1234.769" rx="13.511" ry="13.126" fill="#f8f7f7" stroke="#aa9f98"/></g><g transform="matrix(.97148 0 0 1 1658.914 -2512.91)" stroke-width="1.015" stroke="#2b73cc"><rect style="marker:none" width="49.409" height="26" x="-1242.732" y="1234.681" rx="13.556" ry="13.17" fill="#3081e3"/><rect ry="13.126" rx="13.511" y="1234.769" x="-1220.086" height="26" width="26.763" style="marker:none" fill="#f8f7f7" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>
|
After Width: | Height: | Size: 1.3 KiB |
1
data/theme/toggle-on-dark.svg
Normal file
1
data/theme/toggle-on-dark.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-19)"/></defs><g transform="translate(0 -291.18)" stroke="#030e1b" stroke-width="1.085"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#15539e"/><rect ry="10.455" rx="10.455" y="291.715" x="24.304" height="20.911" width="21.143" style="marker:none" fill="url(#b)"/></g></svg>
|
After Width: | Height: | Size: 707 B |
@ -1,103 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="46"
|
||||
height="22"
|
||||
viewBox="0 0 46 22"
|
||||
version="1.1"
|
||||
id="svg2751"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
sodipodi:docname="toggle-on-intl.svg">
|
||||
<defs
|
||||
id="defs2745">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3329">
|
||||
<stop
|
||||
style="stop-color:#39393a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3325" />
|
||||
<stop
|
||||
style="stop-color:#302f30;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3327" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3329"
|
||||
id="linearGradient3331"
|
||||
x1="53"
|
||||
y1="294.42917"
|
||||
x2="53"
|
||||
y2="309.80417"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-19)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#535353"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="13.588971"
|
||||
inkscape:cy="14.124546"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
showborder="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3298" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2748">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-291.17916)">
|
||||
<rect
|
||||
style="opacity:1;vector-effect:none;fill:#15539e;fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
||||
id="rect3296"
|
||||
width="44.446434"
|
||||
height="20.910645"
|
||||
x="0.625"
|
||||
y="291.71494"
|
||||
rx="10.455324"
|
||||
ry="10.073335" />
|
||||
<rect
|
||||
ry="10.455322"
|
||||
rx="10.455322"
|
||||
y="291.71494"
|
||||
x="24.30357"
|
||||
height="20.910645"
|
||||
width="21.142862"
|
||||
id="rect3300"
|
||||
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 3.3 KiB |
1
data/theme/toggle-on.svg
Normal file
1
data/theme/toggle-on.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="46" height="22"><g transform="translate(0 -291.18)" stroke="#2b73cc"><rect style="marker:none;font-variant-east_asian:normal" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#3081e3"/><rect ry="10.455" rx="10.455" y="291.715" x="24.304" height="20.911" width="21.143" style="marker:none;font-variant-east_asian:normal" fill="#f8f7f7" stroke-linecap="round" stroke-linejoin="round"/></g></svg>
|
After Width: | Height: | Size: 473 B |
@ -168,13 +168,20 @@ var Application = class {
|
||||
|
||||
copyButton.connect('clicked', w => {
|
||||
let clipboard = Gtk.Clipboard.get_default(w.get_display());
|
||||
let backticks = '```';
|
||||
clipboard.set_text(
|
||||
// markdown for pasting in gitlab issues
|
||||
`The settings of extension ${extension.uuid} had an error:\n${
|
||||
backticks}\n${exc}\n${backticks}\n\nStack trace:\n${
|
||||
backticks}\n${exc.stack}${backticks}\n`, -1
|
||||
);
|
||||
let lines = [
|
||||
`The settings of extension ${extension.uuid} had an error:`,
|
||||
'```',
|
||||
`${exc}`,
|
||||
'```',
|
||||
'',
|
||||
'Stack trace:',
|
||||
'```',
|
||||
exc.stack.replace(/\n$/, ''), // stack without trailing newline
|
||||
'```',
|
||||
''
|
||||
];
|
||||
clipboard.set_text(lines.join('\n'), -1);
|
||||
});
|
||||
|
||||
let spacing = new Gtk.SeparatorToolItem({ draw: false });
|
||||
@ -582,12 +589,12 @@ class ExtensionRow extends Gtk.ListBoxRow {
|
||||
|
||||
_isEnabled() {
|
||||
let extensions = this._settings.get_strv('enabled-extensions');
|
||||
return extensions.indexOf(this.uuid) != -1;
|
||||
return extensions.includes(this.uuid);
|
||||
}
|
||||
|
||||
_enable() {
|
||||
let extensions = this._settings.get_strv('enabled-extensions');
|
||||
if (extensions.indexOf(this.uuid) != -1)
|
||||
if (extensions.includes(this.uuid))
|
||||
return;
|
||||
|
||||
extensions.push(this.uuid);
|
||||
@ -611,12 +618,12 @@ function initEnvironment() {
|
||||
// Monkey-patch in a "global" object that fakes some Shell utilities
|
||||
// that ExtensionUtils depends on.
|
||||
window.global = {
|
||||
log() {
|
||||
print([].join.call(arguments, ', '));
|
||||
log(...args) {
|
||||
print(args.join(', '));
|
||||
},
|
||||
|
||||
logError(s) {
|
||||
log('ERROR: ' + s);
|
||||
log(`ERROR: ${s}`);
|
||||
},
|
||||
|
||||
userdatadir: GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell'])
|
||||
|
@ -138,7 +138,7 @@ var AuthPrompt = class {
|
||||
reactive: true,
|
||||
can_focus: true,
|
||||
label: _("Cancel") });
|
||||
this.cancelButton.connect('clicked', () => { this.cancel(); });
|
||||
this.cancelButton.connect('clicked', () => this.cancel());
|
||||
this._buttonBox.add(this.cancelButton,
|
||||
{ expand: false,
|
||||
x_fill: false,
|
||||
@ -157,7 +157,7 @@ var AuthPrompt = class {
|
||||
reactive: true,
|
||||
can_focus: true,
|
||||
label: _("Next") });
|
||||
this.nextButton.connect('clicked', () => { this.emit('next'); });
|
||||
this.nextButton.connect('clicked', () => this.emit('next'));
|
||||
this.nextButton.add_style_pseudo_class('default');
|
||||
this._buttonBox.add(this.nextButton,
|
||||
{ expand: false,
|
||||
@ -295,8 +295,7 @@ var AuthPrompt = class {
|
||||
time: DEFAULT_BUTTON_WELL_ANIMATION_TIME,
|
||||
delay: DEFAULT_BUTTON_WELL_ANIMATION_DELAY,
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
if (wasSpinner) {
|
||||
if (this._spinner)
|
||||
this._spinner.stop();
|
||||
|
@ -44,6 +44,7 @@
|
||||
* replaced by something else.
|
||||
*/
|
||||
|
||||
const { GObject } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
var Task = class {
|
||||
|
@ -24,7 +24,7 @@ function FprintManager() {
|
||||
try {
|
||||
self.init(null);
|
||||
} catch (e) {
|
||||
log('Failed to connect to Fprint service: ' + e.message);
|
||||
log(`Failed to connect to Fprint service: ${e.message}`);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -187,8 +187,6 @@ var UserList = class {
|
||||
}
|
||||
|
||||
updateStyle(isExpanded) {
|
||||
let tasks = [];
|
||||
|
||||
if (isExpanded)
|
||||
this._box.add_style_pseudo_class('expanded');
|
||||
else
|
||||
@ -261,7 +259,7 @@ var UserList = class {
|
||||
item.connect('activate', this._onItemActivated.bind(this));
|
||||
|
||||
// Try to keep the focused item front-and-center
|
||||
item.actor.connect('key-focus-in', () => { this.scrollToItem(item); });
|
||||
item.actor.connect('key-focus-in', () => this.scrollToItem(item));
|
||||
|
||||
this._moveFocusToItems();
|
||||
|
||||
@ -329,7 +327,7 @@ var SessionMenuButton = class {
|
||||
{ actionMode: Shell.ActionMode.NONE });
|
||||
this._manager.addMenu(this._menu);
|
||||
|
||||
this._button.connect('clicked', () => { this._menu.toggle(); });
|
||||
this._button.connect('clicked', () => this._menu.toggle());
|
||||
|
||||
this._items = {};
|
||||
this._activeSessionId = null;
|
||||
@ -403,18 +401,18 @@ var LoginDialog = GObject.registerClass({
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
parentActor.add_child(this);
|
||||
|
||||
this._userManager = AccountsService.UserManager.get_default()
|
||||
this._userManager = AccountsService.UserManager.get_default();
|
||||
this._gdmClient = new Gdm.Client();
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||
|
||||
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY,
|
||||
this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_KEY}`,
|
||||
this._updateBanner.bind(this));
|
||||
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_TEXT_KEY,
|
||||
this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_TEXT_KEY}`,
|
||||
this._updateBanner.bind(this));
|
||||
this._settings.connect('changed::' + GdmUtil.DISABLE_USER_LIST_KEY,
|
||||
this._settings.connect(`changed::${GdmUtil.DISABLE_USER_LIST_KEY}`,
|
||||
this._updateDisableUserList.bind(this));
|
||||
this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
|
||||
this._settings.connect(`changed::${GdmUtil.LOGO_KEY}`,
|
||||
this._updateLogo.bind(this));
|
||||
|
||||
this._textureCache = St.TextureCache.get_default();
|
||||
@ -575,19 +573,15 @@ var LoginDialog = GObject.registerClass({
|
||||
// First find out what space the children require
|
||||
let bannerAllocation = null;
|
||||
let bannerHeight = 0;
|
||||
let bannerWidth = 0;
|
||||
if (this._bannerView.visible) {
|
||||
bannerAllocation = this._getBannerAllocation(dialogBox, this._bannerView);
|
||||
bannerHeight = bannerAllocation.y2 - bannerAllocation.y1;
|
||||
bannerWidth = bannerAllocation.x2 - bannerAllocation.x1;
|
||||
}
|
||||
|
||||
let authPromptAllocation = null;
|
||||
let authPromptHeight = 0;
|
||||
let authPromptWidth = 0;
|
||||
if (this._authPrompt.actor.visible) {
|
||||
authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor);
|
||||
authPromptHeight = authPromptAllocation.y2 - authPromptAllocation.y1;
|
||||
authPromptWidth = authPromptAllocation.x2 - authPromptAllocation.x1;
|
||||
}
|
||||
|
||||
@ -919,7 +913,7 @@ var LoginDialog = GObject.registerClass({
|
||||
{ opacity: 255,
|
||||
time: _FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate() {
|
||||
onUpdate: () => {
|
||||
let children = Main.layoutManager.uiGroup.get_children();
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
@ -927,12 +921,10 @@ var LoginDialog = GObject.registerClass({
|
||||
children[i].opacity = this.opacity;
|
||||
}
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
this._authPrompt.reset();
|
||||
},
|
||||
onCompleteScope: this });
|
||||
} });
|
||||
}
|
||||
|
||||
_gotGreeterSessionProxy(proxy) {
|
||||
@ -949,7 +941,7 @@ var LoginDialog = GObject.registerClass({
|
||||
{ opacity: 0,
|
||||
time: _FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate() {
|
||||
onUpdate: () => {
|
||||
let children = Main.layoutManager.uiGroup.get_children();
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
@ -957,15 +949,13 @@ var LoginDialog = GObject.registerClass({
|
||||
children[i].opacity = this.opacity;
|
||||
}
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||
},
|
||||
onCompleteScope: this });
|
||||
} });
|
||||
}
|
||||
|
||||
_onSessionOpened(client, serviceName) {
|
||||
this._authPrompt.finish(() => { this._startSession(serviceName); });
|
||||
this._authPrompt.finish(() => this._startSession(serviceName));
|
||||
}
|
||||
|
||||
_waitForItemForUser(userName) {
|
||||
@ -983,7 +973,7 @@ var LoginDialog = GObject.registerClass({
|
||||
hold.release();
|
||||
});
|
||||
|
||||
hold.connect('release', () => { this._userList.disconnect(signalId); });
|
||||
hold.connect('release', () => this._userList.disconnect(signalId));
|
||||
|
||||
return hold;
|
||||
}
|
||||
@ -1047,6 +1037,7 @@ var LoginDialog = GObject.registerClass({
|
||||
return this._blockTimedLoginUntilIdle();
|
||||
} else {
|
||||
animationTime = delay;
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -19,7 +19,7 @@ var Manager = class {
|
||||
this._aggregateProvider = Provider(Gio.DBus.system,
|
||||
'org.freedesktop.realmd',
|
||||
'/org/freedesktop/realmd',
|
||||
this._reloadRealms.bind(this))
|
||||
this._reloadRealms.bind(this));
|
||||
this._realms = {};
|
||||
|
||||
this._signalId = this._aggregateProvider.connect('g-properties-changed',
|
||||
@ -36,7 +36,7 @@ var Manager = class {
|
||||
return;
|
||||
|
||||
for (let i = 0; i < realmPaths.length; i++) {
|
||||
let realm = Realm(Gio.DBus.system,
|
||||
Realm(Gio.DBus.system,
|
||||
'org.freedesktop.realmd',
|
||||
realmPaths[i],
|
||||
this._onRealmLoaded.bind(this));
|
||||
@ -98,10 +98,10 @@ var Manager = class {
|
||||
Service(Gio.DBus.system,
|
||||
'org.freedesktop.realmd',
|
||||
'/org/freedesktop/realmd',
|
||||
service => { service.ReleaseRemote(); });
|
||||
service => service.ReleaseRemote());
|
||||
this._aggregateProvider.disconnect(this._signalId);
|
||||
this._realms = { };
|
||||
this._updateLoginFormat();
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(Manager.prototype)
|
||||
Signals.addSignalMethods(Manager.prototype);
|
||||
|
@ -30,7 +30,7 @@ var LOGO_KEY = 'logo';
|
||||
var DISABLE_USER_LIST_KEY = 'disable-user-list';
|
||||
|
||||
// Give user 48ms to read each character of a PAM message
|
||||
var USER_READ_TIME = 48
|
||||
var USER_READ_TIME = 48;
|
||||
|
||||
var MessageType = {
|
||||
NONE: 0,
|
||||
@ -423,10 +423,7 @@ var ShellUserVerifier = class {
|
||||
_startService(serviceName) {
|
||||
this._hold.acquire();
|
||||
if (this._userName) {
|
||||
this._userVerifier.call_begin_verification_for_user(serviceName,
|
||||
this._userName,
|
||||
this._cancellable,
|
||||
(obj, result) => {
|
||||
this._userVerifier.call_begin_verification_for_user(serviceName, this._userName, this._cancellable, (obj, result) => {
|
||||
try {
|
||||
obj.call_begin_verification_for_user_finish(result);
|
||||
} catch (e) {
|
||||
@ -439,9 +436,7 @@ var ShellUserVerifier = class {
|
||||
this._hold.release();
|
||||
});
|
||||
} else {
|
||||
this._userVerifier.call_begin_verification(serviceName,
|
||||
this._cancellable,
|
||||
(obj, result) => {
|
||||
this._userVerifier.call_begin_verification(serviceName, this._cancellable, (obj, result) => {
|
||||
try {
|
||||
obj.call_begin_verification_finish(result);
|
||||
} catch (e) {
|
||||
|
@ -31,7 +31,7 @@ function getCurrentExtension() {
|
||||
// Search for an occurrence of an extension stack frame
|
||||
// Start at 1 because 0 is the stack frame of this function
|
||||
for (let i = 1; i < stack.length; i++) {
|
||||
if (stack[i].indexOf('/gnome-shell/extensions/') > -1) {
|
||||
if (stack[i].includes('/gnome-shell/extensions/')) {
|
||||
extensionStackLine = stack[i];
|
||||
break;
|
||||
}
|
||||
@ -162,8 +162,6 @@ function isOutOfDate(extension) {
|
||||
}
|
||||
|
||||
function createExtensionObject(uuid, dir, type) {
|
||||
let info;
|
||||
|
||||
let metadataFile = dir.get_child('metadata.json');
|
||||
if (!metadataFile.query_exists(null)) {
|
||||
throw new Error('Missing metadata.json');
|
||||
@ -175,25 +173,25 @@ function createExtensionObject(uuid, dir, type) {
|
||||
if (metadataContents instanceof Uint8Array)
|
||||
metadataContents = imports.byteArray.toString(metadataContents);
|
||||
} catch (e) {
|
||||
throw new Error('Failed to load metadata.json: ' + e);
|
||||
throw new Error(`Failed to load metadata.json: ${e}`);
|
||||
}
|
||||
let meta;
|
||||
try {
|
||||
meta = JSON.parse(metadataContents);
|
||||
} catch (e) {
|
||||
throw new Error('Failed to parse metadata.json: ' + e);
|
||||
throw new Error(`Failed to parse metadata.json: ${e}`);
|
||||
}
|
||||
|
||||
let requiredProperties = ['uuid', 'name', 'description', 'shell-version'];
|
||||
for (let i = 0; i < requiredProperties.length; i++) {
|
||||
let prop = requiredProperties[i];
|
||||
if (!meta[prop]) {
|
||||
throw new Error('missing "' + prop + '" property in metadata.json');
|
||||
throw new Error(`missing "${prop}" property in metadata.json`);
|
||||
}
|
||||
}
|
||||
|
||||
if (uuid != meta.uuid) {
|
||||
throw new Error('uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
|
||||
throw new Error(`uuid "${meta.uuid}" from metadata.json does not match directory name "${uuid}"`);
|
||||
}
|
||||
|
||||
let extension = {};
|
||||
|
@ -36,7 +36,7 @@ function recursivelyDeleteDir(dir, deleteParent) {
|
||||
let children = dir.enumerate_children('standard::name,standard::type',
|
||||
Gio.FileQueryInfoFlags.NONE, null);
|
||||
|
||||
let info, child;
|
||||
let info;
|
||||
while ((info = children.next_file(null)) != null) {
|
||||
let type = info.get_file_type();
|
||||
let child = dir.get_child(info.get_name());
|
||||
@ -57,7 +57,7 @@ function recursivelyMoveDir(srcDir, destDir) {
|
||||
if (!destDir.query_exists(null))
|
||||
destDir.make_directory_with_parents(null);
|
||||
|
||||
let info, child;
|
||||
let info;
|
||||
while ((info = children.next_file(null)) != null) {
|
||||
let type = info.get_file_type();
|
||||
let srcChild = srcDir.get_child(info.get_name());
|
||||
@ -86,11 +86,11 @@ function loadInterfaceXML(iface) {
|
||||
try {
|
||||
let [ok, bytes] = f.load_contents(null);
|
||||
if (bytes instanceof Uint8Array)
|
||||
xml = imports.byteArray.toString(bytes)
|
||||
xml = imports.byteArray.toString(bytes);
|
||||
else
|
||||
xml = bytes.toString();
|
||||
} catch (e) {
|
||||
log('Failed to load D-Bus interface ' + iface);
|
||||
log(`Failed to load D-Bus interface ${iface}`);
|
||||
}
|
||||
|
||||
return xml;
|
||||
|
@ -18,7 +18,7 @@ var HistoryManager = class {
|
||||
this._historyIndex = 0;
|
||||
if (this._key) {
|
||||
this._history = global.settings.get_strv(this._key);
|
||||
global.settings.connect('changed::' + this._key,
|
||||
global.settings.connect(`changed::${this._key}`,
|
||||
this._historyChanged.bind(this));
|
||||
|
||||
} else {
|
||||
|
@ -42,7 +42,7 @@ var IBusManager = class {
|
||||
this._candidatePopup = new IBusCandidatePopup.CandidatePopup();
|
||||
|
||||
this._panelService = null;
|
||||
this._engines = {};
|
||||
this._engines = new Map();
|
||||
this._ready = false;
|
||||
this._registerPropertiesId = 0;
|
||||
this._currentEngineName = null;
|
||||
@ -63,7 +63,7 @@ var IBusManager = class {
|
||||
Gio.Subprocess.new(['ibus-daemon', '--xim', '--panel', 'disable'],
|
||||
Gio.SubprocessFlags.NONE);
|
||||
} catch (e) {
|
||||
log('Failed to launch ibus-daemon: ' + e.message);
|
||||
log(`Failed to launch ibus-daemon: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,7 +73,7 @@ var IBusManager = class {
|
||||
|
||||
this._panelService = null;
|
||||
this._candidatePopup.setPanelService(null);
|
||||
this._engines = {};
|
||||
this._engines.clear();
|
||||
this._ready = false;
|
||||
this._registerPropertiesId = 0;
|
||||
this._currentEngineName = null;
|
||||
@ -96,7 +96,7 @@ var IBusManager = class {
|
||||
if (enginesList) {
|
||||
for (let i = 0; i < enginesList.length; ++i) {
|
||||
let name = enginesList[i].get_name();
|
||||
this._engines[name] = enginesList[i];
|
||||
this._engines.set(name, enginesList[i]);
|
||||
}
|
||||
this._updateReadiness();
|
||||
} else {
|
||||
@ -119,7 +119,7 @@ var IBusManager = class {
|
||||
if (!GLib.str_has_suffix(path, '/InputContext_1'))
|
||||
this.emit ('focus-in');
|
||||
});
|
||||
this._panelService.connect('focus-out', () => { this.emit('focus-out'); });
|
||||
this._panelService.connect('focus-out', () => this.emit('focus-out'));
|
||||
|
||||
try {
|
||||
// IBus versions older than 1.5.10 have a bug which
|
||||
@ -150,8 +150,7 @@ var IBusManager = class {
|
||||
}
|
||||
|
||||
_updateReadiness() {
|
||||
this._ready = (Object.keys(this._engines).length > 0 &&
|
||||
this._panelService != null);
|
||||
this._ready = this._engines.size > 0 && this._panelService != null;
|
||||
this.emit('ready', this._ready);
|
||||
}
|
||||
|
||||
@ -189,10 +188,10 @@ var IBusManager = class {
|
||||
}
|
||||
|
||||
getEngineDesc(id) {
|
||||
if (!this._ready || !this._engines.hasOwnProperty(id))
|
||||
if (!this._ready || !this._engines.has(id))
|
||||
return null;
|
||||
|
||||
return this._engines[id];
|
||||
return this._engines.get(id);
|
||||
}
|
||||
|
||||
setEngine(id, callback) {
|
||||
|
@ -74,7 +74,7 @@ class InputMethod extends Clutter.InputMethod {
|
||||
this._context = null;
|
||||
this._hints = 0;
|
||||
this._purpose = 0;
|
||||
this._preeditStr = ''
|
||||
this._preeditStr = '';
|
||||
this._preeditPos = 0;
|
||||
this._preeditVisible = false;
|
||||
}
|
||||
@ -262,7 +262,7 @@ class InputMethod extends Clutter.InputMethod {
|
||||
let retval = context.process_key_event_async_finish(res);
|
||||
this.notify_key_event(event, retval);
|
||||
} catch (e) {
|
||||
log('Error processing key on IM: ' + e.message);
|
||||
log(`Error processing key on IM: ${e.message}`);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
@ -51,7 +51,7 @@ function getCompletions(text, commandHeader, globalCompletionList) {
|
||||
// if we encounter anything that isn't a letter, '.', ')', or ']',
|
||||
// we should stop parsing.
|
||||
function isStopChar(c) {
|
||||
return !c.match(/[\w\.\)\]]/);
|
||||
return !c.match(/[\w.)\]]/);
|
||||
}
|
||||
|
||||
// Given the ending position of a quoted string, find where it starts
|
||||
@ -121,7 +121,7 @@ function getExpressionOffset(expr, offset) {
|
||||
return offset + 1;
|
||||
}
|
||||
|
||||
if (currChar.match(/[\)\]]/)) {
|
||||
if (currChar.match(/[)\]]/)) {
|
||||
offset = findMatchingBrace(expr, offset);
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ var KeyboardManager = class {
|
||||
|
||||
_getLocaleLayout() {
|
||||
let locale = GLib.get_language_names()[0];
|
||||
if (locale.indexOf('_') == -1)
|
||||
if (!locale.includes('_'))
|
||||
locale = DEFAULT_LOCALE;
|
||||
|
||||
let [found, , id] = GnomeDesktop.get_input_source_from_locale(locale);
|
||||
|
@ -26,33 +26,33 @@ function _getMobileProvidersDatabase() {
|
||||
}
|
||||
|
||||
// _findProviderForMccMnc:
|
||||
// @operator_name: operator name
|
||||
// @operator_code: operator code
|
||||
// @operatorName: operator name
|
||||
// @operatorCode: operator code
|
||||
//
|
||||
// Given an operator name string (which may not be a real operator name) and an
|
||||
// operator code string, tries to find a proper operator name to display.
|
||||
//
|
||||
function _findProviderForMccMnc(operator_name, operator_code) {
|
||||
if (operator_name) {
|
||||
if (operator_name.length != 0 &&
|
||||
(operator_name.length > 6 || operator_name.length < 5)) {
|
||||
function _findProviderForMccMnc(operatorName, operatorCode) {
|
||||
if (operatorName) {
|
||||
if (operatorName.length != 0 &&
|
||||
(operatorName.length > 6 || operatorName.length < 5)) {
|
||||
// this looks like a valid name, i.e. not an MCCMNC (that some
|
||||
// devices return when not yet connected
|
||||
return operator_name;
|
||||
return operatorName;
|
||||
}
|
||||
|
||||
if (isNaN(parseInt(operator_name))) {
|
||||
if (isNaN(parseInt(operatorName))) {
|
||||
// name is definitely not a MCCMNC, so it may be a name
|
||||
// after all; return that
|
||||
return operator_name;
|
||||
return operatorName;
|
||||
}
|
||||
}
|
||||
|
||||
let needle;
|
||||
if ((!operator_name || operator_name.length == 0) && operator_code)
|
||||
needle = operator_code;
|
||||
else if (operator_name && (operator_name.length == 6 || operator_name.length == 5))
|
||||
needle = operator_name;
|
||||
if ((!operatorName || operatorName.length == 0) && operatorCode)
|
||||
needle = operatorCode;
|
||||
else if (operatorName && (operatorName.length == 6 || operatorName.length == 5))
|
||||
needle = operatorName;
|
||||
else // nothing to search
|
||||
return null;
|
||||
|
||||
@ -173,7 +173,7 @@ var ModemCdma = class {
|
||||
} else {
|
||||
let [bandClass, band, sid] = result;
|
||||
|
||||
this.operator_name = _findProviderForSid(sid)
|
||||
this.operator_name = _findProviderForSid(sid);
|
||||
}
|
||||
this.emit('notify::operator-name');
|
||||
});
|
||||
@ -230,17 +230,17 @@ var BroadbandModem = class {
|
||||
}
|
||||
|
||||
_reloadOperatorName() {
|
||||
let new_name = "";
|
||||
let newName = "";
|
||||
if (this.operator_name_3gpp && this.operator_name_3gpp.length > 0)
|
||||
new_name += this.operator_name_3gpp;
|
||||
newName += this.operator_name_3gpp;
|
||||
|
||||
if (this.operator_name_cdma && this.operator_name_cdma.length > 0) {
|
||||
if (new_name != "")
|
||||
new_name += ", ";
|
||||
new_name += this.operator_name_cdma;
|
||||
if (newName != "")
|
||||
newName += ", ";
|
||||
newName += this.operator_name_cdma;
|
||||
}
|
||||
|
||||
this.operator_name = new_name;
|
||||
this.operator_name = newName;
|
||||
this.emit('notify::operator-name');
|
||||
}
|
||||
|
||||
|
@ -89,14 +89,11 @@ var ObjectManager = class {
|
||||
g_interface_info: info,
|
||||
g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START });
|
||||
|
||||
proxy.init_async(GLib.PRIORITY_DEFAULT,
|
||||
this._cancellable,
|
||||
(initable, result) => {
|
||||
let error = null;
|
||||
proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable, (initable, result) => {
|
||||
try {
|
||||
initable.init_finish(result);
|
||||
} catch (e) {
|
||||
logError(e, 'could not initialize proxy for interface ' + interfaceName);
|
||||
logError(e, `could not initialize proxy for interface ${interfaceName}`);
|
||||
|
||||
if (onFinished)
|
||||
onFinished();
|
||||
@ -155,11 +152,10 @@ var ObjectManager = class {
|
||||
}
|
||||
|
||||
_onManagerProxyLoaded(initable, result) {
|
||||
let error = null;
|
||||
try {
|
||||
initable.init_finish(result);
|
||||
} catch (e) {
|
||||
logError(e, 'could not initialize object manager for object ' + this._serviceName);
|
||||
logError(e, `could not initialize object manager for object ${this._serviceName}`);
|
||||
|
||||
this._tryToCompleteLoad();
|
||||
return;
|
||||
@ -197,7 +193,7 @@ var ObjectManager = class {
|
||||
this._managerProxy.GetManagedObjectsRemote((result, error) => {
|
||||
if (!result) {
|
||||
if (error) {
|
||||
logError(error, 'could not get remote objects for service ' + this._serviceName + ' path ' + this._managerPath);
|
||||
logError(error, `could not get remote objects for service ${this._serviceName} path ${this._managerPath}`);
|
||||
}
|
||||
|
||||
this._tryToCompleteLoad();
|
||||
|
@ -1,5 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Lang = imports.lang;
|
||||
|
||||
// parse:
|
||||
// @params: caller-provided parameter object, or %null
|
||||
// @defaults-provided defaults object
|
||||
@ -14,22 +16,14 @@
|
||||
//
|
||||
// Return value: a new object, containing the merged parameters from
|
||||
// @params and @defaults
|
||||
function parse(params, defaults, allowExtras) {
|
||||
let ret = {}, prop;
|
||||
|
||||
if (!params)
|
||||
params = {};
|
||||
|
||||
for (prop in params) {
|
||||
if (!(prop in defaults) && !allowExtras)
|
||||
throw new Error('Unrecognized parameter "' + prop + '"');
|
||||
ret[prop] = params[prop];
|
||||
function parse(params = {}, defaults, allowExtras) {
|
||||
if (!allowExtras) {
|
||||
for (let prop in params)
|
||||
if (!(prop in defaults))
|
||||
throw new Error(`Unrecognized parameter "${prop}"`);
|
||||
}
|
||||
|
||||
for (prop in defaults) {
|
||||
if (!(prop in params))
|
||||
ret[prop] = defaults[prop];
|
||||
}
|
||||
|
||||
return ret;
|
||||
let defaultsCopy = {};
|
||||
Lang.copyProperties(defaults, defaultsCopy);
|
||||
return Object.assign(defaultsCopy, params);
|
||||
}
|
@ -12,4 +12,4 @@ function PermissionStore(initCallback, cancellable) {
|
||||
'org.freedesktop.impl.portal.PermissionStore',
|
||||
'/org/freedesktop/impl/portal/PermissionStore',
|
||||
initCallback, cancellable);
|
||||
};
|
||||
}
|
||||
|
@ -83,48 +83,54 @@ const SystemActions = GObject.registerClass({
|
||||
this._canHaveSuspend = true;
|
||||
|
||||
this._actions = new Map();
|
||||
this._actions.set(POWER_OFF_ACTION_ID,
|
||||
{ // Translators: The name of the power-off action in search
|
||||
this._actions.set(POWER_OFF_ACTION_ID, {
|
||||
// Translators: The name of the power-off action in search
|
||||
name: C_("search-result", "Power Off"),
|
||||
iconName: 'system-shutdown-symbolic',
|
||||
// Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
keywords: _("power off;shutdown;reboot;restart").split(/[; ]/),
|
||||
available: false });
|
||||
this._actions.set(LOCK_SCREEN_ACTION_ID,
|
||||
{ // Translators: The name of the lock screen action in search
|
||||
available: false
|
||||
});
|
||||
this._actions.set(LOCK_SCREEN_ACTION_ID, {
|
||||
// Translators: The name of the lock screen action in search
|
||||
name: C_("search-result", "Lock Screen"),
|
||||
iconName: 'system-lock-screen-symbolic',
|
||||
// Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
keywords: _("lock screen").split(/[; ]/),
|
||||
available: false });
|
||||
this._actions.set(LOGOUT_ACTION_ID,
|
||||
{ // Translators: The name of the logout action in search
|
||||
available: false
|
||||
});
|
||||
this._actions.set(LOGOUT_ACTION_ID, {
|
||||
// Translators: The name of the logout action in search
|
||||
name: C_("search-result", "Log Out"),
|
||||
iconName: 'application-exit-symbolic',
|
||||
// Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
keywords: _("logout;log out;sign off").split(/[; ]/),
|
||||
available: false });
|
||||
this._actions.set(SUSPEND_ACTION_ID,
|
||||
{ // Translators: The name of the suspend action in search
|
||||
available: false
|
||||
});
|
||||
this._actions.set(SUSPEND_ACTION_ID, {
|
||||
// Translators: The name of the suspend action in search
|
||||
name: C_("search-result", "Suspend"),
|
||||
iconName: 'media-playback-pause-symbolic',
|
||||
// Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
keywords: _("suspend;sleep").split(/[; ]/),
|
||||
available: false });
|
||||
this._actions.set(SWITCH_USER_ACTION_ID,
|
||||
{ // Translators: The name of the switch user action in search
|
||||
available: false
|
||||
});
|
||||
this._actions.set(SWITCH_USER_ACTION_ID, {
|
||||
// Translators: The name of the switch user action in search
|
||||
name: C_("search-result", "Switch User"),
|
||||
iconName: 'system-switch-user-symbolic',
|
||||
// Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
keywords: _("switch user").split(/[; ]/),
|
||||
available: false });
|
||||
this._actions.set(LOCK_ORIENTATION_ACTION_ID,
|
||||
{ // Translators: The name of the lock orientation action in search
|
||||
available: false
|
||||
});
|
||||
this._actions.set(LOCK_ORIENTATION_ACTION_ID, {
|
||||
// Translators: The name of the lock orientation action in search
|
||||
name: C_("search-result", "Lock Orientation"),
|
||||
iconName: '',
|
||||
// Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
keywords: _("lock orientation;screen;rotation").split(/[; ]/),
|
||||
available: false });
|
||||
available: false
|
||||
});
|
||||
|
||||
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
|
||||
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
|
||||
@ -137,37 +143,39 @@ const SystemActions = GObject.registerClass({
|
||||
this._userManager = AccountsService.UserManager.get_default();
|
||||
|
||||
this._userManager.connect('notify::is-loaded',
|
||||
() => { this._updateMultiUser(); });
|
||||
() => this._updateMultiUser());
|
||||
this._userManager.connect('notify::has-multiple-users',
|
||||
() => { this._updateMultiUser(); });
|
||||
() => this._updateMultiUser());
|
||||
this._userManager.connect('user-added',
|
||||
() => { this._updateMultiUser(); });
|
||||
() => this._updateMultiUser());
|
||||
this._userManager.connect('user-removed',
|
||||
() => { this._updateMultiUser(); });
|
||||
() => this._updateMultiUser());
|
||||
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
|
||||
() => { this._updateSwitchUser(); });
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||
() => { this._updateLogout(); });
|
||||
global.settings.connect('changed::' + ALWAYS_SHOW_LOG_OUT_KEY,
|
||||
() => { this._updateLogout(); });
|
||||
this._lockdownSettings.connect(`changed::${DISABLE_USER_SWITCH_KEY}`,
|
||||
() => this._updateSwitchUser());
|
||||
this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`,
|
||||
() => this._updateLogout());
|
||||
global.settings.connect(`changed::${ALWAYS_SHOW_LOG_OUT_KEY}`,
|
||||
() => this._updateLogout());
|
||||
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
|
||||
() => { this._updateLockScreen(); });
|
||||
this._lockdownSettings.connect(`changed::${DISABLE_LOCK_SCREEN_KEY}`,
|
||||
() => this._updateLockScreen());
|
||||
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||
() => { this._updateHaveShutdown(); });
|
||||
this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`,
|
||||
() => this._updateHaveShutdown());
|
||||
|
||||
this.forceUpdate();
|
||||
|
||||
this._orientationSettings.connect('changed::orientation-lock',
|
||||
() => { this._updateOrientationLock();
|
||||
this._updateOrientationLockIcon(); });
|
||||
() => {
|
||||
this._updateOrientationLock();
|
||||
this._updateOrientationLockIcon();
|
||||
});
|
||||
Main.layoutManager.connect('monitors-changed',
|
||||
() => { this._updateOrientationLock(); });
|
||||
() => this._updateOrientationLock());
|
||||
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
|
||||
Gio.BusNameWatcherFlags.NONE,
|
||||
() => { this._sensorProxyAppeared(); },
|
||||
() => this._sensorProxyAppeared(),
|
||||
() => {
|
||||
this._sensorProxy = null;
|
||||
this._updateOrientationLock();
|
||||
@ -175,7 +183,7 @@ const SystemActions = GObject.registerClass({
|
||||
this._updateOrientationLock();
|
||||
this._updateOrientationLockIcon();
|
||||
|
||||
Main.sessionMode.connect('updated', () => { this._sessionUpdated(); });
|
||||
Main.sessionMode.connect('updated', () => this._sessionUpdated());
|
||||
this._sessionUpdated();
|
||||
}
|
||||
|
||||
@ -215,7 +223,7 @@ const SystemActions = GObject.registerClass({
|
||||
return;
|
||||
}
|
||||
this._sensorProxy.connect('g-properties-changed',
|
||||
() => { this._updateOrientationLock(); });
|
||||
() => this._updateOrientationLock());
|
||||
this._updateOrientationLock();
|
||||
});
|
||||
}
|
||||
@ -257,7 +265,7 @@ const SystemActions = GObject.registerClass({
|
||||
|
||||
getMatchingActions(terms) {
|
||||
// terms is a list of strings
|
||||
terms = terms.map((term) => { return term.toLowerCase(); });
|
||||
terms = terms.map((term) => term.toLowerCase());
|
||||
|
||||
let results = [];
|
||||
|
||||
|
@ -17,7 +17,7 @@ const _leadingJunk = '[\\s`(\\[{\'\\"<\u00AB\u201C\u2018]';
|
||||
const _notTrailingJunk = '[^\\s`!()\\[\\]{};:\'\\".,<>?\u00AB\u00BB\u201C\u201D\u2018\u2019]';
|
||||
|
||||
const _urlRegexp = new RegExp(
|
||||
'(^|' + _leadingJunk + ')' +
|
||||
`(^|${_leadingJunk})` +
|
||||
'(' +
|
||||
'(?:' +
|
||||
'(?:http|https|ftp)://' + // scheme://
|
||||
@ -29,12 +29,12 @@ const _urlRegexp = new RegExp(
|
||||
'(?:' + // one or more:
|
||||
'[^\\s()<>]+' + // run of non-space non-()
|
||||
'|' + // or
|
||||
_balancedParens + // balanced parens
|
||||
`${_balancedParens}` + // balanced parens
|
||||
')+' +
|
||||
'(?:' + // end with:
|
||||
_balancedParens + // balanced parens
|
||||
`${_balancedParens}` + // balanced parens
|
||||
'|' + // or
|
||||
_notTrailingJunk + // last non-junk char
|
||||
`${_notTrailingJunk}` + // last non-junk char
|
||||
')' +
|
||||
')', 'gi');
|
||||
|
||||
@ -69,16 +69,16 @@ function spawn(argv) {
|
||||
}
|
||||
|
||||
// spawnCommandLine:
|
||||
// @command_line: a command line
|
||||
// @commandLine: a command line
|
||||
//
|
||||
// Runs @command_line in the background, handling any errors that
|
||||
// Runs @commandLine in the background, handling any errors that
|
||||
// occur when trying to parse or start the program.
|
||||
function spawnCommandLine(command_line) {
|
||||
function spawnCommandLine(commandLine) {
|
||||
try {
|
||||
let [success, argv] = GLib.shell_parse_argv(command_line);
|
||||
let [success, argv] = GLib.shell_parse_argv(commandLine);
|
||||
trySpawn(argv);
|
||||
} catch (err) {
|
||||
_handleSpawnError(command_line, err);
|
||||
_handleSpawnError(commandLine, err);
|
||||
}
|
||||
}
|
||||
|
||||
@ -103,8 +103,7 @@ function spawnApp(argv) {
|
||||
//
|
||||
// Runs @argv in the background. If launching @argv fails,
|
||||
// this will throw an error.
|
||||
function trySpawn(argv)
|
||||
{
|
||||
function trySpawn(argv) {
|
||||
var success, pid;
|
||||
try {
|
||||
[success, pid] = GLib.spawn_async(null, argv, null,
|
||||
@ -135,19 +134,19 @@ function trySpawn(argv)
|
||||
}
|
||||
|
||||
// trySpawnCommandLine:
|
||||
// @command_line: a command line
|
||||
// @commandLine: a command line
|
||||
//
|
||||
// Runs @command_line in the background. If launching @command_line
|
||||
// Runs @commandLine in the background. If launching @commandLine
|
||||
// fails, this will throw an error.
|
||||
function trySpawnCommandLine(command_line) {
|
||||
function trySpawnCommandLine(commandLine) {
|
||||
let success, argv;
|
||||
|
||||
try {
|
||||
[success, argv] = GLib.shell_parse_argv(command_line);
|
||||
[success, argv] = GLib.shell_parse_argv(commandLine);
|
||||
} catch (err) {
|
||||
// Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
// something nicer
|
||||
err.message = err.message.replace(/[^:]*: /, _("Could not parse command:") + "\n");
|
||||
err.message = err.message.replace(/[^:]*: /, `${_("Could not parse command:")}\n`);
|
||||
throw err;
|
||||
}
|
||||
|
||||
@ -289,7 +288,7 @@ function createTimeLabel(date, params) {
|
||||
let id = _desktopSettings.connect('changed::clock-format', () => {
|
||||
label.text = formatTime(date, params);
|
||||
});
|
||||
label.connect('destroy', () => { _desktopSettings.disconnect(id); });
|
||||
label.connect('destroy', () => _desktopSettings.disconnect(id));
|
||||
return label;
|
||||
}
|
||||
|
||||
@ -380,7 +379,7 @@ class CloseButton extends St.Button {
|
||||
let themeNode = this.get_theme_node();
|
||||
|
||||
let offY = this._computeBoxPointerOffset();
|
||||
this.translation_x = themeNode.get_length('-shell-close-overlap-x')
|
||||
this.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
||||
this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
|
||||
}
|
||||
|
||||
@ -467,7 +466,7 @@ var AppSettingsMonitor = class {
|
||||
if (!this._settings || handler.id > 0)
|
||||
return;
|
||||
|
||||
handler.id = this._settings.connect('changed::' + handler.key,
|
||||
handler.id = this._settings.connect(`changed::${handler.key}`,
|
||||
handler.callback);
|
||||
handler.callback(this._settings, handler.key);
|
||||
}
|
||||
@ -493,13 +492,13 @@ var AppSettingsMonitor = class {
|
||||
}
|
||||
|
||||
_setSettings(settings) {
|
||||
this._handlers.forEach((handler) => { this._disconnectHandler(handler); });
|
||||
this._handlers.forEach((handler) => this._disconnectHandler(handler));
|
||||
|
||||
let hadSettings = (this._settings != null);
|
||||
this._settings = settings;
|
||||
let haveSettings = (this._settings != null);
|
||||
|
||||
this._handlers.forEach((handler) => { this._connectHandler(handler); });
|
||||
this._handlers.forEach((handler) => this._connectHandler(handler));
|
||||
|
||||
if (hadSettings != haveSettings)
|
||||
this.emit('available-changed');
|
||||
|
@ -26,7 +26,7 @@ var WeatherClient = class {
|
||||
this._weatherAuthorized = false;
|
||||
this._permStore = new PermissionStore.PermissionStore((proxy, error) => {
|
||||
if (error) {
|
||||
log('Failed to connect to permissionStore: ' + error.message);
|
||||
log(`Failed to connect to permissionStore: ${error.message}`);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ var WeatherClient = class {
|
||||
|
||||
this._permStore.LookupRemote('gnome', 'geolocation', (res, error) => {
|
||||
if (error)
|
||||
log('Error looking up permission: ' + error.message);
|
||||
log(`Error looking up permission: ${error.message}`);
|
||||
|
||||
let [perms, data] = error ? [{}, null] : res;
|
||||
let params = ['gnome', 'geolocation', false, data, perms];
|
||||
@ -68,7 +68,7 @@ var WeatherClient = class {
|
||||
|
||||
this._weatherAppMon = new Util.AppSettingsMonitor('org.gnome.Weather.desktop',
|
||||
'org.gnome.Weather');
|
||||
this._weatherAppMon.connect('available-changed', () => { this.emit('changed'); });
|
||||
this._weatherAppMon.connect('available-changed', () => this.emit('changed'));
|
||||
this._weatherAppMon.watchSetting('automatic-location',
|
||||
this._onAutomaticLocationChanged.bind(this));
|
||||
this._weatherAppMon.watchSetting('locations',
|
||||
@ -179,7 +179,7 @@ var WeatherClient = class {
|
||||
try {
|
||||
this._gclueService = Geoclue.Simple.new_finish(res);
|
||||
} catch (e) {
|
||||
log('Failed to connect to Geoclue2 service: ' + e.message);
|
||||
log(`Failed to connect to Geoclue2 service: ${e.message}`);
|
||||
this._setLocation(this._mostRecentLocation);
|
||||
return;
|
||||
}
|
||||
|
@ -136,7 +136,6 @@ let overviewFrames;
|
||||
let overviewLatency;
|
||||
let mallocUsedSize = 0;
|
||||
let overviewShowCount = 0;
|
||||
let firstOverviewUsedSize;
|
||||
let haveSwapComplete = false;
|
||||
let applicationsShowStart;
|
||||
let applicationsShowCount = 0;
|
||||
|
@ -30,7 +30,7 @@ var METRICS = {
|
||||
geditStartTime:
|
||||
{ description: "Time from gedit launch to window drawn",
|
||||
units: "us" },
|
||||
}
|
||||
};
|
||||
|
||||
function waitAndDraw(milliseconds) {
|
||||
let cb;
|
||||
@ -48,7 +48,7 @@ function waitAndDraw(milliseconds) {
|
||||
cb();
|
||||
});
|
||||
|
||||
return callback => { cb = callback; };
|
||||
return callback => cb = callback;
|
||||
}
|
||||
|
||||
function waitSignal(object, signal) {
|
||||
@ -60,7 +60,7 @@ function waitSignal(object, signal) {
|
||||
cb();
|
||||
});
|
||||
|
||||
return callback => { cb = callback; };
|
||||
return callback => cb = callback;
|
||||
}
|
||||
|
||||
function extractBootTimestamp() {
|
||||
@ -273,7 +273,7 @@ function script_collectTimings(time) {
|
||||
else
|
||||
median = Math.round((times[len / 2 - 1] + times[len / 2]) / 2);
|
||||
|
||||
METRICS[timing + 'RedrawTime'].value = median;
|
||||
METRICS[`${timing}RedrawTime`].value = median;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,6 @@ const PortalHelperSecurityLevel = {
|
||||
INSECURE: 2
|
||||
};
|
||||
|
||||
const INACTIVITY_TIMEOUT = 30000; //ms
|
||||
const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org';
|
||||
const CONNECTIVITY_CHECK_URI = 'http://' + CONNECTIVITY_CHECK_HOST;
|
||||
const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC;
|
||||
@ -265,7 +264,7 @@ class WebPortalHelper extends Gtk.Application {
|
||||
this._queue = [];
|
||||
|
||||
let action = new Gio.SimpleAction({ name: 'quit' });
|
||||
action.connect('activate', () => { this.active_window.destroyWindow(); });
|
||||
action.connect('activate', () => this.active_window.destroyWindow());
|
||||
this.add_action(action);
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ var AccessDialogDBus = class {
|
||||
let [handle, appId, parentWindow, title, subtitle, body, options] = params;
|
||||
// We probably want to use parentWindow and global.display.focus_window
|
||||
// for this check in the future
|
||||
if (appId && appId + '.desktop' != this._windowTracker.focus_app.id) {
|
||||
if (appId && `${appId}.desktop` != this._windowTracker.focus_app.id) {
|
||||
invocation.return_error_literal(Gio.DBusError,
|
||||
Gio.DBusError.ACCESS_DENIED,
|
||||
'Only the focused app is allowed to show a system access dialog');
|
||||
@ -146,7 +146,7 @@ var AccessDialogDBus = class {
|
||||
subtitle, body, options);
|
||||
dialog.open();
|
||||
|
||||
dialog.connect('closed', () => { this._accessDialog = null; });
|
||||
dialog.connect('closed', () => this._accessDialog = null);
|
||||
|
||||
this._accessDialog = dialog;
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ function _createWindowClone(window, size) {
|
||||
// usual hack for the usual bug in ClutterBinLayout...
|
||||
x_expand: true,
|
||||
y_expand: true });
|
||||
};
|
||||
}
|
||||
|
||||
function getWindows(workspace) {
|
||||
// We ignore skip-taskbar windows in switchers, but if they are attached
|
||||
@ -395,7 +395,7 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
|
||||
{ opacity: 255,
|
||||
time: THUMBNAIL_FADE_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: () => { this.thumbnailsVisible = true; }
|
||||
onComplete: () => this.thumbnailsVisible = true
|
||||
});
|
||||
|
||||
this._switcherList._items[this._selectedIndex].add_accessible_state (Atk.StateType.EXPANDED);
|
||||
@ -459,7 +459,7 @@ class CyclerHighlight {
|
||||
_onDestroy() {
|
||||
this.window = null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// We don't show an actual popup, so just provide what SwitcherPopup
|
||||
// expects instead of inheriting from SwitcherList
|
||||
@ -663,14 +663,6 @@ class AppIcon extends St.BoxLayout {
|
||||
set_size(size) {
|
||||
this.icon = this.app.create_icon_texture(size);
|
||||
this._iconBin.child = this.icon;
|
||||
this._iconBin.set_size(size, size);
|
||||
}
|
||||
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
let [minWidth, ] = super.vfunc_get_preferred_width(forHeight);
|
||||
|
||||
minWidth = Math.max(minWidth, forHeight);
|
||||
return [minWidth, minWidth];
|
||||
}
|
||||
});
|
||||
|
||||
@ -728,11 +720,12 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
||||
j++;
|
||||
}
|
||||
let themeNode = this._items[j].get_theme_node();
|
||||
this._list.ensure_style();
|
||||
|
||||
let iconPadding = themeNode.get_horizontal_padding();
|
||||
let iconBorder = themeNode.get_border_width(St.Side.LEFT) + themeNode.get_border_width(St.Side.RIGHT);
|
||||
let [iconMinHeight, iconNaturalHeight] = this.icons[j].label.get_preferred_height(-1);
|
||||
let iconSpacing = iconNaturalHeight + iconPadding + iconBorder;
|
||||
let [, labelNaturalHeight] = this.icons[j].label.get_preferred_height(-1);
|
||||
let iconSpacing = labelNaturalHeight + iconPadding + iconBorder;
|
||||
let totalSpacing = this._list.spacing * (this._items.length - 1);
|
||||
|
||||
// We just assume the whole screen here due to weirdness happing with the passed width
|
||||
@ -802,9 +795,10 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
|
||||
} else
|
||||
} else {
|
||||
this._itemEntered(index);
|
||||
}
|
||||
}
|
||||
|
||||
_enterItem(index) {
|
||||
let [x, y, mask] = global.get_pointer();
|
||||
@ -848,9 +842,8 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
||||
this._removeIcon(app);
|
||||
});
|
||||
|
||||
let n = this._arrows.length;
|
||||
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
|
||||
arrow.connect('repaint', () => { SwitcherPopup.drawArrow(arrow, St.Side.BOTTOM); });
|
||||
arrow.connect('repaint', () => SwitcherPopup.drawArrow(arrow, St.Side.BOTTOM));
|
||||
this.add_actor(arrow);
|
||||
this._arrows.push(arrow);
|
||||
|
||||
@ -1044,7 +1037,7 @@ class WindowList extends SwitcherPopup.SwitcherList {
|
||||
this.icons.push(icon);
|
||||
|
||||
icon._unmanagedSignalId = icon.window.connect('unmanaged', (window) => {
|
||||
this._removeWindow(window)
|
||||
this._removeWindow(window);
|
||||
});
|
||||
}
|
||||
|
||||
@ -1080,7 +1073,7 @@ class WindowList extends SwitcherPopup.SwitcherList {
|
||||
childBox.y1 = childBox.y2 - this._label.height;
|
||||
this._label.allocate(childBox, flags);
|
||||
|
||||
let totalLabelHeight = this._label.height + themeNode.get_padding(St.Side.BOTTOM)
|
||||
let totalLabelHeight = this._label.height + themeNode.get_padding(St.Side.BOTTOM);
|
||||
childBox.x1 = box.x1;
|
||||
childBox.x2 = box.x2;
|
||||
childBox.y1 = box.y1;
|
||||
|
@ -62,9 +62,9 @@ var Animation = class {
|
||||
if (!validResourceScale)
|
||||
return;
|
||||
|
||||
let texture_cache = St.TextureCache.get_default();
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
this._animations = texture_cache.load_sliced_image(file, width, height,
|
||||
this._animations = textureCache.load_sliced_image(file, width, height,
|
||||
scaleFactor, resourceScale,
|
||||
this._animationsLoaded.bind(this));
|
||||
this.actor.set_child(this._animations);
|
||||
@ -162,7 +162,7 @@ var Spinner = class extends AnimatedIcon {
|
||||
time: SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear',
|
||||
onComplete: () => {
|
||||
this.stop(false);
|
||||
super.stop();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -20,7 +20,6 @@ const SystemActions = imports.misc.systemActions;
|
||||
|
||||
const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||
|
||||
var MAX_APPLICATION_WORK_MILLIS = 75;
|
||||
var MENU_POPUP_TIMEOUT = 600;
|
||||
var MAX_COLUMNS = 6;
|
||||
var MIN_COLUMNS = 4;
|
||||
@ -34,23 +33,9 @@ var FOLDER_SUBICON_FRACTION = .4;
|
||||
|
||||
var MIN_FREQUENT_APPS_COUNT = 3;
|
||||
|
||||
var INDICATORS_BASE_TIME = 0.25;
|
||||
var INDICATORS_ANIMATION_DELAY = 0.125;
|
||||
var INDICATORS_ANIMATION_MAX_TIME = 0.75;
|
||||
|
||||
var VIEWS_SWITCH_TIME = 0.4;
|
||||
var VIEWS_SWITCH_ANIMATION_DELAY = 0.1;
|
||||
|
||||
// Follow iconGrid animations approach and divide by 2 to animate out to
|
||||
// not annoy the user when the user wants to quit appDisplay.
|
||||
// Also, make sure we don't exceed iconGrid animation total time or
|
||||
// views switch time.
|
||||
var INDICATORS_BASE_TIME_OUT = 0.125;
|
||||
var INDICATORS_ANIMATION_DELAY_OUT = 0.0625;
|
||||
var INDICATORS_ANIMATION_MAX_TIME_OUT =
|
||||
Math.min (VIEWS_SWITCH_TIME,
|
||||
IconGrid.ANIMATION_TIME_OUT + IconGrid.ANIMATION_MAX_DELAY_OUT_FOR_ITEM);
|
||||
|
||||
var PAGE_SWITCH_TIME = 0.3;
|
||||
|
||||
const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl';
|
||||
@ -69,7 +54,7 @@ function _getCategories(info) {
|
||||
|
||||
function _listsIntersect(a, b) {
|
||||
for (let itemA of a)
|
||||
if (b.indexOf(itemA) >= 0)
|
||||
if (b.includes(itemA))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@ -158,7 +143,7 @@ class BaseAppView {
|
||||
|
||||
loadGrid() {
|
||||
this._allItems.sort(this._compareItems);
|
||||
this._allItems.forEach(item => { this._grid.addItem(item); });
|
||||
this._allItems.forEach(item => this._grid.addItem(item));
|
||||
this.emit('view-loaded');
|
||||
}
|
||||
|
||||
@ -166,7 +151,7 @@ class BaseAppView {
|
||||
if (this._items[id])
|
||||
this._items[id].actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
|
||||
else
|
||||
log('No such application ' + id);
|
||||
log(`No such application ${id}`);
|
||||
}
|
||||
|
||||
selectApp(id) {
|
||||
@ -227,12 +212,12 @@ class BaseAppView {
|
||||
} else {
|
||||
params.opacity = 0;
|
||||
params.delay = 0;
|
||||
params.onComplete = () => { this.actor.hide(); };
|
||||
params.onComplete = () => this.actor.hide();
|
||||
}
|
||||
|
||||
Tweener.addTween(this._grid, params);
|
||||
}
|
||||
};
|
||||
}
|
||||
Signals.addSignalMethods(BaseAppView.prototype);
|
||||
|
||||
var AllView = class AllView extends BaseAppView {
|
||||
@ -300,7 +285,7 @@ var AllView = class AllView extends BaseAppView {
|
||||
this._availWidth = 0;
|
||||
this._availHeight = 0;
|
||||
|
||||
Main.overview.connect('hidden', () => { this.goToPage(0); });
|
||||
Main.overview.connect('hidden', () => this.goToPage(0));
|
||||
this._grid.connect('space-opened', () => {
|
||||
let fadeEffect = this._scrollView.get_effect('fade');
|
||||
if (fadeEffect)
|
||||
@ -373,7 +358,7 @@ var AllView = class AllView extends BaseAppView {
|
||||
_loadApps() {
|
||||
this._appInfoList = Shell.AppSystem.get_default().get_installed().filter(appInfo => {
|
||||
try {
|
||||
let id = appInfo.get_id(); // catch invalid file encodings
|
||||
(appInfo.get_id()); // catch invalid file encodings
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
@ -867,7 +852,7 @@ var AppDisplay = class AppDisplay {
|
||||
this._controls.opacity = 0;
|
||||
finalOpacity = 255;
|
||||
} else {
|
||||
finalOpacity = 0
|
||||
finalOpacity = 0;
|
||||
}
|
||||
|
||||
Tweener.addTween(this._controls,
|
||||
@ -1165,7 +1150,7 @@ var FolderIcon = class FolderIcon {
|
||||
let excludedApps = this._folder.get_strv('excluded-apps');
|
||||
let appSys = Shell.AppSystem.get_default();
|
||||
let addAppId = appId => {
|
||||
if (excludedApps.indexOf(appId) >= 0)
|
||||
if (excludedApps.includes(appId))
|
||||
return;
|
||||
|
||||
let app = appSys.lookup_app(appId);
|
||||
@ -1314,7 +1299,7 @@ var AppFolderPopup = class AppFolderPopup {
|
||||
|
||||
global.focus_manager.add_group(this.actor);
|
||||
|
||||
source.actor.connect('destroy', () => { this.actor.destroy(); });
|
||||
source.actor.connect('destroy', () => this.actor.destroy());
|
||||
this._grabHelper = new GrabHelper.GrabHelper(this.actor, {
|
||||
actionMode: Shell.ActionMode.POPUP
|
||||
});
|
||||
@ -1728,7 +1713,7 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
|
||||
let appInfo = this._source.app.get_app_info();
|
||||
let actions = appInfo.list_actions();
|
||||
if (this._source.app.can_open_new_window() &&
|
||||
actions.indexOf('new-window') == -1) {
|
||||
actions.includes('new-window')) {
|
||||
this._newWindowMenuItem = this._appendMenuItem(_("New Window"));
|
||||
this._newWindowMenuItem.connect('activate', () => {
|
||||
if (this._source.app.state == Shell.AppState.STOPPED)
|
||||
@ -1742,7 +1727,7 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
|
||||
|
||||
if (discreteGpuAvailable &&
|
||||
this._source.app.state == Shell.AppState.STOPPED &&
|
||||
actions.indexOf('activate-discrete-gpu') == -1) {
|
||||
actions.includes('activate-discrete-gpu')) {
|
||||
this._onDiscreteGpuMenuItem = this._appendMenuItem(_("Launch using Dedicated Graphics Card"));
|
||||
this._onDiscreteGpuMenuItem.connect('activate', () => {
|
||||
if (this._source.app.state == Shell.AppState.STOPPED)
|
||||
|
@ -63,7 +63,7 @@ class AppFavorites {
|
||||
constructor() {
|
||||
this.FAVORITE_APPS_KEY = 'favorite-apps';
|
||||
this._favorites = {};
|
||||
global.settings.connect('changed::' + this.FAVORITE_APPS_KEY, this._onFavsChanged.bind(this));
|
||||
global.settings.connect(`changed::${this.FAVORITE_APPS_KEY}`, this._onFavsChanged.bind(this));
|
||||
this.reload();
|
||||
}
|
||||
|
||||
@ -187,7 +187,7 @@ class AppFavorites {
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
Signals.addSignalMethods(AppFavorites.prototype);
|
||||
|
||||
var appFavoritesInstance = null;
|
||||
|
@ -110,11 +110,11 @@ var AudioDeviceSelectionDialog = GObject.registerClass({
|
||||
}
|
||||
|
||||
_openSettings() {
|
||||
let desktopFile = 'gnome-sound-panel.desktop'
|
||||
let desktopFile = 'gnome-sound-panel.desktop';
|
||||
let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
|
||||
|
||||
if (!app) {
|
||||
log('Settings panel for desktop file ' + desktopFile + ' could not be loaded!');
|
||||
log(`Settings panel for desktop file ${desktopFile} could not be loaded!`);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -159,7 +159,7 @@ var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
|
||||
|
||||
let [deviceNames] = params;
|
||||
let devices = 0;
|
||||
deviceNames.forEach(n => { devices |= AudioDevice[n.toUpperCase()]; });
|
||||
deviceNames.forEach(n => devices |= AudioDevice[n.toUpperCase()]);
|
||||
|
||||
let dialog;
|
||||
try {
|
||||
|
@ -108,7 +108,6 @@ const PRIMARY_COLOR_KEY = 'primary-color';
|
||||
const SECONDARY_COLOR_KEY = 'secondary-color';
|
||||
const COLOR_SHADING_TYPE_KEY = 'color-shading-type';
|
||||
const BACKGROUND_STYLE_KEY = 'picture-options';
|
||||
const PICTURE_OPACITY_KEY = 'picture-opacity';
|
||||
const PICTURE_URI_KEY = 'picture-uri';
|
||||
|
||||
var FADE_ANIMATION_TIME = 1.0;
|
||||
@ -465,9 +464,9 @@ var Background = class Background {
|
||||
|
||||
let cache = Meta.BackgroundImageCache.get_default();
|
||||
let image = cache.load(file);
|
||||
if (image.is_loaded())
|
||||
if (image.is_loaded()) {
|
||||
this._setLoaded();
|
||||
else {
|
||||
} else {
|
||||
let id = image.connect('loaded', () => {
|
||||
this._setLoaded();
|
||||
image.disconnect(id);
|
||||
|
@ -14,7 +14,7 @@ var BarLevel = class {
|
||||
this._barLevelWidth = 0;
|
||||
|
||||
if (params == undefined)
|
||||
params = {}
|
||||
params = {};
|
||||
|
||||
this.actor = new St.DrawingArea({ styleClass: params['styleClass'] || 'barlevel',
|
||||
can_focus: params['canFocus'] || false,
|
||||
@ -105,7 +105,7 @@ var BarLevel = class {
|
||||
overdriveSeparatorWidth = themeNode.get_length('-barlevel-overdrive-separator-width');
|
||||
|
||||
/* background bar */
|
||||
cr.arc(width - barLevelBorderRadius - barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
|
||||
cr.arc(width - barLevelBorderRadius - barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * (3 / 4), TAU * (1 / 4));
|
||||
cr.lineTo(endX, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(width - barLevelBorderRadius - barLevelBorderWidth, (height - barLevelHeight) / 2);
|
||||
@ -117,7 +117,7 @@ var BarLevel = class {
|
||||
|
||||
/* normal progress bar */
|
||||
let x = Math.min(endX, overdriveSeparatorX - overdriveSeparatorWidth / 2);
|
||||
cr.arc(barLevelBorderRadius + barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 1 / 4, TAU * 3 / 4);
|
||||
cr.arc(barLevelBorderRadius + barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * (1 / 4), TAU * (3 / 4));
|
||||
cr.lineTo(x, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(x, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(barLevelBorderRadius + barLevelBorderWidth, (height + barLevelHeight) / 2);
|
||||
@ -149,7 +149,7 @@ var BarLevel = class {
|
||||
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
||||
else
|
||||
Clutter.cairo_set_source_color(cr, barLevelOverdriveColor);
|
||||
cr.arc(endX, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
|
||||
cr.arc(endX, height / 2, barLevelBorderRadius, TAU * (3 / 4), TAU * (1 / 4));
|
||||
cr.lineTo(Math.floor(endX), (height + barLevelHeight) / 2);
|
||||
cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||
|
@ -1,6 +1,6 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const { Clutter, GObject, Meta, Shell, St } = imports.gi;
|
||||
const { Clutter, GObject, Shell, St } = imports.gi;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
@ -396,7 +396,7 @@ var BoxPointer = GObject.registerClass({
|
||||
cr.lineTo(x1 - rise, y1);
|
||||
cr.lineTo(x1 + borderRadius, y1);
|
||||
} else if (skipBottomLeft) {
|
||||
cr.lineTo(x1 - rise, y2)
|
||||
cr.lineTo(x1 - rise, y2);
|
||||
cr.lineTo(x1 - rise, y2 - halfBase);
|
||||
} else {
|
||||
cr.lineTo(x1, this._arrowOrigin + halfBase);
|
||||
@ -437,7 +437,7 @@ var BoxPointer = GObject.registerClass({
|
||||
this._sourceActorDestroyId = this._sourceActor.connect('destroy', () => {
|
||||
this._sourceActor = null;
|
||||
delete this._sourceActorDestroyId;
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@ var ELLIPSIS_CHAR = '\u2026';
|
||||
|
||||
var MESSAGE_ICON_SIZE = -1; // pick up from CSS
|
||||
|
||||
var NC_ = (context, str) => context + '\u0004' + str;
|
||||
var NC_ = (context, str) => `${context}\u0004${str}`;
|
||||
|
||||
function sameYear(dateA, dateB) {
|
||||
return (dateA.getYear() == dateB.getYear());
|
||||
@ -38,7 +38,7 @@ function isToday(date) {
|
||||
function _isWorkDay(date) {
|
||||
/* Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
let days = C_('calendar-no-work', "06");
|
||||
return days.indexOf(date.getDay().toString()) == -1;
|
||||
return !days.includes(date.getDay().toString());
|
||||
}
|
||||
|
||||
function _getBeginningOfDay(date) {
|
||||
@ -143,8 +143,7 @@ function _datesEqual(a, b) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function _dateIntervalsOverlap(a0, a1, b0, b1)
|
||||
{
|
||||
function _dateIntervalsOverlap(a0, a1, b0, b1) {
|
||||
if (a1 <= b0)
|
||||
return false;
|
||||
else if (b1 <= a0)
|
||||
@ -178,7 +177,7 @@ var DBusEventSource = class DBusEventSource {
|
||||
// about the HasCalendars property and would cause an exception trying
|
||||
// to read it)
|
||||
} else {
|
||||
log('Error loading calendars: ' + e.message);
|
||||
log(`Error loading calendars: ${e.message}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -320,7 +319,7 @@ var Calendar = class Calendar {
|
||||
this._weekStart = Shell.util_get_week_start();
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.calendar' });
|
||||
|
||||
this._settings.connect('changed::' + SHOW_WEEKDATE_KEY, this._onSettingsChange.bind(this));
|
||||
this._settings.connect(`changed::${SHOW_WEEKDATE_KEY}`, this._onSettingsChange.bind(this));
|
||||
this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
|
||||
|
||||
/**
|
||||
@ -466,8 +465,7 @@ var Calendar = class Calendar {
|
||||
let day = 32 - new Date(newDate.getFullYear() - 1, 11, 32).getDate();
|
||||
newDate = new Date(newDate.getFullYear() - 1, 11, day);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
newDate.setMonth(oldMonth - 1);
|
||||
if (newDate.getMonth() != oldMonth - 1) {
|
||||
let day = 32 - new Date(newDate.getFullYear(), oldMonth - 1, 32).getDate();
|
||||
@ -490,8 +488,7 @@ var Calendar = class Calendar {
|
||||
let day = 32 - new Date(newDate.getFullYear() + 1, 0, 32).getDate();
|
||||
newDate = new Date(newDate.getFullYear() + 1, 0, day);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
newDate.setMonth(oldMonth + 1);
|
||||
if (newDate.getMonth() != oldMonth + 1) {
|
||||
let day = 32 - new Date(newDate.getFullYear(), oldMonth + 1, 32).getDate();
|
||||
@ -546,8 +543,6 @@ var Calendar = class Calendar {
|
||||
this._calendarBegin = new Date(beginDate);
|
||||
this._markedAsToday = now;
|
||||
|
||||
let year = beginDate.getYear();
|
||||
|
||||
let daysToWeekStart = (7 + beginDate.getDay() - this._weekStart) % 7;
|
||||
let startsOnWeekStart = daysToWeekStart == 0;
|
||||
let weekPadding = startsOnWeekStart ? 7 : 0;
|
||||
@ -559,7 +554,7 @@ var Calendar = class Calendar {
|
||||
let row = 2;
|
||||
// nRows here means 6 weeks + one header + one navbar
|
||||
let nRows = 8;
|
||||
while (row < 8) {
|
||||
while (row < nRows) {
|
||||
// xgettext:no-javascript-format
|
||||
let button = new St.Button({ label: iter.toLocaleFormat(C_("date day number format", "%d")),
|
||||
can_focus: true });
|
||||
@ -585,12 +580,12 @@ var Calendar = class Calendar {
|
||||
|
||||
// Hack used in lieu of border-collapse - see gnome-shell.css
|
||||
if (row == 2)
|
||||
styleClass = 'calendar-day-top ' + styleClass;
|
||||
styleClass = `calendar-day-top ${styleClass}`;
|
||||
|
||||
let leftMost = rtl ? iter.getDay() == (this._weekStart + 6) % 7
|
||||
: iter.getDay() == this._weekStart;
|
||||
if (leftMost)
|
||||
styleClass = 'calendar-day-left ' + styleClass;
|
||||
styleClass = `calendar-day-left ${styleClass}`;
|
||||
|
||||
if (sameDay(now, iter))
|
||||
styleClass += ' calendar-today';
|
||||
@ -648,9 +643,9 @@ var Calendar = class Calendar {
|
||||
button.add_style_pseudo_class('selected');
|
||||
if (this._shouldDateGrabFocus)
|
||||
button.grab_key_focus();
|
||||
}
|
||||
else
|
||||
} else {
|
||||
button.remove_style_pseudo_class('selected');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -1077,7 +1072,7 @@ var CalendarMessageList = class CalendarMessageList {
|
||||
this._clearButton.set_x_align(Clutter.ActorAlign.END);
|
||||
this._clearButton.connect('clicked', () => {
|
||||
let sections = [...this._sections.keys()];
|
||||
sections.forEach((s) => { s.clear(); });
|
||||
sections.forEach((s) => s.clear());
|
||||
});
|
||||
box.add_actor(this._clearButton);
|
||||
|
||||
|
@ -6,8 +6,8 @@ const Dialog = imports.ui.dialog;
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
var FROZEN_WINDOW_BRIGHTNESS = -0.3
|
||||
var DIALOG_TRANSITION_TIME = 0.15
|
||||
var FROZEN_WINDOW_BRIGHTNESS = -0.3;
|
||||
var DIALOG_TRANSITION_TIME = 0.15;
|
||||
var ALIVE_TIMEOUT = 5000;
|
||||
|
||||
var CloseDialog = GObject.registerClass({
|
||||
@ -165,7 +165,7 @@ var CloseDialog = GObject.registerClass({
|
||||
GLib.source_remove(this._timeoutId);
|
||||
this._timeoutId = 0;
|
||||
|
||||
global.display.disconnect(this._windowFocusChangedId)
|
||||
global.display.disconnect(this._windowFocusChangedId);
|
||||
this._windowFocusChangedId = 0;
|
||||
|
||||
global.stage.disconnect(this._keyFocusChangedId);
|
||||
|
@ -13,13 +13,13 @@ var ComponentManager = class {
|
||||
let newEnabledComponents = Main.sessionMode.components;
|
||||
|
||||
newEnabledComponents.filter(
|
||||
name => this._enabledComponents.indexOf(name) == -1
|
||||
name => !this._enabledComponents.includes(name)
|
||||
).forEach(name => {
|
||||
this._enableComponent(name);
|
||||
});
|
||||
|
||||
this._enabledComponents.filter(
|
||||
name => newEnabledComponents.indexOf(name) == -1
|
||||
name => !newEnabledComponents.includes(name)
|
||||
).forEach(name => {
|
||||
this._disableComponent(name);
|
||||
});
|
||||
|
@ -109,23 +109,21 @@ var AutomountManager = class {
|
||||
// we force stop/eject in this case, so we don't have to pass a
|
||||
// mount operation object
|
||||
if (drive.can_stop()) {
|
||||
drive.stop
|
||||
(Gio.MountUnmountFlags.FORCE, null, null,
|
||||
drive.stop(Gio.MountUnmountFlags.FORCE, null, null,
|
||||
(drive, res) => {
|
||||
try {
|
||||
drive.stop_finish(res);
|
||||
} catch (e) {
|
||||
log("Unable to stop the drive after drive-eject-button " + e.toString());
|
||||
log(`Unable to stop the drive after drive-eject-button ${e.toString()}`);
|
||||
}
|
||||
});
|
||||
} else if (drive.can_eject()) {
|
||||
drive.eject_with_operation
|
||||
(Gio.MountUnmountFlags.FORCE, null, null,
|
||||
drive.eject_with_operation(Gio.MountUnmountFlags.FORCE, null, null,
|
||||
(drive, res) => {
|
||||
try {
|
||||
drive.eject_with_operation_finish(res);
|
||||
} catch (e) {
|
||||
log("Unable to eject the drive after drive-eject-button " + e.toString());
|
||||
log(`Unable to eject the drive after drive-eject-button ${e.toString()}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -213,7 +211,7 @@ var AutomountManager = class {
|
||||
}
|
||||
|
||||
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
|
||||
log('Unable to mount volume ' + volume.get_name() + ': ' + e.toString());
|
||||
log(`Unable to mount volume ${volume.get_name()}: ${e.toString()}`);
|
||||
this._closeOperation(volume);
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ function isMountRootHidden(root) {
|
||||
let path = root.get_path();
|
||||
|
||||
// skip any mounts in hidden directory hierarchies
|
||||
return (path.indexOf('/.') != -1);
|
||||
return (path.includes('/.'));
|
||||
}
|
||||
|
||||
function isMountNonLocal(mount) {
|
||||
@ -65,8 +65,7 @@ function startAppForMount(app, mount) {
|
||||
retval = app.launch(files,
|
||||
global.create_app_launch_context(0, -1));
|
||||
} catch (e) {
|
||||
log('Unable to launch the application ' + app.get_name()
|
||||
+ ': ' + e.toString());
|
||||
log(`Unable to launch the application ${app.get_name()}: ${e}`);
|
||||
}
|
||||
|
||||
return retval;
|
||||
@ -107,8 +106,7 @@ var ContentTypeDiscoverer = class {
|
||||
try {
|
||||
contentTypes = mount.guess_content_type_finish(res);
|
||||
} catch (e) {
|
||||
log('Unable to guess content types on added mount ' + mount.get_name()
|
||||
+ ': ' + e.toString());
|
||||
log(`Unable to guess content types on added mount ${mount.get_name()}: ${e}`);
|
||||
}
|
||||
|
||||
if (contentTypes.length) {
|
||||
@ -192,15 +190,15 @@ var AutorunDispatcher = class {
|
||||
|
||||
_getAutorunSettingForType(contentType) {
|
||||
let runApp = this._settings.get_strv(SETTING_START_APP);
|
||||
if (runApp.indexOf(contentType) != -1)
|
||||
if (runApp.includes(contentType))
|
||||
return AutorunSetting.RUN;
|
||||
|
||||
let ignore = this._settings.get_strv(SETTING_IGNORE);
|
||||
if (ignore.indexOf(contentType) != -1)
|
||||
if (ignore.includes(contentType))
|
||||
return AutorunSetting.IGNORE;
|
||||
|
||||
let openFiles = this._settings.get_strv(SETTING_OPEN_FOLDER);
|
||||
if (openFiles.indexOf(contentType) != -1)
|
||||
if (openFiles.includes(contentType))
|
||||
return AutorunSetting.FILES;
|
||||
|
||||
return AutorunSetting.ASK;
|
||||
|
@ -172,7 +172,7 @@ class KeyringDialog extends ModalDialog.ModalDialog {
|
||||
|
||||
log('keyringPrompt: Failed to show modal dialog.' +
|
||||
' Dismissing prompt request');
|
||||
this.prompt.cancel()
|
||||
this.prompt.cancel();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -80,8 +80,9 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||
secret.valid = secret.value.length > 0;
|
||||
this._updateOkButton();
|
||||
});
|
||||
} else
|
||||
} else {
|
||||
secret.valid = true;
|
||||
}
|
||||
|
||||
if (rtl) {
|
||||
layout.attach(secret.entry, 0, pos, 1, 1);
|
||||
@ -188,8 +189,9 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||
|| (value[i] >= 'A' && value[i] <= 'Z')))
|
||||
return false;
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else if (secret.wep_key_type == NM.WepKeyType.PASSPHRASE) {
|
||||
if (value.length < 0 || value.length > 64)
|
||||
return false;
|
||||
@ -214,7 +216,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||
validate: this._validateWpaPsk, password: true });
|
||||
break;
|
||||
case 'none': // static WEP
|
||||
secrets.push({ label: _("Key: "), key: 'wep-key' + wirelessSecuritySetting.wep_tx_keyidx,
|
||||
secrets.push({ label: _("Key: "), key: `wep-key${wirelessSecuritySetting.wep_tx_keyidx}`,
|
||||
value: wirelessSecuritySetting.get_wep_key(wirelessSecuritySetting.wep_tx_keyidx) || '',
|
||||
wep_key_type: wirelessSecuritySetting.wep_key_type,
|
||||
validate: this._validateStaticWep, password: true });
|
||||
@ -230,13 +232,12 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||
this._get8021xSecrets(secrets);
|
||||
break;
|
||||
default:
|
||||
log('Invalid wireless key management: ' + wirelessSecuritySetting.key_mgmt);
|
||||
log(`Invalid wireless key management: ${wirelessSecuritySetting.key_mgmt}`);
|
||||
}
|
||||
}
|
||||
|
||||
_get8021xSecrets(secrets) {
|
||||
let ieee8021xSetting = this._connection.get_setting_802_1x();
|
||||
let phase2method;
|
||||
|
||||
/* If hints were given we know exactly what we need to ask */
|
||||
if (this._settingName == "802-1x" && this._hints.length) {
|
||||
@ -273,7 +274,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||
value: ieee8021xSetting.private_key_password || '', password: true });
|
||||
break;
|
||||
default:
|
||||
log('Invalid EAP/IEEE802.1x method: ' + ieee8021xSetting.get_eap_method(0));
|
||||
log(`Invalid EAP/IEEE802.1x method: ${ieee8021xSetting.get_eap_method(0)}`);
|
||||
}
|
||||
}
|
||||
|
||||
@ -327,7 +328,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||
this._getPPPoESecrets(content.secrets);
|
||||
break;
|
||||
case 'gsm':
|
||||
if (this._hints.indexOf('pin') != -1) {
|
||||
if (this._hints.includes('pin')) {
|
||||
let gsmSetting = this._connection.get_setting_gsm();
|
||||
content.title = _("PIN code required");
|
||||
content.message = _("PIN code is needed for the mobile broadband device");
|
||||
@ -343,8 +344,8 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||
this._getMobileSecrets(content.secrets, connectionType);
|
||||
break;
|
||||
default:
|
||||
log('Invalid connection type: ' + connectionType);
|
||||
};
|
||||
log(`Invalid connection type: ${connectionType}`);
|
||||
}
|
||||
|
||||
return content;
|
||||
}
|
||||
@ -367,8 +368,7 @@ var VPNRequestHandler = class {
|
||||
let argv = [authHelper.fileName,
|
||||
'-u', connectionSetting.uuid,
|
||||
'-n', connectionSetting.id,
|
||||
'-s', serviceType
|
||||
];
|
||||
'-s', serviceType];
|
||||
if (authHelper.externalUIMode)
|
||||
argv.push('--external-ui-mode');
|
||||
if (flags & NM.SecretAgentGetSecretsFlags.ALLOW_INTERACTION)
|
||||
@ -459,8 +459,9 @@ var VPNRequestHandler = class {
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
|
||||
else
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.CONFIRMED);
|
||||
} else
|
||||
} else {
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
this.destroy();
|
||||
}
|
||||
@ -587,12 +588,12 @@ var VPNRequestHandler = class {
|
||||
|
||||
try {
|
||||
vpnSetting.foreach_data_item((key, value) => {
|
||||
this._stdin.write('DATA_KEY=' + key + '\n', null);
|
||||
this._stdin.write('DATA_VAL=' + (value || '') + '\n\n', null);
|
||||
this._stdin.write(`DATA_KEY=${key}\n`, null);
|
||||
this._stdin.write(`DATA_VAL=${value || ''}\n\n`, null);
|
||||
});
|
||||
vpnSetting.foreach_secret((key, value) => {
|
||||
this._stdin.write('SECRET_KEY=' + key + '\n', null);
|
||||
this._stdin.write('SECRET_VAL=' + (value || '') + '\n\n', null);
|
||||
this._stdin.write(`SECRET_KEY=${key}\n`, null);
|
||||
this._stdin.write(`SECRET_VAL=${value || ''}\n\n`, null);
|
||||
});
|
||||
this._stdin.write('DONE\n\n', null);
|
||||
} catch (e) {
|
||||
@ -619,9 +620,9 @@ var NetworkAgent = class {
|
||||
this._pluginDir = Gio.file_new_for_path(Config.VPNDIR);
|
||||
try {
|
||||
let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null);
|
||||
monitor.connect('changed', () => { this._vpnCacheBuilt = false; });
|
||||
monitor.connect('changed', () => this._vpnCacheBuilt = false);
|
||||
} catch (e) {
|
||||
log('Failed to create monitor for VPN plugin dir: ' + e.message);
|
||||
log(`Failed to create monitor for VPN plugin dir: ${e.message}`);
|
||||
}
|
||||
|
||||
this._native.connect('new-request', this._newRequest.bind(this));
|
||||
@ -680,12 +681,13 @@ var NetworkAgent = class {
|
||||
let connectionSetting = connection.get_setting_connection();
|
||||
let connectionType = connectionSetting.get_connection_type();
|
||||
switch (connectionType) {
|
||||
case '802-11-wireless':
|
||||
case '802-11-wireless': {
|
||||
let wirelessSetting = connection.get_setting_wireless();
|
||||
let ssid = NM.utils_ssid_to_utf8(wirelessSetting.get_ssid().get_data());
|
||||
title = _("Authentication required by wireless network");
|
||||
body = _("Passwords or encryption keys are required to access the wireless network “%s”.").format(ssid);
|
||||
break;
|
||||
}
|
||||
case '802-3-ethernet':
|
||||
title = _("Wired 802.1X authentication");
|
||||
body = _("A password is required to connect to “%s”.".format(connection.get_id()));
|
||||
@ -695,8 +697,7 @@ var NetworkAgent = class {
|
||||
body = _("A password is required to connect to “%s”.".format(connection.get_id()));
|
||||
break;
|
||||
case 'gsm':
|
||||
if (hints.indexOf('pin') != -1) {
|
||||
let gsmSetting = connection.get_setting_gsm();
|
||||
if (hints.includes('pin')) {
|
||||
title = _("PIN code required");
|
||||
body = _("PIN code is needed for the mobile broadband device");
|
||||
break;
|
||||
@ -708,7 +709,7 @@ var NetworkAgent = class {
|
||||
body = _("A password is required to connect to “%s”.").format(connectionSetting.get_id());
|
||||
break;
|
||||
default:
|
||||
log('Invalid connection type: ' + connectionType);
|
||||
log(`Invalid connection type: ${connectionType}`);
|
||||
this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
|
||||
return;
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
const { AccountsService, Clutter, Gio, GLib,
|
||||
GObject, Pango, PolkitAgent, Polkit, Shell, St } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Animation = imports.ui.animation;
|
||||
const Dialog = imports.ui.dialog;
|
||||
@ -39,19 +38,19 @@ var AuthenticationDialog = GObject.registerClass({
|
||||
this.contentLayout.add_actor(content);
|
||||
|
||||
if (userNames.length > 1) {
|
||||
log('polkitAuthenticationAgent: Received ' + userNames.length +
|
||||
log(`polkitAuthenticationAgent: Received ${userNames.length} ` +
|
||||
'identities that can be used for authentication. Only ' +
|
||||
'considering one.');
|
||||
}
|
||||
|
||||
let userName = GLib.get_user_name();
|
||||
if (userNames.indexOf(userName) < 0)
|
||||
if (!userNames.includes(userName))
|
||||
userName = 'root';
|
||||
if (userNames.indexOf(userName) < 0)
|
||||
if (!userNames.includes(userName))
|
||||
userName = userNames[0];
|
||||
|
||||
this._user = AccountsService.UserManager.get_default().get_user(userName);
|
||||
let userRealName = this._user.get_real_name()
|
||||
let userRealName = this._user.get_real_name();
|
||||
this._userLoadedId = this._user.connect('notify::is_loaded',
|
||||
this._onUserChanged.bind(this));
|
||||
this._userChangedId = this._user.connect('changed',
|
||||
@ -182,8 +181,8 @@ var AuthenticationDialog = GObject.registerClass({
|
||||
// We could add retrying if this turns out to be a problem
|
||||
|
||||
log('polkitAuthenticationAgent: Failed to show modal dialog. ' +
|
||||
' Dismissing authentication request for action-id ' + this.actionId +
|
||||
' cookie ' + this._cookie);
|
||||
`Dismissing authentication request for action-id ${this.actionId} ` +
|
||||
`cookie ${this._cookie}`);
|
||||
this._emitDone(true);
|
||||
}
|
||||
}
|
||||
@ -251,14 +250,14 @@ var AuthenticationDialog = GObject.registerClass({
|
||||
}
|
||||
}
|
||||
|
||||
_onSessionRequest(session, request, echo_on) {
|
||||
_onSessionRequest(session, request, echoOn) {
|
||||
// Cheap localization trick
|
||||
if (request == 'Password:' || request == 'Password: ')
|
||||
this._passwordLabel.set_text(_("Password:"));
|
||||
else
|
||||
this._passwordLabel.set_text(request);
|
||||
|
||||
if (echo_on)
|
||||
if (echoOn)
|
||||
this._passwordEntry.clutter_text.set_password_char('');
|
||||
else
|
||||
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||
|
@ -40,8 +40,6 @@ var NotificationDirection = {
|
||||
RECEIVED: 'chat-received'
|
||||
};
|
||||
|
||||
var N_ = s => s;
|
||||
|
||||
function makeMessageFromTpMessage(tpMessage, direction) {
|
||||
let [text, flags] = tpMessage.to_text();
|
||||
|
||||
@ -89,7 +87,7 @@ var TelepathyComponent = class {
|
||||
try {
|
||||
this._client.register();
|
||||
} catch (e) {
|
||||
throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
|
||||
throw new Error(`Could not register Telepathy client. Error: ${e}`);
|
||||
}
|
||||
|
||||
if (!this._client.account_manager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
|
||||
@ -149,8 +147,8 @@ class TelepathyClient extends Tp.BaseClient {
|
||||
this._delegatedChannelsCb.bind(this));
|
||||
}
|
||||
|
||||
vfunc_observe_channels(account, conn, channels,
|
||||
dispatchOp, requests, context) {
|
||||
vfunc_observe_channels(...args) {
|
||||
let [account, conn, channels, dispatchOp, requests, context] = args;
|
||||
let len = channels.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
let channel = channels[i];
|
||||
@ -182,8 +180,8 @@ class TelepathyClient extends Tp.BaseClient {
|
||||
});
|
||||
}
|
||||
|
||||
vfunc_handle_channels(account, conn, channels, requests,
|
||||
user_action_time, context) {
|
||||
vfunc_handle_channels(...args) {
|
||||
let [account, conn, channels, requests, userActionTime, context] = args;
|
||||
this._handlingChannels(account, conn, channels, true);
|
||||
context.accept();
|
||||
}
|
||||
@ -222,8 +220,8 @@ class TelepathyClient extends Tp.BaseClient {
|
||||
}
|
||||
}
|
||||
|
||||
vfunc_add_dispatch_operation(account, conn, channels,
|
||||
dispatchOp, context) {
|
||||
vfunc_add_dispatch_operation(...args) {
|
||||
let [account, conn, channels, dispatchOp, context] = args;
|
||||
let channel = channels[0];
|
||||
let chanType = channel.get_channel_type();
|
||||
|
||||
@ -255,7 +253,7 @@ class TelepathyClient extends Tp.BaseClient {
|
||||
dispatchOp.claim_with_finish(result);
|
||||
this._handlingChannels(account, conn, [channel], false);
|
||||
} catch (err) {
|
||||
log('Failed to Claim channel: ' + err);
|
||||
log(`Failed to Claim channel: ${err}`);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -7,7 +7,6 @@ const SwitcherPopup = imports.ui.switcherPopup;
|
||||
const Params = imports.misc.params;
|
||||
|
||||
var POPUP_APPICON_SIZE = 96;
|
||||
var POPUP_FADE_TIME = 0.1; // seconds
|
||||
|
||||
var SortGroup = {
|
||||
TOP: 0,
|
||||
@ -33,7 +32,7 @@ var CtrlAltTabManager = class CtrlAltTabManager {
|
||||
item.iconName = icon;
|
||||
|
||||
this._items.push(item);
|
||||
root.connect('destroy', () => { this.removeGroup(root); });
|
||||
root.connect('destroy', () => this.removeGroup(root));
|
||||
if (root instanceof St.Widget)
|
||||
global.focus_manager.add_group(root);
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ class DashItemContainer extends St.Widget {
|
||||
let itemHeight = this.allocation.y2 - this.allocation.y1;
|
||||
|
||||
let labelHeight = this.label.get_height();
|
||||
let yOffset = Math.floor((itemHeight - labelHeight) / 2)
|
||||
let yOffset = Math.floor((itemHeight - labelHeight) / 2);
|
||||
|
||||
let y = stageY + yOffset;
|
||||
|
||||
@ -321,8 +321,8 @@ class DashActor extends St.Widget {
|
||||
let themeNode = this.get_theme_node();
|
||||
let adjustedForWidth = themeNode.adjust_for_width(forWidth);
|
||||
let [, showAppsButton] = this.get_children();
|
||||
let [minHeight, ] = showAppsButton.get_preferred_height(adjustedForWidth);
|
||||
[minHeight, ] = themeNode.adjust_preferred_height(minHeight, natHeight);
|
||||
let [minHeight] = showAppsButton.get_preferred_height(adjustedForWidth);
|
||||
[minHeight] = themeNode.adjust_preferred_height(minHeight, natHeight);
|
||||
|
||||
return [minHeight, natHeight];
|
||||
}
|
||||
@ -700,14 +700,14 @@ var Dash = class Dash {
|
||||
}
|
||||
|
||||
// App removed at oldIndex
|
||||
if (oldApp && newApps.indexOf(oldApp) == -1) {
|
||||
if (oldApp && !newApps.includes(oldApp)) {
|
||||
removedActors.push(children[oldIndex]);
|
||||
oldIndex++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// App added at newIndex
|
||||
if (newApp && oldApps.indexOf(newApp) == -1) {
|
||||
if (newApp && !oldApps.includes(newApp)) {
|
||||
addedItems.push({ app: newApp,
|
||||
item: this._createAppItem(newApp),
|
||||
pos: newIndex });
|
||||
|
@ -47,7 +47,7 @@ var TodayButton = class TodayButton {
|
||||
this._calendar.connect('selected-date-changed', (calendar, date) => {
|
||||
// Make the button reactive only if the selected date is not the
|
||||
// current date.
|
||||
this.actor.reactive = !_isToday(date)
|
||||
this.actor.reactive = !_isToday(date);
|
||||
});
|
||||
}
|
||||
|
||||
@ -357,7 +357,7 @@ var MessagesIndicator = class MessagesIndicator {
|
||||
Main.messageTray.connect('queue-changed', this._updateCount.bind(this));
|
||||
|
||||
let sources = Main.messageTray.getSources();
|
||||
sources.forEach(source => { this._onSourceAdded(null, source); });
|
||||
sources.forEach(source => this._onSourceAdded(null, source));
|
||||
}
|
||||
|
||||
_onSourceAdded(tray, source) {
|
||||
@ -373,7 +373,7 @@ var MessagesIndicator = class MessagesIndicator {
|
||||
|
||||
_updateCount() {
|
||||
let count = 0;
|
||||
this._sources.forEach(source => { count += source.unseenCount; });
|
||||
this._sources.forEach(source => count += source.unseenCount);
|
||||
count -= Main.messageTray.queueCount;
|
||||
|
||||
this.actor.visible = (count > 0);
|
||||
@ -384,8 +384,8 @@ var IndicatorPad = GObject.registerClass(
|
||||
class IndicatorPad extends St.Widget {
|
||||
_init(actor) {
|
||||
this._source = actor;
|
||||
this._source.connect('notify::visible', () => { this.queue_relayout(); });
|
||||
this._source.connect('notify::size', () => { this.queue_relayout(); });
|
||||
this._source.connect('notify::visible', () => this.queue_relayout());
|
||||
this._source.connect('notify::size', () => this.queue_relayout());
|
||||
super._init();
|
||||
}
|
||||
|
||||
@ -459,7 +459,6 @@ class CalendarColumnLayout extends Clutter.BoxLayout {
|
||||
var DateMenuButton = GObject.registerClass(
|
||||
class DateMenuButton extends PanelMenu.Button {
|
||||
_init() {
|
||||
let item;
|
||||
let hbox;
|
||||
let vbox;
|
||||
|
||||
|
@ -214,7 +214,10 @@ var MessageDialogContent = GObject.registerClass({
|
||||
}
|
||||
|
||||
set icon(icon) {
|
||||
Object.assign(this._icon, { gicon: icon, visible: icon != null });
|
||||
this._icon.set({
|
||||
gicon: icon,
|
||||
visible: icon != null
|
||||
});
|
||||
this.notify('icon');
|
||||
}
|
||||
|
||||
@ -231,7 +234,10 @@ var MessageDialogContent = GObject.registerClass({
|
||||
}
|
||||
|
||||
_setLabel(label, prop, value) {
|
||||
Object.assign(label, { text: value || '', visible: value != null });
|
||||
label.set({
|
||||
text: value || '',
|
||||
visible: value != null
|
||||
});
|
||||
this.notify(prop);
|
||||
}
|
||||
|
||||
|
12
js/ui/dnd.js
12
js/ui/dnd.js
@ -434,14 +434,13 @@ var _Draggable = class _Draggable {
|
||||
scale_y: scale * origScale,
|
||||
time: SCALE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate() {
|
||||
onUpdate: () => {
|
||||
let currentScale = this._dragActor.scale_x / origScale;
|
||||
this._dragOffsetX = currentScale * origDragOffsetX;
|
||||
this._dragOffsetY = currentScale * origDragOffsetY;
|
||||
this._dragActor.set_position(this._dragX + this._dragOffsetX,
|
||||
this._dragY + this._dragOffsetY);
|
||||
},
|
||||
onUpdateScope: this });
|
||||
} });
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -588,9 +587,10 @@ var _Draggable = class _Draggable {
|
||||
if (this._restoreOnSuccess) {
|
||||
this._restoreDragActor(event.get_time());
|
||||
return true;
|
||||
} else
|
||||
} else {
|
||||
this._dragActor.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
this._dragState = DragState.INIT;
|
||||
global.display.set_cursor(Meta.Cursor.DEFAULT);
|
||||
@ -689,12 +689,12 @@ var _Draggable = class _Draggable {
|
||||
params['onCompleteParams'] = [this._dragActor, eventTime];
|
||||
|
||||
// start the animation
|
||||
Tweener.addTween(this._dragActor, params)
|
||||
Tweener.addTween(this._dragActor, params);
|
||||
}
|
||||
|
||||
_finishAnimation() {
|
||||
if (!this._animationInProgress)
|
||||
return
|
||||
return;
|
||||
|
||||
this._animationInProgress = false;
|
||||
if (!this._buttonDown)
|
||||
|
@ -16,7 +16,7 @@ var EdgeDragAction = GObject.registerClass({
|
||||
this._allowedModes = allowedModes;
|
||||
this.set_n_touch_points(1);
|
||||
|
||||
global.display.connect('grab-op-begin', () => { this.cancel(); });
|
||||
global.display.connect('grab-op-begin', () => this.cancel());
|
||||
}
|
||||
|
||||
_getMonitorRect(x, y) {
|
||||
|
@ -29,13 +29,9 @@ const UserWidget = imports.ui.userWidget;
|
||||
|
||||
const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||
|
||||
let _endSessionDialog = null;
|
||||
|
||||
const _ITEM_ICON_SIZE = 48;
|
||||
const _DIALOG_ICON_SIZE = 48;
|
||||
|
||||
var GSM_SESSION_MANAGER_LOGOUT_FORCE = 2;
|
||||
|
||||
const EndSessionDialogIface = loadInterfaceXML('org.gnome.SessionManager.EndSessionDialog');
|
||||
|
||||
const logoutDialogContent = {
|
||||
@ -223,7 +219,7 @@ function init() {
|
||||
// This always returns the same singleton object
|
||||
// By instantiating it initially, we register the
|
||||
// bus object, etc.
|
||||
_endSessionDialog = new EndSessionDialog();
|
||||
(new EndSessionDialog());
|
||||
}
|
||||
|
||||
var EndSessionDialog = GObject.registerClass(
|
||||
@ -235,14 +231,13 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
this._loginManager = LoginManager.getLoginManager();
|
||||
this._userManager = AccountsService.UserManager.get_default();
|
||||
this._user = this._userManager.get_user(GLib.get_user_name());
|
||||
this._updatesPermission = null;
|
||||
|
||||
this._pkOfflineProxy = new PkOfflineProxy(Gio.DBus.system,
|
||||
'org.freedesktop.PackageKit',
|
||||
'/org/freedesktop/PackageKit',
|
||||
(proxy, error) => {
|
||||
if (error)
|
||||
log(error.message);
|
||||
});
|
||||
this._onPkOfflineProxyCreated.bind(this));
|
||||
|
||||
this._powerProxy = new UPowerProxy(Gio.DBus.system,
|
||||
'org.freedesktop.UPower',
|
||||
'/org/freedesktop/UPower',
|
||||
@ -337,14 +332,31 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
this._inhibitorSection.add_actor(this._sessionHeader);
|
||||
this._inhibitorSection.add_actor(this._sessionList);
|
||||
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(EndSessionDialogIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog');
|
||||
}
|
||||
|
||||
_onPkOfflineProxyCreated(proxy, error) {
|
||||
if (error) {
|
||||
log(error.message);
|
||||
return;
|
||||
}
|
||||
|
||||
// Creating a D-Bus proxy won't propagate SERVICE_UNKNOWN or NAME_HAS_NO_OWNER
|
||||
// errors if PackageKit is not available, but the GIO implementation will make
|
||||
// sure in that case that the proxy's g-name-owner is set to null, so check that.
|
||||
if (this._pkOfflineProxy.g_name_owner === null) {
|
||||
this._pkOfflineProxy = null;
|
||||
return;
|
||||
}
|
||||
|
||||
// It only makes sense to check for this permission if PackageKit is available.
|
||||
try {
|
||||
this._updatesPermission = Polkit.Permission.new_sync("org.freedesktop.packagekit.trigger-offline-update", null, null);
|
||||
this._updatesPermission = Polkit.Permission.new_sync(
|
||||
"org.freedesktop.packagekit.trigger-offline-update", null, null);
|
||||
} catch(e) {
|
||||
log('No permission to trigger offline updates: %s'.format(e.toString()));
|
||||
}
|
||||
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(EndSessionDialogIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog');
|
||||
}
|
||||
|
||||
_onDestroy() {
|
||||
@ -391,7 +403,8 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
}
|
||||
|
||||
// Use a different description when we are installing a system upgrade
|
||||
if (dialogContent.upgradeDescription) {
|
||||
// if the PackageKit proxy is available (i.e. PackageKit is available).
|
||||
if (this._pkOfflineProxy && dialogContent.upgradeDescription) {
|
||||
let name = this._pkOfflineProxy.PreparedUpgrade['name'].deep_unpack();
|
||||
let version = this._pkOfflineProxy.PreparedUpgrade['version'].deep_unpack();
|
||||
|
||||
@ -500,6 +513,12 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
}
|
||||
|
||||
_triggerOfflineUpdateReboot(callback) {
|
||||
// Handle this gracefully if PackageKit is not available.
|
||||
if (!this._pkOfflineProxy) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
this._pkOfflineProxy.TriggerRemote('reboot', (result, error) => {
|
||||
if (error)
|
||||
log(error.message);
|
||||
@ -509,6 +528,12 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
}
|
||||
|
||||
_triggerOfflineUpdateShutdown(callback) {
|
||||
// Handle this gracefully if PackageKit is not available.
|
||||
if (!this._pkOfflineProxy) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
this._pkOfflineProxy.TriggerRemote('power-off', (result, error) => {
|
||||
if (error)
|
||||
log(error.message);
|
||||
@ -518,6 +543,12 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
}
|
||||
|
||||
_triggerOfflineUpdateCancel(callback) {
|
||||
// Handle this gracefully if PackageKit is not available.
|
||||
if (!this._pkOfflineProxy) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
this._pkOfflineProxy.CancelRemote((result, error) => {
|
||||
if (error)
|
||||
log(error.message);
|
||||
@ -585,7 +616,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
}
|
||||
|
||||
_onInhibitorLoaded(inhibitor) {
|
||||
if (this._applications.indexOf(inhibitor) < 0) {
|
||||
if (!this._applications.includes(inhibitor)) {
|
||||
// Stale inhibitor
|
||||
return;
|
||||
}
|
||||
@ -680,7 +711,8 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
||||
this._type = type;
|
||||
|
||||
if (this._type == DialogType.RESTART) {
|
||||
// Only consider updates and upgrades if PackageKit is available.
|
||||
if (this._pkOfflineProxy && this._type == DialogType.RESTART) {
|
||||
if (this._pkOfflineProxy.UpdateTriggered)
|
||||
this._type = DialogType.UPDATE_RESTART;
|
||||
else if (this._pkOfflineProxy.UpgradeTriggered)
|
||||
@ -712,8 +744,9 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||
if (dialogContent.showOtherSessions)
|
||||
this._loadSessions();
|
||||
|
||||
let updateTriggered = this._pkOfflineProxy.UpdateTriggered;
|
||||
let updatePrepared = this._pkOfflineProxy.UpdatePrepared;
|
||||
// Only consider updates and upgrades if PackageKit is available.
|
||||
let updateTriggered = this._pkOfflineProxy ? this._pkOfflineProxy.UpdateTriggered : false;
|
||||
let updatePrepared = this._pkOfflineProxy ? this._pkOfflineProxy.UpdatePrepared : false;
|
||||
let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed;
|
||||
|
||||
_setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText || '');
|
||||
|
@ -57,8 +57,8 @@ function _patchLayoutClass(layoutClass, styleProps) {
|
||||
};
|
||||
}
|
||||
|
||||
function _loggingFunc() {
|
||||
let fields = {'MESSAGE': [].join.call(arguments, ', ')};
|
||||
function _loggingFunc(...args) {
|
||||
let fields = { 'MESSAGE': args.join(', ') };
|
||||
let domain = "GNOME Shell";
|
||||
|
||||
// If the caller is an extension, add it as metadata
|
||||
@ -111,7 +111,7 @@ function init() {
|
||||
let base = origToString.call(this);
|
||||
try {
|
||||
if ('actor' in this && this.actor instanceof Clutter.Actor)
|
||||
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
|
||||
return base.replace(/\]$/, ` delegate for ${this.actor.toString().substring(1)}`);
|
||||
else
|
||||
return base;
|
||||
} catch (e) {
|
||||
|
@ -1,19 +1,18 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const { Clutter, Gio, GLib, GObject, Soup, St } = imports.gi;
|
||||
const { Clutter, Gio, GLib, GObject, Soup } = imports.gi;
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const Dialog = imports.ui.dialog;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const ExtensionSystem = imports.ui.extensionSystem;
|
||||
const FileUtils = imports.misc.fileUtils;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
|
||||
const _signals = ExtensionSystem._signals;
|
||||
|
||||
var REPOSITORY_URL_BASE = 'https://extensions.gnome.org';
|
||||
var REPOSITORY_URL_DOWNLOAD = REPOSITORY_URL_BASE + '/download-extension/%s.shell-extension.zip';
|
||||
var REPOSITORY_URL_INFO = REPOSITORY_URL_BASE + '/extension-info/';
|
||||
var REPOSITORY_URL_UPDATE = REPOSITORY_URL_BASE + '/update-info/';
|
||||
var REPOSITORY_URL_DOWNLOAD = `${REPOSITORY_URL_BASE}/download-extension/%s.shell-extension.zip`;
|
||||
var REPOSITORY_URL_INFO = `${REPOSITORY_URL_BASE}/extension-info/`;
|
||||
var REPOSITORY_URL_UPDATE = `${REPOSITORY_URL_BASE}/update-info/`;
|
||||
|
||||
let _httpSession;
|
||||
|
||||
@ -25,7 +24,7 @@ function installExtension(uuid, invocation) {
|
||||
|
||||
_httpSession.queue_message(message, (session, message) => {
|
||||
if (message.status_code != Soup.KnownStatusCode.OK) {
|
||||
ExtensionSystem.logExtensionError(uuid, 'downloading info: ' + message.status_code);
|
||||
ExtensionSystem.logExtensionError(uuid, `downloading info: ${message.status_code}`);
|
||||
invocation.return_dbus_error('org.gnome.Shell.DownloadInfoError', message.status_code.toString());
|
||||
return;
|
||||
}
|
||||
@ -34,7 +33,7 @@ function installExtension(uuid, invocation) {
|
||||
try {
|
||||
info = JSON.parse(message.response_body.data);
|
||||
} catch (e) {
|
||||
ExtensionSystem.logExtensionError(uuid, 'parsing info: ' + e);
|
||||
ExtensionSystem.logExtensionError(uuid, `parsing info: ${e}`);
|
||||
invocation.return_dbus_error('org.gnome.Shell.ParseInfoError', e.toString());
|
||||
return;
|
||||
}
|
||||
@ -194,19 +193,14 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
|
||||
default: true
|
||||
}]);
|
||||
|
||||
let message = _("Download and install “%s” from extensions.gnome.org?").format(info.name);
|
||||
let content = new Dialog.MessageDialogContent({
|
||||
title: _("Download and install “%s” from extensions.gnome.org?").format(info.name),
|
||||
icon: new Gio.FileIcon({
|
||||
file: Gio.File.new_for_uri(`${REPOSITORY_URL_BASE}${info.icon}`)
|
||||
})
|
||||
});
|
||||
|
||||
let box = new St.BoxLayout({ style_class: 'message-dialog-main-layout',
|
||||
vertical: false });
|
||||
this.contentLayout.add(box);
|
||||
|
||||
let gicon = new Gio.FileIcon({ file: Gio.File.new_for_uri(REPOSITORY_URL_BASE + info.icon) })
|
||||
let icon = new St.Icon({ gicon: gicon });
|
||||
box.add(icon);
|
||||
|
||||
let label = new St.Label({ style_class: 'message-dialog-title headline',
|
||||
text: message });
|
||||
box.add(label);
|
||||
this.contentLayout.add(content);
|
||||
}
|
||||
|
||||
_onCancelButtonPressed(button, event) {
|
||||
@ -226,13 +220,13 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
|
||||
function errback(code, message) {
|
||||
let msg = message ? message.toString() : '';
|
||||
log('Error while installing %s: %s (%s)'.format(uuid, code, msg));
|
||||
invocation.return_dbus_error('org.gnome.Shell.' + code, msg);
|
||||
invocation.return_dbus_error(`org.gnome.Shell.${code}`, msg);
|
||||
}
|
||||
|
||||
function callback() {
|
||||
// Add extension to 'enabled-extensions' for the user, always...
|
||||
let enabledExtensions = global.settings.get_strv(ExtensionSystem.ENABLED_EXTENSIONS_KEY);
|
||||
if (enabledExtensions.indexOf(uuid) == -1) {
|
||||
if (!enabledExtensions.includes(uuid)) {
|
||||
enabledExtensions.push(uuid);
|
||||
global.settings.set_strv(ExtensionSystem.ENABLED_EXTENSIONS_KEY, enabledExtensions);
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ function enableExtension(uuid) {
|
||||
|
||||
extensionOrder.push(uuid);
|
||||
|
||||
let stylesheetNames = [global.session_mode + '.css', 'stylesheet.css'];
|
||||
let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css'];
|
||||
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
||||
for (let i = 0; i < stylesheetNames.length; i++) {
|
||||
try {
|
||||
@ -147,7 +147,7 @@ function logExtensionError(uuid, error) {
|
||||
if (!extension)
|
||||
return;
|
||||
|
||||
let message = '' + error;
|
||||
let message = `${error}`;
|
||||
|
||||
extension.state = ExtensionState.ERROR;
|
||||
if (!extension.errors)
|
||||
@ -169,7 +169,7 @@ function loadExtension(extension) {
|
||||
if (checkVersion && ExtensionUtils.isOutOfDate(extension)) {
|
||||
extension.state = ExtensionState.OUT_OF_DATE;
|
||||
} else {
|
||||
let enabled = enabledExtensions.indexOf(extension.uuid) != -1;
|
||||
let enabled = enabledExtensions.includes(extension.uuid);
|
||||
if (enabled) {
|
||||
if (!initExtension(extension.uuid))
|
||||
return;
|
||||
@ -313,9 +313,9 @@ function _onVersionValidationChanged() {
|
||||
}
|
||||
|
||||
function _loadExtensions() {
|
||||
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
|
||||
global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged);
|
||||
global.settings.connect('changed::' + EXTENSION_DISABLE_VERSION_CHECK_KEY, _onVersionValidationChanged);
|
||||
global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`, onEnabledExtensionsChanged);
|
||||
global.settings.connect(`changed::${DISABLE_USER_EXTENSIONS_KEY}`, onEnabledExtensionsChanged);
|
||||
global.settings.connect(`changed::${EXTENSION_DISABLE_VERSION_CHECK_KEY}`, _onVersionValidationChanged);
|
||||
|
||||
enabledExtensions = getEnabledExtensions();
|
||||
|
||||
|
@ -56,8 +56,8 @@ var FocusCaretTracker = class FocusCaretTracker {
|
||||
if (!this._initAtspi() || this._focusListenerRegistered)
|
||||
return;
|
||||
|
||||
this._atspiListener.register(STATECHANGED + ':focused');
|
||||
this._atspiListener.register(STATECHANGED + ':selected');
|
||||
this._atspiListener.register(`${STATECHANGED}:focused`);
|
||||
this._atspiListener.register(`${STATECHANGED}:selected`);
|
||||
this._focusListenerRegistered = true;
|
||||
}
|
||||
|
||||
@ -73,8 +73,8 @@ var FocusCaretTracker = class FocusCaretTracker {
|
||||
if (!this._focusListenerRegistered)
|
||||
return;
|
||||
|
||||
this._atspiListener.deregister(STATECHANGED + ':focused');
|
||||
this._atspiListener.deregister(STATECHANGED + ':selected');
|
||||
this._atspiListener.deregister(`${STATECHANGED}:focused`);
|
||||
this._atspiListener.deregister(`${STATECHANGED}:selected`);
|
||||
this._focusListenerRegistered = false;
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ var GrabHelper = class GrabHelper {
|
||||
_isWithinGrabbedActor(actor) {
|
||||
let currentActor = this.currentGrab.actor;
|
||||
while (actor) {
|
||||
if (this._actors.indexOf(actor) != -1)
|
||||
if (this._actors.includes(actor))
|
||||
return true;
|
||||
if (actor == currentActor)
|
||||
return true;
|
||||
|
@ -44,7 +44,7 @@ var CandidateArea = class CandidateArea {
|
||||
case Clutter.ScrollDirection.DOWN:
|
||||
this.emit('cursor-down');
|
||||
break;
|
||||
};
|
||||
}
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
});
|
||||
|
||||
|
@ -141,7 +141,7 @@ class BaseIcon extends St.Bin {
|
||||
|
||||
function clamp(value, min, max) {
|
||||
return Math.max(Math.min(value, max), min);
|
||||
};
|
||||
}
|
||||
|
||||
function zoomOutActor(actor) {
|
||||
let actorClone = new Clutter.Clone({ source: actor,
|
||||
@ -276,7 +276,7 @@ var IconGrid = GObject.registerClass({
|
||||
if (forWidth < 0)
|
||||
nColumns = children.length;
|
||||
else
|
||||
[nColumns, ] = this._computeLayout(forWidth);
|
||||
[nColumns] = this._computeLayout(forWidth);
|
||||
|
||||
let nRows;
|
||||
if (nColumns > 0)
|
||||
@ -385,7 +385,7 @@ var IconGrid = GObject.registerClass({
|
||||
|
||||
let childVolume = child.get_transformed_paint_volume(this);
|
||||
if (!childVolume)
|
||||
return false
|
||||
return false;
|
||||
|
||||
paintVolume.union(childVolume);
|
||||
}
|
||||
@ -402,7 +402,7 @@ var IconGrid = GObject.registerClass({
|
||||
}
|
||||
|
||||
_cancelAnimation() {
|
||||
this._clonesAnimating.forEach(clone => { clone.destroy(); });
|
||||
this._clonesAnimating.forEach(clone => clone.destroy());
|
||||
this._clonesAnimating = [];
|
||||
}
|
||||
|
||||
@ -504,7 +504,7 @@ var IconGrid = GObject.registerClass({
|
||||
this._clonesAnimating.push(actorClone);
|
||||
Main.uiGroup.add_actor(actorClone);
|
||||
|
||||
let [width, height,,] = this._getAllocatedChildSizeAndSpacing(actor);
|
||||
let [width, height] = this._getAllocatedChildSizeAndSpacing(actor);
|
||||
actorClone.set_size(width, height);
|
||||
let scaleX = sourceScaledWidth / width;
|
||||
let scaleY = sourceScaledHeight / height;
|
||||
@ -743,7 +743,6 @@ var IconGrid = GObject.registerClass({
|
||||
this._fixedHItemSize = this._hItemSize;
|
||||
this._fixedVItemSize = this._vItemSize;
|
||||
this._updateSpacingForSize(availWidth, availHeight);
|
||||
let spacing = this._getSpacing();
|
||||
|
||||
if (this.columnsForWidth(availWidth) < this._minColumns || this.rowsForHeight(availHeight) < this._minRows) {
|
||||
let neededWidth = this.usedWidthForNColumns(this._minColumns) - availWidth;
|
||||
@ -802,7 +801,6 @@ var PaginatedIconGrid = GObject.registerClass({
|
||||
}
|
||||
let children = this._getVisibleChildren();
|
||||
let availWidth = box.x2 - box.x1;
|
||||
let availHeight = box.y2 - box.y1;
|
||||
let spacing = this._getSpacing();
|
||||
let [nColumns, usedWidth] = this._computeLayout(availWidth);
|
||||
|
||||
@ -821,7 +819,6 @@ var PaginatedIconGrid = GObject.registerClass({
|
||||
let x = box.x1 + leftEmptySpace + this.leftPadding;
|
||||
let y = box.y1 + this.topPadding;
|
||||
let columnIndex = 0;
|
||||
let rowIndex = 0;
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
let childBox = this._calculateChildBox(children[i], x, y, box);
|
||||
@ -831,17 +828,17 @@ var PaginatedIconGrid = GObject.registerClass({
|
||||
columnIndex++;
|
||||
if (columnIndex == nColumns) {
|
||||
columnIndex = 0;
|
||||
rowIndex++;
|
||||
}
|
||||
if (columnIndex == 0) {
|
||||
y += this._getVItemSize() + spacing;
|
||||
if ((i + 1) % this._childrenPerPage == 0)
|
||||
y += this._spaceBetweenPages - spacing + this.bottomPadding + this.topPadding;
|
||||
x = box.x1 + leftEmptySpace + this.leftPadding;
|
||||
} else
|
||||
} else {
|
||||
x += this._getHItemSize() + spacing;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Overridden from IconGrid
|
||||
_getChildrenToAnimate() {
|
||||
@ -863,7 +860,6 @@ var PaginatedIconGrid = GObject.registerClass({
|
||||
if (this._rowLimit)
|
||||
nRows = Math.min(nRows, this._rowLimit);
|
||||
|
||||
let spacing = this._getSpacing();
|
||||
// We want to contain the grid inside the parent box with padding
|
||||
this._rowsPerPage = this.rowsForHeight(availHeightPerPage);
|
||||
this._nPages = Math.ceil(nRows / this._rowsPerPage);
|
||||
@ -892,7 +888,7 @@ var PaginatedIconGrid = GObject.registerClass({
|
||||
if (!this._nPages)
|
||||
return 0;
|
||||
|
||||
let firstPageItem = pageNumber * this._childrenPerPage
|
||||
let firstPageItem = pageNumber * this._childrenPerPage;
|
||||
let childBox = this._getVisibleChildren()[firstPageItem].get_allocation_box();
|
||||
return childBox.y1 - this.topPadding;
|
||||
}
|
||||
@ -971,7 +967,7 @@ var PaginatedIconGrid = GObject.registerClass({
|
||||
transition: 'easeInOutQuad'
|
||||
};
|
||||
if (i == (children.length - 1))
|
||||
params.onComplete = () => { this.emit('space-opened'); };
|
||||
params.onComplete = () => this.emit('space-opened');
|
||||
Tweener.addTween(children[i], params);
|
||||
}
|
||||
}
|
||||
@ -989,7 +985,7 @@ var PaginatedIconGrid = GObject.registerClass({
|
||||
{ translation_y: 0,
|
||||
time: EXTRA_SPACE_ANIMATION_TIME,
|
||||
transition: 'easeInOutQuad',
|
||||
onComplete: () => { this.emit('space-closed'); }
|
||||
onComplete: () => this.emit('space-closed')
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ var InhibitShortcutsDialog = GObject.registerClass({
|
||||
}
|
||||
|
||||
vfunc_show() {
|
||||
if (this._app && APP_WHITELIST.indexOf(this._app.get_id()) != -1) {
|
||||
if (this._app && APP_WHITELIST.includes(this._app.get_id())) {
|
||||
this._emitResponse(DialogResponse.ALLOW);
|
||||
return;
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ var Key = class Key {
|
||||
}
|
||||
|
||||
_press(key) {
|
||||
this.emit('activated')
|
||||
this.emit('activated');
|
||||
|
||||
if (key != this.key || this._extended_keys.length == 0) {
|
||||
this.emit('pressed', this._getKeyval(key), key);
|
||||
@ -405,9 +405,6 @@ var Key = class Key {
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
});
|
||||
button.connect('touch-event', (actor, event) => {
|
||||
let device = event.get_device();
|
||||
let sequence = event.get_event_sequence();
|
||||
|
||||
// We only handle touch events here on wayland. On X11
|
||||
// we do get emulated pointer events, which already works
|
||||
// for single-touch cases. Besides, the X11 passive touch grab
|
||||
@ -683,7 +680,7 @@ var EmojiPager = class EmojiPager {
|
||||
|
||||
_onPanEnd() {
|
||||
if (Math.abs(this._delta) < this.actor.width * PANEL_SWITCH_RELATIVE_DISTANCE) {
|
||||
this._onPanCancel()
|
||||
this._onPanCancel();
|
||||
} else {
|
||||
let value;
|
||||
if (this._delta > 0)
|
||||
@ -865,7 +862,7 @@ var EmojiSelection = class EmojiSelection {
|
||||
x_expand: true,
|
||||
y_expand: true,
|
||||
vertical: true });
|
||||
this.actor.connect('notify::mapped', () => { this._emojiPager.setCurrentPage(0); });
|
||||
this.actor.connect('notify::mapped', () => this._emojiPager.setCurrentPage(0));
|
||||
|
||||
this._emojiPager = new EmojiPager(this._sections, 11, 3);
|
||||
this._emojiPager.connect('page-changed', (pager, section, page, nPages) => {
|
||||
@ -913,7 +910,6 @@ var EmojiSelection = class EmojiSelection {
|
||||
contents = imports.byteArray.toString(contents);
|
||||
let emoji = JSON.parse(contents);
|
||||
|
||||
let pages = [];
|
||||
let variants = [];
|
||||
let currentKey = 0;
|
||||
let currentSection = null;
|
||||
@ -948,14 +944,14 @@ var EmojiSelection = class EmojiSelection {
|
||||
|
||||
key = new Key('ABC', []);
|
||||
key.keyButton.add_style_class_name('default-key');
|
||||
key.connect('released', () => { this.emit('toggle'); });
|
||||
key.connect('released', () => this.emit('toggle'));
|
||||
row.appendKey(key.actor, 1.5);
|
||||
|
||||
for (let i = 0; i < this._sections.length; i++) {
|
||||
let section = this._sections[i];
|
||||
|
||||
key = new Key(section.label, []);
|
||||
key.connect('released', () => { this._emojiPager.setCurrentSection(section, 0) });
|
||||
key.connect('released', () => this._emojiPager.setCurrentSection(section, 0));
|
||||
row.appendKey(key.actor);
|
||||
|
||||
section.button = key;
|
||||
@ -1074,7 +1070,7 @@ var Keyboard = class Keyboard {
|
||||
let manager = Clutter.DeviceManager.get_default();
|
||||
let device = manager.get_device(deviceId);
|
||||
|
||||
if (device.get_device_name().indexOf('XTEST') < 0) {
|
||||
if (!device.get_device_name().includes('XTEST')) {
|
||||
this._lastDeviceId = deviceId;
|
||||
this._syncEnabled();
|
||||
}
|
||||
@ -1175,7 +1171,7 @@ var Keyboard = class Keyboard {
|
||||
|
||||
this._emojiSelection = new EmojiSelection();
|
||||
this._emojiSelection.connect('toggle', this._toggleEmoji.bind(this));
|
||||
this._emojiSelection.connect('hide', (selection) => { this.hide(); });
|
||||
this._emojiSelection.connect('hide', (selection) => this.hide());
|
||||
this._emojiSelection.connect('emoji-selected', (selection, emoji) => {
|
||||
this._keyboardController.commitString(emoji);
|
||||
});
|
||||
@ -1406,8 +1402,6 @@ var Keyboard = class Keyboard {
|
||||
}
|
||||
|
||||
_getDefaultKeysForRow(row, numRows, level) {
|
||||
let pre, post;
|
||||
|
||||
/* The first 2 rows in defaultKeysPre/Post belong together with
|
||||
* the first 2 rows on each keymap. On keymaps that have more than
|
||||
* 4 rows, the last 2 default key rows must be respectively
|
||||
@ -1448,8 +1442,8 @@ var Keyboard = class Keyboard {
|
||||
numOfVertSlots = rows.length;
|
||||
|
||||
for (let i = 0; i < rows.length; ++i) {
|
||||
let keyboard_row = rows[i];
|
||||
let keys = keyboard_row.get_children();
|
||||
let keyboardRow = rows[i];
|
||||
let keys = keyboardRow.get_children();
|
||||
|
||||
numOfHorizSlots = Math.max(numOfHorizSlots, keys.length);
|
||||
}
|
||||
@ -1646,8 +1640,7 @@ var Keyboard = class Keyboard {
|
||||
}
|
||||
|
||||
_windowSlideAnimationComplete(window, delta) {
|
||||
// Synchronize window and actor positions again.
|
||||
let windowActor = window.get_compositor_private();
|
||||
// Synchronize window positions again.
|
||||
let frameRect = window.get_frame_rect();
|
||||
frameRect.y += delta;
|
||||
window.move_frame(true, frameRect.x, frameRect.y);
|
||||
@ -1693,7 +1686,6 @@ var Keyboard = class Keyboard {
|
||||
|
||||
if (window && monitor) {
|
||||
let keyboardHeight = Main.layoutManager.keyboardBox.height;
|
||||
let focusObscured = false;
|
||||
|
||||
if (y + h >= monitor.y + monitor.height - keyboardHeight) {
|
||||
if (this._keyboardVisible)
|
||||
@ -1744,7 +1736,6 @@ var KeyboardController = class {
|
||||
}
|
||||
|
||||
_onContentPurposeHintsChanged(method) {
|
||||
let hints = method.content_hints;
|
||||
let purpose = method.content_purpose;
|
||||
let emojiVisible = false;
|
||||
let keypadVisible = false;
|
||||
@ -1759,13 +1750,13 @@ var KeyboardController = class {
|
||||
purpose == Clutter.InputContentPurpose.PHONE)
|
||||
keypadVisible = true;
|
||||
|
||||
this.emit('emoji-visible', emojiVisible)
|
||||
this.emit('emoji-visible', emojiVisible);
|
||||
this.emit('keypad-visible', keypadVisible);
|
||||
}
|
||||
|
||||
getGroups() {
|
||||
let inputSources = this._inputSourceManager.inputSources;
|
||||
let groups = []
|
||||
let groups = [];
|
||||
|
||||
for (let i in inputSources) {
|
||||
let is = inputSources[i];
|
||||
|
@ -32,7 +32,8 @@ function isPopupMetaWindow(actor) {
|
||||
}
|
||||
|
||||
var MonitorConstraint = GObject.registerClass({
|
||||
Properties: {'primary': GObject.ParamSpec.boolean('primary',
|
||||
Properties: {
|
||||
'primary': GObject.ParamSpec.boolean('primary',
|
||||
'Primary', 'Track primary monitor',
|
||||
GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
|
||||
false),
|
||||
@ -43,7 +44,8 @@ var MonitorConstraint = GObject.registerClass({
|
||||
'work-area': GObject.ParamSpec.boolean('work-area',
|
||||
'Work-area', 'Track monitor\'s work-area',
|
||||
GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
|
||||
false)},
|
||||
false)
|
||||
},
|
||||
}, class MonitorConstraint extends Clutter.Constraint {
|
||||
_init(props) {
|
||||
this._primary = false;
|
||||
@ -147,13 +149,13 @@ var MonitorConstraint = GObject.registerClass({
|
||||
});
|
||||
|
||||
var Monitor = class Monitor {
|
||||
constructor(index, geometry, geometry_scale) {
|
||||
constructor(index, geometry, geometryScale) {
|
||||
this.index = index;
|
||||
this.x = geometry.x;
|
||||
this.y = geometry.y;
|
||||
this.width = geometry.width;
|
||||
this.height = geometry.height;
|
||||
this.geometry_scale = geometry_scale;
|
||||
this.geometry_scale = geometryScale;
|
||||
}
|
||||
|
||||
get inFullscreen() {
|
||||
@ -239,7 +241,7 @@ var LayoutManager = GObject.registerClass({
|
||||
clip_to_allocation: true,
|
||||
layout_manager: new Clutter.BinLayout(),
|
||||
});
|
||||
this.addTopChrome(this.screenShieldGroup);
|
||||
this.addChrome(this.screenShieldGroup);
|
||||
|
||||
this.panelBox = new St.BoxLayout({ name: 'panelBox',
|
||||
vertical: true });
|
||||
|
@ -7,7 +7,7 @@ const Params = imports.misc.params;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
var DEFAULT_FADE_FACTOR = 0.4;
|
||||
var VIGNETTE_BRIGHTNESS = 0.8;
|
||||
var VIGNETTE_BRIGHTNESS = 0.2;
|
||||
var VIGNETTE_SHARPNESS = 0.7;
|
||||
|
||||
const VIGNETTE_DECLARATIONS = '\
|
||||
|
@ -1,13 +1,13 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const { Clutter, Gio, GLib, St } = imports.gi;
|
||||
const { Gio } = imports.gi;
|
||||
const Ripples = imports.ui.ripples;
|
||||
const Main = imports.ui.main;
|
||||
|
||||
const LOCATE_POINTER_KEY = "locate-pointer";
|
||||
const LOCATE_POINTER_SCHEMA = "org.gnome.desktop.interface"
|
||||
const LOCATE_POINTER_SCHEMA = "org.gnome.desktop.interface";
|
||||
|
||||
var locatePointer = class {
|
||||
var LocatePointer = class {
|
||||
constructor() {
|
||||
this._settings = new Gio.Settings({ schema_id: LOCATE_POINTER_SCHEMA });
|
||||
this._ripples = new Ripples.Ripples(0.5, 0.5, 'ripple-pointer-location');
|
||||
@ -15,7 +15,7 @@ var locatePointer = class {
|
||||
}
|
||||
|
||||
show() {
|
||||
if (!this._settings.get_boolean("locate-pointer"))
|
||||
if (!this._settings.get_boolean(LOCATE_POINTER_KEY))
|
||||
return;
|
||||
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
|
@ -146,8 +146,8 @@ var Notebook = class Notebook {
|
||||
this.actor.add(scrollview, { expand: true });
|
||||
|
||||
let vAdjust = scrollview.vscroll.adjustment;
|
||||
vAdjust.connect('changed', () => { this._onAdjustScopeChanged(tabData); });
|
||||
vAdjust.connect('notify::value', () => { this._onAdjustValueChanged(tabData); });
|
||||
vAdjust.connect('changed', () => this._onAdjustScopeChanged(tabData));
|
||||
vAdjust.connect('notify::value', () => this._onAdjustValueChanged(tabData));
|
||||
|
||||
if (this._selectedIndex == -1)
|
||||
this.selectIndex(0);
|
||||
@ -185,9 +185,9 @@ var Notebook = class Notebook {
|
||||
}
|
||||
|
||||
selectChild(child) {
|
||||
if (child == null)
|
||||
if (child == null) {
|
||||
this.selectIndex(-1);
|
||||
else {
|
||||
} else {
|
||||
for (let i = 0; i < this._tabs.length; i++) {
|
||||
let tabData = this._tabs[i];
|
||||
if (tabData.child == child) {
|
||||
@ -242,7 +242,7 @@ function objectToString(o) {
|
||||
// special case this since the default is way, way too verbose
|
||||
return '<js function>';
|
||||
} else {
|
||||
return '' + o;
|
||||
return `${o}`;
|
||||
}
|
||||
}
|
||||
|
||||
@ -284,7 +284,7 @@ var Result = class Result {
|
||||
this.actor.add(cmdTxt);
|
||||
let box = new St.BoxLayout({});
|
||||
this.actor.add(box);
|
||||
let resultTxt = new St.Label({ text: 'r(' + index + ') = ' });
|
||||
let resultTxt = new St.Label({ text: `r(${index}) = ` });
|
||||
resultTxt.clutter_text.ellipsize = Pango.EllipsizeMode.END;
|
||||
box.add(resultTxt);
|
||||
let objLink = new ObjLink(this._lookingGlass, o);
|
||||
@ -320,7 +320,7 @@ var WindowList = class WindowList {
|
||||
box.add(windowLink.actor, { x_align: St.Align.START, x_fill: false });
|
||||
let propsBox = new St.BoxLayout({ vertical: true, style: 'padding-left: 6px;' });
|
||||
box.add(propsBox);
|
||||
propsBox.add(new St.Label({ text: 'wmclass: ' + metaWindow.get_wm_class() }));
|
||||
propsBox.add(new St.Label({ text: `wmclass: ${metaWindow.get_wm_class()}` }));
|
||||
let app = tracker.get_window_app(metaWindow);
|
||||
if (app != null && !app.is_window_backed()) {
|
||||
let icon = app.create_icon_texture(22);
|
||||
@ -394,7 +394,6 @@ var ObjInspector = class ObjInspector {
|
||||
|
||||
for (let i = 0; i < properties.length; i++) {
|
||||
let propName = properties[i];
|
||||
let valueStr;
|
||||
let link;
|
||||
try {
|
||||
let prop = obj[propName];
|
||||
@ -403,8 +402,7 @@ var ObjInspector = class ObjInspector {
|
||||
link = new St.Label({ text: '<error>' });
|
||||
}
|
||||
let hbox = new St.BoxLayout();
|
||||
let propText = propName + ': ' + valueStr;
|
||||
hbox.add(new St.Label({ text: propName + ': ' }));
|
||||
hbox.add(new St.Label({ text: `${propName}: ` }));
|
||||
hbox.add(link);
|
||||
this._container.add_actor(hbox);
|
||||
}
|
||||
@ -493,8 +491,13 @@ var Inspector = GObject.registerClass({
|
||||
eventHandler.connect('button-press-event', this._onButtonPressEvent.bind(this));
|
||||
eventHandler.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||
eventHandler.connect('motion-event', this._onMotionEvent.bind(this));
|
||||
Clutter.grab_pointer(eventHandler);
|
||||
Clutter.grab_keyboard(eventHandler);
|
||||
|
||||
let dm = Clutter.DeviceManager.get_default();
|
||||
this._pointerDevice = dm.get_core_device(Clutter.InputDeviceType.POINTER_DEVICE);
|
||||
this._keyboardDevice = dm.get_core_device(Clutter.InputDeviceType.KEYBOARD_DEVICE);
|
||||
|
||||
this._pointerDevice.grab(eventHandler);
|
||||
this._keyboardDevice.grab(eventHandler);
|
||||
|
||||
// this._target is the actor currently shown by the inspector.
|
||||
// this._pointerTarget is the actor directly under the pointer.
|
||||
@ -527,8 +530,8 @@ var Inspector = GObject.registerClass({
|
||||
}
|
||||
|
||||
_close() {
|
||||
Clutter.ungrab_pointer();
|
||||
Clutter.ungrab_keyboard();
|
||||
this._pointerDevice.ungrab();
|
||||
this._keyboardDevice.ungrab();
|
||||
this._eventHandler.destroy();
|
||||
this._eventHandler = null;
|
||||
this.emit('closed');
|
||||
@ -551,7 +554,7 @@ var Inspector = GObject.registerClass({
|
||||
|
||||
_onScrollEvent(actor, event) {
|
||||
switch (event.get_scroll_direction()) {
|
||||
case Clutter.ScrollDirection.UP:
|
||||
case Clutter.ScrollDirection.UP: {
|
||||
// select parent
|
||||
let parent = this._target.get_parent();
|
||||
if (parent != null) {
|
||||
@ -559,6 +562,7 @@ var Inspector = GObject.registerClass({
|
||||
this._update(event);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Clutter.ScrollDirection.DOWN:
|
||||
// select child
|
||||
@ -598,9 +602,9 @@ var Inspector = GObject.registerClass({
|
||||
this._target = target;
|
||||
this._pointerTarget = target;
|
||||
|
||||
let position = '[inspect x: ' + stageX + ' y: ' + stageY + ']';
|
||||
let position = `[inspect x: ${stageX} y: ${stageY}]`;
|
||||
this._displayText.text = '';
|
||||
this._displayText.text = position + ' ' + this._target;
|
||||
this._displayText.text = `${position} ${this._target}`;
|
||||
|
||||
this._lookingGlass.setBorderPaintTarget(this._target);
|
||||
}
|
||||
@ -710,7 +714,6 @@ var Extensions = class Extensions {
|
||||
|
||||
let metaBox = new St.BoxLayout({ style_class: 'lg-extension-meta' });
|
||||
box.add(metaBox);
|
||||
let stateString = this._stateToString(extension.state);
|
||||
let state = new St.Label({ style_class: 'lg-extension-state',
|
||||
text: this._stateToString(extension.state) });
|
||||
metaBox.add(state);
|
||||
@ -795,7 +798,7 @@ var LookingGlass = class LookingGlass {
|
||||
inspectIcon.connect('button-press-event', () => {
|
||||
let inspector = new Inspector(this);
|
||||
inspector.connect('target', (i, target, stageX, stageY) => {
|
||||
this._pushResult('inspect(' + Math.round(stageX) + ', ' + Math.round(stageY) + ')', target);
|
||||
this._pushResult(`inspect(${Math.round(stageX)}, ${Math.round(stageY)})`, target);
|
||||
});
|
||||
inspector.connect('closed', () => {
|
||||
this.actor.show();
|
||||
@ -889,9 +892,11 @@ var LookingGlass = class LookingGlass {
|
||||
let fontDesc = Pango.FontDescription.from_string(fontName);
|
||||
// We ignore everything but size and style; you'd be crazy to set your system-wide
|
||||
// monospace font to be bold/oblique/etc. Could easily be added here.
|
||||
this.actor.style =
|
||||
'font-size: ' + fontDesc.get_size() / 1024. + (fontDesc.get_size_is_absolute() ? 'px' : 'pt') + ';'
|
||||
+ 'font-family: "' + fontDesc.get_family() + '";';
|
||||
let size = fontDesc.get_size() / 1024.;
|
||||
let unit = fontDesc.get_size_is_absolute() ? 'px' : 'pt';
|
||||
this.actor.style = `
|
||||
font-size: ${size}${unit};
|
||||
font-family: "${fontDesc.get_family()}";`;
|
||||
}
|
||||
|
||||
setBorderPaintTarget(obj) {
|
||||
@ -977,7 +982,7 @@ var LookingGlass = class LookingGlass {
|
||||
try {
|
||||
resultObj = Function(fullCmd)();
|
||||
} catch (e) {
|
||||
resultObj = '<exception ' + e + '>';
|
||||
resultObj = `<exception ${e}>`;
|
||||
}
|
||||
|
||||
this._pushResult(command, resultObj);
|
||||
@ -1004,7 +1009,7 @@ var LookingGlass = class LookingGlass {
|
||||
}
|
||||
|
||||
_queueResize() {
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { this._resize(); });
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => this._resize());
|
||||
}
|
||||
|
||||
_resize() {
|
||||
|
@ -41,8 +41,6 @@ const CROSS_HAIRS_OPACITY_KEY = 'cross-hairs-opacity';
|
||||
const CROSS_HAIRS_LENGTH_KEY = 'cross-hairs-length';
|
||||
const CROSS_HAIRS_CLIP_KEY = 'cross-hairs-clip';
|
||||
|
||||
let magDBusService = null;
|
||||
|
||||
var MouseSpriteContent = GObject.registerClass({
|
||||
Implements: [Clutter.Content],
|
||||
}, class MouseSpriteContent extends GObject.Object {
|
||||
@ -122,7 +120,7 @@ var Magnifier = class Magnifier {
|
||||
});
|
||||
|
||||
// Export to dbus.
|
||||
magDBusService = new MagnifierDBus.ShellMagnifier();
|
||||
(new MagnifierDBus.ShellMagnifier());
|
||||
this.setActive(St.Settings.get().magnifier_active);
|
||||
}
|
||||
|
||||
@ -349,8 +347,7 @@ var Magnifier = class Magnifier {
|
||||
if (!this._crossHairs)
|
||||
this.addCrosshairs();
|
||||
this._crossHairs.show();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (this._crossHairs)
|
||||
this._crossHairs.hide();
|
||||
}
|
||||
@ -377,10 +374,10 @@ var Magnifier = class Magnifier {
|
||||
if (this._crossHairs) {
|
||||
let clutterColor = this._crossHairs.getColor();
|
||||
return clutterColor.to_string();
|
||||
}
|
||||
else
|
||||
} else {
|
||||
return '#00000000';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* setCrosshairsThickness:
|
||||
@ -459,8 +456,7 @@ var Magnifier = class Magnifier {
|
||||
if (clip) {
|
||||
if (this._crossHairs)
|
||||
this._crossHairs.setClip(CROSSHAIRS_CLIP_SIZE);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// Setting no clipping on crosshairs means a zero sized clip
|
||||
// rectangle.
|
||||
if (this._crossHairs)
|
||||
@ -477,10 +473,10 @@ var Magnifier = class Magnifier {
|
||||
if (this._crossHairs) {
|
||||
let [clipWidth, clipHeight] = this._crossHairs.getClip();
|
||||
return (clipWidth > 0 && clipHeight > 0);
|
||||
}
|
||||
else
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//// Private methods ////
|
||||
|
||||
@ -504,61 +500,61 @@ var Magnifier = class Magnifier {
|
||||
_settingsInit(zoomRegion) {
|
||||
this._settings = new Gio.Settings({ schema_id: MAGNIFIER_SCHEMA });
|
||||
|
||||
this._settings.connect('changed::' + SCREEN_POSITION_KEY,
|
||||
this._settings.connect(`changed::${SCREEN_POSITION_KEY}`,
|
||||
this._updateScreenPosition.bind(this));
|
||||
this._settings.connect('changed::' + MAG_FACTOR_KEY,
|
||||
this._settings.connect(`changed::${MAG_FACTOR_KEY}`,
|
||||
this._updateMagFactor.bind(this));
|
||||
this._settings.connect('changed::' + LENS_MODE_KEY,
|
||||
this._settings.connect(`changed::${LENS_MODE_KEY}`,
|
||||
this._updateLensMode.bind(this));
|
||||
this._settings.connect('changed::' + CLAMP_MODE_KEY,
|
||||
this._settings.connect(`changed::${CLAMP_MODE_KEY}`,
|
||||
this._updateClampMode.bind(this));
|
||||
this._settings.connect('changed::' + MOUSE_TRACKING_KEY,
|
||||
this._settings.connect(`changed::${MOUSE_TRACKING_KEY}`,
|
||||
this._updateMouseTrackingMode.bind(this));
|
||||
this._settings.connect('changed::' + FOCUS_TRACKING_KEY,
|
||||
this._settings.connect(`changed::${FOCUS_TRACKING_KEY}`,
|
||||
this._updateFocusTrackingMode.bind(this));
|
||||
this._settings.connect('changed::' + CARET_TRACKING_KEY,
|
||||
this._settings.connect(`changed::${CARET_TRACKING_KEY}`,
|
||||
this._updateCaretTrackingMode.bind(this));
|
||||
|
||||
this._settings.connect('changed::' + INVERT_LIGHTNESS_KEY,
|
||||
this._settings.connect(`changed::${INVERT_LIGHTNESS_KEY}`,
|
||||
this._updateInvertLightness.bind(this));
|
||||
this._settings.connect('changed::' + COLOR_SATURATION_KEY,
|
||||
this._settings.connect(`changed::${COLOR_SATURATION_KEY}`,
|
||||
this._updateColorSaturation.bind(this));
|
||||
|
||||
this._settings.connect('changed::' + BRIGHT_RED_KEY,
|
||||
this._settings.connect(`changed::${BRIGHT_RED_KEY}`,
|
||||
this._updateBrightness.bind(this));
|
||||
this._settings.connect('changed::' + BRIGHT_GREEN_KEY,
|
||||
this._settings.connect(`changed::${BRIGHT_GREEN_KEY}`,
|
||||
this._updateBrightness.bind(this));
|
||||
this._settings.connect('changed::' + BRIGHT_BLUE_KEY,
|
||||
this._settings.connect(`changed::${BRIGHT_BLUE_KEY}`,
|
||||
this._updateBrightness.bind(this));
|
||||
|
||||
this._settings.connect('changed::' + CONTRAST_RED_KEY,
|
||||
this._settings.connect(`changed::${CONTRAST_RED_KEY}`,
|
||||
this._updateContrast.bind(this));
|
||||
this._settings.connect('changed::' + CONTRAST_GREEN_KEY,
|
||||
this._settings.connect(`changed::${CONTRAST_GREEN_KEY}`,
|
||||
this._updateContrast.bind(this));
|
||||
this._settings.connect('changed::' + CONTRAST_BLUE_KEY,
|
||||
this._settings.connect(`changed::${CONTRAST_BLUE_KEY}`,
|
||||
this._updateContrast.bind(this));
|
||||
|
||||
this._settings.connect('changed::' + SHOW_CROSS_HAIRS_KEY, () => {
|
||||
this._settings.connect(`changed::${SHOW_CROSS_HAIRS_KEY}`, () => {
|
||||
this.setCrosshairsVisible(this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY));
|
||||
});
|
||||
|
||||
this._settings.connect('changed::' + CROSS_HAIRS_THICKNESS_KEY, () => {
|
||||
this._settings.connect(`changed::${CROSS_HAIRS_THICKNESS_KEY}`, () => {
|
||||
this.setCrosshairsThickness(this._settings.get_int(CROSS_HAIRS_THICKNESS_KEY));
|
||||
});
|
||||
|
||||
this._settings.connect('changed::' + CROSS_HAIRS_COLOR_KEY, () => {
|
||||
this._settings.connect(`changed::${CROSS_HAIRS_COLOR_KEY}`, () => {
|
||||
this.setCrosshairsColor(this._settings.get_string(CROSS_HAIRS_COLOR_KEY));
|
||||
});
|
||||
|
||||
this._settings.connect('changed::' + CROSS_HAIRS_OPACITY_KEY, () => {
|
||||
this._settings.connect(`changed::${CROSS_HAIRS_OPACITY_KEY}`, () => {
|
||||
this.setCrosshairsOpacity(this._settings.get_double(CROSS_HAIRS_OPACITY_KEY));
|
||||
});
|
||||
|
||||
this._settings.connect('changed::' + CROSS_HAIRS_LENGTH_KEY, () => {
|
||||
this._settings.connect(`changed::${CROSS_HAIRS_LENGTH_KEY}`, () => {
|
||||
this.setCrosshairsLength(this._settings.get_int(CROSS_HAIRS_LENGTH_KEY));
|
||||
});
|
||||
|
||||
this._settings.connect('changed::' + CROSS_HAIRS_CLIP_KEY, () => {
|
||||
this._settings.connect(`changed::${CROSS_HAIRS_CLIP_KEY}`, () => {
|
||||
this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY));
|
||||
});
|
||||
|
||||
@ -801,7 +797,7 @@ var ZoomRegion = class ZoomRegion {
|
||||
try {
|
||||
extents = component.get_extents(Atspi.CoordType.SCREEN);
|
||||
} catch (e) {
|
||||
log('Failed to read extents of focused component: ' + e.message);
|
||||
log(`Failed to read extents of focused component: ${e.message}`);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -818,7 +814,7 @@ var ZoomRegion = class ZoomRegion {
|
||||
try {
|
||||
extents = text.get_character_extents(text.get_caret_offset(), 0);
|
||||
} catch (e) {
|
||||
log('Failed to read extents of text caret: ' + e.message);
|
||||
log(`Failed to read extents of text caret: ${e.message}`);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1460,11 +1456,9 @@ var ZoomRegion = class ZoomRegion {
|
||||
|
||||
if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.PROPORTIONAL) {
|
||||
return this._centerFromPointProportional(xMouse, yMouse);
|
||||
}
|
||||
else if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.PUSH) {
|
||||
} else if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.PUSH) {
|
||||
return this._centerFromPointPush(xMouse, yMouse);
|
||||
}
|
||||
else if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.CENTERED) {
|
||||
} else if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.CENTERED) {
|
||||
return this._centerFromPointCentered(xMouse, yMouse);
|
||||
}
|
||||
|
||||
@ -1778,8 +1772,7 @@ var Crosshairs = class Crosshairs {
|
||||
// mouse.
|
||||
this._clipSize = size;
|
||||
this.reCenter();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// Restore the missing chunk.
|
||||
this._clipSize = [0, 0];
|
||||
this.reCenter();
|
||||
@ -1818,9 +1811,7 @@ var Crosshairs = class Crosshairs {
|
||||
reCenter(clipSize) {
|
||||
let [groupWidth, groupHeight] = this._actor.get_size();
|
||||
let leftLength = this._horizLeftHair.get_width();
|
||||
let rightLength = this._horizRightHair.get_width();
|
||||
let topLength = this._vertTopHair.get_height();
|
||||
let bottomLength = this._vertBottomHair.get_height();
|
||||
let thickness = this._horizLeftHair.get_height();
|
||||
|
||||
// Deal with clip rectangle.
|
||||
|
@ -85,7 +85,7 @@ var ShellMagnifier = class ShellMagnifier {
|
||||
let ROI = { x: roi[0], y: roi[1], width: roi[2] - roi[0], height: roi[3] - roi[1] };
|
||||
let viewBox = { x: viewPort[0], y: viewPort[1], width: viewPort[2] - viewPort[0], height: viewPort[3] - viewPort[1] };
|
||||
let realZoomRegion = Main.magnifier.createZoomRegion(xMagFactor, yMagFactor, ROI, viewBox);
|
||||
let objectPath = ZOOM_SERVICE_PATH + '/zoomer' + _zoomRegionInstanceCount;
|
||||
let objectPath = `${ZOOM_SERVICE_PATH}/zoomer${_zoomRegionInstanceCount}`;
|
||||
_zoomRegionInstanceCount++;
|
||||
|
||||
let zoomRegionProxy = new ShellMagnifierZoomRegion(objectPath, realZoomRegion);
|
||||
@ -106,10 +106,10 @@ var ShellMagnifier = class ShellMagnifier {
|
||||
if (proxyAndZoomRegion && proxyAndZoomRegion.zoomRegion) {
|
||||
Main.magnifier.addZoomRegion(proxyAndZoomRegion.zoomRegion);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* getZoomRegions:
|
||||
|
@ -84,7 +84,6 @@ let _cssStylesheet = null;
|
||||
let _a11ySettings = null;
|
||||
let _themeResource = null;
|
||||
let _oskResource = null;
|
||||
let pointerA11yTimeout = null;
|
||||
|
||||
function _sessionUpdated() {
|
||||
if (sessionMode.isPrimary)
|
||||
@ -157,8 +156,8 @@ function _initializeUI() {
|
||||
// Setup the stage hierarchy early
|
||||
layoutManager = new Layout.LayoutManager();
|
||||
|
||||
// Various parts of the codebase still refers to Main.uiGroup
|
||||
// instead using the layoutManager. This keeps that code
|
||||
// Various parts of the codebase still refer to Main.uiGroup
|
||||
// instead of using the layoutManager. This keeps that code
|
||||
// working until it's updated.
|
||||
uiGroup = layoutManager.uiGroup;
|
||||
|
||||
@ -172,7 +171,7 @@ function _initializeUI() {
|
||||
kbdA11yDialog = new KbdA11yDialog.KbdA11yDialog();
|
||||
wm = new WindowManager.WindowManager();
|
||||
magnifier = new Magnifier.Magnifier();
|
||||
locatePointer = new LocatePointer.locatePointer();
|
||||
locatePointer = new LocatePointer.LocatePointer();
|
||||
|
||||
if (LoginManager.canLock())
|
||||
screenShield = new ScreenShield.ScreenShield();
|
||||
@ -192,7 +191,7 @@ function _initializeUI() {
|
||||
layoutManager.init();
|
||||
overview.init();
|
||||
|
||||
pointerA11yTimeout = new PointerA11yTimeout.PointerA11yTimeout();
|
||||
(new PointerA11yTimeout.PointerA11yTimeout());
|
||||
|
||||
_a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
|
||||
|
||||
@ -255,7 +254,7 @@ function _initializeUI() {
|
||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||
if (perfModuleName) {
|
||||
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
|
||||
let module = eval('imports.perf.' + perfModuleName + ';');
|
||||
let module = eval(`imports.perf.${perfModuleName};`);
|
||||
Scripting.runPerfScript(module, perfOutput);
|
||||
}
|
||||
});
|
||||
@ -391,9 +390,9 @@ function notify(msg, details) {
|
||||
function notifyError(msg, details) {
|
||||
// Also print to stderr so it's logged somewhere
|
||||
if (details)
|
||||
log('error: ' + msg + ': ' + details);
|
||||
log(`error: ${msg}: ${details}`);
|
||||
else
|
||||
log('error: ' + msg);
|
||||
log(`error: ${msg}`);
|
||||
|
||||
notify(msg, details);
|
||||
}
|
||||
@ -476,7 +475,7 @@ function pushModal(actor, params) {
|
||||
|
||||
/**
|
||||
* popModal:
|
||||
* @actor: #ClutterActor passed to original invocation of pushModal().
|
||||
* @actor: #ClutterActor passed to original invocation of pushModal()
|
||||
* @timestamp: optional timestamp
|
||||
*
|
||||
* Reverse the effect of pushModal(). If this invocation is undoing
|
||||
@ -659,11 +658,11 @@ function _queueBeforeRedraw(workId) {
|
||||
*/
|
||||
function initializeDeferredWork(actor, callback, props) {
|
||||
// Turn into a string so we can use as an object property
|
||||
let workId = '' + (++_deferredWorkSequence);
|
||||
let workId = `${(++_deferredWorkSequence)}`;
|
||||
_deferredWorkData[workId] = { 'actor': actor,
|
||||
'callback': callback };
|
||||
actor.connect('notify::mapped', () => {
|
||||
if (!(actor.mapped && _deferredWorkQueue.indexOf(workId) >= 0))
|
||||
if (!(actor.mapped && _deferredWorkQueue.includes(workId)))
|
||||
return;
|
||||
_queueBeforeRedraw(workId);
|
||||
});
|
||||
@ -693,7 +692,7 @@ function queueDeferredWork(workId) {
|
||||
logError(new Error(message), message);
|
||||
return;
|
||||
}
|
||||
if (_deferredWorkQueue.indexOf(workId) < 0)
|
||||
if (!_deferredWorkQueue.includes(workId))
|
||||
_deferredWorkQueue.push(workId);
|
||||
if (data.actor.mapped) {
|
||||
_queueBeforeRedraw(workId);
|
||||
|
@ -72,7 +72,7 @@ var URLHighlighter = class URLHighlighter {
|
||||
let urlId = this._findUrlAtPos(event);
|
||||
if (urlId != -1) {
|
||||
let url = this._urls[urlId].url;
|
||||
if (url.indexOf(':') == -1)
|
||||
if (!url.includes(':'))
|
||||
url = 'http://' + url;
|
||||
|
||||
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context(0, -1));
|
||||
@ -135,17 +135,17 @@ var URLHighlighter = class URLHighlighter {
|
||||
let success;
|
||||
let [x, y] = event.get_coords();
|
||||
[success, x, y] = this.actor.transform_stage_point(x, y);
|
||||
let find_pos = -1;
|
||||
let findPos = -1;
|
||||
for (let i = 0; i < this.actor.clutter_text.text.length; i++) {
|
||||
let [success, px, py, line_height] = this.actor.clutter_text.position_to_coords(i);
|
||||
if (py > y || py + line_height < y || x < px)
|
||||
let [success, px, py, lineHeight] = this.actor.clutter_text.position_to_coords(i);
|
||||
if (py > y || py + lineHeight < y || x < px)
|
||||
continue;
|
||||
find_pos = i;
|
||||
findPos = i;
|
||||
}
|
||||
if (find_pos != -1) {
|
||||
if (findPos != -1) {
|
||||
for (let i = 0; i < this._urls.length; i++)
|
||||
if (find_pos >= this._urls[i].pos &&
|
||||
this._urls[i].pos + this._urls[i].url.length > find_pos)
|
||||
if (findPos >= this._urls[i].pos &&
|
||||
this._urls[i].pos + this._urls[i].url.length > findPos)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
@ -197,12 +197,14 @@ class ScaleLayout extends Clutter.BinLayout {
|
||||
});
|
||||
|
||||
var LabelExpanderLayout = GObject.registerClass({
|
||||
Properties: { 'expansion': GObject.ParamSpec.double('expansion',
|
||||
Properties: {
|
||||
'expansion': GObject.ParamSpec.double('expansion',
|
||||
'Expansion',
|
||||
'Expansion of the layout, between 0 (collapsed) ' +
|
||||
'and 1 (fully expanded',
|
||||
GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
|
||||
0, 1, 0)},
|
||||
0, 1, 0)
|
||||
},
|
||||
}, class LabelExpanderLayout extends Clutter.LayoutManager {
|
||||
_init(params) {
|
||||
this._expansion = 0;
|
||||
@ -467,8 +469,7 @@ var Message = class Message {
|
||||
{ scale_y: 0,
|
||||
time: MessageTray.ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onCompleteScope: this,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this._actionBin.hide();
|
||||
this.expanded = false;
|
||||
} });
|
||||
|
@ -218,17 +218,17 @@ class NotificationApplicationPolicy extends NotificationPolicy {
|
||||
|
||||
this._masterSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications' });
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications.application',
|
||||
path: '/org/gnome/desktop/notifications/application/' + this._canonicalId + '/' });
|
||||
path: `/org/gnome/desktop/notifications/application/${this._canonicalId}/` });
|
||||
|
||||
this._masterSettings.connect('changed', this._changed.bind(this));
|
||||
this._settings.connect('changed', this._changed.bind(this));
|
||||
}
|
||||
|
||||
store() {
|
||||
this._settings.set_string('application-id', this.id + '.desktop');
|
||||
this._settings.set_string('application-id', `${this.id}.desktop`);
|
||||
|
||||
let apps = this._masterSettings.get_strv('application-children');
|
||||
if (apps.indexOf(this._canonicalId) < 0) {
|
||||
if (!apps.includes(this._canonicalId)) {
|
||||
apps.push(this._canonicalId);
|
||||
this._masterSettings.set_strv('application-children', apps);
|
||||
}
|
||||
@ -248,7 +248,7 @@ class NotificationApplicationPolicy extends NotificationPolicy {
|
||||
_canonicalizeId(id) {
|
||||
// Keys are restricted to lowercase alphanumeric characters and dash,
|
||||
// and two dashes cannot be in succession
|
||||
return id.toLowerCase().replace(/[^a-z0-9\-]/g, '-').replace(/--+/g, '-');
|
||||
return id.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/--+/g, '-');
|
||||
}
|
||||
|
||||
get enable() {
|
||||
@ -590,11 +590,11 @@ class SourceActor extends St.Widget {
|
||||
});
|
||||
this._actorDestroyed = false;
|
||||
|
||||
let scale_factor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
this._iconBin = new St.Bin({ x_fill: true,
|
||||
x_expand: true,
|
||||
height: size * scale_factor,
|
||||
width: size * scale_factor });
|
||||
height: size * scaleFactor,
|
||||
width: size * scaleFactor });
|
||||
|
||||
this.add_actor(this._iconBin);
|
||||
|
||||
@ -772,7 +772,7 @@ var Source = class Source {
|
||||
}
|
||||
|
||||
pushNotification(notification) {
|
||||
if (this.notifications.indexOf(notification) >= 0)
|
||||
if (this.notifications.includes(notification))
|
||||
return;
|
||||
|
||||
while (this.notifications.length >= MAX_NOTIFICATIONS_PER_SOURCE)
|
||||
@ -988,7 +988,7 @@ var MessageTray = class MessageTray {
|
||||
|
||||
add(source) {
|
||||
if (this.contains(source)) {
|
||||
log('Trying to re-add source ' + source.title);
|
||||
log(`Trying to re-add source ${source.title}`);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1069,7 +1069,7 @@ var MessageTray = class MessageTray {
|
||||
// If a new notification is updated while it is being hidden,
|
||||
// we stop hiding it and show it again.
|
||||
this._updateShowingNotification();
|
||||
} else if (this._notificationQueue.indexOf(notification) < 0) {
|
||||
} else if (!this._notificationQueue.includes(notification)) {
|
||||
// If the queue is "full", we skip banner mode and just show a small
|
||||
// indicator in the panel; however do make an exception for CRITICAL
|
||||
// notifications, as only banner mode allows expansion.
|
||||
|
@ -1,7 +1,6 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const { Atk, Clutter, GObject, Shell, St } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Dialog = imports.ui.dialog;
|
||||
const Layout = imports.ui.layout;
|
||||
@ -22,11 +21,13 @@ var State = {
|
||||
};
|
||||
|
||||
var ModalDialog = GObject.registerClass({
|
||||
Properties: { 'state': GObject.ParamSpec.int('state', 'Dialog state', 'state',
|
||||
Properties: {
|
||||
'state': GObject.ParamSpec.int('state', 'Dialog state', 'state',
|
||||
GObject.ParamFlags.READABLE,
|
||||
Math.min(...Object.values(State)),
|
||||
Math.max(...Object.values(State)),
|
||||
State.CLOSED) },
|
||||
State.CLOSED)
|
||||
},
|
||||
Signals: { 'opened': {}, 'closed': {} }
|
||||
}, class ModalDialog extends St.Widget {
|
||||
_init(params) {
|
||||
@ -180,7 +181,7 @@ var ModalDialog = GObject.registerClass({
|
||||
time: OPEN_AND_CLOSE_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: this._closeComplete.bind(this)
|
||||
})
|
||||
});
|
||||
else
|
||||
this._closeComplete();
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ var MprisPlayer = class MprisPlayer {
|
||||
// so prefer activating the app via .desktop file if possible
|
||||
let app = null;
|
||||
if (this._mprisProxy.DesktopEntry) {
|
||||
let desktopId = this._mprisProxy.DesktopEntry + '.desktop';
|
||||
let desktopId = `${this._mprisProxy.DesktopEntry}.desktop`;
|
||||
app = Shell.AppSystem.get_default().lookup_app(desktopId);
|
||||
}
|
||||
|
||||
|
@ -170,11 +170,11 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
|
||||
// Ignore replacesId since we already sent back a
|
||||
// NotificationClosed for that id.
|
||||
id = this._nextNotificationId++;
|
||||
let idle_id = Mainloop.idle_add(() => {
|
||||
let idleId = Mainloop.idle_add(() => {
|
||||
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(idle_id, '[gnome-shell] this._emitNotificationClosed');
|
||||
GLib.Source.set_name_by_id(idleId, '[gnome-shell] this._emitNotificationClosed');
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||
}
|
||||
|
||||
@ -231,7 +231,7 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
|
||||
// There's already a pending call to GetConnectionUnixProcessID,
|
||||
// which will see the new notification data when it finishes,
|
||||
// so we don't have to do anything.
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));;
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||
}
|
||||
|
||||
this._busProxy.GetConnectionUnixProcessIDRemote(sender, (result, excp) => {
|
||||
@ -474,7 +474,7 @@ class FdoNotificationDaemonSource extends MessageTray.Source {
|
||||
return app;
|
||||
|
||||
if (appId) {
|
||||
app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
|
||||
app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
|
||||
if (app != null)
|
||||
return app;
|
||||
}
|
||||
@ -610,7 +610,7 @@ function objectPathFromAppId(appId) {
|
||||
}
|
||||
|
||||
function getPlatformData() {
|
||||
let startupId = GLib.Variant.new('s', '_TIME' + global.get_current_time());
|
||||
let startupId = GLib.Variant.new('s', `_TIME${global.get_current_time()}`);
|
||||
return { "desktop-startup-id": startupId };
|
||||
}
|
||||
|
||||
@ -623,7 +623,7 @@ class GtkNotificationDaemonAppSource extends MessageTray.Source {
|
||||
if (!GLib.Variant.is_object_path(objectPath))
|
||||
throw new InvalidAppError();
|
||||
|
||||
let app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
|
||||
let app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
|
||||
if (!app)
|
||||
throw new InvalidAppError();
|
||||
|
||||
|
@ -4,8 +4,6 @@ const { Clutter, Gio, Meta, St } = imports.gi;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
|
||||
var FADE_TIME = 0.1;
|
||||
|
||||
var OsdMonitorLabel = class {
|
||||
constructor(monitor, label) {
|
||||
this._actor = new St.Widget({ x_expand: true,
|
||||
|
@ -21,7 +21,7 @@ var LevelBar = class extends BarLevel.BarLevel {
|
||||
|
||||
this.actor.accessible_name = _("Volume");
|
||||
|
||||
this.actor.connect('notify::width', () => { this.level = this.level; });
|
||||
this.actor.connect('notify::width', () => this.level = this.level);
|
||||
}
|
||||
|
||||
get level() {
|
||||
|
@ -18,7 +18,7 @@ function getRtlSlideDirection(direction, actor) {
|
||||
SlideDirection.RIGHT : SlideDirection.LEFT;
|
||||
|
||||
return direction;
|
||||
};
|
||||
}
|
||||
|
||||
var SlideDirection = {
|
||||
LEFT: 0,
|
||||
@ -133,7 +133,7 @@ var SlidingControl = class {
|
||||
|
||||
getVisibleWidth() {
|
||||
let child = this.actor.get_first_child();
|
||||
let [, , natWidth, ] = child.get_preferred_size();
|
||||
let [, , natWidth] = child.get_preferred_size();
|
||||
return natWidth;
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ var ActionComboBox = class {
|
||||
this.actor.set_child(box);
|
||||
|
||||
this._label = new St.Label({ style_class: 'combo-box-label' });
|
||||
box.add_child(this._label)
|
||||
box.add_child(this._label);
|
||||
|
||||
let arrow = new St.Icon({ style_class: 'popup-menu-arrow',
|
||||
icon_name: 'pan-down-symbolic',
|
||||
@ -186,7 +186,7 @@ var ActionComboBox = class {
|
||||
}
|
||||
|
||||
setButtonActionsActive(active) {
|
||||
this._buttonItems.forEach(item => { item.setSensitive(active); });
|
||||
this._buttonItems.forEach(item => item.setSensitive(active));
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(ActionComboBox.prototype);
|
||||
@ -275,7 +275,8 @@ var ActionEditor = class {
|
||||
Signals.addSignalMethods(ActionEditor.prototype);
|
||||
|
||||
var PadDiagram = GObject.registerClass({
|
||||
Properties: { 'left-handed': GObject.ParamSpec.boolean('left-handed',
|
||||
Properties: {
|
||||
'left-handed': GObject.ParamSpec.boolean('left-handed',
|
||||
'left-handed', 'Left handed',
|
||||
GObject.ParamFlags.READWRITE |
|
||||
GObject.ParamFlags.CONSTRUCT_ONLY,
|
||||
@ -289,7 +290,8 @@ var PadDiagram = GObject.registerClass({
|
||||
'Editor actor',
|
||||
GObject.ParamFlags.READWRITE |
|
||||
GObject.ParamFlags.CONSTRUCT_ONLY,
|
||||
Clutter.Actor.$gtype) },
|
||||
Clutter.Actor.$gtype)
|
||||
},
|
||||
}, class PadDiagram extends St.DrawingArea {
|
||||
_init(params) {
|
||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
|
||||
@ -340,7 +342,7 @@ var PadDiagram = GObject.registerClass({
|
||||
return ('<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
|
||||
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" ' +
|
||||
'xmlns:xi="http://www.w3.org/2001/XInclude" ' +
|
||||
'width="' + this._imageWidth + '" height="' + this._imageHeight + '"> ' +
|
||||
`width="${this._imageWidth}" height="${this._imageHeight}"> ` +
|
||||
'<style type="text/css">');
|
||||
}
|
||||
|
||||
@ -355,10 +357,10 @@ var PadDiagram = GObject.registerClass({
|
||||
|
||||
for (let i = 0; i < this._activeButtons.length; i++) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + this._activeButtons[i]);
|
||||
css += ('.' + ch + ' { ' +
|
||||
' stroke: ' + ACTIVE_COLOR + ' !important; ' +
|
||||
' fill: ' + ACTIVE_COLOR + ' !important; ' +
|
||||
'} ');
|
||||
css += `.${ch} {
|
||||
stroke: ${ACTIVE_COLOR} !important;
|
||||
fill: ${ACTIVE_COLOR} !important;
|
||||
}`;
|
||||
}
|
||||
|
||||
return css;
|
||||
@ -457,7 +459,7 @@ var PadDiagram = GObject.registerClass({
|
||||
// I miss Cairo.Matrix
|
||||
let dimensions = this._handle.get_dimensions();
|
||||
x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
|
||||
y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;;
|
||||
y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;
|
||||
return [Math.round(x), Math.round(y)];
|
||||
}
|
||||
|
||||
@ -468,12 +470,12 @@ var PadDiagram = GObject.registerClass({
|
||||
let leaderPos, leaderSize, pos;
|
||||
let found, direction;
|
||||
|
||||
[found, pos] = this._handle.get_position_sub('#' + labelName);
|
||||
[found, pos] = this._handle.get_position_sub(`#${labelName}`);
|
||||
if (!found)
|
||||
return [false];
|
||||
|
||||
[found, leaderPos] = this._handle.get_position_sub('#' + leaderName);
|
||||
[found, leaderSize] = this._handle.get_dimensions_sub('#' + leaderName);
|
||||
[found, leaderPos] = this._handle.get_position_sub(`#${leaderName}`);
|
||||
[found, leaderSize] = this._handle.get_dimensions_sub(`#${leaderName}`);
|
||||
if (!found)
|
||||
return [false];
|
||||
|
||||
@ -488,15 +490,15 @@ var PadDiagram = GObject.registerClass({
|
||||
pos.y = this._imageHeight - pos.y;
|
||||
}
|
||||
|
||||
let [x, y] = this._transformPoint(pos.x, pos.y)
|
||||
let [x, y] = this._transformPoint(pos.x, pos.y);
|
||||
|
||||
return [true, x, y, direction];
|
||||
}
|
||||
|
||||
getButtonLabelCoords(button) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + button);
|
||||
let labelName = 'Label' + ch;
|
||||
let leaderName = 'Leader' + ch;
|
||||
let labelName = `Label${ch}`;
|
||||
let leaderName = `Leader${ch}`;
|
||||
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
}
|
||||
@ -504,8 +506,8 @@ var PadDiagram = GObject.registerClass({
|
||||
getRingLabelCoords(number, dir) {
|
||||
let numStr = number > 0 ? (number + 1).toString() : '';
|
||||
let dirStr = dir == CW ? 'CW' : 'CCW';
|
||||
let labelName = 'LabelRing' + numStr + dirStr;
|
||||
let leaderName = 'LeaderRing' + numStr + dirStr;
|
||||
let labelName = `LabelRing${numStr}${dirStr}`;
|
||||
let leaderName = `LeaderRing${numStr}${dirStr}`;
|
||||
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
}
|
||||
@ -513,8 +515,8 @@ var PadDiagram = GObject.registerClass({
|
||||
getStripLabelCoords(number, dir) {
|
||||
let numStr = number > 0 ? (number + 1).toString() : '';
|
||||
let dirStr = dir == UP ? 'Up' : 'Down';
|
||||
let labelName = 'LabelStrip' + numStr + dirStr;
|
||||
let leaderName = 'LeaderStrip' + numStr + dirStr;
|
||||
let labelName = `LabelStrip${numStr}${dirStr}`;
|
||||
let leaderName = `LeaderStrip${numStr}${dirStr}`;
|
||||
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
}
|
||||
@ -630,7 +632,7 @@ var PadOsd = class {
|
||||
// If the device is being removed, destroy the padOsd.
|
||||
if (device == this.padDevice) {
|
||||
this.destroy();
|
||||
} else if (this._groupPads.indexOf(device) != -1) {
|
||||
} else if (this._groupPads.includes(device)) {
|
||||
// Or update the pad chooser if the device belongs to
|
||||
// the same group.
|
||||
this._groupPads.splice(this._groupPads.indexOf(device), 1);
|
||||
@ -734,7 +736,7 @@ var PadOsd = class {
|
||||
_updatePadChooser() {
|
||||
if (this._groupPads.length > 1) {
|
||||
if (this._padChooser == null) {
|
||||
this._padChooser = new PadChooser(this.padDevice, this._groupPads)
|
||||
this._padChooser = new PadChooser(this.padDevice, this._groupPads);
|
||||
this._padChooser.connect('pad-selected', (chooser, pad) => {
|
||||
this._requestForOtherPad(pad);
|
||||
});
|
||||
@ -749,8 +751,7 @@ var PadOsd = class {
|
||||
}
|
||||
|
||||
_requestForOtherPad(pad) {
|
||||
if (pad == this.padDevice ||
|
||||
this._groupPads.indexOf(pad) == -1)
|
||||
if (pad == this.padDevice || !this._groupPads.includes(pad))
|
||||
return;
|
||||
|
||||
let editionMode = this._editionMode;
|
||||
@ -801,7 +802,7 @@ var PadOsd = class {
|
||||
|
||||
// If the event comes from another pad in the same group,
|
||||
// show the OSD for it.
|
||||
if (this._groupPads.indexOf(event.get_source_device()) != -1) {
|
||||
if (this._groupPads.includes(event.get_source_device())) {
|
||||
this._requestForOtherPad(event.get_source_device());
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
@ -865,7 +866,7 @@ var PadOsd = class {
|
||||
if (this._followUpActionEdition(str))
|
||||
return;
|
||||
|
||||
this._padDiagram.stopEdition(false, str ? str : _("None"))
|
||||
this._padDiagram.stopEdition(false, str ? str : _("None"));
|
||||
this._editedAction = null;
|
||||
}
|
||||
|
||||
@ -888,7 +889,7 @@ var PadOsd = class {
|
||||
|
||||
_startButtonActionEdition(button) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + button);
|
||||
let key = 'button' + ch;
|
||||
let key = `button${ch}`;
|
||||
this._startActionEdition(key, Meta.PadActionType.BUTTON, button);
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ function _premultiply(color) {
|
||||
green: _norm(color.green * color.alpha),
|
||||
blue: _norm(color.blue * color.alpha),
|
||||
alpha: color.alpha });
|
||||
};
|
||||
}
|
||||
|
||||
function _unpremultiply(color) {
|
||||
if (color.alpha == 0)
|
||||
@ -62,11 +62,11 @@ function _unpremultiply(color) {
|
||||
let blue = Math.min((color.blue * 255 + 127) / color.alpha, 255);
|
||||
return new Clutter.Color({ red: red, green: green,
|
||||
blue: blue, alpha: color.alpha });
|
||||
};
|
||||
}
|
||||
|
||||
class AppMenu extends PopupMenu.PopupMenu {
|
||||
constructor(sourceActor) {
|
||||
super(sourceActor, 0.0, St.Side.TOP);
|
||||
super(sourceActor, 0.5, St.Side.TOP);
|
||||
|
||||
this.actor.add_style_class_name('app-menu');
|
||||
|
||||
@ -283,10 +283,9 @@ var AppMenuButton = GObject.registerClass({
|
||||
{ opacity: 0,
|
||||
time: Overview.ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this.hide();
|
||||
},
|
||||
onCompleteScope: this });
|
||||
} });
|
||||
}
|
||||
|
||||
_onStyleChanged(actor) {
|
||||
@ -328,8 +327,7 @@ var AppMenuButton = GObject.registerClass({
|
||||
{ opacity: 0,
|
||||
time: SPINNER_ANIMATION_TIME,
|
||||
transition: "easeOutQuad",
|
||||
onCompleteScope: this,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this._spinner.stop();
|
||||
this._spinner.actor.opacity = 255;
|
||||
this._spinner.actor.hide();
|
||||
@ -864,7 +862,7 @@ class Panel extends St.Widget {
|
||||
|
||||
Main.sessionMode.connect('updated', this._updatePanel.bind(this));
|
||||
|
||||
global.display.connect('workareas-changed', () => { this.queue_relayout(); });
|
||||
global.display.connect('workareas-changed', () => this.queue_relayout());
|
||||
this._updatePanel();
|
||||
}
|
||||
|
||||
@ -1056,9 +1054,9 @@ class Panel extends St.Widget {
|
||||
this._updateBox(panel.center, this._centerBox);
|
||||
this._updateBox(panel.right, this._rightBox);
|
||||
|
||||
if (panel.left.indexOf('dateMenu') != -1)
|
||||
if (panel.left.includes('dateMenu'))
|
||||
Main.messageTray.bannerAlignment = Clutter.ActorAlign.START;
|
||||
else if (panel.right.indexOf('dateMenu') != -1)
|
||||
else if (panel.right.includes('dateMenu'))
|
||||
Main.messageTray.bannerAlignment = Clutter.ActorAlign.END;
|
||||
// Default to center if there is no dateMenu
|
||||
else
|
||||
@ -1139,7 +1137,7 @@ class Panel extends St.Widget {
|
||||
|
||||
addToStatusArea(role, indicator, position, box) {
|
||||
if (this.statusArea[role])
|
||||
throw new Error('Extension point conflict: there is already a status indicator for role ' + role);
|
||||
throw new Error(`Extension point conflict: there is already a status indicator for role ${role}`);
|
||||
|
||||
if (!(indicator instanceof PanelMenu.Button))
|
||||
throw new TypeError('Status indicator must be an instance of PanelMenu.Button');
|
||||
@ -1189,7 +1187,7 @@ class Panel extends St.Widget {
|
||||
|
||||
_getDraggableWindowForPosition(stageX) {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let workspace = workspaceManager.get_active_workspace()
|
||||
let workspace = workspaceManager.get_active_workspace();
|
||||
let allWindowsByStacking = global.display.sort_windows_by_stacking(
|
||||
workspace.list_windows()
|
||||
).reverse();
|
||||
@ -1200,7 +1198,7 @@ class Panel extends St.Widget {
|
||||
metaWindow.showing_on_its_workspace() &&
|
||||
metaWindow.get_window_type() != Meta.WindowType.DESKTOP &&
|
||||
metaWindow.maximized_vertically &&
|
||||
stageX > rect.x && stageX < rect.x + rect.width
|
||||
stageX > rect.x && stageX < rect.x + rect.width;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
0
js/ui/panel.js.
Normal file
0
js/ui/panel.js.
Normal file
@ -3,8 +3,6 @@ const Tweener = imports.ui.tweener;
|
||||
const Main = imports.ui.main;
|
||||
const Cairo = imports.cairo;
|
||||
|
||||
const ANIMATION_STEPS = 36.;
|
||||
|
||||
var PieTimer = GObject.registerClass(
|
||||
class PieTimer extends St.DrawingArea {
|
||||
_init() {
|
||||
@ -68,10 +66,8 @@ class PieTimer extends St.DrawingArea {
|
||||
{ opacity: 255,
|
||||
time: duration / 1000,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdateScope: this,
|
||||
onUpdate() { this.queue_repaint() },
|
||||
onCompleteScope: this,
|
||||
onComplete() { this.stop(); }
|
||||
onUpdate: () => this.queue_repaint(),
|
||||
onComplete: () => this.stop()
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -261,7 +261,7 @@ class PopupMenuItem extends PopupBaseMenuItem {
|
||||
|
||||
this.label = new St.Label({ text: text });
|
||||
this.add_child(this.label);
|
||||
this.label_actor = this.label
|
||||
this.label_actor = this.label;
|
||||
}
|
||||
});
|
||||
|
||||
@ -315,8 +315,7 @@ class Switch extends St.Bin {
|
||||
|
||||
var PopupSwitchMenuItem = GObject.registerClass({
|
||||
Signals: { 'toggled': { param_types: [GObject.TYPE_BOOLEAN] }, },
|
||||
},
|
||||
class PopupSwitchMenuItem extends PopupBaseMenuItem {
|
||||
}, class PopupSwitchMenuItem extends PopupBaseMenuItem {
|
||||
_init(text, active, params) {
|
||||
super._init(params);
|
||||
|
||||
@ -502,7 +501,7 @@ var PopupMenuBase = class {
|
||||
let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
|
||||
|
||||
if (!app) {
|
||||
log('Settings panel for desktop file ' + desktopFile + ' could not be loaded!');
|
||||
log(`Settings panel for desktop file ${desktopFile} could not be loaded!`);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -651,14 +650,14 @@ var PopupMenuBase = class {
|
||||
}
|
||||
|
||||
addMenuItem(menuItem, position) {
|
||||
let before_item = null;
|
||||
let beforeItem = null;
|
||||
if (position == undefined) {
|
||||
this.box.add(menuItem.actor);
|
||||
} else {
|
||||
let items = this._getMenuItems();
|
||||
if (position < items.length) {
|
||||
before_item = items[position].actor;
|
||||
this.box.insert_child_below(menuItem.actor, before_item);
|
||||
beforeItem = items[position].actor;
|
||||
this.box.insert_child_below(menuItem.actor, beforeItem);
|
||||
} else {
|
||||
this.box.add(menuItem.actor);
|
||||
}
|
||||
@ -688,10 +687,10 @@ var PopupMenuBase = class {
|
||||
this.length--;
|
||||
});
|
||||
} else if (menuItem instanceof PopupSubMenuMenuItem) {
|
||||
if (before_item == null)
|
||||
if (beforeItem == null)
|
||||
this.box.add(menuItem.menu.actor);
|
||||
else
|
||||
this.box.insert_child_below(menuItem.menu.actor, before_item);
|
||||
this.box.insert_child_below(menuItem.menu.actor, beforeItem);
|
||||
|
||||
this._connectItemSignals(menuItem);
|
||||
let subMenuActiveChangeId = menuItem.menu.connect('active-changed', this._subMenuActiveChanged.bind(this));
|
||||
@ -852,9 +851,10 @@ var PopupMenu = class extends PopupMenuBase {
|
||||
this.toggle();
|
||||
this.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
|
||||
return Clutter.EVENT_STOP;
|
||||
} else
|
||||
} else {
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
}
|
||||
|
||||
setArrowOrigin(origin) {
|
||||
this._boxPointer.setArrowOrigin(origin);
|
||||
@ -920,9 +920,16 @@ var PopupDummyMenu = class {
|
||||
return this.getSensitive();
|
||||
}
|
||||
|
||||
open() { this.emit('open-state-changed', true); }
|
||||
close() { this.emit('open-state-changed', false); }
|
||||
open() {
|
||||
this.emit('open-state-changed', true);
|
||||
}
|
||||
|
||||
close() {
|
||||
this.emit('open-state-changed', false);
|
||||
}
|
||||
|
||||
toggle() {}
|
||||
|
||||
destroy() {
|
||||
this.emit('destroy');
|
||||
}
|
||||
@ -1008,12 +1015,10 @@ var PopupSubMenu = class extends PopupMenuBase {
|
||||
{ _arrowRotation: targetAngle,
|
||||
height: naturalHeight,
|
||||
time: 0.25,
|
||||
onUpdateScope: this,
|
||||
onUpdate() {
|
||||
onUpdate: () => {
|
||||
this._arrow.rotation_angle_z = this.actor._arrowRotation;
|
||||
},
|
||||
onCompleteScope: this,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this.actor.set_height(-1);
|
||||
}
|
||||
});
|
||||
@ -1041,12 +1046,10 @@ var PopupSubMenu = class extends PopupMenuBase {
|
||||
{ _arrowRotation: 0,
|
||||
height: 0,
|
||||
time: 0.25,
|
||||
onUpdateScope: this,
|
||||
onUpdate() {
|
||||
onUpdate: () => {
|
||||
this._arrow.rotation_angle_z = this.actor._arrowRotation;
|
||||
},
|
||||
onCompleteScope: this,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this.actor.hide();
|
||||
this.actor.set_height(-1);
|
||||
},
|
||||
@ -1089,8 +1092,13 @@ var PopupMenuSection = class extends PopupMenuBase {
|
||||
|
||||
// deliberately ignore any attempt to open() or close(), but emit the
|
||||
// corresponding signal so children can still pick it up
|
||||
open() { this.emit('open-state-changed', true); }
|
||||
close() { this.emit('open-state-changed', false); }
|
||||
open() {
|
||||
this.emit('open-state-changed', true);
|
||||
}
|
||||
|
||||
close() {
|
||||
this.emit('open-state-changed', false);
|
||||
}
|
||||
};
|
||||
|
||||
var PopupSubMenuMenuItem = GObject.registerClass(
|
||||
@ -1126,7 +1134,7 @@ class PopupSubMenuMenuItem extends PopupBaseMenuItem {
|
||||
|
||||
this.menu = new PopupSubMenu(this, this._triangle);
|
||||
this.menu.connect('open-state-changed', this._subMenuOpenStateChanged.bind(this));
|
||||
this.connect('destroy', () => { this.menu.destroy(); });
|
||||
this.connect('destroy', () => this.menu.destroy());
|
||||
}
|
||||
|
||||
_setParent(parent) {
|
||||
|
@ -92,7 +92,7 @@ function loadRemoteSearchProviders(searchSettings, callback) {
|
||||
if (!appInfo.should_show())
|
||||
return;
|
||||
} catch (e) {
|
||||
log('Ignoring search provider ' + path + ': missing DesktopId');
|
||||
log(`Ignoring search provider ${path}: missing DesktopId`);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -146,10 +146,10 @@ function loadRemoteSearchProviders(searchSettings, callback) {
|
||||
|
||||
if (provider.defaultEnabled) {
|
||||
let disabled = searchSettings.get_strv('disabled');
|
||||
return disabled.indexOf(appId) == -1;
|
||||
return !disabled.includes(appId);
|
||||
} else {
|
||||
let enabled = searchSettings.get_strv('enabled');
|
||||
return enabled.indexOf(appId) != -1;
|
||||
return enabled.includes(appId);
|
||||
}
|
||||
});
|
||||
|
||||
@ -191,18 +191,18 @@ var RemoteSearchProvider = class {
|
||||
if (!proxyInfo)
|
||||
proxyInfo = SearchProviderProxyInfo;
|
||||
|
||||
let g_flags = Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES;
|
||||
let gFlags = Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES;
|
||||
if (autoStart)
|
||||
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION;
|
||||
gFlags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION;
|
||||
else
|
||||
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START;
|
||||
gFlags |= 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 });
|
||||
gFlags });
|
||||
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null, null);
|
||||
|
||||
this.appInfo = appInfo;
|
||||
@ -313,7 +313,7 @@ var RemoteSearchProvider = class {
|
||||
launchSearch(terms) {
|
||||
// the provider is not compatible with the new version of the interface, launch
|
||||
// the app itself but warn so we can catch the error in logs
|
||||
log('Search provider ' + this.appInfo.get_id() + ' does not implement LaunchSearch');
|
||||
log(`Search provider ${this.appInfo.get_id()} does not implement LaunchSearch`);
|
||||
this.appInfo.launch([], global.create_app_launch_context(0, -1));
|
||||
}
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const { Clutter, St } = imports.gi;
|
||||
const { St } = imports.gi;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
// Shamelessly copied from the layout "hotcorner" ripples implementation
|
||||
@ -56,15 +56,13 @@ var Ripples = class Ripples {
|
||||
delay: delay,
|
||||
time: time,
|
||||
transition: 'linear',
|
||||
onUpdate() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
|
||||
onComplete() { ripple.visible = false; } });
|
||||
onUpdate: () => ripple.opacity = 255 * Math.sqrt(ripple._opacity),
|
||||
onComplete: () => ripple.visible = false });
|
||||
}
|
||||
|
||||
addTo(stage) {
|
||||
if (this._stage !== undefined) {
|
||||
if (this._stage !== undefined)
|
||||
throw new Error('Ripples already added');
|
||||
return;
|
||||
}
|
||||
|
||||
this._stage = stage;
|
||||
this._stage.add_actor(this._ripple1);
|
||||
@ -73,10 +71,8 @@ var Ripples = class Ripples {
|
||||
}
|
||||
|
||||
playAnimation(x, y) {
|
||||
if (this._stage === undefined) {
|
||||
if (this._stage === undefined)
|
||||
throw new Error('Ripples not added');
|
||||
return;
|
||||
}
|
||||
|
||||
this._x = x;
|
||||
this._y = y;
|
||||
|
@ -1,7 +1,6 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
@ -10,8 +9,6 @@ const Tweener = imports.ui.tweener;
|
||||
const Util = imports.misc.util;
|
||||
const History = imports.misc.history;
|
||||
|
||||
var MAX_FILE_DELETED_BEFORE_INVALID = 10;
|
||||
|
||||
const HISTORY_KEY = 'command-history';
|
||||
|
||||
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
||||
@ -36,18 +33,15 @@ class RunDialog extends ModalDialog.ModalDialog {
|
||||
});
|
||||
this._enableInternalCommands = global.settings.get_boolean('development-tools');
|
||||
|
||||
this._internalCommands = { 'lg': () => {
|
||||
Main.createLookingGlass().open();
|
||||
},
|
||||
this._internalCommands = {
|
||||
'lg': () => Main.createLookingGlass().open(),
|
||||
|
||||
'r': this._restart.bind(this),
|
||||
|
||||
// Developer brain backwards compatibility
|
||||
'restart': this._restart.bind(this),
|
||||
|
||||
'debugexit': () => {
|
||||
Meta.quit(Meta.ExitCode.ERROR);
|
||||
},
|
||||
'debugexit': () => Meta.quit(Meta.ExitCode.ERROR),
|
||||
|
||||
// rt is short for "reload theme"
|
||||
'rt': () => {
|
||||
@ -60,7 +54,6 @@ class RunDialog extends ModalDialog.ModalDialog {
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
let label = new St.Label({ style_class: 'run-dialog-label',
|
||||
text: _("Enter a Command") });
|
||||
|
||||
@ -169,9 +162,8 @@ class RunDialog extends ModalDialog.ModalDialog {
|
||||
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND) &&
|
||||
!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_DIRECTORY))
|
||||
log(e);
|
||||
} finally {
|
||||
return results;
|
||||
}
|
||||
return results;
|
||||
});
|
||||
let results = someResults.reduce((a, b) => a.concat(b), []);
|
||||
|
||||
@ -183,7 +175,7 @@ class RunDialog extends ModalDialog.ModalDialog {
|
||||
}
|
||||
|
||||
_getCompletion(text) {
|
||||
if (text.indexOf('/') != -1) {
|
||||
if (text.includes('/')) {
|
||||
return this._pathCompleter.get_completion_suffix(text);
|
||||
} else {
|
||||
return this._getCommandCompletion(text);
|
||||
@ -206,8 +198,8 @@ class RunDialog extends ModalDialog.ModalDialog {
|
||||
try {
|
||||
if (inTerminal) {
|
||||
let exec = this._terminalSettings.get_string(EXEC_KEY);
|
||||
let exec_arg = this._terminalSettings.get_string(EXEC_ARG_KEY);
|
||||
command = exec + ' ' + exec_arg + ' ' + input;
|
||||
let execArg = this._terminalSettings.get_string(EXEC_ARG_KEY);
|
||||
command = `${exec} ${execArg} ${input}`;
|
||||
}
|
||||
Util.trySpawnCommandLine(command);
|
||||
} catch (e) {
|
||||
|
@ -44,11 +44,9 @@ var SUMMARY_ICON_SIZE = 48;
|
||||
// - STANDARD_FADE_TIME is used when the session goes idle
|
||||
// - MANUAL_FADE_TIME is used for lowering the shield when asked by the user,
|
||||
// or when cancelling the dialog
|
||||
// - BACKGROUND_FADE_TIME is used when the background changes to crossfade to new background
|
||||
// - CURTAIN_SLIDE_TIME is used when raising the shield before unlocking
|
||||
var STANDARD_FADE_TIME = 10;
|
||||
var MANUAL_FADE_TIME = 0.3;
|
||||
var BACKGROUND_FADE_TIME = 1.0;
|
||||
var CURTAIN_SLIDE_TIME = 0.3;
|
||||
|
||||
var Clock = class {
|
||||
@ -257,11 +255,10 @@ var NotificationsBox = class {
|
||||
{ height: natHeight,
|
||||
transition: 'easeOutQuad',
|
||||
time: 0.25,
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this._scrollView.vscrollbar_policy = St.PolicyType.AUTOMATIC;
|
||||
widget.set_height(-1);
|
||||
},
|
||||
onCompleteScope: this
|
||||
}
|
||||
});
|
||||
|
||||
this._updateVisibility();
|
||||
@ -383,11 +380,11 @@ class ScreenShieldArrow extends St.Bin {
|
||||
if (!this._shadow)
|
||||
return true;
|
||||
|
||||
let shadow_box = new Clutter.ActorBox();
|
||||
this._shadow.get_box(this._drawingArea.get_allocation_box(), shadow_box);
|
||||
let shadowBox = new Clutter.ActorBox();
|
||||
this._shadow.get_box(this._drawingArea.get_allocation_box(), shadowBox);
|
||||
|
||||
volume.set_width(Math.max(shadow_box.x2 - shadow_box.x1, volume.get_width()));
|
||||
volume.set_height(Math.max(shadow_box.y2 - shadow_box.y1, volume.get_height()));
|
||||
volume.set_width(Math.max(shadowBox.x2 - shadowBox.x1, volume.get_width()));
|
||||
volume.set_height(Math.max(shadowBox.y2 - shadowBox.y1, volume.get_height()));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -532,18 +529,18 @@ var ScreenShield = class {
|
||||
this._loginManager.getCurrentSessionProxy(sessionProxy => {
|
||||
this._loginSession = sessionProxy;
|
||||
this._loginSession.connectSignal('Lock',
|
||||
() => { this.lock(false); });
|
||||
() => this.lock(false));
|
||||
this._loginSession.connectSignal('Unlock',
|
||||
() => { this.deactivate(false); });
|
||||
() => this.deactivate(false));
|
||||
this._loginSession.connect('g-properties-changed', this._syncInhibitor.bind(this));
|
||||
this._syncInhibitor();
|
||||
});
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
|
||||
this._settings.connect('changed::' + LOCK_ENABLED_KEY, this._syncInhibitor.bind(this));
|
||||
this._settings.connect(`changed::${LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this));
|
||||
|
||||
this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
|
||||
this._lockSettings.connect('changed::' + DISABLE_LOCK_KEY, this._syncInhibitor.bind(this));
|
||||
this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this));
|
||||
|
||||
this._isModal = false;
|
||||
this._hasLockScreen = false;
|
||||
@ -793,11 +790,10 @@ var ScreenShield = class {
|
||||
{ y: 0,
|
||||
time: time,
|
||||
transition: 'easeInQuad',
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this._lockScreenGroup.fixed_position_set = false;
|
||||
this._lockScreenState = MessageTray.State.SHOWN;
|
||||
},
|
||||
onCompleteScope: this,
|
||||
}
|
||||
});
|
||||
|
||||
this._maybeCancelDialog();
|
||||
@ -935,9 +931,9 @@ var ScreenShield = class {
|
||||
// if velocity is specified, it's in pixels per milliseconds
|
||||
let h = global.stage.height;
|
||||
let delta = (h + this._lockScreenGroup.y);
|
||||
let min_velocity = global.stage.height / (CURTAIN_SLIDE_TIME * 1000);
|
||||
let minVelocity = global.stage.height / (CURTAIN_SLIDE_TIME * 1000);
|
||||
|
||||
velocity = Math.max(min_velocity, velocity);
|
||||
velocity = Math.max(minVelocity, velocity);
|
||||
let time = (delta / velocity) / 1000;
|
||||
|
||||
Tweener.addTween(this._lockScreenGroup,
|
||||
@ -1010,11 +1006,10 @@ var ScreenShield = class {
|
||||
{ y: 0,
|
||||
time: MANUAL_FADE_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete() {
|
||||
onComplete: () => {
|
||||
this._lockScreenShown({ fadeToBlack: fadeToBlack,
|
||||
animateFade: true });
|
||||
},
|
||||
onCompleteScope: this
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this._lockScreenGroup.fixed_position_set = false;
|
||||
@ -1182,7 +1177,7 @@ var ScreenShield = class {
|
||||
|
||||
deactivate(animate) {
|
||||
if (this._dialog)
|
||||
this._dialog.finish(() => { this._continueDeactivate(animate); });
|
||||
this._dialog.finish(() => this._continueDeactivate(animate));
|
||||
else
|
||||
this._continueDeactivate(animate);
|
||||
}
|
||||
@ -1290,7 +1285,7 @@ var ScreenShield = class {
|
||||
|
||||
lock(animate) {
|
||||
if (this._lockSettings.get_boolean(DISABLE_LOCK_KEY)) {
|
||||
log('Screen lock is locked down, not locking') // lock, lock - who's there?
|
||||
log('Screen lock is locked down, not locking'); // lock, lock - who's there?
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ var ScreenshotService = class {
|
||||
_createScreenshot(invocation, needsDisk = true) {
|
||||
let lockedDown = false;
|
||||
if (needsDisk)
|
||||
lockedDown = this._lockdownSettings.get_boolean('disable-save-to-disk')
|
||||
lockedDown = this._lockdownSettings.get_boolean('disable-save-to-disk');
|
||||
|
||||
let sender = invocation.get_sender();
|
||||
if (this._screenShooter.has(sender) || lockedDown) {
|
||||
@ -72,10 +72,10 @@ var ScreenshotService = class {
|
||||
flashspot.fire(() => {
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
});
|
||||
}
|
||||
else
|
||||
} else {
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
}
|
||||
}
|
||||
|
||||
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
|
||||
invocation.return_value(retval);
|
||||
@ -125,11 +125,11 @@ var ScreenshotService = class {
|
||||
}
|
||||
|
||||
ScreenshotWindowAsync(params, invocation) {
|
||||
let [include_frame, include_cursor, flash, filename] = params;
|
||||
let [includeFrame, includeCursor, flash, filename] = params;
|
||||
let screenshot = this._createScreenshot(invocation);
|
||||
if (!screenshot)
|
||||
return;
|
||||
screenshot.screenshot_window (include_frame, include_cursor, filename,
|
||||
screenshot.screenshot_window (includeFrame, includeCursor, filename,
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area, filenameUsed] =
|
||||
@ -143,11 +143,11 @@ var ScreenshotService = class {
|
||||
}
|
||||
|
||||
ScreenshotAsync(params, invocation) {
|
||||
let [include_cursor, flash, filename] = params;
|
||||
let [includeCursor, flash, filename] = params;
|
||||
let screenshot = this._createScreenshot(invocation);
|
||||
if (!screenshot)
|
||||
return;
|
||||
screenshot.screenshot(include_cursor, filename,
|
||||
screenshot.screenshot(includeCursor, filename,
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area, filenameUsed] =
|
||||
|
@ -150,7 +150,7 @@ function destroyTestWindows() {
|
||||
* within a performance automation script
|
||||
*/
|
||||
function defineScriptEvent(name, description) {
|
||||
Shell.PerfLog.get_default().define_event("script." + name,
|
||||
Shell.PerfLog.get_default().define_event(`script.${name}`,
|
||||
description,
|
||||
"");
|
||||
}
|
||||
@ -163,7 +163,7 @@ function defineScriptEvent(name, description) {
|
||||
* previously defined with defineScriptEvent
|
||||
*/
|
||||
function scriptEvent(name) {
|
||||
Shell.PerfLog.get_default().event("script." + name);
|
||||
Shell.PerfLog.get_default().event(`script.${name}`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -181,7 +181,7 @@ function _collect(scriptModule, outputFile) {
|
||||
for (let f in scriptModule) {
|
||||
let m = /([A-Za-z]+)_([A-Za-z]+)/.exec(f);
|
||||
if (m)
|
||||
eventHandlers[m[1] + "." + m[2]] = scriptModule[f];
|
||||
eventHandlers[`${m[1]}.${m[2]}`] = scriptModule[f];
|
||||
}
|
||||
|
||||
Shell.PerfLog.get_default().replay(
|
||||
@ -224,15 +224,15 @@ function _collect(scriptModule, outputFile) {
|
||||
// Extra checks here because JSON.stringify generates
|
||||
// invalid JSON for undefined values
|
||||
if (metric.description == null) {
|
||||
log("Error: No description found for metric " + name);
|
||||
log(`Error: No description found for metric ${name}`);
|
||||
continue;
|
||||
}
|
||||
if (metric.units == null) {
|
||||
log("Error: No units found for metric " + name);
|
||||
log(`Error: No units found for metric ${name}`);
|
||||
continue;
|
||||
}
|
||||
if (metric.value == null) {
|
||||
log("Error: No value found for metric " + name);
|
||||
log(`Error: No value found for metric ${name}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -241,10 +241,10 @@ function _collect(scriptModule, outputFile) {
|
||||
first = false;
|
||||
|
||||
Shell.write_string_to_stream(out,
|
||||
'{ "name": ' + JSON.stringify(name) + ',\n' +
|
||||
' "description": ' + JSON.stringify(metric.description) + ',\n' +
|
||||
' "units": ' + JSON.stringify(metric.units) + ',\n' +
|
||||
' "value": ' + JSON.stringify(metric.value) + ' }');
|
||||
`{ "name": ${JSON.stringify(name)},\n` +
|
||||
` "description": ${JSON.stringify(metric.description)},\n` +
|
||||
` "units": ${JSON.stringify(metric.units)},\n` +
|
||||
` "value": ${JSON.stringify(metric.value)} }`);
|
||||
}
|
||||
Shell.write_string_to_stream(out, ' ]');
|
||||
|
||||
@ -263,8 +263,8 @@ function _collect(scriptModule, outputFile) {
|
||||
print ('------------------------------------------------------------');
|
||||
for (let i = 0; i < metrics.length; i++) {
|
||||
let metric = metrics[i];
|
||||
print ('# ' + scriptModule.METRICS[metric].description);
|
||||
print (metric + ': ' + scriptModule.METRICS[metric].value + scriptModule.METRICS[metric].units);
|
||||
print (`# ${scriptModule.METRICS[metric].description}`);
|
||||
print (`${metric}: ${scriptModule.METRICS[metric].value}${scriptModule.METRICS[metric].units}`);
|
||||
}
|
||||
print ('------------------------------------------------------------');
|
||||
}
|
||||
|
@ -214,13 +214,13 @@ var SearchResultsBase = class {
|
||||
return;
|
||||
}
|
||||
if (metas.length != metasNeeded.length) {
|
||||
log('Wrong number of result metas returned by search provider ' + this.provider.id +
|
||||
': expected ' + metasNeeded.length + ' but got ' + metas.length);
|
||||
log(`Wrong number of result metas returned by search provider ${this.provider.id}: ` +
|
||||
`expected ${metasNeeded.length} but got ${metas.length}`);
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
if (metas.some(meta => !meta.name || !meta.id)) {
|
||||
log('Invalid result meta returned from search provider ' + this.provider.id);
|
||||
log(`Invalid result meta returned from search provider ${this.provider.id}`);
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ function _loadMode(file, info) {
|
||||
let propBlacklist = ['unlockDialog'];
|
||||
for (let prop in _modes[DEFAULT_MODE]) {
|
||||
if (newMode[prop] !== undefined &&
|
||||
propBlacklist.indexOf(prop) == -1)
|
||||
!propBlacklist.includes(prop))
|
||||
_modes[modeName][prop] = newMode[prop];
|
||||
}
|
||||
_modes[modeName]['isPrimary'] = true;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user