Merge ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic into ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic
- Git
- lp:~3v1n0/ubuntu/+source/gnome-shell
- ubuntu/bionic
- Merge into 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) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Desktop | Pending | ||
Review via email: mp+367674@code.launchpad.net |
Commit message
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
1 | diff --git a/NEWS b/NEWS |
2 | index 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] |
36 | diff --git a/debian/changelog b/debian/changelog |
37 | index 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 | |
73 | diff --git a/debian/control b/debian/control |
74 | index 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, |
103 | diff --git a/debian/control.in b/debian/control.in |
104 | index 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, |
130 | 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 |
131 | deleted file mode 100644 |
132 | index 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); |
176 | diff --git a/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch b/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch |
177 | deleted file mode 100644 |
178 | index 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; |
222 | diff --git a/debian/patches/js-fix-invalid-access-errors.patch b/debian/patches/js-fix-invalid-access-errors.patch |
223 | index 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 | |
343 | 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 |
344 | index 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; |
356 | diff --git a/debian/patches/series b/debian/patches/series |
357 | index 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 |
369 | 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 |
370 | deleted file mode 100644 |
371 | index 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 |
460 | diff --git a/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch b/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch |
461 | deleted file mode 100644 |
462 | index 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(); |
513 | diff --git a/debian/watch b/debian/watch |
514 | index 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 |
522 | diff --git a/js/ui/closeDialog.js b/js/ui/closeDialog.js |
523 | index 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(); |
640 | diff --git a/js/ui/dialog.js b/js/ui/dialog.js |
641 | index 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); |
653 | diff --git a/js/ui/dnd.js b/js/ui/dnd.js |
654 | index 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; |
674 | diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js |
675 | index 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(); |
704 | diff --git a/meson.build b/meson.build |
705 | index 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 | ) |
715 | diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c |
716 | index 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 |