Marco Trevisan (Treviño) has proposed merging
~3v1n0/ubuntu/+source/gnome-shell:ubuntu/master into
~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/master.
Requested reviews:
Ubuntu Desktop (ubuntu-desktop)
Related bugs:
Bug #1822846 in gnome-shell (Ubuntu): "Icon disappears from favorites in
gnome-shell 3.32 (upstream dock, not the ubuntu-dock)"
https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1822846
Bug #1826176 in gnome-shell (Ubuntu): "Applications do not receive focus in
Wayland sessions"
https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1826176
Bug #1826936 in gnome-shell (Ubuntu): "Upgrade to 3.32.1 and SRU it"
https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1826936
For more details, see:
https://code.launchpad.net/~3v1n0/ubuntu/+source/gnome-shell/+git/gnome-shell/+merge/366668
Update to 3.32.1
--
Your team Ubuntu Desktop is requested to review the proposed merge of
~3v1n0/ubuntu/+source/gnome-shell:ubuntu/master into
~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/master.
diff --git a/NEWS b/NEWS
index a86e5e4..fcfa060 100644
--- a/NEWS
+++ b/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]
diff --git a/data/dbus-interfaces/org.gnome.Shell.xml b/data/dbus-interfaces/org.gnome.Shell.xml
index 1fef302..094c294 100644
--- a/data/dbus-interfaces/org.gnome.Shell.xml
+++ b/data/dbus-interfaces/org.gnome.Shell.xml
@@ -9,9 +9,6 @@
<method name="ShowOSD">
<arg type="a{sv}" direction="in" name="params"/>
</method>
- <method name="ShowMonitorLabels">
- <arg type="a{uv}" direction="in" name="params"/>
- </method>
<method name="ShowMonitorLabels2">
<arg type="a{sv}" direction="in" name="params"/>
</method>
diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
index b778254..c05be6b 100644
--- a/data/gnome-shell-theme.gresource.xml
+++ b/data/gnome-shell-theme.gresource.xml
@@ -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>
diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
index c7485ae..a6357ba 100644
--- a/data/theme/gnome-shell-sass/_common.scss
+++ b/data/theme/gnome-shell-sass/_common.scss
@@ -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;
@@ -1142,6 +1137,12 @@ StScrollBar {
.ripple-box:rtl { border-radius: 0 0 0 52px; } // just a simple change to the border radius position
+// Rubberband for select-area screenshots
+.select-area-rubberband {
+ background-color: transparentize($selected_bg_color,0.7);
+ border: 1px solid $selected_bg_color;
+}
+
// not really top bar only
.popup-menu-arrow { icon-size: 1.09em; }
.popup-menu-icon { icon-size: 1.09em; }
diff --git a/data/theme/toggle-off-intl.svg b/data/theme/toggle-off-intl.svg
index a1734fb..cb08712 100644
--- a/data/theme/toggle-off-intl.svg
+++ b/data/theme/toggle-off-intl.svg
@@ -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" />
+ id="stop3327" />
</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" />
- </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)"
+ 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>
diff --git a/data/theme/toggle-off-us.svg b/data/theme/toggle-off-us.svg
deleted file mode 100644
index 941501d..0000000
--- a/data/theme/toggle-off-us.svg
+++ /dev/null
@@ -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>
diff --git a/data/theme/toggle-on-intl.svg b/data/theme/toggle-on-intl.svg
index b007065..142e0a8 100644
--- a/data/theme/toggle-on-intl.svg
+++ b/data/theme/toggle-on-intl.svg
@@ -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>
diff --git a/data/theme/toggle-on-us.svg b/data/theme/toggle-on-us.svg
deleted file mode 100644
index 501fc30..0000000
--- a/data/theme/toggle-on-us.svg
+++ /dev/null
@@ -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>
diff --git a/debian/.gitignore b/debian/.gitignore
new file mode 100644
index 0000000..a320335
--- /dev/null
+++ b/debian/.gitignore
@@ -0,0 +1,10 @@
+/*.debhelper
+/*.debhelper.log
+/*.substvars
+/.debhelper/
+/debhelper-build-stamp
+/files
+/gnome-shell-common/
+/gnome-shell/
+/home/
+/tmp/
diff --git a/debian/changelog b/debian/changelog
index f1dbe5d..9305cf7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,77 @@
+gnome-shell (3.32.1-1ubuntu1) eoan; urgency=medium
+
+ * Merge with debian
+ - Update to 3.32.1 upstream version (LP: #1826936)
+ - Fixes Icon disappears from favorites (LP: #1822846)
+ - Fix applications aren't focused in Wayland session (LP: #1826176)
+ remaining changes:
+ + Replace gnome-backgrounds dep with ubuntu-wallpapers and Suggests
+ gnome-themes-standard-data, gnome-backgrounds
+ + Add some Recommends:
+ - ubuntu-session (| gnome-session) to have the ubuntu session available
+ - xserver-xorg-legacy
+ - yaru-theme-gnome-shell for the default ubuntu theming
+ + Update debian/gbp.conf with Ubuntu settings
+ + gnome-shell-common.install: Install Ubuntu mode
+ + gnome-shell-common.prerm: Remove deprecated ubuntu theme alternative
+ + ubuntu/desktop_detect.patch:
+ - add caching for desktop detection to avoid querying the current
+ desktop env variable as iterate through the list each time. For the
+ time of the Shell process, we can expect this env variable to stay
+ stable.
+ + ubuntu/smarter_alt_tab.patch:
+ - quick alt-tab (without showing up the switcher) switch only between
+ the last window of the last 2 applications to be focused instead of
+ raising all windows of those apps.
+ + ubuntu/lightdm-user-switching.patch:
+ - Allow user switching when using LightDM.
+ + ubuntu/lock_on_suspend.patch
+ - Respect Ubuntu's lock-on-suspend setting.
+ + ubuntu/gdm.patch
+ - as gdm is system-wide and not session-wide, ensure gdm has an ubuntu
+ styling by default, not impacting the gnome user session though.
+ + ubuntu/background_login.patch
+ - Change default background color as we modified the default GDM color
+ for our ubuntu session. Change it as well here, still applying the
+ background noise loading.
+ + ubuntu/gdm_alternatives.patch
+ - Add support for GDM3 theme alternatives
+ + ubuntu/block_mode_extension_update.patch
+ - Don't allow ubuntu mode extension to update
+ + optional-hot-corner.patch
+ - enable patch proposed by upstream developer already in package (but
+ not in series) to add a settings for optional hot corner activation.
+ + volume-Add-back-sound-feedback-on-scroll.patch
+ - Fix regression causing missing feedback on volume slider scroll
+ + main-show-an-error-message-on-gnome-shell-crash.patch,
+ global-make-possible-to-set-debug-flags-dynamically.patch,
+ main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch,
+ main-add-backtrace-crashes-all-and-backtrace-all.patch,
+ sessionMode-add-support-for-debugFlags-parameter.patch:
+ - Improve debug JS tracing for crash reports
+ + st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch,
+ st-scroll-view-Remove-scrollbars-references-on-dispose.patch:
+ - Fix crash on theme changes
+ + ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch:
+ - stop searches when requested from UI
+ + magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch:
+ - Show monitor scaled cursor when magnifier is enabled
+
+ -- Marco Trevisan (Treviño) <[email protected]> Mon, 29 Apr 2019 17:29:23 -0500
+
+gnome-shell (3.32.1-1) experimental; urgency=medium
+
+ [ Simon McVittie ]
+ * d/rules: Create a temporary HOME, XDG_RUNTIME_DIR for the unit tests.
+ This goes some way towards fixing test failures and FTBFS on buster's
+ sbuild, as deployed on the s390x buildd.
+ * d/.gitignore: Add
+
+ [ Laurent Bigonville ]
+ * New upstream release
+
+ -- Laurent Bigonville <[email protected]> Mon, 22 Apr 2019 15:45:49 +0200
+
gnome-shell (3.32.0+git20190410-1ubuntu1) disco; urgency=medium
* Merging with debian git snapshot (LP: #1820775, LP: #1818790),
diff --git a/debian/clean b/debian/clean
new file mode 100644
index 0000000..3d6866b
--- /dev/null
+++ b/debian/clean
@@ -0,0 +1 @@
+debian/home/
diff --git a/debian/rules b/debian/rules
index 00c6fbf..0831ef7 100755
--- a/debian/rules
+++ b/debian/rules
@@ -38,4 +38,16 @@ override_dh_strip:
dh_strip --dbgsym-migration='gnome-shell-dbg (<< 3.20.2-2~)'
override_dh_auto_test:
- xvfb-run -a dh_auto_test
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+ # Avoid test failures on buildd environments where HOME,
+ # XDG_RUNTIME_DIR might be invalid
+ mkdir -p -m700 $(CURDIR)/debian/home/run
+ env \
+ -u XDG_CACHE_HOME \
+ -u XDG_CONFIG_DIRS \
+ -u XDG_CONFIG_HOME \
+ -u XDG_DATA_HOME \
+ HOME=$(CURDIR)/debian/home \
+ XDG_RUNTIME_DIR=$(CURDIR)/debian/home/run \
+ xvfb-run -a dh_auto_test
+endif
diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js
index 438788f..43efa95 100644
--- a/js/extensionPrefs/main.js
+++ b/js/extensionPrefs/main.js
@@ -551,9 +551,9 @@ class ExtensionRow extends Gtk.ListBoxRow {
let button = new Gtk.Button({ valign: Gtk.Align.CENTER,
no_show_all: true });
- button.add(new Gtk.Image({ icon_name: 'emblem-system-symbolic',
- icon_size: Gtk.IconSize.BUTTON,
- visible: true }));
+ button.set_image(new Gtk.Image({ icon_name: 'emblem-system-symbolic',
+ icon_size: Gtk.IconSize.BUTTON,
+ visible: true }));
button.get_style_context().add_class('circular');
hbox.add(button);
diff --git a/js/perf/hwtest.js b/js/perf/hwtest.js
index 31a25a7..661f2ef 100644
--- a/js/perf/hwtest.js
+++ b/js/perf/hwtest.js
@@ -1,4 +1,4 @@
-const { Clutter, Gio, Gtk, Shell } = imports.gi;
+const { Clutter, Gio, Shell } = imports.gi;
const Main = imports.ui.main;
const Scripting = imports.ui.scripting;
@@ -104,7 +104,10 @@ function *run() {
yield Scripting.waitLeisure();
Scripting.scriptEvent('desktopShown');
- Gtk.Settings.get_default().gtk_enable_animations = false;
+ let interfaceSettings = new Gio.Settings({
+ schema_id: 'org.gnome.desktop.interface'
+ });
+ interfaceSettings.set_boolean('enable-animations', false);
Scripting.scriptEvent('overviewShowStart');
Main.overview.show();
@@ -200,7 +203,7 @@ function *run() {
yield Scripting.sleep(1000);
- Gtk.Settings.get_default().gtk_enable_animations = true;
+ interfaceSettings.set_boolean('enable-animations', true);
}
let overviewShowStart;
diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js
index a80504c..657e159 100644
--- a/js/ui/appFavorites.js
+++ b/js/ui/appFavorites.js
@@ -14,39 +14,47 @@ const RENAMED_DESKTOP_IDS = {
'epiphany.desktop': 'org.gnome.Epiphany.desktop',
'evolution.desktop': 'org.gnome.Evolution.desktop',
'file-roller.desktop': 'org.gnome.FileRoller.desktop',
+ 'five-or-more.desktop': 'org.gnome.five-or-more.desktop',
+ 'four-in-a-row.desktop': 'org.gnome.Four-in-a-row.desktop',
'gcalctool.desktop': 'org.gnome.Calculator.desktop',
'geary.desktop': 'org.gnome.Geary.desktop',
'gedit.desktop': 'org.gnome.gedit.desktop',
- 'glchess.desktop': 'gnome-chess.desktop',
- 'glines.desktop': 'five-or-more.desktop',
- 'gnect.desktop': 'four-in-a-row.desktop',
+ 'glchess.desktop': 'org.gnome.Chess.desktop',
+ 'glines.desktop': 'org.gnome.five-or-more.desktop',
+ 'gnect.desktop': 'org.gnome.Four-in-a-row.desktop',
'gnibbles.desktop': 'org.gnome.Nibbles.desktop',
- 'gnobots2.desktop': 'gnome-robots.desktop',
+ 'gnobots2.desktop': 'org.gnome.Robots.desktop',
'gnome-boxes.desktop': 'org.gnome.Boxes.desktop',
'gnome-calculator.desktop': 'org.gnome.Calculator.desktop',
+ 'gnome-chess.desktop': 'org.gnome.Chess.desktop',
'gnome-clocks.desktop': 'org.gnome.clocks.desktop',
'gnome-contacts.desktop': 'org.gnome.Contacts.desktop',
'gnome-documents.desktop': 'org.gnome.Documents.desktop',
'gnome-font-viewer.desktop': 'org.gnome.font-viewer.desktop',
+ 'gnome-klotski.desktop': 'org.gnome.Klotski.desktop',
'gnome-nibbles.desktop': 'org.gnome.Nibbles.desktop',
'gnome-mahjongg.desktop': 'org.gnome.Mahjongg.desktop',
+ 'gnome-mines.desktop': 'org.gnome.Mines.desktop',
'gnome-music.desktop': 'org.gnome.Music.desktop',
'gnome-photos.desktop': 'org.gnome.Photos.desktop',
+ 'gnome-robots.desktop': 'org.gnome.Robots.desktop',
'gnome-screenshot.desktop': 'org.gnome.Screenshot.desktop',
'gnome-software.desktop': 'org.gnome.Software.desktop',
'gnome-terminal.desktop': 'org.gnome.Terminal.desktop',
+ 'gnome-tetravex.desktop': 'org.gnome.Tetravex.desktop',
'gnome-tweaks.desktop': 'org.gnome.tweaks.desktop',
'gnome-weather.desktop': 'org.gnome.Weather.desktop',
- 'gnomine.desktop': 'gnome-mines.desktop',
- 'gnotravex.desktop': 'gnome-tetravex.desktop',
- 'gnotski.desktop': 'gnome-klotski.desktop',
- 'gtali.desktop': 'tali.desktop',
+ 'gnomine.desktop': 'org.gnome.Mines.desktop',
+ 'gnotravex.desktop': 'org.gnome.Tetravex.desktop',
+ 'gnotski.desktop': 'org.gnome.Klotski.desktop',
+ 'gtali.desktop': 'org.gnome.Tali.desktop',
'iagno.desktop': 'org.gnome.Reversi.desktop',
'nautilus.desktop': 'org.gnome.Nautilus.desktop',
'org.gnome.gnome-2048.desktop': 'org.gnome.TwentyFortyEight.desktop',
'org.gnome.taquin.desktop': 'org.gnome.Taquin.desktop',
'org.gnome.Weather.Application.desktop': 'org.gnome.Weather.desktop',
'polari.desktop': 'org.gnome.Polari.desktop',
+ 'tali.desktop': 'org.gnome.Tali.desktop',
'totem.desktop': 'org.gnome.Totem.desktop',
'evince.desktop': 'org.gnome.Evince.desktop',
};
diff --git a/js/ui/barLevel.js b/js/ui/barLevel.js
index d8d3736..c4072e2 100644
--- a/js/ui/barLevel.js
+++ b/js/ui/barLevel.js
@@ -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) {
diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js
index 11b2bdd..c8e5ced 100644
--- a/js/ui/boxpointer.js
+++ b/js/ui/boxpointer.js
@@ -47,10 +47,6 @@ var BoxPointer = GObject.registerClass({
this._border.connect('repaint', this._drawBorder.bind(this));
this.add_actor(this._border);
this.bin.raise(this._border);
- this._xOffset = 0;
- this._yOffset = 0;
- this._xPosition = 0;
- this._yPosition = 0;
this._sourceAlignment = 0.5;
this._capturedEventId = 0;
this._muteInput();
@@ -118,23 +114,23 @@ var BoxPointer = GObject.registerClass({
if (animate & PopupAnimation.SLIDE) {
switch (this._arrowSide) {
case St.Side.TOP:
- this.yOffset = -rise;
+ this.translation_y = -rise;
break;
case St.Side.BOTTOM:
- this.yOffset = rise;
+ this.translation_y = rise;
break;
case St.Side.LEFT:
- this.xOffset = -rise;
+ this.translation_x = -rise;
break;
case St.Side.RIGHT:
- this.xOffset = rise;
+ this.translation_x = rise;
break;
}
}
Tweener.addTween(this, { opacity: 255,
- xOffset: 0,
- yOffset: 0,
+ translation_x: 0,
+ translation_y: 0,
transition: 'linear',
onComplete: () => {
this._unmuteInput();
@@ -148,8 +144,8 @@ var BoxPointer = GObject.registerClass({
if (!this.visible)
return;
- let xOffset = 0;
- let yOffset = 0;
+ let translationX = 0;
+ let translationY = 0;
let themeNode = this.get_theme_node();
let rise = themeNode.get_length('-arrow-rise');
let fade = (animate & PopupAnimation.FADE);
@@ -158,16 +154,16 @@ var BoxPointer = GObject.registerClass({
if (animate & PopupAnimation.SLIDE) {
switch (this._arrowSide) {
case St.Side.TOP:
- yOffset = rise;
+ translationY = rise;
break;
case St.Side.BOTTOM:
- yOffset = -rise;
+ translationY = -rise;
break;
case St.Side.LEFT:
- xOffset = rise;
+ translationX = rise;
break;
case St.Side.RIGHT:
- xOffset = -rise;
+ translationX = -rise;
break;
}
}
@@ -176,15 +172,15 @@ var BoxPointer = GObject.registerClass({
Tweener.removeTweens(this);
Tweener.addTween(this, { opacity: fade ? 0 : 255,
- xOffset: xOffset,
- yOffset: yOffset,
+ translation_x: translationX,
+ translation_y: translationY,
transition: 'linear',
time: animationTime,
onComplete: () => {
this.hide();
this.opacity = 0;
- this.xOffset = 0;
- this.yOffset = 0;
+ this.translation_x = 0;
+ this.translation_y = 0;
if (onComplete)
onComplete();
}
@@ -477,11 +473,15 @@ var BoxPointer = GObject.registerClass({
_reposition() {
let sourceActor = this._sourceActor;
let alignment = this._arrowAlignment;
+ let monitorIndex = Main.layoutManager.findIndexForActor(sourceActor);
+
+ this._sourceAllocation = Shell.util_get_transformed_allocation(sourceActor);
+ this._workArea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex);
// Position correctly relative to the sourceActor
let sourceNode = sourceActor.get_theme_node();
let sourceContentBox = sourceNode.get_content_box(sourceActor.get_allocation_box());
- let sourceAllocation = Shell.util_get_transformed_allocation(sourceActor);
+ let sourceAllocation = this._sourceAllocation;
let sourceCenterX = sourceAllocation.x1 + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) * this._sourceAlignment;
let sourceCenterY = sourceAllocation.y1 + sourceContentBox.y1 + (sourceContentBox.y2 - sourceContentBox.y1) * this._sourceAlignment;
let [minWidth, minHeight, natWidth, natHeight] = this.get_preferred_size();
@@ -489,8 +489,7 @@ var BoxPointer = GObject.registerClass({
// We also want to keep it onscreen, and separated from the
// edge by the same distance as the main part of the box is
// separated from its sourceActor
- let monitorIndex = Main.layoutManager.findIndexForActor(sourceActor);
- let workarea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex);
+ let workarea = this._workArea;
let themeNode = this.get_theme_node();
let borderWidth = themeNode.get_length('-arrow-border-width');
let arrowBase = themeNode.get_length('-arrow-base');
@@ -584,9 +583,9 @@ var BoxPointer = GObject.registerClass({
parent = parent.get_parent();
}
- this._xPosition = Math.floor(x);
- this._yPosition = Math.floor(y);
- this._shiftActor();
+ // Actually set the position
+ this.x = Math.floor(x);
+ this.y = Math.floor(y);
}
// @origin: Coordinate specifying middle of the arrow, along
@@ -609,25 +608,10 @@ var BoxPointer = GObject.registerClass({
}
}
- _shiftActor() {
- // Since the position of the BoxPointer depends on the allocated size
- // of the BoxPointer and the position of the source actor, trying
- // to position the BoxPointer via the x/y properties will result in
- // allocation loops and warnings. Instead we do the positioning via
- // the anchor point, which is independent of allocation, and leave
- // x == y == 0.
- this.set_anchor_point(-(this._xPosition + this._xOffset),
- -(this._yPosition + this._yOffset));
- }
-
_calculateArrowSide(arrowSide) {
- let sourceAllocation = Shell.util_get_transformed_allocation(this._sourceActor);
+ let sourceAllocation = this._sourceAllocation;
let [minWidth, minHeight, boxWidth, boxHeight] = this.get_preferred_size();
- let monitorActor = this.sourceActor;
- if (!monitorActor)
- monitorActor = this;
- let monitorIndex = Main.layoutManager.findIndexForActor(monitorActor);
- let workarea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex);
+ let workarea = this._workArea;
switch (arrowSide) {
case St.Side.TOP:
@@ -669,24 +653,6 @@ var BoxPointer = GObject.registerClass({
}
}
- set xOffset(offset) {
- this._xOffset = offset;
- this._shiftActor();
- }
-
- get xOffset() {
- return this._xOffset;
- }
-
- set yOffset(offset) {
- this._yOffset = offset;
- this._shiftActor();
- }
-
- get yOffset() {
- return this._yOffset;
- }
-
updateArrowSide(side) {
this._arrowSide = side;
this._border.queue_repaint();
diff --git a/js/ui/dash.js b/js/ui/dash.js
index e60cdd8..6b5aeff 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -584,22 +584,18 @@ var Dash = class Dash {
let firstButton = iconChildren[0].child;
let firstIcon = firstButton._delegate.icon;
- let minHeight, natHeight;
- let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
-
- // Enforce the current icon size during the size request
+ // Enforce valid spacings during the size request
firstIcon.icon.ensure_style();
- let [, currentHeight] = firstIcon.icon.get_size();
- firstIcon.icon.set_height(this.iconSize * scaleFactor);
- [minHeight, natHeight] = firstButton.get_preferred_height(-1);
- firstIcon.icon.set_height(currentHeight);
+ let [, iconHeight] = firstIcon.icon.get_preferred_height(-1);
+ let [, buttonHeight] = firstButton.get_preferred_height(-1);
// Subtract icon padding and box spacing from the available height
- availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
+ availHeight -= iconChildren.length * (buttonHeight - iconHeight) +
(iconChildren.length - 1) * spacing;
let availSize = availHeight / iconChildren.length;
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
let iconSizes = baseIconSizes.map(s => s * scaleFactor);
let newIconSize = baseIconSizes[0];
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 697d6fb..fb32fbb 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -136,11 +136,12 @@ var WorldClocksSection = class WorldClocksSection {
layout.attach(header, 0, 0, 2, 1);
this.actor.label_actor = header;
+ let localOffset = GLib.DateTime.new_now_local().get_utc_offset();
+
for (let i = 0; i < this._locations.length; i++) {
let l = this._locations[i].location;
- let name = l.get_level() == GWeather.LocationLevel.NAMED_TIMEZONE ? l.get_name()
- : l.get_city_name();
+ let name = l.get_city_name() || l.get_name();
let label = new St.Label({ style_class: 'world-clocks-city',
text: name,
x_align: Clutter.ActorAlign.START,
@@ -149,7 +150,8 @@ var WorldClocksSection = class WorldClocksSection {
let time = new St.Label({ style_class: 'world-clocks-time' });
- let offset = l.get_timezone().get_offset() / 60.;
+ let otherOffset = this._getTimeAtLocation(l).get_utc_offset();
+ let offset = (otherOffset - localOffset) / GLib.TIME_SPAN_HOUR;
let fmt = (Math.trunc(offset) == offset) ? '%s%.0f' : '%s%.1f';
let prefix = (offset >= 0) ? '+' : '-';
let tz = new St.Label({ style_class: 'world-clocks-timezone',
@@ -182,11 +184,15 @@ var WorldClocksSection = class WorldClocksSection {
}
}
+ _getTimeAtLocation(location) {
+ let tz = GLib.TimeZone.new(location.get_timezone().get_tzid());
+ return GLib.DateTime.new_now(tz);
+ }
+
_updateLabels() {
for (let i = 0; i < this._locations.length; i++) {
let l = this._locations[i];
- let tz = GLib.TimeZone.new(l.location.get_timezone().get_tzid());
- let now = GLib.DateTime.new_now(tz);
+ let now = this._getTimeAtLocation(l.location);
l.actor.text = Util.formatTime(now, { timeOnly: true });
}
}
diff --git a/js/ui/layout.js b/js/ui/layout.js
index e3c93a9..30e750d 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -252,7 +252,7 @@ var LayoutManager = GObject.registerClass({
// A dummy actor that tracks the mouse or text cursor, based on the
// position and size set in setDummyCursorGeometry.
- this.dummyCursor = new St.Widget({ width: 0, height: 0, visible: false });
+ this.dummyCursor = new St.Widget({ width: 0, height: 0, opacity: 0 });
this.uiGroup.add_actor(this.dummyCursor);
global.stage.remove_actor(global.top_window_group);
diff --git a/js/ui/osdMonitorLabeler.js b/js/ui/osdMonitorLabeler.js
index 55b4d3c..62feace 100644
--- a/js/ui/osdMonitorLabeler.js
+++ b/js/ui/osdMonitorLabeler.js
@@ -95,28 +95,6 @@ var OsdMonitorLabeler = class {
this._reset();
- for (let id in params) {
- let monitor = this._monitorManager.get_monitor_for_output(id);
- if (monitor == -1)
- continue;
- this._monitorLabels.get(monitor).push(params[id].deep_unpack());
- }
-
- // In mirrored display setups, more than one physical outputs
- // might be showing the same logical monitor. In that case, we
- // join each output's labels on the same OSD widget.
- for (let [monitor, labels] of this._monitorLabels.entries()) {
- labels.sort();
- this._osdLabels.push(new OsdMonitorLabel(monitor, labels.join(' ')));
- }
- }
-
- show2(client, params) {
- if (!this._trackClient(client))
- return;
-
- this._reset();
-
for (let connector in params) {
let monitor = this._monitorManager.get_monitor_for_connector(connector);
if (monitor == -1)
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 0f052d3..36e16d3 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const { Atk, Clutter, Gio, GLib, GObject, Gtk, Meta, Shell, St } = imports.gi;
+const { Atk, Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Cairo = imports.cairo;
const Mainloop = imports.mainloop;
@@ -201,7 +201,6 @@ var AppMenuButton = GObject.registerClass({
this._startingApps = [];
this._menuManager = panel.menuManager;
- this._gtkSettings = Gtk.Settings.get_default();
this._targetApp = null;
this._busyNotifyId = 0;
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index 283934c..4481853 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -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);
}
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
index 9261535..c6896ff 100644
--- a/js/ui/screenshot.js
+++ b/js/ui/screenshot.js
@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const { Clutter, Gio, GLib, Gtk, Meta, Shell, St } = imports.gi;
+const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
const Signals = imports.signals;
const GrabHelper = imports.ui.grabHelper;
@@ -227,8 +227,6 @@ var SelectArea = class {
this._lastY = 0;
this._result = null;
- this._initRubberbandColors();
-
this._group = new St.Widget({ visible: false,
reactive: true,
x: 0,
@@ -248,10 +246,10 @@ var SelectArea = class {
coordinate: Clutter.BindCoordinate.ALL });
this._group.add_constraint(constraint);
- this._rubberband = new Clutter.Rectangle({ color: this._background,
- has_border: true,
- border_width: 1,
- border_color: this._border });
+ this._rubberband = new St.Widget({
+ style_class: 'select-area-rubberband',
+ visible: false
+ });
this._group.add_actor(this._rubberband);
}
@@ -265,25 +263,6 @@ var SelectArea = class {
this._group.visible = true;
}
- _initRubberbandColors() {
- function colorFromRGBA(rgba) {
- return new Clutter.Color({ red: rgba.red * 255,
- green: rgba.green * 255,
- blue: rgba.blue * 255,
- alpha: rgba.alpha * 255 });
- }
-
- let path = new Gtk.WidgetPath();
- path.append_type(Gtk.IconView);
-
- let context = new Gtk.StyleContext();
- context.set_path(path);
- context.add_class('rubberband');
-
- this._background = colorFromRGBA(context.get_background_color(Gtk.StateFlags.NORMAL));
- this._border = colorFromRGBA(context.get_border_color(Gtk.StateFlags.NORMAL));
- }
-
_getGeometry() {
return { x: Math.min(this._startX, this._lastX),
y: Math.min(this._startY, this._lastY),
@@ -302,6 +281,7 @@ var SelectArea = class {
this._rubberband.set_position(geometry.x, geometry.y);
this._rubberband.set_size(geometry.width, geometry.height);
+ this._rubberband.show();
return Clutter.EVENT_PROPAGATE;
}
diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js
index 469a6c7..19d07ac 100644
--- a/js/ui/shellDBus.js
+++ b/js/ui/shellDBus.js
@@ -79,14 +79,17 @@ var GnomeShell = class {
for (let param in params)
params[param] = params[param].deep_unpack();
- let { monitor: monitorIndex,
+ let { connector,
label,
level,
max_level: maxLevel,
icon: serializedIcon } = params;
- if (monitorIndex === undefined)
- monitorIndex = -1;
+ let monitorIndex = -1;
+ if (connector) {
+ let monitorManager = Meta.MonitorManager.get();
+ monitorIndex = monitorManager.get_monitor_for_connector(connector);
+ }
let icon = null;
if (serializedIcon)
@@ -203,16 +206,10 @@ var GnomeShell = class {
this._grabbers.delete(name);
}
- ShowMonitorLabelsAsync(params, invocation) {
- let sender = invocation.get_sender();
- let [dict] = params;
- Main.osdMonitorLabeler.show(sender, dict);
- }
-
ShowMonitorLabels2Async(params, invocation) {
let sender = invocation.get_sender();
let [dict] = params;
- Main.osdMonitorLabeler.show2(sender, dict);
+ Main.osdMonitorLabeler.show(sender, dict);
}
HideMonitorLabelsAsync(params, invocation) {
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index ea9493d..b9f5fef 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -456,13 +456,28 @@ var TilePreview = class {
};
var TouchpadWorkspaceSwitchAction = class {
- constructor(actor) {
+ constructor(actor, allowedModes) {
+ this._allowedModes = allowedModes;
this._dx = 0;
this._dy = 0;
+ this._enabled = true;
actor.connect('captured-event', this._handleEvent.bind(this));
this._touchpadSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.peripherals.touchpad'});
}
+ get enabled() {
+ return this._enabled;
+ }
+
+ set enabled(enabled) {
+ if (this._enabled == enabled)
+ return;
+
+ this._enabled = enabled;
+ if (!enabled)
+ this.emit('cancel');
+ }
+
_checkActivated() {
let dir;
@@ -482,15 +497,16 @@ var TouchpadWorkspaceSwitchAction = class {
}
_handleEvent(actor, event) {
- let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
-
if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE)
return Clutter.EVENT_PROPAGATE;
if (event.get_touchpad_gesture_finger_count() != 4)
return Clutter.EVENT_PROPAGATE;
- if ((allowedModes & Main.actionMode) == 0)
+ if ((this._allowedModes & Main.actionMode) == 0)
+ return Clutter.EVENT_PROPAGATE;
+
+ if (!this._enabled)
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
@@ -523,10 +539,11 @@ var WorkspaceSwitchAction = GObject.registerClass({
'motion': { param_types: [GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },
'cancel': { param_types: [] }},
}, class WorkspaceSwitchAction extends Clutter.SwipeAction {
- _init() {
+ _init(allowedModes) {
super._init();
this.set_n_touch_points(4);
this._swept = false;
+ this._allowedModes = allowedModes;
global.display.connect('grab-op-begin', () => {
this.cancel();
@@ -534,14 +551,12 @@ var WorkspaceSwitchAction = GObject.registerClass({
}
vfunc_gesture_prepare(actor) {
- let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
-
this._swept = false;
if (!super.vfunc_gesture_prepare(actor))
return false;
- return (allowedModes & Main.actionMode);
+ return (this._allowedModes & Main.actionMode);
}
vfunc_gesture_progress(actor) {
@@ -1043,14 +1058,15 @@ var WindowManager = class {
global.workspace_manager.override_workspace_layout(Meta.DisplayCorner.TOPLEFT,
false, -1, 1);
- let gesture = new WorkspaceSwitchAction();
+ let allowedModes = Shell.ActionMode.NORMAL;
+ let gesture = new WorkspaceSwitchAction(allowedModes);
gesture.connect('motion', this._switchWorkspaceMotion.bind(this));
gesture.connect('activated', this._actionSwitchWorkspace.bind(this));
gesture.connect('cancel', this._switchWorkspaceCancel.bind(this));
global.stage.add_action(gesture);
// This is not a normal Clutter.GestureAction, doesn't need add_action()
- gesture = new TouchpadWorkspaceSwitchAction(global.stage);
+ gesture = new TouchpadWorkspaceSwitchAction(global.stage, allowedModes);
gesture.connect('motion', this._switchWorkspaceMotion.bind(this));
gesture.connect('activated', this._actionSwitchWorkspace.bind(this));
gesture.connect('cancel', this._switchWorkspaceCancel.bind(this));
@@ -1202,6 +1218,10 @@ var WindowManager = class {
// Same for OR windows
if (window.is_override_redirect())
return;
+ // Sticky windows don't need moving, in fact moving would
+ // unstick them
+ if (window.on_all_workspaces)
+ return;
// Windows on workspaces below pos don't need moving
let index = window.get_workspace().index();
if (index < pos)
@@ -1468,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) {
@@ -1530,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;
}
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index d2557a4..f631781 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -1,10 +1,11 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const { Clutter, Gio, GObject, Meta, St } = imports.gi;
+const { Clutter, Gio, GObject, Meta, Shell, St } = imports.gi;
const Signals = imports.signals;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
+const WindowManager = imports.ui.windowManager;
const Workspace = imports.ui.workspace;
var WORKSPACE_SWITCH_TIME = 0.25;
@@ -82,6 +83,7 @@ var WorkspacesView = class extends WorkspacesViewBase {
this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling
+ this._gestureActive = false; // touch(pad) gestures
this._animatingScroll = false; // programatically updating the adjustment
let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
@@ -211,7 +213,7 @@ var WorkspacesView = class extends WorkspacesViewBase {
for (let w = 0; w < this._workspaces.length; w++) {
let workspace = this._workspaces[w];
- if (this._animating || this._scrolling) {
+ if (this._animating || this._scrolling || this._gestureActive) {
workspace.actor.show();
} else {
if (this._inDrag)
@@ -223,7 +225,7 @@ var WorkspacesView = class extends WorkspacesViewBase {
}
_updateScrollAdjustment(index) {
- if (this._scrolling)
+ if (this._scrolling || this._gestureActive)
return;
this._animatingScroll = true;
@@ -300,6 +302,18 @@ var WorkspacesView = class extends WorkspacesViewBase {
this._updateVisibility();
}
+ startTouchGesture() {
+ this._gestureActive = true;
+ }
+
+ endTouchGesture() {
+ this._gestureActive = false;
+
+ // Make sure title captions etc are shown as necessary
+ this._scrollToActive();
+ this._updateVisibility();
+ }
+
// sync the workspaces' positions to the value of the scroll adjustment
// and change the active workspace if appropriate
_onScroll(adj) {
@@ -310,7 +324,7 @@ var WorkspacesView = class extends WorkspacesViewBase {
let active = workspaceManager.get_active_workspace_index();
let current = Math.round(adj.value);
- if (active != current) {
+ if (active != current && !this._gestureActive) {
if (!this._workspaces[current]) {
// The current workspace was destroyed. This could happen
// when you are on the last empty workspace, and consolidate
@@ -391,6 +405,12 @@ var ExtraWorkspaceView = class extends WorkspacesViewBase {
endSwipeScroll() {
}
+
+ startTouchGesture() {
+ }
+
+ endTouchGesture() {
+ }
};
var DelegateFocusNavigator = GObject.registerClass(
@@ -430,23 +450,37 @@ var WorkspacesDisplay = class {
return false;
}
- for (let i = 0; i < this._workspacesViews.length; i++)
- this._workspacesViews[i].startSwipeScroll();
+ this._startSwipeScroll();
return true;
});
panAction.connect('gesture-cancel', () => {
clickAction.release();
- for (let i = 0; i < this._workspacesViews.length; i++)
- this._workspacesViews[i].endSwipeScroll();
+ this._endSwipeScroll();
});
panAction.connect('gesture-end', () => {
clickAction.release();
- for (let i = 0; i < this._workspacesViews.length; i++)
- this._workspacesViews[i].endSwipeScroll();
+ this._endSwipeScroll();
});
Main.overview.addAction(panAction);
this.actor.bind_property('mapped', panAction, 'enabled', GObject.BindingFlags.SYNC_CREATE);
+ let allowedModes = Shell.ActionMode.OVERVIEW;
+ let switchGesture = new WindowManager.WorkspaceSwitchAction(allowedModes);
+ switchGesture.connect('motion', this._onSwitchWorkspaceMotion.bind(this));
+ switchGesture.connect('activated', this._onSwitchWorkspaceActivated.bind(this));
+ switchGesture.connect('cancel', this._endTouchGesture.bind(this));
+ Main.overview.addAction(switchGesture);
+ this.actor.bind_property('mapped', switchGesture, 'enabled', GObject.BindingFlags.SYNC_CREATE);
+
+ switchGesture = new WindowManager.TouchpadWorkspaceSwitchAction(global.stage, allowedModes);
+ switchGesture.connect('motion', this._onSwitchWorkspaceMotion.bind(this));
+ switchGesture.connect('activated', this._onSwitchWorkspaceActivated.bind(this));
+ switchGesture.connect('cancel', this._endTouchGesture.bind(this));
+ this.actor.connect('notify::mapped', () => {
+ switchGesture.enabled = this.actor.mapped;
+ });
+ switchGesture.enabled = this.actor.mapped;
+
this._primaryIndex = Main.layoutManager.primaryIndex;
this._workspacesViews = [];
@@ -474,6 +508,47 @@ var WorkspacesDisplay = class {
return false;
}
+ _startSwipeScroll() {
+ for (let i = 0; i < this._workspacesViews.length; i++)
+ this._workspacesViews[i].startSwipeScroll();
+ }
+
+ _endSwipeScroll() {
+ for (let i = 0; i < this._workspacesViews.length; i++)
+ this._workspacesViews[i].endSwipeScroll();
+ }
+
+ _startTouchGesture() {
+ for (let i = 0; i < this._workspacesViews.length; i++)
+ this._workspacesViews[i].startTouchGesture();
+ }
+
+ _endTouchGesture() {
+ for (let i = 0; i < this._workspacesViews.length; i++)
+ this._workspacesViews[i].endTouchGesture();
+ }
+
+ _onSwitchWorkspaceMotion(action, xRel, yRel) {
+ // We don't have a way to hook into start of touchpad actions,
+ // luckily this is safe to call repeatedly.
+ this._startTouchGesture();
+
+ let workspaceManager = global.workspace_manager;
+ let active = workspaceManager.get_active_workspace_index();
+ let adjustment = this._scrollAdjustment;
+ adjustment.value = (active - yRel / this.actor.height) * adjustment.page_size;
+ }
+
+ _onSwitchWorkspaceActivated(action, direction) {
+ let workspaceManager = global.workspace_manager;
+ let activeWorkspace = workspaceManager.get_active_workspace();
+ let newWs = activeWorkspace.get_neighbor(direction);
+ if (newWs != activeWorkspace)
+ newWs.activate(global.get_current_time());
+
+ this._endTouchGesture();
+ }
+
navigateFocus(from, direction) {
return this._getPrimaryView().actor.navigate_focus(from, direction, false);
}
diff --git a/meson.build b/meson.build
index e42611e..e3500d4 100644
--- a/meson.build
+++ b/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+'
)
diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c
index c05ca78..8a6ebf0 100644
--- a/src/st/st-theme-node.c
+++ b/src/st/st-theme-node.c
@@ -1136,10 +1136,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;
}
--
ubuntu-desktop mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop