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