Merge ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic into ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic

Proposed by Marco Trevisan (Treviño)
Status: Merged
Merged at revision: 752ea7cc7af0457f2069ed21dfc039a00f1bdcd9
Proposed branch: ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic
Merge into: ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic
Diff against target: 778 lines (+159/-94)
15 files modified
NEWS (+27/-0)
debian/changelog (+12/-11)
debian/control (+3/-2)
debian/control.in (+3/-2)
debian/patches/js-fix-invalid-access-errors.patch (+13/-13)
debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch (+1/-1)
debian/patches/series (+0/-4)
debian/watch (+1/-1)
dev/null (+0/-47)
js/ui/closeDialog.js (+65/-3)
js/ui/dialog.js (+1/-1)
js/ui/dnd.js (+10/-0)
js/ui/windowManager.js (+10/-2)
meson.build (+1/-1)
src/st/st-adjustment.c (+12/-6)
Reviewer Review Type Date Requested Status
Ubuntu Desktop Pending
Review via email: mp+367674@code.launchpad.net

Description of the change

Re-update the changelog as per upstream 3.28.4 version, not major changes a part from patches removal.

I didn't added a new changelog entry as still not SRU'ed, so if we beat release team...

--

I assume pristine-tar and upstream/3.28.x merged in salsa, otherwise get them from my lp repo

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/NEWS b/NEWS
index 6e2b0f9..accf3d0 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,30 @@
13.28.4
2======
3* Fix wrong window positions in overview on wayland [Marco; #776588]
4* overview: Fix handling of confirmation dialogs on wayland [verdre; !180]
5* Avoid some full relayout/redraws [Carlos; !197]
6* Keep workspace switcher slid out when workspaces are in use [Florian; !161]
7* Cancel search on overview hiding [Marco; !205]
8* Fix disappearing network icon [Iain; #140]
9* Improve performance of app icon animations [Daniel; !253]
10* notifications: Support icon theme names in 'image-path' hint [Marco; !285]
11* Avoid focus changes when updating keyboard options [Takao; #391]
12* Fix unresponsive-app dialog blocking input in other windows [Florian; #273]
13* Fix ellipsization in dialog subtitles/bodies [Marco; !531]
14* Misc. bug fixes [Marco, Andrea, Florian, Jasper, Sam, verdre, Jonas,
15 Cosimo, Carlos; #792681, #372, !112, !162, #414, #663461, #788882, #787260,
16 !188, #791233, #602, #632, !305, !286, !314, #781, #693, #618, #430, #799,
17 #783, !293, #298, #1015, #539, #1270]
18
19Contributors:
20 Jonas Ådahl, Andrea Azzarone, Cosimo Cecchi, Takao Fujiwara, Carlos Garnacho,
21 Iain Lane, Florian Müllner, Georges Basile Stavracas Neto, Jasper St. Pierre,
22 Sam Spilsbury, Ray Strode, Will Thompson, Marco Trevisan (Treviño), verdre,
23 Daniel van Vugt
24
25Translators:
26 Marek Černocký [cs]
27
13.28.3283.28.3
2======29======
3* Fix lagging pointer when zoomed [Daniel; #682013]30* Fix lagging pointer when zoomed [Daniel; #682013]
diff --git a/debian/changelog b/debian/changelog
index 57eb92d..1e6d367 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,20 +1,21 @@
1gnome-shell (3.28.3+git20190124-0ubuntu18.04.3) bionic; urgency=medium1gnome-shell (3.28.4-0ubuntu18.04.1) bionic; urgency=medium
22
3 * New upstream stable release
4 - Fix ellipsization in dialog subtitles/bodies (LP: #1809788)
5 - dnd: Only handle touch events in wayland (LP: #1817020)
6 - windowManager: listen actively to windows being destroyed during WS switch
7 (LP: #1812527)
8 - Fix unresponsive-app dialog blocking input in other windows (LP: #1740869)
9 - Fix regression on missing spread animation (LP: #1827284)
10 * d/p/js-fix-invalid-access-errors.patch,
11 d/p/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch:
12 - Refreshed
3 * d/p/switchMonitor-switch-to-next-config-upon-initial-keypress.patch13 * d/p/switchMonitor-switch-to-next-config-upon-initial-keypress.patch
4 - Ensure switch display mode is cyclic (LP: #1772811)14 - Ensure switch display mode is cyclic (LP: #1772811)
5 * debian/control:15 * debian/control:
6 - Depends on mutter 3.28.3+git20190124-0ubuntu18.04.316 - Depends on mutter 3.28.4-0ubuntu18.04.1
7 * d/p/dnd-Only-handle-touch-events-in-wayland.patch:
8 - dnd: Only handle touch events in wayland (LP: #1817020)
9 * d/p/st-widget-Add-missing-g_return_val_if_fail.patch:17 * d/p/st-widget-Add-missing-g_return_val_if_fail.patch:
10 - st-widget: Protect from NULL obj in get_theme_node (LP: #1796606)18 - st-widget: Protect from NULL obj in get_theme_node (LP: #1796606)
11 * d/p/windowManager-listen-actively-to-windows-being-destroyed-.patch:
12 - windowManager: listen actively to windows being destroyed during WS switch
13 (LP: #1812527)
14 * d/p/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch:
15 - Really set ellipsize mode in subtitle and body (LP: #1809788)
16 * d/p/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch:
17 - Fix regression on missing spread animation (LP: #1827284)
1819
19 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Fri, 10 May 2019 11:43:10 +010020 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Fri, 10 May 2019 11:43:10 +0100
2021
diff --git a/debian/control b/debian/control
index 7b29d44..5d292d1 100644
--- a/debian/control
+++ b/debian/control
@@ -2,6 +2,7 @@
2#2#
3# Modifications should be made to debian/control.in instead.3# Modifications should be made to debian/control.in instead.
4# This file is regenerated automatically in the clean target.4# This file is regenerated automatically in the clean target.
5
5Source: gnome-shell6Source: gnome-shell
6Section: gnome7Section: gnome
7Priority: optional8Priority: optional
@@ -83,7 +84,7 @@ Depends: ${gir:Depends},
83 gir1.2-gtk-3.0 (>= 3.16),84 gir1.2-gtk-3.0 (>= 3.16),
84 gir1.2-gweather-3.0,85 gir1.2-gweather-3.0,
85 gir1.2-ibus-1.0 (>= 1.5.2),86 gir1.2-ibus-1.0 (>= 1.5.2),
86 gir1.2-mutter-2 (>= 3.28.3+git20190124-0ubuntu18.04.3),87 gir1.2-mutter-2 (>= 3.28.4-0ubuntu18.04.1),
87 gir1.2-nm-1.0 [linux-any],88 gir1.2-nm-1.0 [linux-any],
88 gir1.2-nma-1.0 [linux-any],89 gir1.2-nma-1.0 [linux-any],
89 gir1.2-pango-1.0,90 gir1.2-pango-1.0,
@@ -96,7 +97,7 @@ Depends: ${gir:Depends},
96 gnome-shell-common (= ${source:Version}),97 gnome-shell-common (= ${source:Version}),
97 ubuntu-wallpapers,98 ubuntu-wallpapers,
98 gsettings-desktop-schemas (>= 3.21.3),99 gsettings-desktop-schemas (>= 3.21.3),
99 mutter (>= 3.28.3+git20190124-0ubuntu18.04.3),100 mutter (>= 3.28.4-0ubuntu18.04.1),
100 python3,101 python3,
101 libglib2.0-bin (>= 2.53.0),102 libglib2.0-bin (>= 2.53.0),
102Recommends: xserver-xorg-legacy,103Recommends: xserver-xorg-legacy,
diff --git a/debian/control.in b/debian/control.in
index 0b0bb20..c4e7d42 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -1,3 +1,4 @@
1
1Source: gnome-shell2Source: gnome-shell
2Section: gnome3Section: gnome
3Priority: optional4Priority: optional
@@ -79,7 +80,7 @@ Depends: ${gir:Depends},
79 gir1.2-gtk-3.0 (>= 3.16),80 gir1.2-gtk-3.0 (>= 3.16),
80 gir1.2-gweather-3.0,81 gir1.2-gweather-3.0,
81 gir1.2-ibus-1.0 (>= 1.5.2),82 gir1.2-ibus-1.0 (>= 1.5.2),
82 gir1.2-mutter-2 (>= 3.28.3+git20190124-0ubuntu18.04.3),83 gir1.2-mutter-2 (>= 3.28.4-0ubuntu18.04.1),
83 gir1.2-nm-1.0 [linux-any],84 gir1.2-nm-1.0 [linux-any],
84 gir1.2-nma-1.0 [linux-any],85 gir1.2-nma-1.0 [linux-any],
85 gir1.2-pango-1.0,86 gir1.2-pango-1.0,
@@ -92,7 +93,7 @@ Depends: ${gir:Depends},
92 gnome-shell-common (= ${source:Version}),93 gnome-shell-common (= ${source:Version}),
93 ubuntu-wallpapers,94 ubuntu-wallpapers,
94 gsettings-desktop-schemas (>= 3.21.3),95 gsettings-desktop-schemas (>= 3.21.3),
95 mutter (>= 3.28.3+git20190124-0ubuntu18.04.3),96 mutter (>= 3.28.4-0ubuntu18.04.1),
96 python3,97 python3,
97 libglib2.0-bin (>= 2.53.0),98 libglib2.0-bin (>= 2.53.0),
98Recommends: xserver-xorg-legacy,99Recommends: xserver-xorg-legacy,
diff --git a/debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch b/debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch
99deleted file mode 100644100deleted file mode 100644
index 9f1787e..0000000
--- a/debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Fri, 3 May 2019 15:27:13 -0500
3Subject: dialog: Really set ellipsize mode in subtitle and body
4
5Dialog's subtitle or body could not be properly wrapped, while it's ellipsized
6when the text's width doesn't exceed the container size.
7
8Clutter text has an `ellipsize` property, however in dialog's subtitle and body
9we have been setting the `ellipsize-mode` property to Pango.EllipsizeMode.NONE
10that is not present in the underlying GObject.
11
12Not being an error in javascript, gjs didn't warn us about this, while at the
13same time the St.Label's default Pango.EllipsizeMode.END was used.
14
15Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/922
16
17https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/531
18
19(cherry picked from commit 3121c9aa29406ad85e949b697e90092f1fa6fc2e)
20
21Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/5703a25e
22Bug-Ubuntu: https://bugs.launchpad.net/oem-priority/+bug/1809788
23Applied: 3.28.4
24---
25 js/ui/dialog.js | 2 +-
26 1 file changed, 1 insertion(+), 1 deletion(-)
27
28diff --git a/js/ui/dialog.js b/js/ui/dialog.js
29index 89db963..3377957 100644
30--- a/js/ui/dialog.js
31+++ b/js/ui/dialog.js
32@@ -185,7 +185,7 @@ var MessageDialogContent = new Lang.Class({
33 this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
34 });
35
36- let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE,
37+ let textProps = { ellipsize: Pango.EllipsizeMode.NONE,
38 line_wrap: true };
39 Object.assign(this._subtitle.clutter_text, textProps);
40 Object.assign(this._body.clutter_text, textProps);
diff --git a/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch b/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch
41deleted file mode 1006440deleted file mode 100644
index adb0ad8..0000000
--- a/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1From: Andrea Azzarone <andrea.azzarone@canonical.com>
2Date: Mon, 4 Mar 2019 16:14:22 +0000
3Subject: dnd: Only handle touch events in wayland
4
5There are serveral issues around touch passive grab and touch/pointer doubly
6handling to use these on X11, so we stick to single-touch/pointer there.
7
8Cherry picked from commit 60ccdc2deb746c0d96b0268ee5034b65478ce779
9
10Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1015
11
12Ubuntu-Bug: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1817020
13GNOME-Bug: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1015
14Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/457
15Applied-Upstream: 3.28.4
16---
17 js/ui/dnd.js | 10 ++++++++++
18 1 file changed, 10 insertions(+)
19
20diff --git a/js/ui/dnd.js b/js/ui/dnd.js
21index 9e961a1..af7a27a 100644
22--- a/js/ui/dnd.js
23+++ b/js/ui/dnd.js
24@@ -132,6 +132,16 @@ var _Draggable = new Lang.Class({
25 },
26
27 _onTouchEvent(actor, event) {
28+ // Here we only handle touch events on wayland. On X11
29+ // we do get emulated pointer events, which already works
30+ // for single-touch cases. Besides, the X11 passive touch grab
31+ // set up by Mutter will make us see first the touch events
32+ // and later the pointer events, so it will look like two
33+ // unrelated series of events, we want to avoid double handling
34+ // in these cases.
35+ if (!Meta.is_wayland_compositor())
36+ return Clutter.EVENT_PROPAGATE;
37+
38 if (event.type() != Clutter.EventType.TOUCH_BEGIN ||
39 !global.display.is_pointer_emulating_sequence(event.get_event_sequence()))
40 return Clutter.EVENT_PROPAGATE;
diff --git a/debian/patches/js-fix-invalid-access-errors.patch b/debian/patches/js-fix-invalid-access-errors.patch
index 782ee1f..3855752 100644
--- a/debian/patches/js-fix-invalid-access-errors.patch
+++ b/debian/patches/js-fix-invalid-access-errors.patch
@@ -33,7 +33,7 @@ Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/4
33 2 files changed, 89 insertions(+), 39 deletions(-)33 2 files changed, 89 insertions(+), 39 deletions(-)
3434
35diff --git a/js/ui/dnd.js b/js/ui/dnd.js35diff --git a/js/ui/dnd.js b/js/ui/dnd.js
36index ec1ba1d..9e961a1 10064436index a36b1f6..af7a27a 100644
37--- a/js/ui/dnd.js37--- a/js/ui/dnd.js
38+++ b/js/ui/dnd.js38+++ b/js/ui/dnd.js
39@@ -27,6 +27,12 @@ var DragMotionResult = {39@@ -27,6 +27,12 @@ var DragMotionResult = {
@@ -75,7 +75,7 @@ index ec1ba1d..9e961a1 100644
75 this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting).75 this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting).
76 this._dragCancellable = true;76 this._dragCancellable = true;
77 77
78@@ -206,9 +213,10 @@ var _Draggable = new Lang.Class({78@@ -216,9 +223,10 @@ var _Draggable = new Lang.Class({
79 (event.type() == Clutter.EventType.TOUCH_END &&79 (event.type() == Clutter.EventType.TOUCH_END &&
80 global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {80 global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {
81 this._buttonDown = false;81 this._buttonDown = false;
@@ -88,7 +88,7 @@ index ec1ba1d..9e961a1 100644
88 // Drag must have been cancelled with Esc.88 // Drag must have been cancelled with Esc.
89 this._dragComplete();89 this._dragComplete();
90 return Clutter.EVENT_STOP;90 return Clutter.EVENT_STOP;
91@@ -222,14 +230,14 @@ var _Draggable = new Lang.Class({91@@ -232,14 +240,14 @@ var _Draggable = new Lang.Class({
92 } else if (event.type() == Clutter.EventType.MOTION ||92 } else if (event.type() == Clutter.EventType.MOTION ||
93 (event.type() == Clutter.EventType.TOUCH_UPDATE &&93 (event.type() == Clutter.EventType.TOUCH_UPDATE &&
94 global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {94 global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {
@@ -106,7 +106,7 @@ index ec1ba1d..9e961a1 100644
106 let symbol = event.get_key_symbol();106 let symbol = event.get_key_symbol();
107 if (symbol == Clutter.Escape) {107 if (symbol == Clutter.Escape) {
108 this._cancelDrag(event.get_time());108 this._cancelDrag(event.get_time());
109@@ -265,7 +273,7 @@ var _Draggable = new Lang.Class({109@@ -275,7 +283,7 @@ var _Draggable = new Lang.Class({
110 */110 */
111 startDrag(stageX, stageY, time, sequence) {111 startDrag(stageX, stageY, time, sequence) {
112 currentDraggable = this;112 currentDraggable = this;
@@ -115,7 +115,7 @@ index ec1ba1d..9e961a1 100644
115 115
116 // Special-case St.Button: the pointer grab messes with the internal116 // Special-case St.Button: the pointer grab messes with the internal
117 // state, so force a reset to a reasonable state here117 // state, so force a reset to a reasonable state here
118@@ -342,6 +350,13 @@ var _Draggable = new Lang.Class({118@@ -352,6 +360,13 @@ var _Draggable = new Lang.Class({
119 Shell.util_set_hidden_from_pick(this._dragActor, true);119 Shell.util_set_hidden_from_pick(this._dragActor, true);
120 }120 }
121 121
@@ -129,7 +129,7 @@ index ec1ba1d..9e961a1 100644
129 this._dragOrigOpacity = this._dragActor.opacity;129 this._dragOrigOpacity = this._dragActor.opacity;
130 if (this._dragActorOpacity != undefined)130 if (this._dragActorOpacity != undefined)
131 this._dragActor.opacity = this._dragActorOpacity;131 this._dragActor.opacity = this._dragActorOpacity;
132@@ -518,7 +533,7 @@ var _Draggable = new Lang.Class({132@@ -528,7 +543,7 @@ var _Draggable = new Lang.Class({
133 event.get_time())) {133 event.get_time())) {
134 // If it accepted the drop without taking the actor,134 // If it accepted the drop without taking the actor,
135 // handle it ourselves.135 // handle it ourselves.
@@ -138,7 +138,7 @@ index ec1ba1d..9e961a1 100644
138 if (this._restoreOnSuccess) {138 if (this._restoreOnSuccess) {
139 this._restoreDragActor(event.get_time());139 this._restoreDragActor(event.get_time());
140 return true;140 return true;
141@@ -526,7 +541,7 @@ var _Draggable = new Lang.Class({141@@ -536,7 +551,7 @@ var _Draggable = new Lang.Class({
142 this._dragActor.destroy();142 this._dragActor.destroy();
143 }143 }
144 144
@@ -147,7 +147,7 @@ index ec1ba1d..9e961a1 100644
147 global.screen.set_cursor(Meta.Cursor.DEFAULT);147 global.screen.set_cursor(Meta.Cursor.DEFAULT);
148 this.emit('drag-end', event.get_time(), true);148 this.emit('drag-end', event.get_time(), true);
149 this._dragComplete();149 this._dragComplete();
150@@ -575,20 +590,22 @@ var _Draggable = new Lang.Class({150@@ -585,20 +600,22 @@ var _Draggable = new Lang.Class({
151 151
152 _cancelDrag(eventTime) {152 _cancelDrag(eventTime) {
153 this.emit('drag-cancelled', eventTime);153 this.emit('drag-cancelled', eventTime);
@@ -174,7 +174,7 @@ index ec1ba1d..9e961a1 100644
174 this._animateDragEnd(eventTime,174 this._animateDragEnd(eventTime,
175 { x: snapBackX,175 { x: snapBackX,
176 y: snapBackY,176 y: snapBackY,
177@@ -599,7 +616,7 @@ var _Draggable = new Lang.Class({177@@ -609,7 +626,7 @@ var _Draggable = new Lang.Class({
178 },178 },
179 179
180 _restoreDragActor(eventTime) {180 _restoreDragActor(eventTime) {
@@ -183,7 +183,7 @@ index ec1ba1d..9e961a1 100644
183 let [restoreX, restoreY, restoreScale] = this._getRestoreLocation();183 let [restoreX, restoreY, restoreScale] = this._getRestoreLocation();
184 184
185 // fade the actor back in at its original location185 // fade the actor back in at its original location
186@@ -614,12 +631,6 @@ var _Draggable = new Lang.Class({186@@ -624,12 +641,6 @@ var _Draggable = new Lang.Class({
187 _animateDragEnd(eventTime, params) {187 _animateDragEnd(eventTime, params) {
188 this._animationInProgress = true;188 this._animationInProgress = true;
189 189
@@ -196,7 +196,7 @@ index ec1ba1d..9e961a1 100644
196 params['opacity'] = this._dragOrigOpacity;196 params['opacity'] = this._dragOrigOpacity;
197 params['transition'] = 'easeOutQuad';197 params['transition'] = 'easeOutQuad';
198 params['onComplete'] = this._onAnimationComplete;198 params['onComplete'] = this._onAnimationComplete;
199@@ -642,9 +653,6 @@ var _Draggable = new Lang.Class({199@@ -652,9 +663,6 @@ var _Draggable = new Lang.Class({
200 },200 },
201 201
202 _onAnimationComplete(dragActor, eventTime) {202 _onAnimationComplete(dragActor, eventTime) {
@@ -206,7 +206,7 @@ index ec1ba1d..9e961a1 100644
206 if (this._dragOrigParent) {206 if (this._dragOrigParent) {
207 Main.uiGroup.remove_child(this._dragActor);207 Main.uiGroup.remove_child(this._dragActor);
208 this._dragOrigParent.add_actor(this._dragActor);208 this._dragOrigParent.add_actor(this._dragActor);
209@@ -659,7 +667,7 @@ var _Draggable = new Lang.Class({209@@ -669,7 +677,7 @@ var _Draggable = new Lang.Class({
210 },210 },
211 211
212 _dragComplete() {212 _dragComplete() {
@@ -215,7 +215,7 @@ index ec1ba1d..9e961a1 100644
215 Shell.util_set_hidden_from_pick(this._dragActor, false);215 Shell.util_set_hidden_from_pick(this._dragActor, false);
216 216
217 this._ungrabEvents();217 this._ungrabEvents();
218@@ -670,7 +678,12 @@ var _Draggable = new Lang.Class({218@@ -680,7 +688,12 @@ var _Draggable = new Lang.Class({
219 this._updateHoverId = 0;219 this._updateHoverId = 0;
220 }220 }
221 221
diff --git a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
index 8d15dd2..0b59af4 100644
--- a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
+++ b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
@@ -76,7 +76,7 @@ index d75af65..4d3fe73 100644
76 this._showAppsIcon = new ShowAppsIcon();76 this._showAppsIcon = new ShowAppsIcon();
77 this._showAppsIcon.childScale = 1;77 this._showAppsIcon.childScale = 1;
78diff --git a/js/ui/dialog.js b/js/ui/dialog.js78diff --git a/js/ui/dialog.js b/js/ui/dialog.js
79index cfa192d..89db963 10064479index 66cc851..3377957 100644
80--- a/js/ui/dialog.js80--- a/js/ui/dialog.js
81+++ b/js/ui/dialog.js81+++ b/js/ui/dialog.js
82@@ -6,6 +6,7 @@ const GObject = imports.gi.GObject;82@@ -6,6 +6,7 @@ const GObject = imports.gi.GObject;
diff --git a/debian/patches/series b/debian/patches/series
index 944c446..e9c28b3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -24,8 +24,4 @@ power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch
24CVE-2019-3820-1.patch24CVE-2019-3820-1.patch
25CVE-2019-3820-2.patch25CVE-2019-3820-2.patch
26switchMonitor-switch-to-next-config-upon-initial-keypress.patch26switchMonitor-switch-to-next-config-upon-initial-keypress.patch
27dnd-Only-handle-touch-events-in-wayland.patch
28st-widget-Add-missing-g_return_val_if_fail.patch27st-widget-Add-missing-g_return_val_if_fail.patch
29windowManager-listen-actively-to-windows-being-destroyed-.patch
30dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch
31st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch
diff --git a/debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch b/debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch
32deleted file mode 10064428deleted file mode 100644
index 65a15de..0000000
--- a/debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch
+++ /dev/null
@@ -1,85 +0,0 @@
1From: Carlos Garnacho <carlosg@gnome.org>
2Date: Thu, 28 Jun 2018 20:22:40 +0200
3Subject: st-adjustment: Mark all properties as EXPLICIT_NOTIFY
4
5All adjustment setter functions take good care of avoiding emission of
6notify:: when it's not needed. The set_property() implementation already
7calls into the setter functions, so mark the properties as EXPLICITY_NOTIFY
8in order to optimize notify:: emission away through g_object_set (rather
9common from JS code).
10
11(cherry picked from commit b1b455ff1a0e856149142747e77fb1c98df34c03)
12
13Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1270
14
15Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/8702d66
16Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1827284
17Applied-Upstream: 3.28.4
18---
19 src/st/st-adjustment.c | 18 ++++++++++++------
20 1 file changed, 12 insertions(+), 6 deletions(-)
21
22diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c
23index 005c6eb..598df4e 100644
24--- a/src/st/st-adjustment.c
25+++ b/src/st/st-adjustment.c
26@@ -205,7 +205,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
27 G_MAXDOUBLE,
28 0.0,
29 ST_PARAM_READWRITE |
30- G_PARAM_CONSTRUCT));
31+ G_PARAM_CONSTRUCT |
32+ G_PARAM_EXPLICIT_NOTIFY));
33 g_object_class_install_property (object_class,
34 PROP_UPPER,
35 g_param_spec_double ("upper",
36@@ -215,7 +216,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
37 G_MAXDOUBLE,
38 0.0,
39 ST_PARAM_READWRITE |
40- G_PARAM_CONSTRUCT));
41+ G_PARAM_CONSTRUCT |
42+ G_PARAM_EXPLICIT_NOTIFY));
43 g_object_class_install_property (object_class,
44 PROP_VALUE,
45 g_param_spec_double ("value",
46@@ -225,7 +227,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
47 G_MAXDOUBLE,
48 0.0,
49 ST_PARAM_READWRITE |
50- G_PARAM_CONSTRUCT));
51+ G_PARAM_CONSTRUCT |
52+ G_PARAM_EXPLICIT_NOTIFY));
53 g_object_class_install_property (object_class,
54 PROP_STEP_INC,
55 g_param_spec_double ("step-increment",
56@@ -235,7 +238,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
57 G_MAXDOUBLE,
58 0.0,
59 ST_PARAM_READWRITE |
60- G_PARAM_CONSTRUCT));
61+ G_PARAM_CONSTRUCT |
62+ G_PARAM_EXPLICIT_NOTIFY));
63 g_object_class_install_property (object_class,
64 PROP_PAGE_INC,
65 g_param_spec_double ("page-increment",
66@@ -245,7 +249,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
67 G_MAXDOUBLE,
68 0.0,
69 ST_PARAM_READWRITE |
70- G_PARAM_CONSTRUCT));
71+ G_PARAM_CONSTRUCT |
72+ G_PARAM_EXPLICIT_NOTIFY));
73 g_object_class_install_property (object_class,
74 PROP_PAGE_SIZE,
75 g_param_spec_double ("page-size",
76@@ -255,7 +260,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
77 G_MAXDOUBLE,
78 0.0,
79 ST_PARAM_READWRITE |
80- G_PARAM_CONSTRUCT));
81+ G_PARAM_CONSTRUCT |
82+ G_PARAM_EXPLICIT_NOTIFY));
83 /**
84 * StAdjustment::changed:
85 * @self: the #StAdjustment
diff --git a/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch b/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch
86deleted file mode 1006440deleted file mode 100644
index 76cbcf0..0000000
--- a/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch
+++ /dev/null
@@ -1,47 +0,0 @@
1From: Carlos Garnacho <carlosg@gnome.org>
2Date: Thu, 6 Sep 2018 21:50:21 +0200
3Subject: windowManager: listen actively to windows being destroyed during WS
4 switch
5
6Prevents gjs from dealing with already dispose()d objects.
7
8Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/539
9
10(cherry-picked from b087752b5539a8cbb1d61979cb069aef8a3475be)
11
12Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/b087752b
13Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812527
14---
15 js/ui/windowManager.js | 12 ++++++++++--
16 1 file changed, 10 insertions(+), 2 deletions(-)
17
18diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
19index 8e7e7a6..49d7035 100644
20--- a/js/ui/windowManager.js
21+++ b/js/ui/windowManager.js
22@@ -1763,6 +1763,14 @@ var WindowManager = new Lang.Class({
23 }
24 }
25
26+ for (let i = 0; i < switchData.windows.length; i++) {
27+ let w = switchData.windows[i];
28+
29+ w.windowDestroyId = w.window.connect('destroy', () => {
30+ switchData.windows.splice(switchData.windows.indexOf(w), 1);
31+ });
32+ }
33+
34 switchData.inGroup.set_position(-xDest, -yDest);
35 switchData.inGroup.raise_top();
36
37@@ -1793,8 +1801,8 @@ var WindowManager = new Lang.Class({
38
39 for (let i = 0; i < switchData.windows.length; i++) {
40 let w = switchData.windows[i];
41- if (w.window.is_destroyed()) // Window gone
42- continue;
43+ w.window.disconnect(w.windowDestroyId);
44+
45 if (w.window.get_parent() == switchData.outGroup) {
46 w.window.reparent(w.parent);
47 w.window.hide();
diff --git a/debian/watch b/debian/watch
index ac38817..580c64a 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,3 +1,3 @@
1version=41version=4
2https://download.gnome.org/sources/@PACKAGE@/([\d\.]+[02468])/ \2https://download.gnome.org/sources/@PACKAGE@/3.28/ \
3 @PACKAGE@@ANY_VERSION@\.tar\.xz3 @PACKAGE@@ANY_VERSION@\.tar\.xz
diff --git a/js/ui/closeDialog.js b/js/ui/closeDialog.js
index aa0b5ce..c4b0332 100644
--- a/js/ui/closeDialog.js
+++ b/js/ui/closeDialog.js
@@ -2,6 +2,7 @@
22
3const Clutter = imports.gi.Clutter;3const Clutter = imports.gi.Clutter;
4const Gio = imports.gi.Gio;4const Gio = imports.gi.Gio;
5const GLib = imports.gi.GLib;
5const GObject = imports.gi.GObject;6const GObject = imports.gi.GObject;
6const Lang = imports.lang;7const Lang = imports.lang;
7const Meta = imports.gi.Meta;8const Meta = imports.gi.Meta;
@@ -13,6 +14,7 @@ const Tweener = imports.ui.tweener;
1314
14var FROZEN_WINDOW_BRIGHTNESS = -0.315var FROZEN_WINDOW_BRIGHTNESS = -0.3
15var DIALOG_TRANSITION_TIME = 0.1516var DIALOG_TRANSITION_TIME = 0.15
17var ALIVE_TIMEOUT = 5000;
1618
17var CloseDialog = new Lang.Class({19var CloseDialog = new Lang.Class({
18 Name: 'CloseDialog',20 Name: 'CloseDialog',
@@ -26,6 +28,10 @@ var CloseDialog = new Lang.Class({
26 this.parent();28 this.parent();
27 this._window = window;29 this._window = window;
28 this._dialog = null;30 this._dialog = null;
31 this._tracked = undefined;
32 this._timeoutId = 0;
33 this._windowFocusChangedId = 0;
34 this._keyFocusChangedId = 0;
29 },35 },
3036
31 get window() {37 get window() {
@@ -93,10 +99,57 @@ var CloseDialog = new Lang.Class({
93 this.response(Meta.CloseDialogResponse.FORCE_CLOSE);99 this.response(Meta.CloseDialogResponse.FORCE_CLOSE);
94 },100 },
95101
102 _onFocusChanged() {
103 if (Meta.is_wayland_compositor())
104 return;
105
106 let focusWindow = global.display.focus_window;
107 let keyFocus = global.stage.key_focus;
108
109 let shouldTrack;
110 if (focusWindow != null)
111 shouldTrack = focusWindow == this._window;
112 else
113 shouldTrack = keyFocus && this._dialog.contains(keyFocus);
114
115 if (this._tracked === shouldTrack)
116 return;
117
118 if (shouldTrack)
119 Main.layoutManager.trackChrome(this._dialog,
120 { affectsInputRegion: true });
121 else
122 Main.layoutManager.untrackChrome(this._dialog);
123
124 // The buttons are broken when they aren't added to the input region,
125 // so disable them properly in that case
126 this._dialog.buttonLayout.get_children().forEach(b => {
127 b.reactive = shouldTrack;
128 });
129
130 this._tracked = shouldTrack;
131 },
132
96 vfunc_show() {133 vfunc_show() {
97 if (this._dialog != null)134 if (this._dialog != null)
98 return;135 return;
99136
137 Meta.disable_unredirect_for_screen(global.screen);
138
139 this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, ALIVE_TIMEOUT,
140 () => {
141 this._window.check_alive(global.display.get_current_time_roundtrip());
142 return GLib.SOURCE_CONTINUE;
143 });
144
145 this._windowFocusChangedId =
146 global.display.connect('notify::focus-window',
147 this._onFocusChanged.bind(this));
148
149 this._keyFocusChangedId =
150 global.stage.connect('notify::key-focus',
151 this._onFocusChanged.bind(this));
152
100 this._addWindowEffect();153 this._addWindowEffect();
101 this._initDialog();154 this._initDialog();
102155
@@ -107,9 +160,7 @@ var CloseDialog = new Lang.Class({
107 { scale_y: 1,160 { scale_y: 1,
108 transition: 'linear',161 transition: 'linear',
109 time: DIALOG_TRANSITION_TIME,162 time: DIALOG_TRANSITION_TIME,
110 onComplete: () => {163 onComplete: this._onFocusChanged.bind(this)
111 Main.layoutManager.trackChrome(this._dialog, { affectsInputRegion: true });
112 }
113 });164 });
114 },165 },
115166
@@ -117,6 +168,17 @@ var CloseDialog = new Lang.Class({
117 if (this._dialog == null)168 if (this._dialog == null)
118 return;169 return;
119170
171 Meta.enable_unredirect_for_screen(global.screen);
172
173 GLib.source_remove(this._timeoutId);
174 this._timeoutId = 0;
175
176 global.display.disconnect(this._windowFocusChangedId)
177 this._windowFocusChangedId = 0;
178
179 global.stage.disconnect(this._keyFocusChangedId);
180 this._keyFocusChangedId = 0;
181
120 let dialog = this._dialog;182 let dialog = this._dialog;
121 this._dialog = null;183 this._dialog = null;
122 this._removeWindowEffect();184 this._removeWindowEffect();
diff --git a/js/ui/dialog.js b/js/ui/dialog.js
index cfa192d..66cc851 100644
--- a/js/ui/dialog.js
+++ b/js/ui/dialog.js
@@ -183,7 +183,7 @@ var MessageDialogContent = new Lang.Class({
183 this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);183 this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
184 });184 });
185185
186 let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE,186 let textProps = { ellipsize: Pango.EllipsizeMode.NONE,
187 line_wrap: true };187 line_wrap: true };
188 Object.assign(this._subtitle.clutter_text, textProps);188 Object.assign(this._subtitle.clutter_text, textProps);
189 Object.assign(this._body.clutter_text, textProps);189 Object.assign(this._body.clutter_text, textProps);
diff --git a/js/ui/dnd.js b/js/ui/dnd.js
index ec1ba1d..a36b1f6 100644
--- a/js/ui/dnd.js
+++ b/js/ui/dnd.js
@@ -125,6 +125,16 @@ var _Draggable = new Lang.Class({
125 },125 },
126126
127 _onTouchEvent(actor, event) {127 _onTouchEvent(actor, event) {
128 // Here we only handle touch events on wayland. On X11
129 // we do get emulated pointer events, which already works
130 // for single-touch cases. Besides, the X11 passive touch grab
131 // set up by Mutter will make us see first the touch events
132 // and later the pointer events, so it will look like two
133 // unrelated series of events, we want to avoid double handling
134 // in these cases.
135 if (!Meta.is_wayland_compositor())
136 return Clutter.EVENT_PROPAGATE;
137
128 if (event.type() != Clutter.EventType.TOUCH_BEGIN ||138 if (event.type() != Clutter.EventType.TOUCH_BEGIN ||
129 !global.display.is_pointer_emulating_sequence(event.get_event_sequence()))139 !global.display.is_pointer_emulating_sequence(event.get_event_sequence()))
130 return Clutter.EVENT_PROPAGATE;140 return Clutter.EVENT_PROPAGATE;
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index 8e7e7a6..49d7035 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -1763,6 +1763,14 @@ var WindowManager = new Lang.Class({
1763 }1763 }
1764 }1764 }
17651765
1766 for (let i = 0; i < switchData.windows.length; i++) {
1767 let w = switchData.windows[i];
1768
1769 w.windowDestroyId = w.window.connect('destroy', () => {
1770 switchData.windows.splice(switchData.windows.indexOf(w), 1);
1771 });
1772 }
1773
1766 switchData.inGroup.set_position(-xDest, -yDest);1774 switchData.inGroup.set_position(-xDest, -yDest);
1767 switchData.inGroup.raise_top();1775 switchData.inGroup.raise_top();
17681776
@@ -1793,8 +1801,8 @@ var WindowManager = new Lang.Class({
17931801
1794 for (let i = 0; i < switchData.windows.length; i++) {1802 for (let i = 0; i < switchData.windows.length; i++) {
1795 let w = switchData.windows[i];1803 let w = switchData.windows[i];
1796 if (w.window.is_destroyed()) // Window gone1804 w.window.disconnect(w.windowDestroyId);
1797 continue;1805
1798 if (w.window.get_parent() == switchData.outGroup) {1806 if (w.window.get_parent() == switchData.outGroup) {
1799 w.window.reparent(w.parent);1807 w.window.reparent(w.parent);
1800 w.window.hide();1808 w.window.hide();
diff --git a/meson.build b/meson.build
index f38798c..2bda6a2 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
1project('gnome-shell', 'c',1project('gnome-shell', 'c',
2 version: '3.28.3',2 version: '3.28.4',
3 meson_version: '>= 0.42.0',3 meson_version: '>= 0.42.0',
4 license: 'GPLv2+'4 license: 'GPLv2+'
5)5)
diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c
index 005c6eb..598df4e 100644
--- a/src/st/st-adjustment.c
+++ b/src/st/st-adjustment.c
@@ -205,7 +205,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
205 G_MAXDOUBLE,205 G_MAXDOUBLE,
206 0.0,206 0.0,
207 ST_PARAM_READWRITE |207 ST_PARAM_READWRITE |
208 G_PARAM_CONSTRUCT));208 G_PARAM_CONSTRUCT |
209 G_PARAM_EXPLICIT_NOTIFY));
209 g_object_class_install_property (object_class,210 g_object_class_install_property (object_class,
210 PROP_UPPER,211 PROP_UPPER,
211 g_param_spec_double ("upper",212 g_param_spec_double ("upper",
@@ -215,7 +216,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
215 G_MAXDOUBLE,216 G_MAXDOUBLE,
216 0.0,217 0.0,
217 ST_PARAM_READWRITE |218 ST_PARAM_READWRITE |
218 G_PARAM_CONSTRUCT));219 G_PARAM_CONSTRUCT |
220 G_PARAM_EXPLICIT_NOTIFY));
219 g_object_class_install_property (object_class,221 g_object_class_install_property (object_class,
220 PROP_VALUE,222 PROP_VALUE,
221 g_param_spec_double ("value",223 g_param_spec_double ("value",
@@ -225,7 +227,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
225 G_MAXDOUBLE,227 G_MAXDOUBLE,
226 0.0,228 0.0,
227 ST_PARAM_READWRITE |229 ST_PARAM_READWRITE |
228 G_PARAM_CONSTRUCT));230 G_PARAM_CONSTRUCT |
231 G_PARAM_EXPLICIT_NOTIFY));
229 g_object_class_install_property (object_class,232 g_object_class_install_property (object_class,
230 PROP_STEP_INC,233 PROP_STEP_INC,
231 g_param_spec_double ("step-increment",234 g_param_spec_double ("step-increment",
@@ -235,7 +238,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
235 G_MAXDOUBLE,238 G_MAXDOUBLE,
236 0.0,239 0.0,
237 ST_PARAM_READWRITE |240 ST_PARAM_READWRITE |
238 G_PARAM_CONSTRUCT));241 G_PARAM_CONSTRUCT |
242 G_PARAM_EXPLICIT_NOTIFY));
239 g_object_class_install_property (object_class,243 g_object_class_install_property (object_class,
240 PROP_PAGE_INC,244 PROP_PAGE_INC,
241 g_param_spec_double ("page-increment",245 g_param_spec_double ("page-increment",
@@ -245,7 +249,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
245 G_MAXDOUBLE,249 G_MAXDOUBLE,
246 0.0,250 0.0,
247 ST_PARAM_READWRITE |251 ST_PARAM_READWRITE |
248 G_PARAM_CONSTRUCT));252 G_PARAM_CONSTRUCT |
253 G_PARAM_EXPLICIT_NOTIFY));
249 g_object_class_install_property (object_class,254 g_object_class_install_property (object_class,
250 PROP_PAGE_SIZE,255 PROP_PAGE_SIZE,
251 g_param_spec_double ("page-size",256 g_param_spec_double ("page-size",
@@ -255,7 +260,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
255 G_MAXDOUBLE,260 G_MAXDOUBLE,
256 0.0,261 0.0,
257 ST_PARAM_READWRITE |262 ST_PARAM_READWRITE |
258 G_PARAM_CONSTRUCT));263 G_PARAM_CONSTRUCT |
264 G_PARAM_EXPLICIT_NOTIFY));
259 /**265 /**
260 * StAdjustment::changed:266 * StAdjustment::changed:
261 * @self: the #StAdjustment267 * @self: the #StAdjustment

Subscribers

People subscribed via source and target branches