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

Proposed by Marco Trevisan (Treviño) on 2019-05-21
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 2019-05-21 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
1diff --git a/NEWS b/NEWS
2index 6e2b0f9..accf3d0 100644
3--- a/NEWS
4+++ b/NEWS
5@@ -1,3 +1,30 @@
6+3.28.4
7+======
8+* Fix wrong window positions in overview on wayland [Marco; #776588]
9+* overview: Fix handling of confirmation dialogs on wayland [verdre; !180]
10+* Avoid some full relayout/redraws [Carlos; !197]
11+* Keep workspace switcher slid out when workspaces are in use [Florian; !161]
12+* Cancel search on overview hiding [Marco; !205]
13+* Fix disappearing network icon [Iain; #140]
14+* Improve performance of app icon animations [Daniel; !253]
15+* notifications: Support icon theme names in 'image-path' hint [Marco; !285]
16+* Avoid focus changes when updating keyboard options [Takao; #391]
17+* Fix unresponsive-app dialog blocking input in other windows [Florian; #273]
18+* Fix ellipsization in dialog subtitles/bodies [Marco; !531]
19+* Misc. bug fixes [Marco, Andrea, Florian, Jasper, Sam, verdre, Jonas,
20+ Cosimo, Carlos; #792681, #372, !112, !162, #414, #663461, #788882, #787260,
21+ !188, #791233, #602, #632, !305, !286, !314, #781, #693, #618, #430, #799,
22+ #783, !293, #298, #1015, #539, #1270]
23+
24+Contributors:
25+ Jonas Ådahl, Andrea Azzarone, Cosimo Cecchi, Takao Fujiwara, Carlos Garnacho,
26+ Iain Lane, Florian Müllner, Georges Basile Stavracas Neto, Jasper St. Pierre,
27+ Sam Spilsbury, Ray Strode, Will Thompson, Marco Trevisan (Treviño), verdre,
28+ Daniel van Vugt
29+
30+Translators:
31+ Marek Černocký [cs]
32+
33 3.28.3
34 ======
35 * Fix lagging pointer when zoomed [Daniel; #682013]
36diff --git a/debian/changelog b/debian/changelog
37index 57eb92d..1e6d367 100644
38--- a/debian/changelog
39+++ b/debian/changelog
40@@ -1,20 +1,21 @@
41-gnome-shell (3.28.3+git20190124-0ubuntu18.04.3) bionic; urgency=medium
42+gnome-shell (3.28.4-0ubuntu18.04.1) bionic; urgency=medium
43
44+ * New upstream stable release
45+ - Fix ellipsization in dialog subtitles/bodies (LP: #1809788)
46+ - dnd: Only handle touch events in wayland (LP: #1817020)
47+ - windowManager: listen actively to windows being destroyed during WS switch
48+ (LP: #1812527)
49+ - Fix unresponsive-app dialog blocking input in other windows (LP: #1740869)
50+ - Fix regression on missing spread animation (LP: #1827284)
51+ * d/p/js-fix-invalid-access-errors.patch,
52+ d/p/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch:
53+ - Refreshed
54 * d/p/switchMonitor-switch-to-next-config-upon-initial-keypress.patch
55 - Ensure switch display mode is cyclic (LP: #1772811)
56 * debian/control:
57- - Depends on mutter 3.28.3+git20190124-0ubuntu18.04.3
58- * d/p/dnd-Only-handle-touch-events-in-wayland.patch:
59- - dnd: Only handle touch events in wayland (LP: #1817020)
60+ - Depends on mutter 3.28.4-0ubuntu18.04.1
61 * d/p/st-widget-Add-missing-g_return_val_if_fail.patch:
62 - st-widget: Protect from NULL obj in get_theme_node (LP: #1796606)
63- * d/p/windowManager-listen-actively-to-windows-being-destroyed-.patch:
64- - windowManager: listen actively to windows being destroyed during WS switch
65- (LP: #1812527)
66- * d/p/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch:
67- - Really set ellipsize mode in subtitle and body (LP: #1809788)
68- * d/p/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch:
69- - Fix regression on missing spread animation (LP: #1827284)
70
71 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Fri, 10 May 2019 11:43:10 +0100
72
73diff --git a/debian/control b/debian/control
74index 7b29d44..5d292d1 100644
75--- a/debian/control
76+++ b/debian/control
77@@ -2,6 +2,7 @@
78 #
79 # Modifications should be made to debian/control.in instead.
80 # This file is regenerated automatically in the clean target.
81+
82 Source: gnome-shell
83 Section: gnome
84 Priority: optional
85@@ -83,7 +84,7 @@ Depends: ${gir:Depends},
86 gir1.2-gtk-3.0 (>= 3.16),
87 gir1.2-gweather-3.0,
88 gir1.2-ibus-1.0 (>= 1.5.2),
89- gir1.2-mutter-2 (>= 3.28.3+git20190124-0ubuntu18.04.3),
90+ gir1.2-mutter-2 (>= 3.28.4-0ubuntu18.04.1),
91 gir1.2-nm-1.0 [linux-any],
92 gir1.2-nma-1.0 [linux-any],
93 gir1.2-pango-1.0,
94@@ -96,7 +97,7 @@ Depends: ${gir:Depends},
95 gnome-shell-common (= ${source:Version}),
96 ubuntu-wallpapers,
97 gsettings-desktop-schemas (>= 3.21.3),
98- mutter (>= 3.28.3+git20190124-0ubuntu18.04.3),
99+ mutter (>= 3.28.4-0ubuntu18.04.1),
100 python3,
101 libglib2.0-bin (>= 2.53.0),
102 Recommends: xserver-xorg-legacy,
103diff --git a/debian/control.in b/debian/control.in
104index 0b0bb20..c4e7d42 100644
105--- a/debian/control.in
106+++ b/debian/control.in
107@@ -1,3 +1,4 @@
108+
109 Source: gnome-shell
110 Section: gnome
111 Priority: optional
112@@ -79,7 +80,7 @@ Depends: ${gir:Depends},
113 gir1.2-gtk-3.0 (>= 3.16),
114 gir1.2-gweather-3.0,
115 gir1.2-ibus-1.0 (>= 1.5.2),
116- gir1.2-mutter-2 (>= 3.28.3+git20190124-0ubuntu18.04.3),
117+ gir1.2-mutter-2 (>= 3.28.4-0ubuntu18.04.1),
118 gir1.2-nm-1.0 [linux-any],
119 gir1.2-nma-1.0 [linux-any],
120 gir1.2-pango-1.0,
121@@ -92,7 +93,7 @@ Depends: ${gir:Depends},
122 gnome-shell-common (= ${source:Version}),
123 ubuntu-wallpapers,
124 gsettings-desktop-schemas (>= 3.21.3),
125- mutter (>= 3.28.3+git20190124-0ubuntu18.04.3),
126+ mutter (>= 3.28.4-0ubuntu18.04.1),
127 python3,
128 libglib2.0-bin (>= 2.53.0),
129 Recommends: xserver-xorg-legacy,
130diff --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
131deleted file mode 100644
132index 9f1787e..0000000
133--- a/debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch
134+++ /dev/null
135@@ -1,40 +0,0 @@
136-From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
137-Date: Fri, 3 May 2019 15:27:13 -0500
138-Subject: dialog: Really set ellipsize mode in subtitle and body
139-
140-Dialog's subtitle or body could not be properly wrapped, while it's ellipsized
141-when the text's width doesn't exceed the container size.
142-
143-Clutter text has an `ellipsize` property, however in dialog's subtitle and body
144-we have been setting the `ellipsize-mode` property to Pango.EllipsizeMode.NONE
145-that is not present in the underlying GObject.
146-
147-Not being an error in javascript, gjs didn't warn us about this, while at the
148-same time the St.Label's default Pango.EllipsizeMode.END was used.
149-
150-Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/922
151-
152-https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/531
153-
154-(cherry picked from commit 3121c9aa29406ad85e949b697e90092f1fa6fc2e)
155-
156-Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/5703a25e
157-Bug-Ubuntu: https://bugs.launchpad.net/oem-priority/+bug/1809788
158-Applied: 3.28.4
159----
160- js/ui/dialog.js | 2 +-
161- 1 file changed, 1 insertion(+), 1 deletion(-)
162-
163-diff --git a/js/ui/dialog.js b/js/ui/dialog.js
164-index 89db963..3377957 100644
165---- a/js/ui/dialog.js
166-+++ b/js/ui/dialog.js
167-@@ -185,7 +185,7 @@ var MessageDialogContent = new Lang.Class({
168- this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
169- });
170-
171-- let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE,
172-+ let textProps = { ellipsize: Pango.EllipsizeMode.NONE,
173- line_wrap: true };
174- Object.assign(this._subtitle.clutter_text, textProps);
175- Object.assign(this._body.clutter_text, textProps);
176diff --git a/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch b/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch
177deleted file mode 100644
178index adb0ad8..0000000
179--- a/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch
180+++ /dev/null
181@@ -1,40 +0,0 @@
182-From: Andrea Azzarone <andrea.azzarone@canonical.com>
183-Date: Mon, 4 Mar 2019 16:14:22 +0000
184-Subject: dnd: Only handle touch events in wayland
185-
186-There are serveral issues around touch passive grab and touch/pointer doubly
187-handling to use these on X11, so we stick to single-touch/pointer there.
188-
189-Cherry picked from commit 60ccdc2deb746c0d96b0268ee5034b65478ce779
190-
191-Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1015
192-
193-Ubuntu-Bug: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1817020
194-GNOME-Bug: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1015
195-Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/457
196-Applied-Upstream: 3.28.4
197----
198- js/ui/dnd.js | 10 ++++++++++
199- 1 file changed, 10 insertions(+)
200-
201-diff --git a/js/ui/dnd.js b/js/ui/dnd.js
202-index 9e961a1..af7a27a 100644
203---- a/js/ui/dnd.js
204-+++ b/js/ui/dnd.js
205-@@ -132,6 +132,16 @@ var _Draggable = new Lang.Class({
206- },
207-
208- _onTouchEvent(actor, event) {
209-+ // Here we only handle touch events on wayland. On X11
210-+ // we do get emulated pointer events, which already works
211-+ // for single-touch cases. Besides, the X11 passive touch grab
212-+ // set up by Mutter will make us see first the touch events
213-+ // and later the pointer events, so it will look like two
214-+ // unrelated series of events, we want to avoid double handling
215-+ // in these cases.
216-+ if (!Meta.is_wayland_compositor())
217-+ return Clutter.EVENT_PROPAGATE;
218-+
219- if (event.type() != Clutter.EventType.TOUCH_BEGIN ||
220- !global.display.is_pointer_emulating_sequence(event.get_event_sequence()))
221- return Clutter.EVENT_PROPAGATE;
222diff --git a/debian/patches/js-fix-invalid-access-errors.patch b/debian/patches/js-fix-invalid-access-errors.patch
223index 782ee1f..3855752 100644
224--- a/debian/patches/js-fix-invalid-access-errors.patch
225+++ b/debian/patches/js-fix-invalid-access-errors.patch
226@@ -33,7 +33,7 @@ Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/4
227 2 files changed, 89 insertions(+), 39 deletions(-)
228
229 diff --git a/js/ui/dnd.js b/js/ui/dnd.js
230-index ec1ba1d..9e961a1 100644
231+index a36b1f6..af7a27a 100644
232 --- a/js/ui/dnd.js
233 +++ b/js/ui/dnd.js
234 @@ -27,6 +27,12 @@ var DragMotionResult = {
235@@ -75,7 +75,7 @@ index ec1ba1d..9e961a1 100644
236 this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting).
237 this._dragCancellable = true;
238
239-@@ -206,9 +213,10 @@ var _Draggable = new Lang.Class({
240+@@ -216,9 +223,10 @@ var _Draggable = new Lang.Class({
241 (event.type() == Clutter.EventType.TOUCH_END &&
242 global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {
243 this._buttonDown = false;
244@@ -88,7 +88,7 @@ index ec1ba1d..9e961a1 100644
245 // Drag must have been cancelled with Esc.
246 this._dragComplete();
247 return Clutter.EVENT_STOP;
248-@@ -222,14 +230,14 @@ var _Draggable = new Lang.Class({
249+@@ -232,14 +240,14 @@ var _Draggable = new Lang.Class({
250 } else if (event.type() == Clutter.EventType.MOTION ||
251 (event.type() == Clutter.EventType.TOUCH_UPDATE &&
252 global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {
253@@ -106,7 +106,7 @@ index ec1ba1d..9e961a1 100644
254 let symbol = event.get_key_symbol();
255 if (symbol == Clutter.Escape) {
256 this._cancelDrag(event.get_time());
257-@@ -265,7 +273,7 @@ var _Draggable = new Lang.Class({
258+@@ -275,7 +283,7 @@ var _Draggable = new Lang.Class({
259 */
260 startDrag(stageX, stageY, time, sequence) {
261 currentDraggable = this;
262@@ -115,7 +115,7 @@ index ec1ba1d..9e961a1 100644
263
264 // Special-case St.Button: the pointer grab messes with the internal
265 // state, so force a reset to a reasonable state here
266-@@ -342,6 +350,13 @@ var _Draggable = new Lang.Class({
267+@@ -352,6 +360,13 @@ var _Draggable = new Lang.Class({
268 Shell.util_set_hidden_from_pick(this._dragActor, true);
269 }
270
271@@ -129,7 +129,7 @@ index ec1ba1d..9e961a1 100644
272 this._dragOrigOpacity = this._dragActor.opacity;
273 if (this._dragActorOpacity != undefined)
274 this._dragActor.opacity = this._dragActorOpacity;
275-@@ -518,7 +533,7 @@ var _Draggable = new Lang.Class({
276+@@ -528,7 +543,7 @@ var _Draggable = new Lang.Class({
277 event.get_time())) {
278 // If it accepted the drop without taking the actor,
279 // handle it ourselves.
280@@ -138,7 +138,7 @@ index ec1ba1d..9e961a1 100644
281 if (this._restoreOnSuccess) {
282 this._restoreDragActor(event.get_time());
283 return true;
284-@@ -526,7 +541,7 @@ var _Draggable = new Lang.Class({
285+@@ -536,7 +551,7 @@ var _Draggable = new Lang.Class({
286 this._dragActor.destroy();
287 }
288
289@@ -147,7 +147,7 @@ index ec1ba1d..9e961a1 100644
290 global.screen.set_cursor(Meta.Cursor.DEFAULT);
291 this.emit('drag-end', event.get_time(), true);
292 this._dragComplete();
293-@@ -575,20 +590,22 @@ var _Draggable = new Lang.Class({
294+@@ -585,20 +600,22 @@ var _Draggable = new Lang.Class({
295
296 _cancelDrag(eventTime) {
297 this.emit('drag-cancelled', eventTime);
298@@ -174,7 +174,7 @@ index ec1ba1d..9e961a1 100644
299 this._animateDragEnd(eventTime,
300 { x: snapBackX,
301 y: snapBackY,
302-@@ -599,7 +616,7 @@ var _Draggable = new Lang.Class({
303+@@ -609,7 +626,7 @@ var _Draggable = new Lang.Class({
304 },
305
306 _restoreDragActor(eventTime) {
307@@ -183,7 +183,7 @@ index ec1ba1d..9e961a1 100644
308 let [restoreX, restoreY, restoreScale] = this._getRestoreLocation();
309
310 // fade the actor back in at its original location
311-@@ -614,12 +631,6 @@ var _Draggable = new Lang.Class({
312+@@ -624,12 +641,6 @@ var _Draggable = new Lang.Class({
313 _animateDragEnd(eventTime, params) {
314 this._animationInProgress = true;
315
316@@ -196,7 +196,7 @@ index ec1ba1d..9e961a1 100644
317 params['opacity'] = this._dragOrigOpacity;
318 params['transition'] = 'easeOutQuad';
319 params['onComplete'] = this._onAnimationComplete;
320-@@ -642,9 +653,6 @@ var _Draggable = new Lang.Class({
321+@@ -652,9 +663,6 @@ var _Draggable = new Lang.Class({
322 },
323
324 _onAnimationComplete(dragActor, eventTime) {
325@@ -206,7 +206,7 @@ index ec1ba1d..9e961a1 100644
326 if (this._dragOrigParent) {
327 Main.uiGroup.remove_child(this._dragActor);
328 this._dragOrigParent.add_actor(this._dragActor);
329-@@ -659,7 +667,7 @@ var _Draggable = new Lang.Class({
330+@@ -669,7 +677,7 @@ var _Draggable = new Lang.Class({
331 },
332
333 _dragComplete() {
334@@ -215,7 +215,7 @@ index ec1ba1d..9e961a1 100644
335 Shell.util_set_hidden_from_pick(this._dragActor, false);
336
337 this._ungrabEvents();
338-@@ -670,7 +678,12 @@ var _Draggable = new Lang.Class({
339+@@ -680,7 +688,12 @@ var _Draggable = new Lang.Class({
340 this._updateHoverId = 0;
341 }
342
343diff --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
344index 8d15dd2..0b59af4 100644
345--- a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
346+++ b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
347@@ -76,7 +76,7 @@ index d75af65..4d3fe73 100644
348 this._showAppsIcon = new ShowAppsIcon();
349 this._showAppsIcon.childScale = 1;
350 diff --git a/js/ui/dialog.js b/js/ui/dialog.js
351-index cfa192d..89db963 100644
352+index 66cc851..3377957 100644
353 --- a/js/ui/dialog.js
354 +++ b/js/ui/dialog.js
355 @@ -6,6 +6,7 @@ const GObject = imports.gi.GObject;
356diff --git a/debian/patches/series b/debian/patches/series
357index 944c446..e9c28b3 100644
358--- a/debian/patches/series
359+++ b/debian/patches/series
360@@ -24,8 +24,4 @@ power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch
361 CVE-2019-3820-1.patch
362 CVE-2019-3820-2.patch
363 switchMonitor-switch-to-next-config-upon-initial-keypress.patch
364-dnd-Only-handle-touch-events-in-wayland.patch
365 st-widget-Add-missing-g_return_val_if_fail.patch
366-windowManager-listen-actively-to-windows-being-destroyed-.patch
367-dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch
368-st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch
369diff --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
370deleted file mode 100644
371index 65a15de..0000000
372--- a/debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch
373+++ /dev/null
374@@ -1,85 +0,0 @@
375-From: Carlos Garnacho <carlosg@gnome.org>
376-Date: Thu, 28 Jun 2018 20:22:40 +0200
377-Subject: st-adjustment: Mark all properties as EXPLICIT_NOTIFY
378-
379-All adjustment setter functions take good care of avoiding emission of
380-notify:: when it's not needed. The set_property() implementation already
381-calls into the setter functions, so mark the properties as EXPLICITY_NOTIFY
382-in order to optimize notify:: emission away through g_object_set (rather
383-common from JS code).
384-
385-(cherry picked from commit b1b455ff1a0e856149142747e77fb1c98df34c03)
386-
387-Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1270
388-
389-Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/8702d66
390-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1827284
391-Applied-Upstream: 3.28.4
392----
393- src/st/st-adjustment.c | 18 ++++++++++++------
394- 1 file changed, 12 insertions(+), 6 deletions(-)
395-
396-diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c
397-index 005c6eb..598df4e 100644
398---- a/src/st/st-adjustment.c
399-+++ b/src/st/st-adjustment.c
400-@@ -205,7 +205,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
401- G_MAXDOUBLE,
402- 0.0,
403- ST_PARAM_READWRITE |
404-- G_PARAM_CONSTRUCT));
405-+ G_PARAM_CONSTRUCT |
406-+ G_PARAM_EXPLICIT_NOTIFY));
407- g_object_class_install_property (object_class,
408- PROP_UPPER,
409- g_param_spec_double ("upper",
410-@@ -215,7 +216,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
411- G_MAXDOUBLE,
412- 0.0,
413- ST_PARAM_READWRITE |
414-- G_PARAM_CONSTRUCT));
415-+ G_PARAM_CONSTRUCT |
416-+ G_PARAM_EXPLICIT_NOTIFY));
417- g_object_class_install_property (object_class,
418- PROP_VALUE,
419- g_param_spec_double ("value",
420-@@ -225,7 +227,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
421- G_MAXDOUBLE,
422- 0.0,
423- ST_PARAM_READWRITE |
424-- G_PARAM_CONSTRUCT));
425-+ G_PARAM_CONSTRUCT |
426-+ G_PARAM_EXPLICIT_NOTIFY));
427- g_object_class_install_property (object_class,
428- PROP_STEP_INC,
429- g_param_spec_double ("step-increment",
430-@@ -235,7 +238,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
431- G_MAXDOUBLE,
432- 0.0,
433- ST_PARAM_READWRITE |
434-- G_PARAM_CONSTRUCT));
435-+ G_PARAM_CONSTRUCT |
436-+ G_PARAM_EXPLICIT_NOTIFY));
437- g_object_class_install_property (object_class,
438- PROP_PAGE_INC,
439- g_param_spec_double ("page-increment",
440-@@ -245,7 +249,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
441- G_MAXDOUBLE,
442- 0.0,
443- ST_PARAM_READWRITE |
444-- G_PARAM_CONSTRUCT));
445-+ G_PARAM_CONSTRUCT |
446-+ G_PARAM_EXPLICIT_NOTIFY));
447- g_object_class_install_property (object_class,
448- PROP_PAGE_SIZE,
449- g_param_spec_double ("page-size",
450-@@ -255,7 +260,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
451- G_MAXDOUBLE,
452- 0.0,
453- ST_PARAM_READWRITE |
454-- G_PARAM_CONSTRUCT));
455-+ G_PARAM_CONSTRUCT |
456-+ G_PARAM_EXPLICIT_NOTIFY));
457- /**
458- * StAdjustment::changed:
459- * @self: the #StAdjustment
460diff --git a/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch b/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch
461deleted file mode 100644
462index 76cbcf0..0000000
463--- a/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch
464+++ /dev/null
465@@ -1,47 +0,0 @@
466-From: Carlos Garnacho <carlosg@gnome.org>
467-Date: Thu, 6 Sep 2018 21:50:21 +0200
468-Subject: windowManager: listen actively to windows being destroyed during WS
469- switch
470-
471-Prevents gjs from dealing with already dispose()d objects.
472-
473-Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/539
474-
475-(cherry-picked from b087752b5539a8cbb1d61979cb069aef8a3475be)
476-
477-Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/b087752b
478-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812527
479----
480- js/ui/windowManager.js | 12 ++++++++++--
481- 1 file changed, 10 insertions(+), 2 deletions(-)
482-
483-diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
484-index 8e7e7a6..49d7035 100644
485---- a/js/ui/windowManager.js
486-+++ b/js/ui/windowManager.js
487-@@ -1763,6 +1763,14 @@ var WindowManager = new Lang.Class({
488- }
489- }
490-
491-+ for (let i = 0; i < switchData.windows.length; i++) {
492-+ let w = switchData.windows[i];
493-+
494-+ w.windowDestroyId = w.window.connect('destroy', () => {
495-+ switchData.windows.splice(switchData.windows.indexOf(w), 1);
496-+ });
497-+ }
498-+
499- switchData.inGroup.set_position(-xDest, -yDest);
500- switchData.inGroup.raise_top();
501-
502-@@ -1793,8 +1801,8 @@ var WindowManager = new Lang.Class({
503-
504- for (let i = 0; i < switchData.windows.length; i++) {
505- let w = switchData.windows[i];
506-- if (w.window.is_destroyed()) // Window gone
507-- continue;
508-+ w.window.disconnect(w.windowDestroyId);
509-+
510- if (w.window.get_parent() == switchData.outGroup) {
511- w.window.reparent(w.parent);
512- w.window.hide();
513diff --git a/debian/watch b/debian/watch
514index ac38817..580c64a 100644
515--- a/debian/watch
516+++ b/debian/watch
517@@ -1,3 +1,3 @@
518 version=4
519-https://download.gnome.org/sources/@PACKAGE@/([\d\.]+[02468])/ \
520+https://download.gnome.org/sources/@PACKAGE@/3.28/ \
521 @PACKAGE@@ANY_VERSION@\.tar\.xz
522diff --git a/js/ui/closeDialog.js b/js/ui/closeDialog.js
523index aa0b5ce..c4b0332 100644
524--- a/js/ui/closeDialog.js
525+++ b/js/ui/closeDialog.js
526@@ -2,6 +2,7 @@
527
528 const Clutter = imports.gi.Clutter;
529 const Gio = imports.gi.Gio;
530+const GLib = imports.gi.GLib;
531 const GObject = imports.gi.GObject;
532 const Lang = imports.lang;
533 const Meta = imports.gi.Meta;
534@@ -13,6 +14,7 @@ const Tweener = imports.ui.tweener;
535
536 var FROZEN_WINDOW_BRIGHTNESS = -0.3
537 var DIALOG_TRANSITION_TIME = 0.15
538+var ALIVE_TIMEOUT = 5000;
539
540 var CloseDialog = new Lang.Class({
541 Name: 'CloseDialog',
542@@ -26,6 +28,10 @@ var CloseDialog = new Lang.Class({
543 this.parent();
544 this._window = window;
545 this._dialog = null;
546+ this._tracked = undefined;
547+ this._timeoutId = 0;
548+ this._windowFocusChangedId = 0;
549+ this._keyFocusChangedId = 0;
550 },
551
552 get window() {
553@@ -93,10 +99,57 @@ var CloseDialog = new Lang.Class({
554 this.response(Meta.CloseDialogResponse.FORCE_CLOSE);
555 },
556
557+ _onFocusChanged() {
558+ if (Meta.is_wayland_compositor())
559+ return;
560+
561+ let focusWindow = global.display.focus_window;
562+ let keyFocus = global.stage.key_focus;
563+
564+ let shouldTrack;
565+ if (focusWindow != null)
566+ shouldTrack = focusWindow == this._window;
567+ else
568+ shouldTrack = keyFocus && this._dialog.contains(keyFocus);
569+
570+ if (this._tracked === shouldTrack)
571+ return;
572+
573+ if (shouldTrack)
574+ Main.layoutManager.trackChrome(this._dialog,
575+ { affectsInputRegion: true });
576+ else
577+ Main.layoutManager.untrackChrome(this._dialog);
578+
579+ // The buttons are broken when they aren't added to the input region,
580+ // so disable them properly in that case
581+ this._dialog.buttonLayout.get_children().forEach(b => {
582+ b.reactive = shouldTrack;
583+ });
584+
585+ this._tracked = shouldTrack;
586+ },
587+
588 vfunc_show() {
589 if (this._dialog != null)
590 return;
591
592+ Meta.disable_unredirect_for_screen(global.screen);
593+
594+ this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, ALIVE_TIMEOUT,
595+ () => {
596+ this._window.check_alive(global.display.get_current_time_roundtrip());
597+ return GLib.SOURCE_CONTINUE;
598+ });
599+
600+ this._windowFocusChangedId =
601+ global.display.connect('notify::focus-window',
602+ this._onFocusChanged.bind(this));
603+
604+ this._keyFocusChangedId =
605+ global.stage.connect('notify::key-focus',
606+ this._onFocusChanged.bind(this));
607+
608 this._addWindowEffect();
609 this._initDialog();
610
611@@ -107,9 +160,7 @@ var CloseDialog = new Lang.Class({
612 { scale_y: 1,
613 transition: 'linear',
614 time: DIALOG_TRANSITION_TIME,
615- onComplete: () => {
616- Main.layoutManager.trackChrome(this._dialog, { affectsInputRegion: true });
617- }
618+ onComplete: this._onFocusChanged.bind(this)
619 });
620 },
621
622@@ -117,6 +168,17 @@ var CloseDialog = new Lang.Class({
623 if (this._dialog == null)
624 return;
625
626+ Meta.enable_unredirect_for_screen(global.screen);
627+
628+ GLib.source_remove(this._timeoutId);
629+ this._timeoutId = 0;
630+
631+ global.display.disconnect(this._windowFocusChangedId)
632+ this._windowFocusChangedId = 0;
633+
634+ global.stage.disconnect(this._keyFocusChangedId);
635+ this._keyFocusChangedId = 0;
636+
637 let dialog = this._dialog;
638 this._dialog = null;
639 this._removeWindowEffect();
640diff --git a/js/ui/dialog.js b/js/ui/dialog.js
641index cfa192d..66cc851 100644
642--- a/js/ui/dialog.js
643+++ b/js/ui/dialog.js
644@@ -183,7 +183,7 @@ var MessageDialogContent = new Lang.Class({
645 this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
646 });
647
648- let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE,
649+ let textProps = { ellipsize: Pango.EllipsizeMode.NONE,
650 line_wrap: true };
651 Object.assign(this._subtitle.clutter_text, textProps);
652 Object.assign(this._body.clutter_text, textProps);
653diff --git a/js/ui/dnd.js b/js/ui/dnd.js
654index ec1ba1d..a36b1f6 100644
655--- a/js/ui/dnd.js
656+++ b/js/ui/dnd.js
657@@ -125,6 +125,16 @@ var _Draggable = new Lang.Class({
658 },
659
660 _onTouchEvent(actor, event) {
661+ // Here we only handle touch events on wayland. On X11
662+ // we do get emulated pointer events, which already works
663+ // for single-touch cases. Besides, the X11 passive touch grab
664+ // set up by Mutter will make us see first the touch events
665+ // and later the pointer events, so it will look like two
666+ // unrelated series of events, we want to avoid double handling
667+ // in these cases.
668+ if (!Meta.is_wayland_compositor())
669+ return Clutter.EVENT_PROPAGATE;
670+
671 if (event.type() != Clutter.EventType.TOUCH_BEGIN ||
672 !global.display.is_pointer_emulating_sequence(event.get_event_sequence()))
673 return Clutter.EVENT_PROPAGATE;
674diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
675index 8e7e7a6..49d7035 100644
676--- a/js/ui/windowManager.js
677+++ b/js/ui/windowManager.js
678@@ -1763,6 +1763,14 @@ var WindowManager = new Lang.Class({
679 }
680 }
681
682+ for (let i = 0; i < switchData.windows.length; i++) {
683+ let w = switchData.windows[i];
684+
685+ w.windowDestroyId = w.window.connect('destroy', () => {
686+ switchData.windows.splice(switchData.windows.indexOf(w), 1);
687+ });
688+ }
689+
690 switchData.inGroup.set_position(-xDest, -yDest);
691 switchData.inGroup.raise_top();
692
693@@ -1793,8 +1801,8 @@ var WindowManager = new Lang.Class({
694
695 for (let i = 0; i < switchData.windows.length; i++) {
696 let w = switchData.windows[i];
697- if (w.window.is_destroyed()) // Window gone
698- continue;
699+ w.window.disconnect(w.windowDestroyId);
700+
701 if (w.window.get_parent() == switchData.outGroup) {
702 w.window.reparent(w.parent);
703 w.window.hide();
704diff --git a/meson.build b/meson.build
705index f38798c..2bda6a2 100644
706--- a/meson.build
707+++ b/meson.build
708@@ -1,5 +1,5 @@
709 project('gnome-shell', 'c',
710- version: '3.28.3',
711+ version: '3.28.4',
712 meson_version: '>= 0.42.0',
713 license: 'GPLv2+'
714 )
715diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c
716index 005c6eb..598df4e 100644
717--- a/src/st/st-adjustment.c
718+++ b/src/st/st-adjustment.c
719@@ -205,7 +205,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
720 G_MAXDOUBLE,
721 0.0,
722 ST_PARAM_READWRITE |
723- G_PARAM_CONSTRUCT));
724+ G_PARAM_CONSTRUCT |
725+ G_PARAM_EXPLICIT_NOTIFY));
726 g_object_class_install_property (object_class,
727 PROP_UPPER,
728 g_param_spec_double ("upper",
729@@ -215,7 +216,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
730 G_MAXDOUBLE,
731 0.0,
732 ST_PARAM_READWRITE |
733- G_PARAM_CONSTRUCT));
734+ G_PARAM_CONSTRUCT |
735+ G_PARAM_EXPLICIT_NOTIFY));
736 g_object_class_install_property (object_class,
737 PROP_VALUE,
738 g_param_spec_double ("value",
739@@ -225,7 +227,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
740 G_MAXDOUBLE,
741 0.0,
742 ST_PARAM_READWRITE |
743- G_PARAM_CONSTRUCT));
744+ G_PARAM_CONSTRUCT |
745+ G_PARAM_EXPLICIT_NOTIFY));
746 g_object_class_install_property (object_class,
747 PROP_STEP_INC,
748 g_param_spec_double ("step-increment",
749@@ -235,7 +238,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
750 G_MAXDOUBLE,
751 0.0,
752 ST_PARAM_READWRITE |
753- G_PARAM_CONSTRUCT));
754+ G_PARAM_CONSTRUCT |
755+ G_PARAM_EXPLICIT_NOTIFY));
756 g_object_class_install_property (object_class,
757 PROP_PAGE_INC,
758 g_param_spec_double ("page-increment",
759@@ -245,7 +249,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
760 G_MAXDOUBLE,
761 0.0,
762 ST_PARAM_READWRITE |
763- G_PARAM_CONSTRUCT));
764+ G_PARAM_CONSTRUCT |
765+ G_PARAM_EXPLICIT_NOTIFY));
766 g_object_class_install_property (object_class,
767 PROP_PAGE_SIZE,
768 g_param_spec_double ("page-size",
769@@ -255,7 +260,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
770 G_MAXDOUBLE,
771 0.0,
772 ST_PARAM_READWRITE |
773- G_PARAM_CONSTRUCT));
774+ G_PARAM_CONSTRUCT |
775+ G_PARAM_EXPLICIT_NOTIFY));
776 /**
777 * StAdjustment::changed:
778 * @self: the #StAdjustment

Subscribers

People subscribed via source and target branches