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) <ma...@ubuntu.com> 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 <bi...@debian.org> 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 ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop