Compare commits
59 Commits
wip/jimmac
...
wip/carlos
Author | SHA1 | Date | |
---|---|---|---|
7f66aede01 | |||
bd5a1121d6 | |||
03117d65b2 | |||
5520bb3890 | |||
4e6b2eb72a | |||
2e5295b3a9 | |||
3121c9aa29 | |||
1ebbd7c768 | |||
8572bb97c7 | |||
d5ebd8c816 | |||
ed999ce926 | |||
50b7739076 | |||
94995e9c1e | |||
fb04dafb0b | |||
d57234bec9 | |||
38da54fb02 | |||
bbd3275dad | |||
3a3f9aa008 | |||
3c54e863e6 | |||
a63ba61194 | |||
ab9710ee7b | |||
43cef45229 | |||
8db4f3c67f | |||
594a070029 | |||
c2e04e3cfa | |||
293f50e8e5 | |||
df7fea3407 | |||
563412698a | |||
2b30146c6c | |||
0f531d8c44 | |||
218c87994b | |||
f74c07b9ac | |||
59edea4bb4 | |||
4d4d5a0b16 | |||
03c4930883 | |||
9593e20425 | |||
2b1d6e607f | |||
1dff32e48a | |||
1e3a174de9 | |||
7bb84dae80 | |||
44fcb9e9af | |||
2d30e310bc | |||
be2d630348 | |||
bea6045aae | |||
ad491e7922 | |||
fedb8e706a | |||
1be933bc49 | |||
526bb72f3d | |||
49c95cff6c | |||
56a361650c | |||
d4763b157d | |||
d2dc072ba9 | |||
ffaca00594 | |||
9090b7dc3d | |||
a540fe4130 | |||
5be61bbb68 | |||
8e51fee5c1 | |||
9d6fcfdc85 | |||
5f5a3b78a5 |
@ -17,6 +17,8 @@ variables:
|
||||
check_commit_log:
|
||||
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
|
||||
stage: review
|
||||
variables:
|
||||
GIT_DEPTH: "100"
|
||||
script:
|
||||
- ./.gitlab-ci/check-commit-log.sh
|
||||
only:
|
||||
|
@ -17,15 +17,19 @@ if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
|
||||
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||
|
||||
echo Looking for $merge_request_branch on remote ...
|
||||
if git fetch $merge_request_remote $merge_request_branch >/dev/null 2>&1; then
|
||||
if git fetch -q $merge_request_remote $merge_request_branch 2>/dev/null; then
|
||||
mutter_target=FETCH_HEAD
|
||||
else
|
||||
mutter_target=origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
echo Using $mutter_target instead
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$mutter_target" ]; then
|
||||
mutter_target=$(git branch -r -l $shell_branch)
|
||||
mutter_target=$(git branch -r -l origin/$shell_branch)
|
||||
mutter_target=${mutter_target:-$(git branch -r -l ${shell_branch#remotes/})}
|
||||
mutter_target=${mutter_target:-origin/master}
|
||||
echo Using $mutter_target instead
|
||||
fi
|
||||
|
||||
git checkout $mutter_target
|
||||
git checkout -q $mutter_target
|
||||
|
31
NEWS
31
NEWS
@ -1,3 +1,34 @@
|
||||
3.32.1
|
||||
======
|
||||
* Fix avatar scaling on login screen [Florian; #1024]
|
||||
* Fix distortion of desktop zoom [Florian; #646]
|
||||
* Fix mouse cursor visibility when using desktop zoom [Florian, Marco; #1020]
|
||||
* Fix screen dimming after wake-up on lock screen [Xiaoguang; #900]
|
||||
* Fix Alt+Esc switcher [Florian; #1064]
|
||||
* Respect struts for popover placement [Andrea; #1102]
|
||||
* Fix app icons updates after theme changes [Florian; #1117]
|
||||
* Fix desktop zoom after resolution changes [Marco; #1120]
|
||||
* Implement stick-to-finger workspace switch overview gestures [Florian; #516]
|
||||
* Make World Clocks offsets relative to local time [Florian; #1157]
|
||||
* Fix top app icon disappearing from dash [Florian; #1053]
|
||||
* Update switch style to match new Adwaita [Jakub; !496]
|
||||
* Ensure CSS units are pixel-aligned when scaling is used [Carlos; #91]
|
||||
* Misc. bug fixes and cleanups [Florian, Jakub, Robert, Alex, Carlos, Phil,
|
||||
Marco, Benjamin, AsciiWolf, Ray, verdre; !444, #1016, #1018, !449, #1036,
|
||||
!455, #1094, !440, #1023, #624, #1017, !476, !473, !480, #1130, !485, !481,
|
||||
!490, !489, #1151, !435, #1160, !482, #1150, #1166, !384]
|
||||
|
||||
Contributors:
|
||||
AsciiWolf, Andrea Azzarone, Benjamin Berg, Carlos Garnacho, Victor Ibragimov,
|
||||
Robert Mader, Alex Monday, Florian Müllner, Jakub Steiner, Ray Strode,
|
||||
Marco Trevisan (Treviño), verdre, Xiaoguang Wang, Phil Wyett
|
||||
|
||||
Translators:
|
||||
Victor Ibragimov [tg, af, et, ja], Bruce Cowan [en_GB], Piotr Drąg [tg],
|
||||
Charles Monzat [fr], Khaled Hosny [ar], Goran Vidović [hr],
|
||||
Cheng-Chia Tseng [zh_TW], Carmen Bianca BAKKER [eo], Daniel Mustieles [es],
|
||||
Dušan Kazik [sk]
|
||||
|
||||
3.32.0
|
||||
======
|
||||
* Fix sizing issues in on-screen-keyboard emoji panel [Carlos; !439]
|
||||
|
@ -21,10 +21,8 @@
|
||||
<file>noise-texture.png</file>
|
||||
<file>pad-osd.css</file>
|
||||
<file>process-working.svg</file>
|
||||
<file>toggle-off-us.svg</file>
|
||||
<file>toggle-off-intl.svg</file>
|
||||
<file>toggle-off-hc.svg</file>
|
||||
<file>toggle-on-us.svg</file>
|
||||
<file>toggle-on-intl.svg</file>
|
||||
<file>toggle-on-hc.svg</file>
|
||||
</gresource>
|
||||
|
@ -157,18 +157,13 @@ StScrollBar {
|
||||
|
||||
/* Switches */
|
||||
.toggle-switch {
|
||||
width: 65px;
|
||||
width: 46px;
|
||||
height: 22px;
|
||||
background-size: contain;
|
||||
background-image: url("resource:///org/gnome/shell/theme/toggle-off-intl.svg");
|
||||
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-intl.svg"); }
|
||||
}
|
||||
|
||||
@each $v in us, intl {
|
||||
.toggle-switch-#{$v} {
|
||||
background-image: url("resource:///org/gnome/shell/theme/toggle-off-#{$v}.svg");
|
||||
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-#{$v}.svg"); }
|
||||
}
|
||||
}
|
||||
|
||||
/* links */
|
||||
.shell-link {
|
||||
color: $link_color;
|
||||
@ -1155,25 +1150,23 @@ StScrollBar {
|
||||
//close buttons
|
||||
|
||||
.window-close {
|
||||
background-color: white;
|
||||
background-color: $selected_bg_color;
|
||||
color: white;
|
||||
border-radius: 24px;
|
||||
border: 4px solid $selected_bg_color;
|
||||
box-shadow: inset 0 -4px 0 0 transparentize($selected_bg_color, 0.5);
|
||||
color: $selected_bg_color;
|
||||
border: 2px solid $selected_bg_color;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
-shell-close-overlap: 14px;
|
||||
-shell-close-overlap: 11px;
|
||||
box-shadow: -1px 1px 5px 0px transparentize(black, 0.5);
|
||||
|
||||
&:hover {
|
||||
background-color: $selected_bg_color;
|
||||
border-color: white;
|
||||
color: white;
|
||||
background-color: lighten($selected_bg_color, 5%);
|
||||
border-color: lighten($selected_bg_color, 5%);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: mix(white, $selected_bg_color, 75%);
|
||||
border-color: $selected_bg_color;
|
||||
color: $selected_bg_color;
|
||||
background-color: darken($selected_bg_color, 5%);
|
||||
border-color: darken($selected_bg_color, 5%);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1238,13 +1231,14 @@ StScrollBar {
|
||||
}
|
||||
|
||||
.window-clone-border {
|
||||
border: 4px solid $selected_bg_color;
|
||||
border-radius: 4px;
|
||||
$_bg: transparentize(white, 0.65);
|
||||
border: 5px solid $_bg;
|
||||
border-radius: 6px;
|
||||
// For window decorations with round corners we can't match
|
||||
// the exact shape when the window is scaled. So apply a shadow
|
||||
// to fix that case
|
||||
box-shadow: inset 0px 0px 0px 1px $selected_bg_color;
|
||||
}
|
||||
box-shadow: inset 0 0 0 1px $_bg;
|
||||
}
|
||||
.window-caption {
|
||||
spacing: 25px;
|
||||
color: $selected_fg_color;
|
||||
|
@ -10,124 +10,62 @@
|
||||
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="65"
|
||||
width="46"
|
||||
height="22"
|
||||
id="svg2857"
|
||||
viewBox="0 0 46 22"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="toggle-off-us.svg">
|
||||
id="svg2751"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
sodipodi:docname="toggle-off-intl.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective2865" />
|
||||
<inkscape:perspective
|
||||
id="perspective2843"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
id="defs2745">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient76469-7-7-4"
|
||||
id="linearGradient38024"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
||||
x1="6"
|
||||
y1="102.95528"
|
||||
x2="6"
|
||||
y2="84.505203" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient76469-7-7-4">
|
||||
id="linearGradient3329">
|
||||
<stop
|
||||
style="stop-color:#2e3232;stop-opacity:1"
|
||||
style="stop-color:#39393a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop76471-7-1-5" />
|
||||
id="stop3325" />
|
||||
<stop
|
||||
style="stop-color:#3e4545;stop-opacity:1"
|
||||
style="stop-color:#302f30;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop76473-9-0-0" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4"
|
||||
is_visible="true" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4-0"
|
||||
is_visible="true" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient37802-8"
|
||||
id="linearGradient12311-3-1-0-5-4"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)"
|
||||
x1="610.13782"
|
||||
y1="501.43866"
|
||||
x2="610.13782"
|
||||
y2="492.52756" />
|
||||
<linearGradient
|
||||
id="linearGradient37802-8"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop37804-1"
|
||||
offset="0"
|
||||
style="stop-color:#2c2c2c;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop37806-8"
|
||||
offset="1"
|
||||
style="stop-color:#16191a;stop-opacity:1" />
|
||||
id="stop3327" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="492.52756"
|
||||
x2="610.13782"
|
||||
y1="501.43866"
|
||||
x1="610.13782"
|
||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-900.56122,-423.92857)"
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3329"
|
||||
id="linearGradient3331"
|
||||
x1="53"
|
||||
y1="294.42917"
|
||||
x2="53"
|
||||
y2="309.80417"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient13602"
|
||||
xlink:href="#linearGradient37802-8"
|
||||
inkscape:collect="always" />
|
||||
gradientTransform="translate(-42.760724)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
pagecolor="#535353"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="-5.0602834"
|
||||
inkscape:cy="16.473273"
|
||||
inkscape:cx="-19.436775"
|
||||
inkscape:cy="-13.499723"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1375"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
showborder="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12954"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
id="grid3298" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2862">
|
||||
id="metadata2748">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
@ -142,68 +80,24 @@
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-444.64286,-781.36218)">
|
||||
<g
|
||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||
id="g37994">
|
||||
<g
|
||||
id="g37996"
|
||||
transform="translate(-115,1277)">
|
||||
<rect
|
||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
||||
id="rect13475"
|
||||
width="98"
|
||||
height="25"
|
||||
x="644.5"
|
||||
y="484.61118"
|
||||
rx="4.7429576"
|
||||
ry="3.8424656" />
|
||||
<rect
|
||||
ry="3.8424656"
|
||||
rx="4.7429576"
|
||||
y="483.5"
|
||||
x="644.5"
|
||||
height="25"
|
||||
width="98"
|
||||
id="rect38000"
|
||||
style="color:#000000;fill:url(#linearGradient12311-3-1-0-5-4);fill-opacity:1;fill-rule:nonzero;stroke:#16191a;stroke-width:1.37920942;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-49.946213,-1.890275)"
|
||||
id="g38002">
|
||||
<g
|
||||
transform="translate(-115,1247)"
|
||||
style="display:inline"
|
||||
id="g38004">
|
||||
<rect
|
||||
ry="3.7972314"
|
||||
rx="4.6871223"
|
||||
y="515.5"
|
||||
x="694.53046"
|
||||
height="25"
|
||||
width="45.969578"
|
||||
id="rect38006"
|
||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 699.09675,516.7365 36.86904,0"
|
||||
id="path38016"
|
||||
inkscape:path-effect="#path-effect77541-4"
|
||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2.15627193;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
|
||||
id="path13479"
|
||||
sodipodi:cx="16.4375"
|
||||
sodipodi:cy="10.8125"
|
||||
sodipodi:rx="4.3125"
|
||||
sodipodi:ry="4.3125"
|
||||
d="m 20.75,10.8125 a 4.3125,4.3125 0 1 1 -8.625,0 4.3125,4.3125 0 1 1 8.625,0 z"
|
||||
transform="matrix(1.4212691,0,0,1.1514287,577.38488,1761.1138)" />
|
||||
</g>
|
||||
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: 7.5 KiB After Width: | Height: | Size: 3.3 KiB |
@ -1,255 +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="65"
|
||||
height="22"
|
||||
id="svg2857"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="toggle-on-intl.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective2865" />
|
||||
<inkscape:perspective
|
||||
id="perspective2843"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient76469-7-7-4"
|
||||
id="linearGradient38024"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
||||
x1="6"
|
||||
y1="102.95528"
|
||||
x2="6"
|
||||
y2="84.505203" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient76469-7-7-4">
|
||||
<stop
|
||||
style="stop-color:#2e3232;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop76471-7-1-5" />
|
||||
<stop
|
||||
style="stop-color:#3e4545;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop76473-9-0-0" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4"
|
||||
is_visible="true" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient37802"
|
||||
id="linearGradient12311-3-1-0-5"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)"
|
||||
x1="610.13782"
|
||||
y1="501.43866"
|
||||
x2="610.13782"
|
||||
y2="492.52756" />
|
||||
<linearGradient
|
||||
id="linearGradient37802"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop37804"
|
||||
offset="0"
|
||||
style="stop-color:#2c2c2c;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop37806"
|
||||
offset="1"
|
||||
style="stop-color:#16191a;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient76469-7-7-4-3"
|
||||
id="linearGradient77680"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,1.0322581,717.71949,428.68472)"
|
||||
x1="6"
|
||||
y1="102.95528"
|
||||
x2="6"
|
||||
y2="84.505203" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient76469-7-7-4-3">
|
||||
<stop
|
||||
style="stop-color:#2e3232;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop76471-7-1-5-7" />
|
||||
<stop
|
||||
style="stop-color:#3e4545;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop76473-9-0-0-9" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4-0"
|
||||
is_visible="true" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient37802-8"
|
||||
id="linearGradient12311-3-1-0-5-4"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)"
|
||||
x1="610.13782"
|
||||
y1="501.43866"
|
||||
x2="610.13782"
|
||||
y2="492.52756" />
|
||||
<linearGradient
|
||||
id="linearGradient37802-8"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop37804-1"
|
||||
offset="0"
|
||||
style="stop-color:#2c2c2c;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop37806-8"
|
||||
offset="1"
|
||||
style="stop-color:#16191a;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="492.52756"
|
||||
x2="610.13782"
|
||||
y1="501.43866"
|
||||
x1="610.13782"
|
||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-900.56122,-423.92857)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient13602"
|
||||
xlink:href="#linearGradient37802-8"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="16.760995"
|
||||
inkscape:cy="21.955673"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1375"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
showborder="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12954"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2862">
|
||||
<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(-444.64286,-781.36218)">
|
||||
<g
|
||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||
id="g37994">
|
||||
<g
|
||||
id="g37996"
|
||||
transform="translate(-115,1277)">
|
||||
<rect
|
||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
||||
id="rect13475"
|
||||
width="98"
|
||||
height="25"
|
||||
x="644.5"
|
||||
y="484.61118"
|
||||
rx="4.7429576"
|
||||
ry="3.8424656" />
|
||||
<rect
|
||||
ry="3.8424656"
|
||||
rx="4.7429576"
|
||||
y="483.5"
|
||||
x="644.5"
|
||||
height="25"
|
||||
width="98"
|
||||
id="rect38000"
|
||||
style="color:#000000;fill:url(#linearGradient12311-3-1-0-5-4);fill-opacity:1;fill-rule:nonzero;stroke:#16191a;stroke-width:1.37920942;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-49.946213,-1.890275)"
|
||||
id="g38002">
|
||||
<g
|
||||
transform="translate(-115,1247)"
|
||||
style="display:inline"
|
||||
id="g38004">
|
||||
<rect
|
||||
ry="3.7972314"
|
||||
rx="4.6871223"
|
||||
y="515.5"
|
||||
x="694.53046"
|
||||
height="25"
|
||||
width="45.969578"
|
||||
id="rect38006"
|
||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 699.09675,516.7365 36.86904,0"
|
||||
id="path38016"
|
||||
inkscape:path-effect="#path-effect77541-4"
|
||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:13.79166794px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
||||
x="520.29974"
|
||||
y="1997.0011"
|
||||
id="text75614"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(1.1236771,0.88993537)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75616"
|
||||
x="520.29974"
|
||||
y="1997.0011">OFF</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 8.8 KiB |
@ -10,117 +10,69 @@
|
||||
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="65"
|
||||
width="46"
|
||||
height="22"
|
||||
id="svg2857"
|
||||
viewBox="0 0 46 22"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
id="svg2751"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
sodipodi:docname="toggle-on-intl.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective2865" />
|
||||
<inkscape:perspective
|
||||
id="perspective2843"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
id="defs2745">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient77461"
|
||||
id="linearGradient77551"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)"
|
||||
x1="1164.7644"
|
||||
y1="962.93695"
|
||||
x2="1164.7644"
|
||||
y2="970.51404" />
|
||||
<linearGradient
|
||||
id="linearGradient77461"
|
||||
inkscape:collect="always">
|
||||
id="linearGradient3329">
|
||||
<stop
|
||||
id="stop77463"
|
||||
style="stop-color:#39393a;stop-opacity:1;"
|
||||
offset="0"
|
||||
style="stop-color:#182f4c;stop-opacity:1" />
|
||||
id="stop3325" />
|
||||
<stop
|
||||
id="stop77465"
|
||||
style="stop-color:#302f30;stop-opacity:1"
|
||||
offset="1"
|
||||
style="stop-color:#205b9a;stop-opacity:1" />
|
||||
id="stop3327" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient76469-7-7-4"
|
||||
id="linearGradient38024"
|
||||
xlink:href="#linearGradient3329"
|
||||
id="linearGradient3331"
|
||||
x1="53"
|
||||
y1="294.42917"
|
||||
x2="53"
|
||||
y2="309.80417"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
||||
x1="6"
|
||||
y1="102.95528"
|
||||
x2="6"
|
||||
y2="84.505203" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient76469-7-7-4">
|
||||
<stop
|
||||
style="stop-color:#2e3232;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop76471-7-1-5" />
|
||||
<stop
|
||||
style="stop-color:#3e4545;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop76473-9-0-0" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4"
|
||||
is_visible="true" />
|
||||
gradientTransform="translate(-19)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
pagecolor="#535353"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="37.410841"
|
||||
inkscape:cy="16.009314"
|
||||
inkscape:cx="13.588971"
|
||||
inkscape:cy="14.124546"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
showborder="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12954"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
id="grid3298" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2862">
|
||||
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></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@ -128,65 +80,24 @@
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-444.64286,-781.36218)">
|
||||
<g
|
||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||
id="g37994">
|
||||
<g
|
||||
id="g37996"
|
||||
transform="translate(-115,1277)">
|
||||
<rect
|
||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
||||
id="rect13475"
|
||||
width="98"
|
||||
height="25"
|
||||
x="644.5"
|
||||
y="484.61118"
|
||||
rx="4.7429576"
|
||||
ry="3.8424656" />
|
||||
<rect
|
||||
ry="3.8424656"
|
||||
rx="4.7429576"
|
||||
y="483.5"
|
||||
x="644.5"
|
||||
height="25"
|
||||
width="98"
|
||||
id="rect38000"
|
||||
style="color:#000000;fill:url(#linearGradient77551);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(2.0625,-2)"
|
||||
id="g38002">
|
||||
<g
|
||||
transform="translate(-115,1247)"
|
||||
style="display:inline"
|
||||
id="g38004">
|
||||
<rect
|
||||
ry="3.7972314"
|
||||
rx="4.6871223"
|
||||
y="515.5"
|
||||
x="694.53046"
|
||||
height="25"
|
||||
width="45.969578"
|
||||
id="rect38006"
|
||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 699.09675,516.7365 36.86904,0"
|
||||
id="path38016"
|
||||
inkscape:path-effect="#path-effect77541-4"
|
||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
|
||||
id="rect13678"
|
||||
width="3.0646207"
|
||||
height="12.414008"
|
||||
x="554.77728"
|
||||
y="1767.3566" />
|
||||
</g>
|
||||
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: 6.8 KiB After Width: | Height: | Size: 3.3 KiB |
@ -1,207 +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="65"
|
||||
height="22"
|
||||
id="svg2857"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="toggle-on-us.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective2865" />
|
||||
<inkscape:perspective
|
||||
id="perspective2843"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient76469-7-7-4"
|
||||
id="linearGradient38024"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
||||
x1="6"
|
||||
y1="102.95528"
|
||||
x2="6"
|
||||
y2="84.505203" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient76469-7-7-4">
|
||||
<stop
|
||||
style="stop-color:#2e3232;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop76471-7-1-5" />
|
||||
<stop
|
||||
style="stop-color:#3e4545;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop76473-9-0-0" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4"
|
||||
is_visible="true" />
|
||||
<linearGradient
|
||||
id="linearGradient77461-1"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop77463-1"
|
||||
offset="0"
|
||||
style="stop-color:#182f4c;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop77465-4"
|
||||
offset="1"
|
||||
style="stop-color:#205b9a;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient77461-1"
|
||||
id="linearGradient77551-6-5"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.8527367,0,0,0.80554422,-969.41608,-778.00299)"
|
||||
x1="1164.7644"
|
||||
y1="962.93695"
|
||||
x2="1164.7644"
|
||||
y2="970.51404" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient77461-1"
|
||||
id="linearGradient11198"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3066667,0,0,1,-1066.3709,794.25325)"
|
||||
x1="1322.5831"
|
||||
y1="-312.51855"
|
||||
x2="1322.5831"
|
||||
y2="-306.53461" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="-26.798898"
|
||||
inkscape:cy="5.3753009"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
showborder="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12954"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2862">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-444.64286,-781.36218)">
|
||||
<g
|
||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||
id="g37994">
|
||||
<g
|
||||
id="g37996"
|
||||
transform="translate(-115,1277)">
|
||||
<rect
|
||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
||||
id="rect13475"
|
||||
width="98"
|
||||
height="25"
|
||||
x="644.5"
|
||||
y="484.61118"
|
||||
rx="4.7429576"
|
||||
ry="3.8424656" />
|
||||
<rect
|
||||
ry="3.8424656"
|
||||
rx="4.7429576"
|
||||
y="483.5"
|
||||
x="644.5"
|
||||
height="25"
|
||||
width="98"
|
||||
id="rect38000"
|
||||
style="color:#000000;fill:url(#linearGradient11198);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(2.0625,-2)"
|
||||
id="g38002">
|
||||
<g
|
||||
transform="translate(-115,1247)"
|
||||
style="display:inline"
|
||||
id="g38004">
|
||||
<rect
|
||||
ry="3.7972314"
|
||||
rx="4.6871223"
|
||||
y="515.5"
|
||||
x="694.53046"
|
||||
height="25"
|
||||
width="45.969578"
|
||||
id="rect38006"
|
||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 699.09675,516.7365 36.86904,0"
|
||||
id="path38016"
|
||||
inkscape:path-effect="#path-effect77541-4"
|
||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
transform="scale(1.1000946,0.90901274)"
|
||||
sodipodi:linespacing="125%"
|
||||
id="text38018"
|
||||
y="1955.5205"
|
||||
x="495.94223"
|
||||
style="font-size:13.29953671px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
||||
xml:space="preserve"><tspan
|
||||
y="1955.5205"
|
||||
x="495.94223"
|
||||
id="tspan38020"
|
||||
sodipodi:role="line">ON</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 7.7 KiB |
@ -325,7 +325,7 @@ var SessionMenuButton = class {
|
||||
this._button.remove_style_pseudo_class('active');
|
||||
});
|
||||
|
||||
this._manager = new PopupMenu.PopupMenuManager({ actor: this._button },
|
||||
this._manager = new PopupMenu.PopupMenuManager(this._button,
|
||||
{ actionMode: Shell.ActionMode.NONE });
|
||||
this._manager.addMenu(this._menu);
|
||||
|
||||
|
@ -366,7 +366,7 @@ class CloseButton extends St.Button {
|
||||
}
|
||||
|
||||
_computeBoxPointerOffset() {
|
||||
if (!this._boxPointer || !this._boxPointer.actor.get_stage())
|
||||
if (!this._boxPointer || !this._boxPointer.get_stage())
|
||||
return 0;
|
||||
|
||||
let side = this._boxPointer.arrowSide;
|
||||
|
@ -477,8 +477,8 @@ var CyclerList = GObject.registerClass({
|
||||
var CyclerPopup = GObject.registerClass(
|
||||
class CyclerPopup extends SwitcherPopup.SwitcherPopup {
|
||||
_init() {
|
||||
if (new.target === CyclerPopup)
|
||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
||||
if (this.constructor.name === CyclerPopup.prototype.constructor.name)
|
||||
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||
|
||||
super._init();
|
||||
|
||||
|
@ -98,8 +98,8 @@ function clamp(value, min, max) {
|
||||
|
||||
class BaseAppView {
|
||||
constructor(params, gridParams) {
|
||||
if (new.target === BaseAppView)
|
||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
||||
if (this.constructor === BaseAppView)
|
||||
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||
|
||||
gridParams = Params.parse(gridParams, { xAlign: St.Align.MIDDLE,
|
||||
columnLimit: MAX_COLUMNS,
|
||||
@ -1301,16 +1301,16 @@ var AppFolderPopup = class AppFolderPopup {
|
||||
x_expand: true,
|
||||
x_align: St.Align.START });
|
||||
|
||||
this._boxPointer.actor.style_class = 'app-folder-popup';
|
||||
this.actor.add_actor(this._boxPointer.actor);
|
||||
this._boxPointer.style_class = 'app-folder-popup';
|
||||
this.actor.add_actor(this._boxPointer);
|
||||
this._boxPointer.bin.set_child(this._view.actor);
|
||||
|
||||
this.closeButton = Util.makeCloseButton(this._boxPointer);
|
||||
this.closeButton.connect('clicked', this.popdown.bind(this));
|
||||
this.actor.add_actor(this.closeButton);
|
||||
|
||||
this._boxPointer.actor.bind_property('opacity', this.closeButton, 'opacity',
|
||||
GObject.BindingFlags.SYNC_CREATE);
|
||||
this._boxPointer.bind_property('opacity', this.closeButton, 'opacity',
|
||||
GObject.BindingFlags.SYNC_CREATE);
|
||||
|
||||
global.focus_manager.add_group(this.actor);
|
||||
|
||||
@ -1479,7 +1479,7 @@ var AppIcon = class AppIcon {
|
||||
this.actor.connect('popup-menu', this._onKeyboardPopupMenu.bind(this));
|
||||
|
||||
this._menu = null;
|
||||
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
||||
this._menuManager = new PopupMenu.PopupMenuManager(this.actor);
|
||||
|
||||
if (isDraggable) {
|
||||
this._draggable = DND.makeDraggable(this.actor);
|
||||
@ -1707,25 +1707,20 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
|
||||
w => !w.skip_taskbar
|
||||
);
|
||||
|
||||
// Display the app windows menu items and the separator between windows
|
||||
// of the current desktop and other windows.
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
let separatorShown = windows.length > 0 && windows[0].get_workspace() != activeWorkspace;
|
||||
if (windows.length > 0)
|
||||
this.addMenuItem(
|
||||
/* Translators: This is the heading of a list of open windows */
|
||||
new PopupMenu.PopupSeparatorMenuItem(_("Open Windows"))
|
||||
);
|
||||
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
let window = windows[i];
|
||||
if (!separatorShown && window.get_workspace() != activeWorkspace) {
|
||||
this._appendSeparator();
|
||||
separatorShown = true;
|
||||
}
|
||||
windows.forEach(window => {
|
||||
let title = window.title ? window.title
|
||||
: this._source.app.get_name();
|
||||
let item = this._appendMenuItem(title);
|
||||
item.connect('activate', () => {
|
||||
this.emit('activate-window', window);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (!this._source.app.is_window_backed()) {
|
||||
this._appendSeparator();
|
||||
|
@ -25,7 +25,7 @@ var BackgroundMenu = class BackgroundMenu extends PopupMenu.PopupMenu {
|
||||
function addBackgroundMenu(actor, layoutManager) {
|
||||
actor.reactive = true;
|
||||
actor._backgroundMenu = new BackgroundMenu(layoutManager);
|
||||
actor._backgroundManager = new PopupMenu.PopupMenuManager({ actor: actor });
|
||||
actor._backgroundManager = new PopupMenu.PopupMenuManager(actor);
|
||||
actor._backgroundManager.addMenu(actor._backgroundMenu);
|
||||
|
||||
function openMenu(x, y) {
|
||||
|
@ -121,7 +121,8 @@ var BarLevel = class {
|
||||
cr.lineTo(x, (height - barLevelHeight) / 2);
|
||||
cr.lineTo(x, (height + barLevelHeight) / 2);
|
||||
cr.lineTo(barLevelBorderRadius + barLevelBorderWidth, (height + barLevelHeight) / 2);
|
||||
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
||||
if (this._value > 0)
|
||||
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
||||
cr.fillPreserve();
|
||||
Clutter.cairo_set_source_color(cr, barLevelActiveBorderColor);
|
||||
cr.setLineWidth(barLevelBorderWidth);
|
||||
@ -143,17 +144,19 @@ var BarLevel = class {
|
||||
}
|
||||
|
||||
/* end progress bar arc */
|
||||
if (this._value <= this._overdriveStart)
|
||||
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.lineTo(Math.floor(endX), (height + barLevelHeight) / 2);
|
||||
cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||
cr.fillPreserve();
|
||||
cr.setLineWidth(barLevelBorderWidth);
|
||||
cr.stroke();
|
||||
if (this._value > 0) {
|
||||
if (this._value <= this._overdriveStart)
|
||||
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.lineTo(Math.floor(endX), (height + barLevelHeight) / 2);
|
||||
cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2);
|
||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||
cr.fillPreserve();
|
||||
cr.setLineWidth(barLevelBorderWidth);
|
||||
cr.stroke();
|
||||
}
|
||||
|
||||
/* draw overdrive separator */
|
||||
if (overdriveActive) {
|
||||
|
@ -33,8 +33,6 @@ var BoxPointer = GObject.registerClass({
|
||||
_init(arrowSide, binProperties) {
|
||||
super._init();
|
||||
|
||||
this.actor = this;
|
||||
|
||||
this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||
|
||||
this._arrowSide = arrowSide;
|
||||
|
@ -118,7 +118,7 @@ var WorldClocksSection = class WorldClocksSection {
|
||||
if (!clocks[i].location)
|
||||
continue;
|
||||
let l = world.deserialize(clocks[i].location);
|
||||
if (l)
|
||||
if (l && l.get_timezone() != null)
|
||||
this._locations.push({ location: l });
|
||||
}
|
||||
|
||||
@ -476,10 +476,9 @@ class DateMenuButton extends PanelMenu.Button {
|
||||
box.add_actor(this._clockDisplay);
|
||||
box.add_actor(this._indicator.actor);
|
||||
|
||||
this.actor.label_actor = this._clockDisplay;
|
||||
this.actor.add_actor(box);
|
||||
this.actor.add_style_class_name ('clock-display');
|
||||
|
||||
this.label_actor = this._clockDisplay;
|
||||
this.add_actor(box);
|
||||
this.add_style_class_name ('clock-display');
|
||||
|
||||
let layout = new FreezableBinLayout();
|
||||
let bin = new St.Widget({ layout_manager: layout });
|
||||
|
@ -175,10 +175,10 @@ var MessageDialogContent = GObject.registerClass({
|
||||
this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
|
||||
});
|
||||
|
||||
let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE,
|
||||
let textProps = { ellipsize: Pango.EllipsizeMode.NONE,
|
||||
line_wrap: true };
|
||||
Object.assign(this._subtitle.clutter_text, textProps);
|
||||
Object.assign(this._body.clutter_text, textProps);
|
||||
this._subtitle.clutter_text.set(textProps);
|
||||
this._body.clutter_text.set(textProps);
|
||||
|
||||
if (!params.hasOwnProperty('style_class'))
|
||||
params.style_class = 'message-dialog-main-layout';
|
||||
|
@ -96,6 +96,15 @@ function init() {
|
||||
Clutter.Actor.prototype.toString = function() {
|
||||
return St.describe_actor(this);
|
||||
};
|
||||
// Deprecation warning for former JS classes turned into an actor subclass
|
||||
Object.defineProperty(Clutter.Actor.prototype, 'actor', {
|
||||
get() {
|
||||
let klass = this.constructor.name;
|
||||
let { stack } = new Error();
|
||||
log(`Usage of object.actor is deprecated for ${klass}\n${stack}`);
|
||||
return this;
|
||||
}
|
||||
});
|
||||
|
||||
let origToString = Object.prototype.toString;
|
||||
Object.prototype.toString = function() {
|
||||
|
@ -272,7 +272,7 @@ var CandidatePopup = class CandidatePopup {
|
||||
|
||||
_setDummyCursorGeometry(x, y, w, h) {
|
||||
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
|
||||
if (this._boxPointer.actor.visible)
|
||||
if (this._boxPointer.visible)
|
||||
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
||||
}
|
||||
|
||||
@ -285,7 +285,7 @@ var CandidatePopup = class CandidatePopup {
|
||||
if (isVisible) {
|
||||
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
||||
this._boxPointer.open(BoxPointer.PopupAnimation.NONE);
|
||||
this._boxPointer.actor.raise_top();
|
||||
this._boxPointer.raise_top();
|
||||
} else {
|
||||
this._boxPointer.close(BoxPointer.PopupAnimation.NONE);
|
||||
}
|
||||
|
@ -43,8 +43,6 @@ class BaseIcon extends St.Bin {
|
||||
x_fill: true,
|
||||
y_fill: true });
|
||||
|
||||
this.actor = this;
|
||||
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
|
||||
this._box = new St.BoxLayout({ vertical: true });
|
||||
@ -188,8 +186,6 @@ var IconGrid = GObject.registerClass({
|
||||
super._init({ style_class: 'icon-grid',
|
||||
y_align: Clutter.ActorAlign.START });
|
||||
|
||||
this.actor = this;
|
||||
|
||||
params = Params.parse(params, { rowLimit: null,
|
||||
columnLimit: null,
|
||||
minRows: 1,
|
||||
|
@ -282,11 +282,11 @@ var Key = class Key {
|
||||
y_fill: true,
|
||||
x_align: St.Align.START });
|
||||
this._boxPointer.hide();
|
||||
Main.layoutManager.addChrome(this._boxPointer.actor);
|
||||
Main.layoutManager.addChrome(this._boxPointer);
|
||||
this._boxPointer.setPosition(this.keyButton, 0.5);
|
||||
|
||||
// Adds style to existing keyboard style to avoid repetition
|
||||
this._boxPointer.actor.add_style_class_name('keyboard-subkeys');
|
||||
this._boxPointer.add_style_class_name('keyboard-subkeys');
|
||||
this._getExtendedKeys();
|
||||
this.keyButton._extended_keys = this._extended_keyboard;
|
||||
}
|
||||
@ -1049,7 +1049,7 @@ var Keyboard = class Keyboard {
|
||||
this._a11yApplicationsSettings.connect('changed', this._syncEnabled.bind(this));
|
||||
this._lastDeviceId = null;
|
||||
this._suggestions = null;
|
||||
this._emojiKeyVisible = true;
|
||||
this._emojiKeyVisible = Meta.is_wayland_compositor();
|
||||
|
||||
this._focusTracker = new FocusTracker();
|
||||
this._focusTracker.connect('position-changed', this._onFocusPositionChanged.bind(this));
|
||||
@ -1162,7 +1162,7 @@ var Keyboard = class Keyboard {
|
||||
this._keyboardController = new KeyboardController();
|
||||
|
||||
this._groups = {};
|
||||
this._current_page = null;
|
||||
this._currentPage = null;
|
||||
|
||||
this._suggestions = new Suggestions();
|
||||
this.actor.add(this._suggestions.actor,
|
||||
@ -1202,10 +1202,12 @@ var Keyboard = class Keyboard {
|
||||
this._keyboardNotifyId = this._keyboardController.connect('active-group', this._onGroupChanged.bind(this));
|
||||
this._keyboardGroupsChangedId = this._keyboardController.connect('groups-changed', this._onKeyboardGroupsChanged.bind(this));
|
||||
this._keyboardStateId = this._keyboardController.connect('panel-state', this._onKeyboardStateChanged.bind(this));
|
||||
this._emojiKeyVisibleId = this._keyboardController.connect('emoji-visible', this._onEmojiKeyVisible.bind(this));
|
||||
this._keypadVisibleId = this._keyboardController.connect('keypad-visible', this._onKeypadVisible.bind(this));
|
||||
this._focusNotifyId = global.stage.connect('notify::key-focus', this._onKeyFocusChanged.bind(this));
|
||||
|
||||
if (Meta.is_wayland_compositor())
|
||||
this._emojiKeyVisibleId = this._keyboardController.connect('emoji-visible', this._onEmojiKeyVisible.bind(this));
|
||||
|
||||
this._relayout();
|
||||
}
|
||||
|
||||
@ -1353,7 +1355,7 @@ var Keyboard = class Keyboard {
|
||||
} else if (switchToLevel == 1) {
|
||||
extraButton.connect('long-press', () => {
|
||||
this._latched = true;
|
||||
this._setCurrentLevelLatched(this._current_page, this._latched);
|
||||
this._setCurrentLevelLatched(this._currentPage, this._latched);
|
||||
});
|
||||
}
|
||||
|
||||
@ -1380,8 +1382,8 @@ var Keyboard = class Keyboard {
|
||||
}
|
||||
|
||||
_updateCurrentPageVisible() {
|
||||
if (this._current_page)
|
||||
this._current_page.visible = !this._emojiActive && !this._keypadVisible;
|
||||
if (this._currentPage)
|
||||
this._currentPage.visible = !this._emojiActive && !this._keypadVisible;
|
||||
}
|
||||
|
||||
_setEmojiActive(active) {
|
||||
@ -1440,7 +1442,7 @@ var Keyboard = class Keyboard {
|
||||
|
||||
_getGridSlots() {
|
||||
let numOfHorizSlots = 0, numOfVertSlots;
|
||||
let rows = this._current_page.get_children();
|
||||
let rows = this._currentPage.get_children();
|
||||
numOfVertSlots = rows.length;
|
||||
|
||||
for (let i = 0; i < rows.length; ++i) {
|
||||
@ -1470,7 +1472,13 @@ var Keyboard = class Keyboard {
|
||||
}
|
||||
|
||||
_onKeyboardGroupsChanged(keyboard) {
|
||||
this._groups = [];
|
||||
let nonGroupActors = [this._emojiSelection.actor, this._keypad.actor];
|
||||
this._aspectContainer.get_children().filter(c => !nonGroupActors.includes(c)).forEach(c => {
|
||||
c.destroy();
|
||||
});
|
||||
|
||||
this._currentPage = null;
|
||||
this._groups = {};
|
||||
this._onGroupChanged();
|
||||
}
|
||||
|
||||
@ -1513,12 +1521,12 @@ var Keyboard = class Keyboard {
|
||||
let activeGroupName = this._keyboardController.getCurrentGroup();
|
||||
let layers = this._groups[activeGroupName];
|
||||
|
||||
if (this._current_page != null) {
|
||||
this._setCurrentLevelLatched(this._current_page, false);
|
||||
this._current_page.hide();
|
||||
if (this._currentPage != null) {
|
||||
this._setCurrentLevelLatched(this._currentPage, false);
|
||||
this._currentPage.hide();
|
||||
}
|
||||
|
||||
this._current_page = layers[activeLevel];
|
||||
this._currentPage = layers[activeLevel];
|
||||
this._updateCurrentPageVisible();
|
||||
}
|
||||
|
||||
|
@ -584,7 +584,6 @@ class SourceActor extends St.Widget {
|
||||
this._source = source;
|
||||
this._size = size;
|
||||
|
||||
this.actor = this;
|
||||
this.connect('destroy', () => {
|
||||
this._source.disconnect(this._iconUpdatedId);
|
||||
this._actorDestroyed = true;
|
||||
|
@ -369,17 +369,15 @@ class DashSpacer extends St.Widget {
|
||||
}
|
||||
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
let box = this.get_allocation_box();
|
||||
let minWidth = super.vfunc_get_preferred_width(forHeight)[0];
|
||||
let natWidth = box.x2 - box.x1;
|
||||
return [minWidth, natWidth];
|
||||
if (this._bindConstraint)
|
||||
return this._bindConstraint.source.get_preferred_width(forHeight);
|
||||
return super.vfunc_get_preferred_width(forHeight);
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
let box = this.get_allocation_box();
|
||||
let minHeight = super.vfunc_get_preferred_height(forWidth)[0];
|
||||
let natHeight = box.y2 - box.y1;
|
||||
return [minHeight, natHeight];
|
||||
if (this._bindConstraint)
|
||||
return this._bindConstraint.source.get_preferred_height(forWidth);
|
||||
return super.vfunc_get_preferred_height(forWidth);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -374,12 +374,12 @@ var PadDiagram = GObject.registerClass({
|
||||
svgData += this._cssString();
|
||||
svgData += this._wrappingSvgFooter();
|
||||
|
||||
let handle = new Rsvg.Handle();
|
||||
handle.set_base_uri(GLib.path_get_dirname(this._imagePath));
|
||||
handle.write(svgData);
|
||||
handle.close();
|
||||
let istream = new Gio.MemoryInputStream();
|
||||
istream.add_bytes(new GLib.Bytes(svgData));
|
||||
|
||||
return handle;
|
||||
return Rsvg.Handle.new_from_stream_sync(istream,
|
||||
Gio.File.new_for_path(this._imagePath),
|
||||
0, null);
|
||||
}
|
||||
|
||||
_updateDiagramScale() {
|
||||
|
101
js/ui/panel.js
101
js/ui/panel.js
@ -75,6 +75,9 @@ class AppMenu extends PopupMenu.PopupMenu {
|
||||
|
||||
this._windowsChangedId = 0;
|
||||
|
||||
/* Translators: This is the heading of a list of open windows */
|
||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem(_("Open Windows")));
|
||||
|
||||
this._windowSection = new PopupMenu.PopupMenuSection();
|
||||
this.addMenuItem(this._windowSection);
|
||||
|
||||
@ -105,6 +108,8 @@ class AppMenu extends PopupMenu.PopupMenu {
|
||||
});
|
||||
});
|
||||
|
||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
|
||||
this.addAction(_("Quit"), () => {
|
||||
this._app.request_quit();
|
||||
});
|
||||
@ -172,13 +177,6 @@ class AppMenu extends PopupMenu.PopupMenu {
|
||||
Main.activateWindow(window, event.get_time());
|
||||
});
|
||||
});
|
||||
|
||||
// Add separator between windows of the current desktop and other windows.
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
let pos = windows.findIndex(w => w.get_workspace() != activeWorkspace);
|
||||
if (pos >= 0)
|
||||
this._windowSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem(), pos);
|
||||
}
|
||||
}
|
||||
|
||||
@ -196,7 +194,7 @@ var AppMenuButton = GObject.registerClass({
|
||||
_init(panel) {
|
||||
super._init(0.0, null, true);
|
||||
|
||||
this.actor.accessible_role = Atk.Role.MENU;
|
||||
this.accessible_role = Atk.Role.MENU;
|
||||
|
||||
this._startingApps = [];
|
||||
|
||||
@ -206,10 +204,10 @@ var AppMenuButton = GObject.registerClass({
|
||||
|
||||
let bin = new St.Bin({ name: 'appMenu' });
|
||||
bin.connect('style-changed', this._onStyleChanged.bind(this));
|
||||
this.actor.add_actor(bin);
|
||||
this.add_actor(bin);
|
||||
|
||||
this.actor.bind_property("reactive", this.actor, "can-focus", 0);
|
||||
this.actor.reactive = false;
|
||||
this.bind_property("reactive", this, "can-focus", 0);
|
||||
this.reactive = false;
|
||||
|
||||
this._container = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||
bin.set_child(this._container);
|
||||
@ -265,10 +263,10 @@ var AppMenuButton = GObject.registerClass({
|
||||
return;
|
||||
|
||||
this._visible = true;
|
||||
this.actor.reactive = true;
|
||||
this.reactive = true;
|
||||
this.show();
|
||||
Tweener.removeTweens(this.actor);
|
||||
Tweener.addTween(this.actor,
|
||||
Tweener.removeTweens(this);
|
||||
Tweener.addTween(this,
|
||||
{ opacity: 255,
|
||||
time: Overview.ANIMATION_TIME,
|
||||
transition: 'easeOutQuad' });
|
||||
@ -279,9 +277,9 @@ var AppMenuButton = GObject.registerClass({
|
||||
return;
|
||||
|
||||
this._visible = false;
|
||||
this.actor.reactive = false;
|
||||
Tweener.removeTweens(this.actor);
|
||||
Tweener.addTween(this.actor,
|
||||
this.reactive = false;
|
||||
Tweener.removeTweens(this);
|
||||
Tweener.addTween(this,
|
||||
{ opacity: 0,
|
||||
time: Overview.ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
@ -404,7 +402,7 @@ var AppMenuButton = GObject.registerClass({
|
||||
if (this._targetApp) {
|
||||
this._busyNotifyId = this._targetApp.connect('notify::busy', this._sync.bind(this));
|
||||
this._label.set_text(this._targetApp.get_name());
|
||||
this.actor.set_accessible_name(this._targetApp.get_name());
|
||||
this.set_accessible_name(this._targetApp.get_name());
|
||||
}
|
||||
}
|
||||
|
||||
@ -422,7 +420,7 @@ var AppMenuButton = GObject.registerClass({
|
||||
else
|
||||
this.stopAnimation();
|
||||
|
||||
this.actor.reactive = (visible && !isBusy);
|
||||
this.reactive = (visible && !isBusy);
|
||||
|
||||
this._syncIcon();
|
||||
this.menu.setApp(this._targetApp);
|
||||
@ -461,28 +459,28 @@ var ActivitiesButton = GObject.registerClass(
|
||||
class ActivitiesButton extends PanelMenu.Button {
|
||||
_init() {
|
||||
super._init(0.0, null, true);
|
||||
this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
|
||||
this.accessible_role = Atk.Role.TOGGLE_BUTTON;
|
||||
|
||||
this.actor.name = 'panelActivities';
|
||||
this.name = 'panelActivities';
|
||||
|
||||
/* Translators: If there is no suitable word for "Activities"
|
||||
in your language, you can use the word for "Overview". */
|
||||
this._label = new St.Label({ text: _("Activities"),
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
this.actor.add_actor(this._label);
|
||||
this.add_actor(this._label);
|
||||
|
||||
this.actor.label_actor = this._label;
|
||||
this.label_actor = this._label;
|
||||
|
||||
this.actor.connect('captured-event', this._onCapturedEvent.bind(this));
|
||||
this.actor.connect_after('key-release-event', this._onKeyRelease.bind(this));
|
||||
this.connect('captured-event', this._onCapturedEvent.bind(this));
|
||||
this.connect_after('key-release-event', this._onKeyRelease.bind(this));
|
||||
|
||||
Main.overview.connect('showing', () => {
|
||||
this.actor.add_style_pseudo_class('overview');
|
||||
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
||||
this.add_style_pseudo_class('overview');
|
||||
this.add_accessible_state (Atk.StateType.CHECKED);
|
||||
});
|
||||
Main.overview.connect('hiding', () => {
|
||||
this.actor.remove_style_pseudo_class('overview');
|
||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||
this.remove_style_pseudo_class('overview');
|
||||
this.remove_accessible_state (Atk.StateType.CHECKED);
|
||||
});
|
||||
|
||||
this._xdndTimeOut = 0;
|
||||
@ -535,7 +533,7 @@ class ActivitiesButton extends PanelMenu.Button {
|
||||
let [x, y, mask] = global.get_pointer();
|
||||
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||
|
||||
if (pickedActor == this.actor && Main.overview.shouldToggleByCornerOrButton())
|
||||
if (pickedActor == this && Main.overview.shouldToggleByCornerOrButton())
|
||||
Main.overview.toggle();
|
||||
|
||||
Mainloop.source_remove(this._xdndTimeOut);
|
||||
@ -749,7 +747,7 @@ class AggregateMenu extends PanelMenu.Button {
|
||||
this.menu.box.set_layout_manager(menuLayout);
|
||||
|
||||
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
||||
this.actor.add_child(this._indicators);
|
||||
this.add_child(this._indicators);
|
||||
|
||||
if (Config.HAVE_NETWORKMANAGER) {
|
||||
this._network = new imports.ui.status.network.NMApplet();
|
||||
@ -827,9 +825,6 @@ class Panel extends St.Widget {
|
||||
super._init({ name: 'panel',
|
||||
reactive: true });
|
||||
|
||||
// For compatibility with extensions that still use the
|
||||
// this.actor field
|
||||
this.actor = this;
|
||||
this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||
|
||||
this._sessionStyle = null;
|
||||
@ -882,7 +877,7 @@ class Panel extends St.Widget {
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
super.vfunc_allocate(box, flags);
|
||||
this.set_allocation(box, flags);
|
||||
|
||||
let allocWidth = box.x2 - box.x1;
|
||||
let allocHeight = box.y2 - box.y1;
|
||||
@ -976,22 +971,11 @@ class Panel extends St.Widget {
|
||||
if (isPress && button != 1)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
let focusWindow = global.display.focus_window;
|
||||
if (!focusWindow)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
let dragWindow = focusWindow.is_attached_dialog() ? focusWindow.get_transient_for()
|
||||
: focusWindow;
|
||||
if (!dragWindow)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
let rect = dragWindow.get_frame_rect();
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
|
||||
let allowDrag = dragWindow.maximized_vertically &&
|
||||
stageX > rect.x && stageX < rect.x + rect.width;
|
||||
let dragWindow = this._getDraggableWindowForPosition(stageX);
|
||||
|
||||
if (!allowDrag)
|
||||
if (!dragWindow)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
global.display.begin_grab_op(dragWindow,
|
||||
@ -1021,7 +1005,7 @@ class Panel extends St.Widget {
|
||||
return; // menu not supported by current session mode
|
||||
|
||||
let menu = indicator.menu;
|
||||
if (!indicator.actor.reactive)
|
||||
if (!indicator.reactive)
|
||||
return;
|
||||
|
||||
menu.toggle();
|
||||
@ -1043,7 +1027,7 @@ class Panel extends St.Widget {
|
||||
return;
|
||||
|
||||
let menu = indicator.menu;
|
||||
if (!indicator.actor.reactive)
|
||||
if (!indicator.reactive)
|
||||
return;
|
||||
|
||||
menu.close();
|
||||
@ -1201,4 +1185,21 @@ class Panel extends St.Widget {
|
||||
Main.messageTray.bannerBlocked = isOpen;
|
||||
});
|
||||
}
|
||||
|
||||
_getDraggableWindowForPosition(stageX) {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let workspace = workspaceManager.get_active_workspace()
|
||||
let allWindowsByStacking = global.display.sort_windows_by_stacking(
|
||||
workspace.list_windows()
|
||||
).reverse();
|
||||
|
||||
return allWindowsByStacking.find(metaWindow => {
|
||||
let rect = metaWindow.get_frame_rect();
|
||||
return metaWindow.is_on_primary_monitor() &&
|
||||
metaWindow.showing_on_its_workspace() &&
|
||||
metaWindow.get_window_type() != Meta.WindowType.DESKTOP &&
|
||||
metaWindow.maximized_vertically &&
|
||||
stageX > rect.x && stageX < rect.x + rect.width
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -14,12 +14,11 @@ class ButtonBox extends St.Widget {
|
||||
|
||||
super._init(params);
|
||||
|
||||
this.actor = this;
|
||||
this._delegate = this;
|
||||
|
||||
this.container = new St.Bin({ y_fill: true,
|
||||
x_fill: true,
|
||||
child: this.actor });
|
||||
child: this });
|
||||
|
||||
this.connect('style-changed', this._onStyleChanged.bind(this));
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
@ -105,9 +104,9 @@ var Button = GObject.registerClass({
|
||||
this.connect('notify::visible', this._onVisibilityChanged.bind(this));
|
||||
|
||||
if (dontCreateMenu)
|
||||
this.menu = new PopupMenu.PopupDummyMenu(this.actor);
|
||||
this.menu = new PopupMenu.PopupDummyMenu(this);
|
||||
else
|
||||
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
||||
this.setMenu(new PopupMenu.PopupMenu(this, menuAlignment, St.Side.TOP, 0));
|
||||
}
|
||||
|
||||
setSensitive(sensitive) {
|
||||
@ -145,7 +144,7 @@ var Button = GObject.registerClass({
|
||||
if (!this.menu)
|
||||
return;
|
||||
|
||||
if (!this.actor.visible)
|
||||
if (!this.visible)
|
||||
this.menu.close();
|
||||
}
|
||||
|
||||
@ -155,10 +154,10 @@ var Button = GObject.registerClass({
|
||||
|
||||
let symbol = event.get_key_symbol();
|
||||
if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) {
|
||||
let group = global.focus_manager.get_group(this.actor);
|
||||
let group = global.focus_manager.get_group(this);
|
||||
if (group) {
|
||||
let direction = (symbol == Clutter.KEY_Left) ? St.DirectionType.LEFT : St.DirectionType.RIGHT;
|
||||
group.navigate_focus(this.actor, direction, false);
|
||||
group.navigate_focus(this, direction, false);
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
}
|
||||
@ -167,9 +166,9 @@ var Button = GObject.registerClass({
|
||||
|
||||
_onOpenStateChanged(menu, open) {
|
||||
if (open)
|
||||
this.actor.add_style_pseudo_class('active');
|
||||
this.add_style_pseudo_class('active');
|
||||
else
|
||||
this.actor.remove_style_pseudo_class('active');
|
||||
this.remove_style_pseudo_class('active');
|
||||
|
||||
// Setting the max-height won't do any good if the minimum height of the
|
||||
// menu is higher then the screen; it's useful if part of the menu is
|
||||
|
@ -277,12 +277,6 @@ var Switch = class {
|
||||
this.actor = new St.Bin({ style_class: 'toggle-switch',
|
||||
accessible_role: Atk.Role.CHECK_BOX,
|
||||
can_focus: true });
|
||||
// Translators: this MUST be either "toggle-switch-us"
|
||||
// (for toggle switches containing the English words
|
||||
// "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
// switches containing "◯" and "|"). Other values will
|
||||
// simply result in invisible toggle switches.
|
||||
this.actor.add_style_class_name(_("toggle-switch-us"));
|
||||
this.setToggleState(state);
|
||||
}
|
||||
|
||||
@ -403,8 +397,8 @@ var PopupImageMenuItem = class extends PopupBaseMenuItem {
|
||||
|
||||
var PopupMenuBase = class {
|
||||
constructor(sourceActor, styleClass) {
|
||||
if (new.target === PopupMenuBase)
|
||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
||||
if (this.constructor === PopupMenuBase)
|
||||
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||
|
||||
this.sourceActor = sourceActor;
|
||||
this._parent = null;
|
||||
@ -859,7 +853,7 @@ var PopupMenu = class extends PopupMenuBase {
|
||||
if (this._activeMenuItem)
|
||||
this._activeMenuItem.setActive(false);
|
||||
|
||||
if (this._boxPointer.actor.visible) {
|
||||
if (this._boxPointer.visible) {
|
||||
this._boxPointer.close(animate, () => {
|
||||
this.emit('menu-closed');
|
||||
});
|
||||
@ -1186,7 +1180,7 @@ var PopupMenuManager = class {
|
||||
grabParams = Params.parse(grabParams,
|
||||
{ actionMode: Shell.ActionMode.POPUP });
|
||||
this._owner = owner;
|
||||
this._grabHelper = new GrabHelper.GrabHelper(owner.actor, grabParams);
|
||||
this._grabHelper = new GrabHelper.GrabHelper(owner, grabParams);
|
||||
this._menus = [];
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ function addContextMenu(entry, params) {
|
||||
|
||||
entry.menu = new EntryMenu(entry);
|
||||
entry.menu.isPassword = params.isPassword;
|
||||
entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry },
|
||||
entry._menuManager = new PopupMenu.PopupMenuManager(entry,
|
||||
{ actionMode: params.actionMode });
|
||||
entry._menuManager.addMenu(entry.menu);
|
||||
|
||||
|
@ -39,7 +39,7 @@ class ATIndicator extends PanelMenu.Button {
|
||||
icon_name: 'preferences-desktop-accessibility-symbolic' }));
|
||||
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||
|
||||
this.actor.add_child(this._hbox);
|
||||
this.add_child(this._hbox);
|
||||
|
||||
this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
|
||||
this._a11ySettings.connect('changed::' + KEY_ALWAYS_SHOW, this._queueSyncMenuVisibility.bind(this));
|
||||
@ -86,7 +86,7 @@ class ATIndicator extends PanelMenu.Button {
|
||||
let alwaysShow = this._a11ySettings.get_boolean(KEY_ALWAYS_SHOW);
|
||||
let items = this.menu._getMenuItems();
|
||||
|
||||
this.actor.visible = alwaysShow || items.some(f => !!f.state);
|
||||
this.visible = alwaysShow || items.some(f => !!f.state);
|
||||
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}
|
||||
@ -112,38 +112,22 @@ class ATIndicator extends PanelMenu.Button {
|
||||
|
||||
_buildItem(string, schema, key) {
|
||||
let settings = new Gio.Settings({ schema_id: schema });
|
||||
settings.connect('changed::'+key, () => {
|
||||
let widget = this._buildItemExtended(string,
|
||||
settings.get_boolean(key),
|
||||
settings.is_writable(key),
|
||||
enabled => settings.set_boolean(key, enabled));
|
||||
|
||||
settings.connect('changed::' + key, () => {
|
||||
widget.setToggleState(settings.get_boolean(key));
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
});
|
||||
|
||||
let widget = this._buildItemExtended(string,
|
||||
settings.get_boolean(key),
|
||||
settings.is_writable(key),
|
||||
enabled => settings.set_boolean(key, enabled));
|
||||
return widget;
|
||||
}
|
||||
|
||||
_buildHCItem() {
|
||||
let interfaceSettings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||
interfaceSettings.connect('changed::' + KEY_GTK_THEME, () => {
|
||||
let value = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||
if (value == HIGH_CONTRAST_THEME) {
|
||||
highContrast.setToggleState(true);
|
||||
} else {
|
||||
highContrast.setToggleState(false);
|
||||
gtkTheme = value;
|
||||
}
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
});
|
||||
interfaceSettings.connect('changed::' + KEY_ICON_THEME, () => {
|
||||
let value = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||
if (value != HIGH_CONTRAST_THEME)
|
||||
iconTheme = value;
|
||||
});
|
||||
|
||||
let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||
let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||
let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
|
||||
@ -164,19 +148,30 @@ class ATIndicator extends PanelMenu.Button {
|
||||
interfaceSettings.reset(KEY_ICON_THEME);
|
||||
}
|
||||
});
|
||||
|
||||
interfaceSettings.connect('changed::' + KEY_GTK_THEME, () => {
|
||||
let value = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||
if (value == HIGH_CONTRAST_THEME) {
|
||||
highContrast.setToggleState(true);
|
||||
} else {
|
||||
highContrast.setToggleState(false);
|
||||
gtkTheme = value;
|
||||
}
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
});
|
||||
|
||||
interfaceSettings.connect('changed::' + KEY_ICON_THEME, () => {
|
||||
let value = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||
if (value != HIGH_CONTRAST_THEME)
|
||||
iconTheme = value;
|
||||
});
|
||||
|
||||
return highContrast;
|
||||
}
|
||||
|
||||
_buildFontItem() {
|
||||
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, () => {
|
||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||
let active = (factor > 1.0);
|
||||
widget.setToggleState(active);
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
});
|
||||
|
||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||
let initial_setting = (factor > 1.0);
|
||||
let widget = this._buildItemExtended(_("Large Text"),
|
||||
@ -189,6 +184,15 @@ class ATIndicator extends PanelMenu.Button {
|
||||
else
|
||||
settings.reset(KEY_TEXT_SCALING_FACTOR);
|
||||
});
|
||||
|
||||
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, () => {
|
||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||
let active = (factor > 1.0);
|
||||
widget.setToggleState(active);
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
});
|
||||
|
||||
return widget;
|
||||
}
|
||||
});
|
||||
|
@ -125,8 +125,8 @@ class InputSourceSwitcher extends SwitcherPopup.SwitcherList {
|
||||
|
||||
var InputSourceSettings = class {
|
||||
constructor() {
|
||||
if (new.target === InputSourceSettings)
|
||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
||||
if (this.constructor === InputSourceSettings)
|
||||
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||
}
|
||||
|
||||
_emitInputSourcesChanged() {
|
||||
@ -822,7 +822,7 @@ class InputSourceIndicator extends PanelMenu.Button {
|
||||
this._hbox.add_child(this._container);
|
||||
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||
|
||||
this.actor.add_child(this._hbox);
|
||||
this.add_child(this._hbox);
|
||||
|
||||
this._propSeparator = new PopupMenu.PopupSeparatorMenuItem();
|
||||
this.menu.addMenuItem(this._propSeparator);
|
||||
@ -908,11 +908,11 @@ class InputSourceIndicator extends PanelMenu.Button {
|
||||
// We also hide if we have only one visible source unless
|
||||
// it's an IBus source with properties.
|
||||
this.menu.close();
|
||||
this.actor.hide();
|
||||
this.hide();
|
||||
return;
|
||||
}
|
||||
|
||||
this.actor.show();
|
||||
this.show();
|
||||
|
||||
this._buildPropSection(newSource.properties);
|
||||
|
||||
|
@ -167,10 +167,10 @@ var NMConnectionItem = class {
|
||||
};
|
||||
Signals.addSignalMethods(NMConnectionItem.prototype);
|
||||
|
||||
var NMConnectionSection = class {
|
||||
var NMConnectionSection = class NMConnectionSection {
|
||||
constructor(client) {
|
||||
if (new.target === NMConnectionSection)
|
||||
throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
|
||||
if (this.constructor === NMConnectionSection)
|
||||
throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
|
||||
|
||||
this._client = client;
|
||||
|
||||
@ -297,12 +297,13 @@ var NMConnectionSection = class {
|
||||
};
|
||||
Signals.addSignalMethods(NMConnectionSection.prototype);
|
||||
|
||||
var NMConnectionDevice = class extends NMConnectionSection {
|
||||
var NMConnectionDevice = class NMConnectionDevice extends NMConnectionSection {
|
||||
constructor(client, device) {
|
||||
if (new.target === NMConnectionDevice)
|
||||
throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
|
||||
|
||||
super(client);
|
||||
|
||||
if (this.constructor === NMConnectionDevice)
|
||||
throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
|
||||
|
||||
this._device = device;
|
||||
this._description = '';
|
||||
|
||||
|
@ -33,8 +33,8 @@ function primaryModifier(mask) {
|
||||
var SwitcherPopup = GObject.registerClass(
|
||||
class SwitcherPopup extends St.Widget {
|
||||
_init(items) {
|
||||
if (new.target === SwitcherPopup)
|
||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
||||
if (this.constructor.name === SwitcherPopup.prototype.constructor.name)
|
||||
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||
|
||||
super._init({ style_class: 'switcher-popup',
|
||||
reactive: true,
|
||||
|
@ -1488,8 +1488,13 @@ var WindowManager = class {
|
||||
if (this._clearAnimationInfo(actor))
|
||||
this._shellwm.completed_size_change(actor);
|
||||
|
||||
let destroyId = actor.connect('destroy', () => {
|
||||
this._clearAnimationInfo(actor);
|
||||
});
|
||||
|
||||
actor.__animationInfo = { clone: actorClone,
|
||||
oldRect: oldFrameRect };
|
||||
oldRect: oldFrameRect,
|
||||
destroyId: destroyId };
|
||||
}
|
||||
|
||||
_sizeChangedWindow(shellwm, actor) {
|
||||
@ -1550,6 +1555,7 @@ var WindowManager = class {
|
||||
_clearAnimationInfo(actor) {
|
||||
if (actor.__animationInfo) {
|
||||
actor.__animationInfo.clone.destroy();
|
||||
actor.disconnect(actor.__animationInfo.destroyId);
|
||||
delete actor.__animationInfo;
|
||||
return true;
|
||||
}
|
||||
@ -1864,17 +1870,25 @@ var WindowManager = class {
|
||||
}
|
||||
}
|
||||
|
||||
_getPositionForDirection(direction) {
|
||||
_getPositionForDirection(direction, fromWs, toWs) {
|
||||
let xDest = 0, yDest = 0;
|
||||
|
||||
let oldWsIsFullscreen = fromWs.list_windows().some(w => w.is_fullscreen());
|
||||
let newWsIsFullscreen = toWs.list_windows().some(w => w.is_fullscreen());
|
||||
|
||||
// We have to shift windows up or down by the height of the panel to prevent having a
|
||||
// visible gap between the windows while switching workspaces. Since fullscreen windows
|
||||
// hide the panel, they don't need to be shifted up or down.
|
||||
let shiftHeight = Main.panel.height;
|
||||
|
||||
if (direction == Meta.MotionDirection.UP ||
|
||||
direction == Meta.MotionDirection.UP_LEFT ||
|
||||
direction == Meta.MotionDirection.UP_RIGHT)
|
||||
yDest = -global.screen_height + Main.panel.height;
|
||||
yDest = -global.screen_height + (oldWsIsFullscreen ? 0 : shiftHeight);
|
||||
else if (direction == Meta.MotionDirection.DOWN ||
|
||||
direction == Meta.MotionDirection.DOWN_LEFT ||
|
||||
direction == Meta.MotionDirection.DOWN_RIGHT)
|
||||
yDest = global.screen_height - Main.panel.height;
|
||||
yDest = global.screen_height - (newWsIsFullscreen ? 0 : shiftHeight);
|
||||
|
||||
if (direction == Meta.MotionDirection.LEFT ||
|
||||
direction == Meta.MotionDirection.UP_LEFT ||
|
||||
@ -1932,7 +1946,7 @@ var WindowManager = class {
|
||||
switchData.container.add_actor(info.actor);
|
||||
info.actor.raise_top();
|
||||
|
||||
let [x, y] = this._getPositionForDirection(dir);
|
||||
let [x, y] = this._getPositionForDirection(dir, curWs, ws);
|
||||
info.actor.set_position(x, y);
|
||||
}
|
||||
|
||||
@ -2018,7 +2032,11 @@ var WindowManager = class {
|
||||
|
||||
this._switchData.inProgress = true;
|
||||
|
||||
let [xDest, yDest] = this._getPositionForDirection(direction);
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let fromWs = workspaceManager.get_workspace_by_index(from);
|
||||
let toWs = workspaceManager.get_workspace_by_index(to);
|
||||
|
||||
let [xDest, yDest] = this._getPositionForDirection(direction, fromWs, toWs);
|
||||
|
||||
/* @direction is the direction that the "camera" moves, so the
|
||||
* screen contents have to move one screen's worth in the
|
||||
|
@ -173,7 +173,7 @@ var WindowMenu = class extends PopupMenu.PopupMenu {
|
||||
|
||||
var WindowMenuManager = class {
|
||||
constructor() {
|
||||
this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor });
|
||||
this._manager = new PopupMenu.PopupMenuManager(Main.layoutManager.dummyCursor);
|
||||
|
||||
this._sourceActor = new St.Widget({ reactive: true, visible: false });
|
||||
this._sourceActor.connect('button-press-event', () => {
|
||||
|
@ -786,8 +786,8 @@ var WindowPositionFlags = {
|
||||
|
||||
var LayoutStrategy = class {
|
||||
constructor(monitor, rowSpacing, columnSpacing) {
|
||||
if (new.target === LayoutStrategy)
|
||||
throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
|
||||
if (this.constructor === LayoutStrategy)
|
||||
throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
|
||||
|
||||
this._monitor = monitor;
|
||||
this._rowSpacing = rowSpacing;
|
||||
|
@ -85,8 +85,6 @@ class WorkspaceSwitcherPopup extends St.Widget {
|
||||
height: global.screen_height,
|
||||
style_class: 'workspace-switcher-group' });
|
||||
|
||||
this.actor = this;
|
||||
|
||||
Main.uiGroup.add_actor(this);
|
||||
|
||||
this._timeoutId = 0;
|
||||
@ -142,7 +140,7 @@ class WorkspaceSwitcherPopup extends St.Widget {
|
||||
time: ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
this.actor.show();
|
||||
this.show();
|
||||
}
|
||||
|
||||
display(direction, activeWorkspaceIndex) {
|
||||
|
@ -601,8 +601,7 @@ class ThumbnailsBox extends St.Widget {
|
||||
style_class: 'workspace-thumbnails',
|
||||
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
||||
|
||||
this.actor = this;
|
||||
this.actor._delegate = this;
|
||||
this._delegate = this;
|
||||
|
||||
let indicator = new St.Bin({ style_class: 'workspace-thumbnail-indicator' });
|
||||
|
||||
|
@ -479,12 +479,12 @@ var WorkspacesDisplay = class {
|
||||
this.actor.connect('notify::mapped', () => {
|
||||
switchGesture.enabled = this.actor.mapped;
|
||||
});
|
||||
switchGesture.enabled = this.actor.mapped;
|
||||
|
||||
this._primaryIndex = Main.layoutManager.primaryIndex;
|
||||
|
||||
this._workspacesViews = [];
|
||||
this._primaryScrollAdjustment = null;
|
||||
switchGesture.enabled = this.actor.mapped;
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: MUTTER_SCHEMA });
|
||||
this._settings.connect('changed::workspaces-only-on-primary',
|
||||
|
44
meson.build
44
meson.build
@ -1,5 +1,5 @@
|
||||
project('gnome-shell', 'c',
|
||||
version: '3.32.0',
|
||||
version: '3.32.1',
|
||||
meson_version: '>= 0.47.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
@ -167,6 +167,48 @@ cdata.set('HAVE_FDWALK',
|
||||
cc.has_function('fdwalk')
|
||||
)
|
||||
|
||||
all_warnings = [
|
||||
'-fno-strict-aliasing',
|
||||
'-Wpointer-arith',
|
||||
'-Wmissing-declarations',
|
||||
'-Wimplicit-function-declaration',
|
||||
'-Wformat=2',
|
||||
'-Wformat-nonliteral',
|
||||
'-Wformat-security',
|
||||
'-Wstrict-prototypes',
|
||||
'-Wmissing-prototypes',
|
||||
'-Wnested-externs',
|
||||
'-Wold-style-definition',
|
||||
'-Wundef',
|
||||
'-Wunused',
|
||||
'-Wcast-align',
|
||||
'-Wmissing-noreturn',
|
||||
'-Wmissing-format-attribute',
|
||||
'-Wmissing-include-dirs',
|
||||
'-Wlogical-op',
|
||||
'-Wignored-qualifiers',
|
||||
'-Werror=redundant-decls',
|
||||
'-Werror=implicit',
|
||||
'-Werror=nonnull',
|
||||
'-Werror=init-self',
|
||||
'-Werror=main',
|
||||
'-Werror=missing-braces',
|
||||
'-Werror=sequence-point',
|
||||
'-Werror=return-type',
|
||||
'-Werror=trigraphs',
|
||||
'-Werror=array-bounds',
|
||||
'-Werror=write-strings',
|
||||
'-Werror=address',
|
||||
'-Werror=int-to-pointer-cast',
|
||||
'-Werror=pointer-to-int-cast',
|
||||
'-Werror=empty-body',
|
||||
'-Werror=write-strings',
|
||||
]
|
||||
|
||||
supported_warnings = cc.get_supported_arguments(all_warnings)
|
||||
|
||||
add_project_arguments(supported_warnings, language: 'c')
|
||||
|
||||
config_h = configure_file(
|
||||
input: 'config.h.meson',
|
||||
output: 'config.h',
|
||||
|
68
po/eo.po
68
po/eo.po
@ -6,22 +6,22 @@
|
||||
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
|
||||
# Nicolas MAIA < >, 2015.
|
||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2012, 2015, 2016, 2018.
|
||||
# Carmen Bianca BAKKER <carmen@carmenbianca.eu>, 2018, 2019.
|
||||
# Carmen Bianca BAKKER <carmen@carmenbianca.eu>, 2018-2019.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2019-03-24 17:37+0000\n"
|
||||
"PO-Revision-Date: 2019-03-31 00:14+0100\n"
|
||||
"Last-Translator: Carmen Bianca Bakker <carmen@carmenbianca.eu>\n"
|
||||
"POT-Creation-Date: 2019-04-17 19:29+0000\n"
|
||||
"PO-Revision-Date: 2019-05-01 16:29+0200\n"
|
||||
"Last-Translator: Carmen Bianca BAKKER <carmen@carmenbianca.eu>\n"
|
||||
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
|
||||
"Language: eo\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.2.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Gtranslator 3.32.0\n"
|
||||
"X-DamnedLies-Scope: partial\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
@ -681,32 +681,38 @@ msgstr "Oftaj"
|
||||
msgid "All"
|
||||
msgstr "Ĉiuj"
|
||||
|
||||
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
|
||||
#| msgid "Windows"
|
||||
msgid "Open Windows"
|
||||
msgstr "Malfermaj fenestroj"
|
||||
|
||||
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
|
||||
msgid "New Window"
|
||||
msgstr "Nova fenestro"
|
||||
|
||||
#: js/ui/appDisplay.js:1751
|
||||
#: js/ui/appDisplay.js:1746
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Lanĉi uzante dediĉitan vidkarton"
|
||||
|
||||
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Forigi el preferataj"
|
||||
|
||||
#: js/ui/appDisplay.js:1784
|
||||
#: js/ui/appDisplay.js:1779
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Aldoni al preferataj"
|
||||
|
||||
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
|
||||
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
|
||||
msgid "Show Details"
|
||||
msgstr "Montri detalojn"
|
||||
|
||||
#: js/ui/appFavorites.js:141
|
||||
#: js/ui/appFavorites.js:149
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s estas aldonita de via preferataj aplikaĵoj."
|
||||
|
||||
#: js/ui/appFavorites.js:175
|
||||
#: js/ui/appFavorites.js:183
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s estas forigita de via preferataj aplikaĵoj."
|
||||
@ -1060,23 +1066,23 @@ msgstr "Aldoni mondajn horloĝojn…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Mondaj horloĝoj"
|
||||
|
||||
#: js/ui/dateMenu.js:222
|
||||
#: js/ui/dateMenu.js:228
|
||||
msgid "Weather"
|
||||
msgstr "Vetero"
|
||||
|
||||
#: js/ui/dateMenu.js:305
|
||||
#: js/ui/dateMenu.js:311
|
||||
msgid "Select a location…"
|
||||
msgstr "Elekti lokon…"
|
||||
|
||||
#: js/ui/dateMenu.js:313
|
||||
#: js/ui/dateMenu.js:319
|
||||
msgid "Loading…"
|
||||
msgstr "Ŝargante…"
|
||||
|
||||
#: js/ui/dateMenu.js:323
|
||||
#: js/ui/dateMenu.js:329
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Enretigi por veterinformoj"
|
||||
|
||||
#: js/ui/dateMenu.js:325
|
||||
#: js/ui/dateMenu.js:331
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Veterinformoj ĉimomente nehaveblas"
|
||||
|
||||
@ -1452,34 +1458,25 @@ msgstr "Premu Esk-klavon por ĉesi"
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Premu iun ajn klavon por ĉesi"
|
||||
|
||||
#: js/ui/panel.js:108
|
||||
#: js/ui/panel.js:113
|
||||
msgid "Quit"
|
||||
msgstr "Ĉesi"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:471
|
||||
#: js/ui/panel.js:468
|
||||
msgid "Activities"
|
||||
msgstr "Aktivecoj"
|
||||
|
||||
#: js/ui/panel.js:746
|
||||
#: js/ui/panel.js:743
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistemo"
|
||||
|
||||
#: js/ui/panel.js:867
|
||||
#: js/ui/panel.js:864
|
||||
msgid "Top Bar"
|
||||
msgstr "Supra breto"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:285
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:64
|
||||
msgid "Enter a Command"
|
||||
msgstr "Enigu komandon"
|
||||
@ -1889,11 +1886,11 @@ msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s modema konekto"
|
||||
msgstr[1] "%s modemaj konektoj"
|
||||
|
||||
#: js/ui/status/network.js:1701
|
||||
#: js/ui/status/network.js:1705
|
||||
msgid "Connection failed"
|
||||
msgstr "Konekto malsukcesis"
|
||||
|
||||
#: js/ui/status/network.js:1702
|
||||
#: js/ui/status/network.js:1706
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivigo de reto-konekto malsukcesis"
|
||||
|
||||
@ -2098,7 +2095,7 @@ msgstr[1] "Agordaj ŝanĝoj malfaritos post %d sekundoj"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:662
|
||||
#: js/ui/windowManager.js:677
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2231,6 +2228,9 @@ msgstr[1] "%u enigoj"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sistemsonoj"
|
||||
|
||||
#~ msgid "toggle-switch-us"
|
||||
#~ msgstr "toggle-switch-intl"
|
||||
|
||||
#~ msgid "network-workgroup"
|
||||
#~ msgstr "network-workgroup"
|
||||
|
||||
|
62
po/es.po
62
po/es.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2019-03-24 17:37+0000\n"
|
||||
"PO-Revision-Date: 2019-02-06 11:27+0100\n"
|
||||
"POT-Creation-Date: 2019-04-17 19:29+0000\n"
|
||||
"PO-Revision-Date: 2019-04-23 10:15+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
||||
"Language: es\n"
|
||||
@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 3.31.90\n"
|
||||
"X-Generator: Gtranslator 3.32.0\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
msgid "System"
|
||||
@ -728,32 +728,38 @@ msgstr "Frecuentes"
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
|
||||
#| msgid "Windows"
|
||||
msgid "Open Windows"
|
||||
msgstr "Ventanas abiertas"
|
||||
|
||||
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
|
||||
msgid "New Window"
|
||||
msgstr "Ventana nueva"
|
||||
|
||||
#: js/ui/appDisplay.js:1751
|
||||
#: js/ui/appDisplay.js:1746
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Lanzar usando la tarjeta gráfica dedicada"
|
||||
|
||||
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Quitar de los favoritos"
|
||||
|
||||
#: js/ui/appDisplay.js:1784
|
||||
#: js/ui/appDisplay.js:1779
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Añadir a los favoritos"
|
||||
|
||||
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
|
||||
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
|
||||
msgid "Show Details"
|
||||
msgstr "Mostrar detalles"
|
||||
|
||||
#: js/ui/appFavorites.js:141
|
||||
#: js/ui/appFavorites.js:149
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "Se ha añadido %s a sus favoritos."
|
||||
|
||||
#: js/ui/appFavorites.js:175
|
||||
#: js/ui/appFavorites.js:183
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "Se ha quitado %s de sus favoritos."
|
||||
@ -1108,23 +1114,23 @@ msgstr "Añadir relojes del mundo…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Relojes del mundo"
|
||||
|
||||
#: js/ui/dateMenu.js:222
|
||||
#: js/ui/dateMenu.js:228
|
||||
msgid "Weather"
|
||||
msgstr "Meteorología"
|
||||
|
||||
#: js/ui/dateMenu.js:305
|
||||
#: js/ui/dateMenu.js:311
|
||||
msgid "Select a location…"
|
||||
msgstr "Seleccionar ubicación…"
|
||||
|
||||
#: js/ui/dateMenu.js:313
|
||||
#: js/ui/dateMenu.js:319
|
||||
msgid "Loading…"
|
||||
msgstr "Cargando…"
|
||||
|
||||
#: js/ui/dateMenu.js:323
|
||||
#: js/ui/dateMenu.js:329
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Conectarse para obtener la información meteorológica"
|
||||
|
||||
#: js/ui/dateMenu.js:325
|
||||
#: js/ui/dateMenu.js:331
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "La información meteorológica no está disponible actualmente."
|
||||
|
||||
@ -1505,34 +1511,25 @@ msgstr "Pulse Esc para salir"
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Pulse cualquier tecla para salir"
|
||||
|
||||
#: js/ui/panel.js:108
|
||||
#: js/ui/panel.js:113
|
||||
msgid "Quit"
|
||||
msgstr "Salir"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:471
|
||||
#: js/ui/panel.js:468
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#: js/ui/panel.js:746
|
||||
#: js/ui/panel.js:743
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: js/ui/panel.js:867
|
||||
#: js/ui/panel.js:864
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:285
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:64
|
||||
msgid "Enter a Command"
|
||||
msgstr "Introducir un comando"
|
||||
@ -1944,11 +1941,11 @@ msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s conexión por módem"
|
||||
msgstr[1] "%s conexiones por módem"
|
||||
|
||||
#: js/ui/status/network.js:1701
|
||||
#: js/ui/status/network.js:1705
|
||||
msgid "Connection failed"
|
||||
msgstr "Falló la conexión"
|
||||
|
||||
#: js/ui/status/network.js:1702
|
||||
#: js/ui/status/network.js:1706
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Falló la activación de la conexión de red"
|
||||
|
||||
@ -2154,7 +2151,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:662
|
||||
#: js/ui/windowManager.js:677
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2289,6 +2286,9 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sonidos del sistema"
|
||||
|
||||
#~ msgid "toggle-switch-us"
|
||||
#~ msgstr "toggle-switch-intl"
|
||||
|
||||
#~ msgid "network-workgroup"
|
||||
#~ msgstr "network-workgroup"
|
||||
|
||||
|
178
po/id.po
178
po/id.po
@ -4,12 +4,13 @@
|
||||
# Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.
|
||||
# Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014.
|
||||
# Wibiharto <wibinem@yahoo.com>, 2011.
|
||||
# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017, 2018, 2019.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2019-02-21 18:43+0000\n"
|
||||
"PO-Revision-Date: 2019-02-14 22:18+0700\n"
|
||||
"POT-Creation-Date: 2019-04-17 19:29+0000\n"
|
||||
"PO-Revision-Date: 2019-04-25 14:54+0700\n"
|
||||
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
|
||||
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
||||
"Language: id\n"
|
||||
@ -376,11 +377,6 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Log Masuk Jaringan"
|
||||
|
||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9
|
||||
msgid "network-workgroup"
|
||||
msgstr "network-workgroup"
|
||||
|
||||
#: js/extensionPrefs/main.js:116
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Ada yang tidak beres"
|
||||
@ -461,7 +457,7 @@ msgstr "Tak masuk daftar?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:880
|
||||
#: js/gdm/loginDialog.js:884
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(cth., pengguna dari %s)"
|
||||
@ -469,12 +465,12 @@ msgstr "(cth., pengguna dari %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:885 js/ui/components/networkAgent.js:243
|
||||
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
|
||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
|
||||
msgid "Username: "
|
||||
msgstr "Nama pengguna: "
|
||||
|
||||
#: js/gdm/loginDialog.js:1223
|
||||
#: js/gdm/loginDialog.js:1227
|
||||
msgid "Login Window"
|
||||
msgstr "Jendela Log Masuk"
|
||||
|
||||
@ -728,32 +724,37 @@ msgstr "Sering"
|
||||
msgid "All"
|
||||
msgstr "Semua"
|
||||
|
||||
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
|
||||
msgid "Open Windows"
|
||||
msgstr "Buka Jendela"
|
||||
|
||||
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
|
||||
msgid "New Window"
|
||||
msgstr "Jendela Baru"
|
||||
|
||||
#: js/ui/appDisplay.js:1751
|
||||
#: js/ui/appDisplay.js:1746
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
|
||||
|
||||
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Hapus dari Favorit"
|
||||
|
||||
#: js/ui/appDisplay.js:1784
|
||||
#: js/ui/appDisplay.js:1779
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Tambah ke Favorit"
|
||||
|
||||
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
|
||||
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
|
||||
msgid "Show Details"
|
||||
msgstr "Tampilkan Rincian"
|
||||
|
||||
#: js/ui/appFavorites.js:141
|
||||
#: js/ui/appFavorites.js:149
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s telah ditambahkan ke favorit Anda."
|
||||
|
||||
#: js/ui/appFavorites.js:175
|
||||
#: js/ui/appFavorites.js:183
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s telah dihapus dari favorit Anda."
|
||||
@ -1039,7 +1040,7 @@ msgstr "Sandi jaringan data seluler"
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Perlu suatu sandi untuk menyambung ke \"%s\"."
|
||||
|
||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1665
|
||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
|
||||
msgid "Network Manager"
|
||||
msgstr "Manajer Jaringan"
|
||||
|
||||
@ -1109,23 +1110,23 @@ msgstr "Tambah jam dunia…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Jam Dunia"
|
||||
|
||||
#: js/ui/dateMenu.js:222
|
||||
#: js/ui/dateMenu.js:228
|
||||
msgid "Weather"
|
||||
msgstr "Cuaca"
|
||||
|
||||
#: js/ui/dateMenu.js:305
|
||||
#: js/ui/dateMenu.js:311
|
||||
msgid "Select a location…"
|
||||
msgstr "Pilih lokasi…"
|
||||
|
||||
#: js/ui/dateMenu.js:313
|
||||
#: js/ui/dateMenu.js:319
|
||||
msgid "Loading…"
|
||||
msgstr "Memuat…"
|
||||
|
||||
#: js/ui/dateMenu.js:323
|
||||
#: js/ui/dateMenu.js:329
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Pergi daring untuk informasi cuaca"
|
||||
|
||||
#: js/ui/dateMenu.js:325
|
||||
#: js/ui/dateMenu.js:331
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Informasi cuaca saat ini tidak tersedia"
|
||||
|
||||
@ -1288,26 +1289,26 @@ msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
|
||||
|
||||
#. Translators: %s is an application name like "Settings"
|
||||
#: js/ui/inhibitShortcutsDialog.js:50
|
||||
#: js/ui/inhibitShortcutsDialog.js:78
|
||||
#, javascript-format
|
||||
msgid "%s wants to inhibit shortcuts"
|
||||
msgstr "%s ingin mencegah pintasan"
|
||||
|
||||
#: js/ui/inhibitShortcutsDialog.js:51
|
||||
#: js/ui/inhibitShortcutsDialog.js:79
|
||||
msgid "Application wants to inhibit shortcuts"
|
||||
msgstr "Aplikasi ingin mencegah pintasan"
|
||||
|
||||
#. Translators: %s is a keyboard shortcut like "Super+x"
|
||||
#: js/ui/inhibitShortcutsDialog.js:60
|
||||
#: js/ui/inhibitShortcutsDialog.js:88
|
||||
#, javascript-format
|
||||
msgid "You can restore shortcuts by pressing %s."
|
||||
msgstr "Anda dapat memulihkan pintasan dengan menekan %s."
|
||||
|
||||
#: js/ui/inhibitShortcutsDialog.js:65
|
||||
#: js/ui/inhibitShortcutsDialog.js:93
|
||||
msgid "Deny"
|
||||
msgstr "Tolak"
|
||||
|
||||
#: js/ui/inhibitShortcutsDialog.js:71
|
||||
#: js/ui/inhibitShortcutsDialog.js:100
|
||||
msgid "Allow"
|
||||
msgstr "Izinkan"
|
||||
|
||||
@ -1358,13 +1359,13 @@ msgid "Leave On"
|
||||
msgstr "Biarkan Menyala"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
||||
#: js/ui/status/network.js:1264
|
||||
#: js/ui/status/network.js:1263
|
||||
msgid "Turn On"
|
||||
msgstr "Nyalakan"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
||||
#: js/ui/status/network.js:128 js/ui/status/network.js:310
|
||||
#: js/ui/status/network.js:1264 js/ui/status/network.js:1376
|
||||
#: js/ui/status/network.js:1263 js/ui/status/network.js:1375
|
||||
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
||||
#: js/ui/status/rfkill.js:106
|
||||
msgid "Turn Off"
|
||||
@ -1374,59 +1375,59 @@ msgstr "Matikan"
|
||||
msgid "Leave Off"
|
||||
msgstr "Biarkan Mati"
|
||||
|
||||
#: js/ui/keyboard.js:203
|
||||
#: js/ui/keyboard.js:200
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Pengaturan Wilayah & Bahasa"
|
||||
|
||||
#: js/ui/lookingGlass.js:614
|
||||
#: js/ui/lookingGlass.js:615
|
||||
msgid "No extensions installed"
|
||||
msgstr "Tak ada ekstensi terpasang"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: js/ui/lookingGlass.js:668
|
||||
#: js/ui/lookingGlass.js:669
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s tidak menampilkan galat apa pun."
|
||||
|
||||
#: js/ui/lookingGlass.js:674
|
||||
#: js/ui/lookingGlass.js:675
|
||||
msgid "Hide Errors"
|
||||
msgstr "Sembunyikan Galat"
|
||||
|
||||
#: js/ui/lookingGlass.js:678 js/ui/lookingGlass.js:738
|
||||
#: js/ui/lookingGlass.js:679 js/ui/lookingGlass.js:739
|
||||
msgid "Show Errors"
|
||||
msgstr "Tampilkan Galat"
|
||||
|
||||
#: js/ui/lookingGlass.js:687
|
||||
#: js/ui/lookingGlass.js:688
|
||||
msgid "Enabled"
|
||||
msgstr "Diaktifkan"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: js/ui/lookingGlass.js:690 subprojects/gvc/gvc-mixer-control.c:1866
|
||||
#: js/ui/lookingGlass.js:691 subprojects/gvc/gvc-mixer-control.c:1864
|
||||
msgid "Disabled"
|
||||
msgstr "Dinonaktifkan"
|
||||
|
||||
#: js/ui/lookingGlass.js:692
|
||||
#: js/ui/lookingGlass.js:693
|
||||
msgid "Error"
|
||||
msgstr "Galat"
|
||||
|
||||
#: js/ui/lookingGlass.js:694
|
||||
#: js/ui/lookingGlass.js:695
|
||||
msgid "Out of date"
|
||||
msgstr "Kadaluarsa"
|
||||
|
||||
#: js/ui/lookingGlass.js:696
|
||||
#: js/ui/lookingGlass.js:697
|
||||
msgid "Downloading"
|
||||
msgstr "Mengunduh"
|
||||
|
||||
#: js/ui/lookingGlass.js:720
|
||||
#: js/ui/lookingGlass.js:721
|
||||
msgid "View Source"
|
||||
msgstr "Tilik Sumber"
|
||||
|
||||
#: js/ui/lookingGlass.js:729
|
||||
#: js/ui/lookingGlass.js:730
|
||||
msgid "Web Page"
|
||||
msgstr "Halaman Web"
|
||||
|
||||
#: js/ui/messageTray.js:1474
|
||||
#: js/ui/messageTray.js:1480
|
||||
msgid "System Information"
|
||||
msgstr "Informasi Sistem"
|
||||
|
||||
@ -1504,35 +1505,25 @@ msgstr "Tekan Esc untuk keluar"
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Tekan tombol apa saja untuk keluar"
|
||||
|
||||
#: js/ui/panel.js:108
|
||||
#: js/ui/panel.js:113
|
||||
msgid "Quit"
|
||||
msgstr "Keluar"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:466
|
||||
#: js/ui/panel.js:468
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitas"
|
||||
|
||||
#: js/ui/panel.js:741
|
||||
#: js/ui/panel.js:743
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: js/ui/panel.js:861
|
||||
#: js/ui/panel.js:864
|
||||
msgid "Top Bar"
|
||||
msgstr "Bar Atas"
|
||||
|
||||
# Dirgita: Hayo, enaknya pake I/O atau ON/OFF?^^
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: js/ui/popupMenu.js:285
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: js/ui/runDialog.js:64
|
||||
msgid "Enter a Command"
|
||||
msgstr "Ketikkan Perintah"
|
||||
@ -1569,7 +1560,7 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d pemberitahuan baru"
|
||||
msgstr[1] "%d pemberitahuan baru"
|
||||
|
||||
#: js/ui/screenShield.js:449 js/ui/status/system.js:270
|
||||
#: js/ui/screenShield.js:449 js/ui/status/system.js:271
|
||||
msgid "Lock"
|
||||
msgstr "Kunci"
|
||||
|
||||
@ -1584,11 +1575,11 @@ msgstr "GNOME perlu mengunci layar"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:834 js/ui/screenShield.js:1307
|
||||
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1299
|
||||
msgid "Unable to lock"
|
||||
msgstr "Tak bisa mengunci"
|
||||
|
||||
#: js/ui/screenShield.js:835 js/ui/screenShield.js:1308
|
||||
#: js/ui/screenShield.js:827 js/ui/screenShield.js:1300
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Kunci diblokir oleh suatu aplikasi"
|
||||
|
||||
@ -1750,7 +1741,7 @@ msgid "<unknown>"
|
||||
msgstr "<tak dikenal>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1293
|
||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s Mati"
|
||||
@ -1776,7 +1767,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "%s Memutus"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1285
|
||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "%s Menyambung"
|
||||
@ -1816,7 +1807,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "Pengaturan Data Seluler"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1290
|
||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s Perangkat Keras Dinonaktifkan"
|
||||
@ -1881,72 +1872,72 @@ msgid "Wi-Fi Settings"
|
||||
msgstr "Pengaturan Wi-Fi"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1281
|
||||
#: js/ui/status/network.js:1280
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "%s Hotspot Aktif"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1296
|
||||
#: js/ui/status/network.js:1295
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s Tak Tersambung"
|
||||
|
||||
#: js/ui/status/network.js:1393
|
||||
#: js/ui/status/network.js:1392
|
||||
msgid "connecting…"
|
||||
msgstr "menyambung…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1396
|
||||
#: js/ui/status/network.js:1395
|
||||
msgid "authentication required"
|
||||
msgstr "diperlukan otentikasi"
|
||||
|
||||
#: js/ui/status/network.js:1398
|
||||
#: js/ui/status/network.js:1397
|
||||
msgid "connection failed"
|
||||
msgstr "koneksi gagal"
|
||||
|
||||
#: js/ui/status/network.js:1448
|
||||
#: js/ui/status/network.js:1447
|
||||
msgid "VPN Settings"
|
||||
msgstr "Pengaturan VPN"
|
||||
|
||||
#: js/ui/status/network.js:1465
|
||||
#: js/ui/status/network.js:1464
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: js/ui/status/network.js:1475
|
||||
#: js/ui/status/network.js:1474
|
||||
msgid "VPN Off"
|
||||
msgstr "VPN Mati"
|
||||
|
||||
#: js/ui/status/network.js:1536 js/ui/status/rfkill.js:82
|
||||
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
|
||||
msgid "Network Settings"
|
||||
msgstr "Pengaturan Jaringan"
|
||||
|
||||
#: js/ui/status/network.js:1565
|
||||
#: js/ui/status/network.js:1564
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "%s Koneksi Kabel"
|
||||
msgstr[1] "%s Koneksi Kabel"
|
||||
|
||||
#: js/ui/status/network.js:1569
|
||||
#: js/ui/status/network.js:1568
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "%s Koneksi Wi-Fi"
|
||||
msgstr[1] "%s Koneksi Wi-Fi"
|
||||
|
||||
#: js/ui/status/network.js:1573
|
||||
#: js/ui/status/network.js:1572
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "%s Koneksi Modem"
|
||||
msgstr[1] "%s Koneksi Modem"
|
||||
|
||||
#: js/ui/status/network.js:1702
|
||||
#: js/ui/status/network.js:1705
|
||||
msgid "Connection failed"
|
||||
msgstr "Koneksi gagal"
|
||||
|
||||
#: js/ui/status/network.js:1703
|
||||
#: js/ui/status/network.js:1706
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivasi koneksi jaringan gagal"
|
||||
|
||||
@ -2028,15 +2019,15 @@ msgstr "Keluar"
|
||||
msgid "Account Settings"
|
||||
msgstr "Pengaturan Akun"
|
||||
|
||||
#: js/ui/status/system.js:255
|
||||
#: js/ui/status/system.js:256
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Kunci Orientasi"
|
||||
|
||||
#: js/ui/status/system.js:281
|
||||
#: js/ui/status/system.js:282
|
||||
msgid "Suspend"
|
||||
msgstr "Suspensi"
|
||||
|
||||
#: js/ui/status/system.js:291
|
||||
#: js/ui/status/system.js:292
|
||||
msgid "Power Off"
|
||||
msgstr "Matikan"
|
||||
|
||||
@ -2152,7 +2143,7 @@ msgstr[1] "Perubahan tatanan akan dikembalikan dalam %d detik"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:662
|
||||
#: js/ui/windowManager.js:677
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2225,11 +2216,6 @@ msgstr "Pindahkan ke Monitor Kanan"
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Evolution Kalender"
|
||||
|
||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||
#: src/calendar-server/evolution-calendar.desktop.in:6
|
||||
msgid "evolution"
|
||||
msgstr "evolution"
|
||||
|
||||
#: src/main.c:408
|
||||
msgid "Print version"
|
||||
msgstr "Versi Cetak"
|
||||
@ -2246,12 +2232,12 @@ msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
|
||||
msgid "List possible modes"
|
||||
msgstr "Menampilkan mode yang mungkin"
|
||||
|
||||
#: src/shell-app.c:260
|
||||
#: src/shell-app.c:264
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Tak dikenal"
|
||||
|
||||
#: src/shell-app.c:511
|
||||
#: src/shell-app.c:515
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Gagal meluncurkan \"%s\""
|
||||
@ -2270,7 +2256,7 @@ msgstr "Dialog autentikasi ditolak oleh pengguna"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound outputs on a particular device
|
||||
#: subprojects/gvc/gvc-mixer-control.c:1873
|
||||
#: subprojects/gvc/gvc-mixer-control.c:1871
|
||||
#, c-format
|
||||
msgid "%u Output"
|
||||
msgid_plural "%u Outputs"
|
||||
@ -2279,17 +2265,27 @@ msgstr[1] "%u Keluaran"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound inputs on a particular device
|
||||
#: subprojects/gvc/gvc-mixer-control.c:1883
|
||||
#: subprojects/gvc/gvc-mixer-control.c:1881
|
||||
#, c-format
|
||||
msgid "%u Input"
|
||||
msgid_plural "%u Inputs"
|
||||
msgstr[0] "%u Masukan"
|
||||
msgstr[1] "%u Masukan"
|
||||
|
||||
#: subprojects/gvc/gvc-mixer-control.c:2738
|
||||
#: subprojects/gvc/gvc-mixer-control.c:2736
|
||||
msgid "System Sounds"
|
||||
msgstr "Suara Sistem"
|
||||
|
||||
#~ msgid "network-workgroup"
|
||||
#~ msgstr "network-workgroup"
|
||||
|
||||
# Dirgita: Hayo, enaknya pake I/O atau ON/OFF?^^
|
||||
#~ msgid "toggle-switch-us"
|
||||
#~ msgstr "toggle-switch-intl"
|
||||
|
||||
#~ msgid "evolution"
|
||||
#~ msgstr "evolution"
|
||||
|
||||
#~ msgid "There was an error loading the preferences dialog for %s:"
|
||||
#~ msgstr "Ada galat saat memuat dialog preferensi bagi %s:"
|
||||
|
||||
|
@ -1078,7 +1078,7 @@ main (int argc,
|
||||
|
||||
/* ---------------------------------------------------------------------------------------------------- */
|
||||
|
||||
static void
|
||||
static void __attribute__((format(printf, 1, 0)))
|
||||
print_debug (const gchar *format, ...)
|
||||
{
|
||||
gchar *s;
|
||||
|
@ -266,7 +266,7 @@ main (int argc,
|
||||
|
||||
/* ---------------------------------------------------------------------------------------------------- */
|
||||
|
||||
static void
|
||||
static void __attribute__((format(printf, 1, 0)))
|
||||
print_debug (const gchar *format, ...)
|
||||
{
|
||||
gchar *s;
|
||||
|
@ -1069,9 +1069,9 @@ _shell_app_add_window (ShellApp *app,
|
||||
|
||||
app->running_state->window_sort_stale = TRUE;
|
||||
app->running_state->windows = g_slist_prepend (app->running_state->windows, g_object_ref (window));
|
||||
g_signal_connect (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app);
|
||||
g_signal_connect (window, "notify::user-time", G_CALLBACK(shell_app_on_user_time_changed), app);
|
||||
g_signal_connect (window, "notify::skip-taskbar", G_CALLBACK(shell_app_on_skip_taskbar_changed), app);
|
||||
g_signal_connect_object (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app, 0);
|
||||
g_signal_connect_object (window, "notify::user-time", G_CALLBACK(shell_app_on_user_time_changed), app, 0);
|
||||
g_signal_connect_object (window, "notify::skip-taskbar", G_CALLBACK(shell_app_on_skip_taskbar_changed), app, 0);
|
||||
|
||||
shell_app_update_app_actions (app, window);
|
||||
shell_app_ensure_busy_watch (app);
|
||||
|
@ -863,6 +863,7 @@ _shell_global_set_plugin (ShellGlobal *global,
|
||||
}
|
||||
|
||||
st_entry_set_cursor_func (entry_cursor_func, global);
|
||||
st_clipboard_set_selection (meta_display_get_selection (display));
|
||||
|
||||
g_signal_connect (global->stage, "notify::width",
|
||||
G_CALLBACK (global_stage_notify_width), global);
|
||||
|
@ -149,7 +149,7 @@ shell_glsl_quad_constructed (GObject *object)
|
||||
|
||||
priv->pipeline = cogl_pipeline_copy (klass->base_pipeline);
|
||||
|
||||
cogl_pipeline_set_layer_null_texture (priv->pipeline, 0, COGL_TEXTURE_TYPE_2D);
|
||||
cogl_pipeline_set_layer_null_texture (priv->pipeline, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -186,9 +186,7 @@ shell_invert_lightness_effect_init (ShellInvertLightnessEffect *self)
|
||||
cogl_pipeline_add_layer_snippet (klass->base_pipeline, 0, snippet);
|
||||
cogl_object_unref (snippet);
|
||||
|
||||
cogl_pipeline_set_layer_null_texture (klass->base_pipeline,
|
||||
0, /* layer number */
|
||||
COGL_TEXTURE_TYPE_2D);
|
||||
cogl_pipeline_set_layer_null_texture (klass->base_pipeline, 0);
|
||||
}
|
||||
|
||||
self->pipeline = cogl_pipeline_copy (klass->base_pipeline);
|
||||
|
@ -430,7 +430,7 @@ ClutterContent *
|
||||
shell_util_get_content_for_window_actor (MetaWindowActor *window_actor,
|
||||
MetaRectangle *window_rect)
|
||||
{
|
||||
ClutterActor *texture;
|
||||
MetaShapedTexture *texture;
|
||||
ClutterContent *content;
|
||||
cairo_surface_t *surface;
|
||||
cairo_rectangle_int_t clip;
|
||||
@ -453,8 +453,7 @@ shell_util_get_content_for_window_actor (MetaWindowActor *window_actor,
|
||||
clip.width = ceilf (window_rect->width * resource_scale);
|
||||
clip.height = ceilf (window_rect->height * resource_scale);
|
||||
|
||||
surface = meta_shaped_texture_get_image (META_SHAPED_TEXTURE (texture),
|
||||
&clip);
|
||||
surface = meta_shaped_texture_get_image (texture, &clip);
|
||||
|
||||
content = clutter_canvas_new ();
|
||||
clutter_canvas_set_size (CLUTTER_CANVAS (content),
|
||||
|
@ -125,7 +125,7 @@ st_cflags = [
|
||||
libst = shared_library('st-1.0',
|
||||
sources: st_gir_sources + st_non_gir_sources,
|
||||
c_args: st_cflags,
|
||||
dependencies: [clutter_dep, gtk_dep, croco_dep, x11_dep, m_dep],
|
||||
dependencies: [clutter_dep, gtk_dep, croco_dep, mutter_dep, m_dep],
|
||||
build_rpath: mutter_typelibdir,
|
||||
install_rpath: mutter_typelibdir,
|
||||
install_dir: pkglibdir,
|
||||
@ -152,7 +152,7 @@ libst_gir = gnome.generate_gir(libst,
|
||||
sources: st_gir_sources,
|
||||
nsversion: '1.0',
|
||||
namespace: 'St',
|
||||
includes: ['Clutter-' + mutter_api_version, 'Cally-' + mutter_api_version, 'Gtk-3.0'],
|
||||
includes: ['Clutter-' + mutter_api_version, 'Cally-' + mutter_api_version, 'Meta-' + mutter_api_version, 'Gtk-3.0'],
|
||||
dependencies: [mutter_dep],
|
||||
include_directories: include_directories('..'),
|
||||
extra_args: ['-DST_COMPILATION', '--quiet'],
|
||||
|
@ -19,251 +19,49 @@
|
||||
|
||||
/**
|
||||
* SECTION:st-clipboard
|
||||
* @short_description: a simple representation of the X clipboard
|
||||
* @short_description: a simple representation of the clipboard
|
||||
*
|
||||
* #StCliboard is a very simple object representation of the clipboard
|
||||
* available to applications. Text is always assumed to be UTF-8 and non-text
|
||||
* items are not handled.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "st-clipboard.h"
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <gdk/gdk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
#include <string.h>
|
||||
|
||||
struct _StClipboardPrivate
|
||||
{
|
||||
Window clipboard_window;
|
||||
gchar *clipboard_text;
|
||||
#include <meta/display.h>
|
||||
#include <meta/meta-selection-source-memory.h>
|
||||
#include <meta/meta-selection.h>
|
||||
|
||||
Atom *supported_targets;
|
||||
gint n_targets;
|
||||
};
|
||||
G_DEFINE_TYPE (StClipboard, st_clipboard, G_TYPE_OBJECT)
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (StClipboard, st_clipboard, G_TYPE_OBJECT)
|
||||
|
||||
typedef struct _EventFilterData EventFilterData;
|
||||
struct _EventFilterData
|
||||
typedef struct _TransferData TransferData;
|
||||
struct _TransferData
|
||||
{
|
||||
StClipboard *clipboard;
|
||||
StClipboardCallbackFunc callback;
|
||||
gpointer user_data;
|
||||
GOutputStream *stream;
|
||||
};
|
||||
|
||||
static Atom __atom_primary = None;
|
||||
static Atom __atom_clip = None;
|
||||
static Atom __utf8_string = None;
|
||||
static Atom __atom_targets = None;
|
||||
|
||||
static void
|
||||
st_clipboard_dispose (GObject *object)
|
||||
{
|
||||
G_OBJECT_CLASS (st_clipboard_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
st_clipboard_finalize (GObject *object)
|
||||
{
|
||||
StClipboardPrivate *priv = ((StClipboard *) object)->priv;
|
||||
|
||||
g_free (priv->clipboard_text);
|
||||
priv->clipboard_text = NULL;
|
||||
|
||||
g_free (priv->supported_targets);
|
||||
priv->supported_targets = NULL;
|
||||
priv->n_targets = 0;
|
||||
|
||||
G_OBJECT_CLASS (st_clipboard_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static GdkFilterReturn
|
||||
st_clipboard_provider (GdkXEvent *xevent_p,
|
||||
GdkEvent *gev,
|
||||
void *user_data)
|
||||
{
|
||||
StClipboard *clipboard = user_data;
|
||||
XEvent *xev = (XEvent *) xevent_p;
|
||||
XSelectionEvent notify_event;
|
||||
XSelectionRequestEvent *req_event;
|
||||
GdkDisplay *display = gdk_display_get_default ();
|
||||
|
||||
if (xev->type != SelectionRequest ||
|
||||
xev->xany.window != clipboard->priv->clipboard_window ||
|
||||
!clipboard->priv->clipboard_text)
|
||||
return GDK_FILTER_CONTINUE;
|
||||
|
||||
req_event = &xev->xselectionrequest;
|
||||
|
||||
gdk_x11_display_error_trap_push (display);
|
||||
|
||||
if (req_event->target == __atom_targets)
|
||||
{
|
||||
XChangeProperty (req_event->display,
|
||||
req_event->requestor,
|
||||
req_event->property,
|
||||
XA_ATOM,
|
||||
32,
|
||||
PropModeReplace,
|
||||
(guchar*) clipboard->priv->supported_targets,
|
||||
clipboard->priv->n_targets);
|
||||
}
|
||||
else
|
||||
{
|
||||
XChangeProperty (req_event->display,
|
||||
req_event->requestor,
|
||||
req_event->property,
|
||||
req_event->target,
|
||||
8,
|
||||
PropModeReplace,
|
||||
(guchar*) clipboard->priv->clipboard_text,
|
||||
strlen (clipboard->priv->clipboard_text));
|
||||
}
|
||||
|
||||
notify_event.type = SelectionNotify;
|
||||
notify_event.display = req_event->display;
|
||||
notify_event.requestor = req_event->requestor;
|
||||
notify_event.selection = req_event->selection;
|
||||
notify_event.target = req_event->target;
|
||||
notify_event.time = req_event->time;
|
||||
|
||||
if (req_event->property == None)
|
||||
notify_event.property = req_event->target;
|
||||
else
|
||||
notify_event.property = req_event->property;
|
||||
|
||||
/* notify the requestor that they have a copy of the selection */
|
||||
XSendEvent (req_event->display, req_event->requestor, False, 0,
|
||||
(XEvent *) ¬ify_event);
|
||||
/* Make it happen non async */
|
||||
XSync (GDK_DISPLAY_XDISPLAY (display), FALSE);
|
||||
|
||||
if (gdk_x11_display_error_trap_pop (display))
|
||||
{
|
||||
/* FIXME: Warn here on fail ? */
|
||||
}
|
||||
|
||||
return GDK_FILTER_REMOVE;
|
||||
}
|
||||
const char *supported_mimetypes[] = {
|
||||
"text/plain;charset=utf-8",
|
||||
"UTF8_STRING",
|
||||
"text/plain",
|
||||
"STRING",
|
||||
};
|
||||
|
||||
static MetaSelection *meta_selection = NULL;
|
||||
|
||||
static void
|
||||
st_clipboard_class_init (StClipboardClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = st_clipboard_dispose;
|
||||
object_class->finalize = st_clipboard_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
st_clipboard_init (StClipboard *self)
|
||||
{
|
||||
GdkDisplay *gdk_display;
|
||||
Display *dpy;
|
||||
StClipboardPrivate *priv;
|
||||
|
||||
priv = self->priv = st_clipboard_get_instance_private (self);
|
||||
|
||||
gdk_display = gdk_display_get_default ();
|
||||
dpy = GDK_DISPLAY_XDISPLAY (gdk_display);
|
||||
|
||||
priv->clipboard_window =
|
||||
XCreateSimpleWindow (dpy,
|
||||
gdk_x11_get_default_root_xwindow (),
|
||||
-1, -1, 1, 1, 0, 0, 0);
|
||||
|
||||
/* Only create once */
|
||||
if (__atom_primary == None)
|
||||
__atom_primary = XInternAtom (dpy, "PRIMARY", 0);
|
||||
|
||||
if (__atom_clip == None)
|
||||
__atom_clip = XInternAtom (dpy, "CLIPBOARD", 0);
|
||||
|
||||
if (__utf8_string == None)
|
||||
__utf8_string = XInternAtom (dpy, "UTF8_STRING", 0);
|
||||
|
||||
if (__atom_targets == None)
|
||||
__atom_targets = XInternAtom (dpy, "TARGETS", 0);
|
||||
|
||||
priv->n_targets = 2;
|
||||
priv->supported_targets = g_new (Atom, priv->n_targets);
|
||||
|
||||
priv->supported_targets[0] = __utf8_string;
|
||||
priv->supported_targets[1] = __atom_targets;
|
||||
|
||||
gdk_window_add_filter (NULL, /* all windows */
|
||||
st_clipboard_provider,
|
||||
self);
|
||||
}
|
||||
|
||||
static GdkFilterReturn
|
||||
st_clipboard_x11_event_filter (GdkXEvent *xevent_p,
|
||||
GdkEvent *gev,
|
||||
void *user_data)
|
||||
{
|
||||
XEvent *xev = (XEvent *) xevent_p;
|
||||
EventFilterData *filter_data = user_data;
|
||||
StClipboardPrivate *priv = filter_data->clipboard->priv;
|
||||
Atom actual_type;
|
||||
int actual_format, result;
|
||||
unsigned long nitems, bytes_after;
|
||||
unsigned char *data = NULL;
|
||||
GdkDisplay *display = gdk_display_get_default ();
|
||||
|
||||
if(xev->type != SelectionNotify ||
|
||||
xev->xany.window != priv->clipboard_window)
|
||||
return GDK_FILTER_CONTINUE;
|
||||
|
||||
if (xev->xselection.property == None)
|
||||
{
|
||||
/* clipboard empty */
|
||||
filter_data->callback (filter_data->clipboard,
|
||||
NULL,
|
||||
filter_data->user_data);
|
||||
|
||||
gdk_window_remove_filter (NULL,
|
||||
st_clipboard_x11_event_filter,
|
||||
filter_data);
|
||||
g_free (filter_data);
|
||||
return GDK_FILTER_REMOVE;
|
||||
}
|
||||
|
||||
gdk_x11_display_error_trap_push (display);
|
||||
|
||||
result = XGetWindowProperty (xev->xselection.display,
|
||||
xev->xselection.requestor,
|
||||
xev->xselection.property,
|
||||
0L, G_MAXINT,
|
||||
True,
|
||||
AnyPropertyType,
|
||||
&actual_type,
|
||||
&actual_format,
|
||||
&nitems,
|
||||
&bytes_after,
|
||||
&data);
|
||||
|
||||
if (gdk_x11_display_error_trap_pop (display) || result != Success)
|
||||
{
|
||||
/* FIXME: handle failure better */
|
||||
g_warning ("Clipboard: prop retrival failed");
|
||||
}
|
||||
|
||||
filter_data->callback (filter_data->clipboard, (char*) data,
|
||||
filter_data->user_data);
|
||||
|
||||
gdk_window_remove_filter (NULL,
|
||||
st_clipboard_x11_event_filter,
|
||||
filter_data);
|
||||
|
||||
g_free (filter_data);
|
||||
|
||||
if (data)
|
||||
XFree (data);
|
||||
|
||||
return GDK_FILTER_REMOVE;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -287,10 +85,57 @@ st_clipboard_get_default (void)
|
||||
return default_clipboard;
|
||||
}
|
||||
|
||||
static Atom
|
||||
atom_for_clipboard_type (StClipboardType type)
|
||||
static gboolean
|
||||
convert_type (StClipboardType type,
|
||||
MetaSelectionType *type_out)
|
||||
{
|
||||
return type == ST_CLIPBOARD_TYPE_CLIPBOARD ? __atom_clip : __atom_primary;
|
||||
if (type == ST_CLIPBOARD_TYPE_PRIMARY)
|
||||
*type_out = META_SELECTION_PRIMARY;
|
||||
else if (type == ST_CLIPBOARD_TYPE_CLIPBOARD)
|
||||
*type_out = META_SELECTION_CLIPBOARD;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static const char *
|
||||
pick_mimetype (MetaSelection *meta_selection,
|
||||
MetaSelectionType selection_type)
|
||||
{
|
||||
const char *selected_mimetype = NULL;
|
||||
GList *mimetypes;
|
||||
int i;
|
||||
|
||||
mimetypes = meta_selection_get_mimetypes (meta_selection, selection_type);
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (supported_mimetypes); i++)
|
||||
{
|
||||
if (g_list_find_custom (mimetypes, supported_mimetypes[i],
|
||||
(GCompareFunc) g_strcmp0))
|
||||
{
|
||||
selected_mimetype = supported_mimetypes[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
g_list_free_full (mimetypes, g_free);
|
||||
return selected_mimetype;
|
||||
}
|
||||
|
||||
static void
|
||||
transfer_cb (MetaSelection *selection,
|
||||
GAsyncResult *res,
|
||||
TransferData *data)
|
||||
{
|
||||
const gchar *text = NULL;
|
||||
|
||||
if (meta_selection_transfer_finish (selection, res, NULL))
|
||||
text = g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (data->stream));
|
||||
|
||||
data->callback (data->clipboard, text, data->user_data);
|
||||
g_object_unref (data->stream);
|
||||
g_free (data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -310,37 +155,35 @@ st_clipboard_get_text (StClipboard *clipboard,
|
||||
StClipboardCallbackFunc callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
EventFilterData *data;
|
||||
GdkDisplay *gdk_display;
|
||||
Display *dpy;
|
||||
MetaSelectionType selection_type;
|
||||
TransferData *data;
|
||||
const char *mimetype = NULL;
|
||||
|
||||
g_return_if_fail (ST_IS_CLIPBOARD (clipboard));
|
||||
g_return_if_fail (meta_selection != NULL);
|
||||
g_return_if_fail (callback != NULL);
|
||||
|
||||
data = g_new0 (EventFilterData, 1);
|
||||
if (convert_type (type, &selection_type))
|
||||
mimetype = pick_mimetype (meta_selection, selection_type);
|
||||
|
||||
if (!mimetype)
|
||||
{
|
||||
callback (clipboard, NULL, user_data);
|
||||
return;
|
||||
}
|
||||
|
||||
data = g_new0 (TransferData, 1);
|
||||
data->clipboard = clipboard;
|
||||
data->callback = callback;
|
||||
data->user_data = user_data;
|
||||
data->stream = g_memory_output_stream_new_resizable ();
|
||||
|
||||
gdk_window_add_filter (NULL, /* all windows */
|
||||
st_clipboard_x11_event_filter,
|
||||
data);
|
||||
|
||||
gdk_display = gdk_display_get_default ();
|
||||
dpy = GDK_DISPLAY_XDISPLAY (gdk_display);
|
||||
|
||||
gdk_x11_display_error_trap_push (gdk_display);
|
||||
|
||||
XConvertSelection (dpy,
|
||||
atom_for_clipboard_type (type),
|
||||
__utf8_string, __utf8_string,
|
||||
clipboard->priv->clipboard_window,
|
||||
CurrentTime);
|
||||
|
||||
if (gdk_x11_display_error_trap_pop (gdk_display))
|
||||
{
|
||||
/* FIXME */
|
||||
}
|
||||
meta_selection_transfer_async (meta_selection,
|
||||
selection_type,
|
||||
mimetype, -1,
|
||||
data->stream, NULL,
|
||||
(GAsyncReadyCallback) transfer_cb,
|
||||
data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -356,31 +199,26 @@ st_clipboard_set_text (StClipboard *clipboard,
|
||||
StClipboardType type,
|
||||
const gchar *text)
|
||||
{
|
||||
StClipboardPrivate *priv;
|
||||
GdkDisplay *gdk_display;
|
||||
Display *dpy;
|
||||
MetaSelectionType selection_type;
|
||||
MetaSelectionSource *source;
|
||||
GBytes *bytes;
|
||||
|
||||
g_return_if_fail (ST_IS_CLIPBOARD (clipboard));
|
||||
g_return_if_fail (meta_selection != NULL);
|
||||
g_return_if_fail (text != NULL);
|
||||
|
||||
priv = clipboard->priv;
|
||||
if (!convert_type (type, &selection_type))
|
||||
return;
|
||||
|
||||
/* make a copy of the text */
|
||||
g_free (priv->clipboard_text);
|
||||
priv->clipboard_text = g_strdup (text);
|
||||
bytes = g_bytes_new_take (g_strdup (text), strlen (text));
|
||||
source = meta_selection_source_memory_new ("text/plain;charset=utf-8", bytes);
|
||||
g_bytes_unref (bytes);
|
||||
|
||||
/* tell X we own the clipboard selection */
|
||||
gdk_display = gdk_display_get_default ();
|
||||
dpy = GDK_DISPLAY_XDISPLAY (gdk_display);
|
||||
|
||||
gdk_x11_display_error_trap_push (gdk_display);
|
||||
|
||||
XSetSelectionOwner (dpy, atom_for_clipboard_type (type), priv->clipboard_window, CurrentTime);
|
||||
|
||||
XSync (dpy, FALSE);
|
||||
|
||||
if (gdk_x11_display_error_trap_pop (gdk_display))
|
||||
{
|
||||
/* FIXME */
|
||||
}
|
||||
meta_selection_set_owner (meta_selection, selection_type, source);
|
||||
}
|
||||
|
||||
void
|
||||
st_clipboard_set_selection (MetaSelection *selection)
|
||||
{
|
||||
meta_selection = selection;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#define _ST_CLIPBOARD_H
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <meta/meta-selection.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@ -32,7 +33,6 @@ G_BEGIN_DECLS
|
||||
G_DECLARE_FINAL_TYPE (StClipboard, st_clipboard, ST, CLIPBOARD, GObject)
|
||||
|
||||
typedef struct _StClipboard StClipboard;
|
||||
typedef struct _StClipboardPrivate StClipboardPrivate;
|
||||
|
||||
/**
|
||||
* StClipboard:
|
||||
@ -44,7 +44,6 @@ struct _StClipboard
|
||||
{
|
||||
/*< private >*/
|
||||
GObject parent;
|
||||
StClipboardPrivate *priv;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
@ -74,6 +73,8 @@ void st_clipboard_set_text (StClipboard *clipboard,
|
||||
StClipboardType type,
|
||||
const gchar *text);
|
||||
|
||||
void st_clipboard_set_selection (MetaSelection *selection);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* _ST_CLIPBOARD_H */
|
||||
|
@ -206,8 +206,8 @@ st_icon_style_changed (StWidget *widget)
|
||||
}
|
||||
|
||||
priv->theme_icon_size = (int)(0.5 + st_theme_node_get_length (theme_node, "icon-size"));
|
||||
st_icon_update_icon_size (self);
|
||||
st_icon_update (self);
|
||||
if (st_icon_update_icon_size (self))
|
||||
st_icon_update (self);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -204,9 +204,7 @@ _st_create_texture_pipeline (CoglTexture *src_texture)
|
||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
|
||||
texture_pipeline_template = cogl_pipeline_new (ctx);
|
||||
cogl_pipeline_set_layer_null_texture (texture_pipeline_template,
|
||||
0, /* layer */
|
||||
COGL_TEXTURE_TYPE_2D);
|
||||
cogl_pipeline_set_layer_null_texture (texture_pipeline_template, 0);
|
||||
}
|
||||
|
||||
pipeline = cogl_pipeline_copy (texture_pipeline_template);
|
||||
|
@ -496,15 +496,31 @@ pixbuf_to_st_content_image (GdkPixbuf *pixbuf,
|
||||
ClutterContent *image;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
if (width < 0)
|
||||
width = ceilf (gdk_pixbuf_get_width (pixbuf) / resource_scale);
|
||||
else
|
||||
width *= paint_scale;
|
||||
float native_width, native_height;
|
||||
|
||||
if (height < 0)
|
||||
height = ceilf (gdk_pixbuf_get_height (pixbuf) / resource_scale);
|
||||
native_width = ceilf (gdk_pixbuf_get_width (pixbuf) / resource_scale);
|
||||
native_height = ceilf (gdk_pixbuf_get_height (pixbuf) / resource_scale);
|
||||
|
||||
if (width < 0 && height < 0)
|
||||
{
|
||||
width = native_width;
|
||||
height = native_height;
|
||||
}
|
||||
else if (width < 0)
|
||||
{
|
||||
height *= paint_scale;
|
||||
width = native_width * (height / native_height);
|
||||
}
|
||||
else if (height < 0)
|
||||
{
|
||||
width *= paint_scale;
|
||||
height = native_height * (width / native_width);
|
||||
}
|
||||
else
|
||||
height *= paint_scale;
|
||||
{
|
||||
width *= paint_scale;
|
||||
height *= paint_scale;
|
||||
}
|
||||
|
||||
image = st_image_content_new_with_preferred_size (width, height);
|
||||
clutter_image_set_data (CLUTTER_IMAGE (image),
|
||||
|
@ -107,6 +107,8 @@ struct _StThemeNode {
|
||||
int box_shadow_min_width;
|
||||
int box_shadow_min_height;
|
||||
|
||||
guint stylesheets_changed_id;
|
||||
|
||||
CoglPipeline *border_slices_texture;
|
||||
CoglPipeline *border_slices_pipeline;
|
||||
CoglPipeline *background_texture;
|
||||
|
@ -111,9 +111,11 @@ st_theme_node_dispose (GObject *gobject)
|
||||
node->icon_colors = NULL;
|
||||
}
|
||||
|
||||
if (node->theme)
|
||||
g_signal_handlers_disconnect_by_func (node->theme,
|
||||
on_custom_stylesheets_changed, node);
|
||||
if (node->theme && node->stylesheets_changed_id)
|
||||
{
|
||||
g_signal_handler_disconnect (node->theme, node->stylesheets_changed_id);
|
||||
node->stylesheets_changed_id = 0;
|
||||
}
|
||||
|
||||
st_theme_node_paint_state_free (&node->cached_state);
|
||||
|
||||
@ -230,8 +232,9 @@ st_theme_node_new (StThemeContext *context,
|
||||
if (theme != NULL)
|
||||
{
|
||||
node->theme = g_object_ref (theme);
|
||||
g_signal_connect (node->theme, "custom-stylesheets-changed",
|
||||
G_CALLBACK (on_custom_stylesheets_changed), node);
|
||||
node->stylesheets_changed_id =
|
||||
g_signal_connect (node->theme, "custom-stylesheets-changed",
|
||||
G_CALLBACK (on_custom_stylesheets_changed), node);
|
||||
}
|
||||
|
||||
node->element_type = element_type;
|
||||
@ -1136,10 +1139,14 @@ get_length_from_term_int (StThemeNode *node,
|
||||
{
|
||||
double value;
|
||||
GetFromTermResult result;
|
||||
int scale_factor;
|
||||
|
||||
result = get_length_from_term (node, term, use_parent_font, &value);
|
||||
if (result == VALUE_FOUND)
|
||||
*length = (int) (0.5 + value);
|
||||
{
|
||||
g_object_get (node->context, "scale-factor", &scale_factor, NULL);
|
||||
*length = (int) ((value / scale_factor) + 0.5) * scale_factor;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -1718,7 +1718,7 @@ st_widget_recompute_style (StWidget *widget,
|
||||
StThemeNode *new_theme_node = st_widget_get_theme_node (widget);
|
||||
int transition_duration;
|
||||
StSettings *settings;
|
||||
gboolean paint_equal;
|
||||
gboolean paint_equal, geometry_equal = FALSE;
|
||||
gboolean animations_enabled;
|
||||
|
||||
if (new_theme_node == old_theme_node)
|
||||
@ -1729,8 +1729,9 @@ st_widget_recompute_style (StWidget *widget,
|
||||
|
||||
_st_theme_node_apply_margins (new_theme_node, CLUTTER_ACTOR (widget));
|
||||
|
||||
if (!old_theme_node ||
|
||||
!st_theme_node_geometry_equal (old_theme_node, new_theme_node))
|
||||
if (old_theme_node)
|
||||
geometry_equal = st_theme_node_geometry_equal (old_theme_node, new_theme_node);
|
||||
if (!geometry_equal)
|
||||
clutter_actor_queue_relayout ((ClutterActor *) widget);
|
||||
|
||||
transition_duration = st_theme_node_get_transition_duration (new_theme_node);
|
||||
@ -1782,7 +1783,11 @@ st_widget_recompute_style (StWidget *widget,
|
||||
st_theme_node_paint_state_invalidate (current_paint_state (widget));
|
||||
}
|
||||
|
||||
g_signal_emit (widget, signals[STYLE_CHANGED], 0);
|
||||
if (!paint_equal || !geometry_equal)
|
||||
g_signal_emit (widget, signals[STYLE_CHANGED], 0);
|
||||
else
|
||||
notify_children_of_style_change ((ClutterActor *) widget);
|
||||
|
||||
priv->is_style_dirty = FALSE;
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ static guint manager_signals[LAST_SIGNAL];
|
||||
#define SYSTEM_TRAY_ORIENTATION_VERT 1
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
static gboolean na_tray_manager_check_running_screen_x11 ();
|
||||
static gboolean na_tray_manager_check_running_screen_x11 (void);
|
||||
#endif
|
||||
|
||||
static void na_tray_manager_finalize (GObject *object);
|
||||
@ -808,7 +808,7 @@ na_tray_manager_manage_screen (NaTrayManager *manager)
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
|
||||
static gboolean
|
||||
na_tray_manager_check_running_screen_x11 ()
|
||||
na_tray_manager_check_running_screen_x11 (void)
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GdkScreen *screen;
|
||||
@ -833,7 +833,7 @@ na_tray_manager_check_running_screen_x11 ()
|
||||
#endif
|
||||
|
||||
gboolean
|
||||
na_tray_manager_check_running ()
|
||||
na_tray_manager_check_running (void)
|
||||
{
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
return na_tray_manager_check_running_screen_x11 ();
|
||||
|
Reference in New Issue
Block a user