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-01-22
Status: Needs review
Proposed branch: ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic
Merge into: ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic
Prerequisite: ~3v1n0/ubuntu/+source/gnome-shell:upstream/3.28.x
Diff against target: 1363 lines (+389/-265)
15 files modified
debian/changelog (+31/-0)
debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch (+1/-1)
debian/patches/js-fix-invalid-access-errors.patch (+13/-103)
debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch (+6/-6)
debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch (+38/-0)
debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch (+65/-0)
debian/patches/optional-hot-corner.patch (+3/-3)
debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch (+212/-0)
debian/patches/series (+3/-8)
debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch (+2/-2)
debian/patches/volume-Add-back-sound-feedback-on-scroll.patch (+10/-8)
debian/patches/workaround_crasher_fractional_scaling.patch (+2/-2)
dev/null (+0/-129)
js/misc/ibusManager.js (+1/-1)
js/ui/messageTray.js (+2/-2)
Reviewer Review Type Date Requested Status
Ubuntu Desktop 2019-01-22 Pending
Review via email: mp+362055@code.launchpad.net
To post a comment you must log in.

Unmerged commits

06f3ef7... by Marco Trevisan (Treviño) on 2019-01-22

debian/patches: add missing GLib includes

Fixes LP: #1811908

ef11529... by Marco Trevisan (Treviño) on 2019-01-22

debian/patches: Label the PENDING_CHARGE state as "Not Charging"

Fixes LP: #1745032

8ce947b... by Marco Trevisan (Treviño) on 2019-01-22

debian/patches: Fix OSK activation on X11

Fixes LP: #1760399

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/debian/changelog b/debian/changelog
2index 58f19e1..050aca2 100644
3--- a/debian/changelog
4+++ b/debian/changelog
5@@ -1,3 +1,34 @@
6+gnome-shell (3.28.3+git20190124-0ubuntu18.04.1) UNRELEASED; urgency=medium
7+
8+ * New git snapshot release up to commit 24cdcc56d (LP: #1811900)
9+ - Don't fill journal with osdWindow errors (LP: #1772677)
10+ - Fix missing icon in keyboard indicator (LP: #1812266)
11+ * d/p/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch,
12+ d/p/authPrompt-Unset-preemptiveAnswer-on-reset.patch,
13+ d/p/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch,
14+ d/p/ibus-set-content-type-no-holdKeyboard.patch,
15+ d/p/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch,
16+ d/p/st-button-Ignore-pointer-emulated-touch-events.patch,
17+ d/p/shell-ignore-invalid-window-monitor-index.patch,
18+ d/p/workspace-fix-repositioned-windows-in-activities.patch:
19+ - Removed patches applied upstream
20+ * d/p/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch,
21+ d/p/js-fix-invalid-access-errors.patch,
22+ d/p/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch,
23+ d/p/optional-hot-corner.patch,
24+ d/p/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch,
25+ d/p/workaround_crasher_fractional_scaling.patch:
26+ - Refreshed as per upstream changes
27+ * d/p/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch,
28+ d/p/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch:
29+ - Fix OSK activation on X11 (LP: #1760399)
30+ * d/p/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch:
31+ - Label the PENDING_CHARGE state as "Not Charging" (LP: #1745032)
32+ * d/p/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch:
33+ - Add missing include (LP: #1811908)
34+
35+ -- Marco Trevisan (Treviño) <marco@ubuntu.com> Tue, 22 Jan 2019 01:53:57 +0100
36+
37 gnome-shell (3.28.3-0ubuntu0.18.04.4) bionic; urgency=medium
38
39 * debian/patches/ibus-set-content-type-no-holdKeyboard.patch:
40diff --git a/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch b/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch
41index 96b2cf0..3264a5c 100644
42--- a/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch
43+++ b/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch
44@@ -1,5 +1,5 @@
45 From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
46-Date: Wed, 18 Oct 2017 05:32:22 -0500
47+Date: Wed, 18 Oct 2017 12:32:22 +0200
48 Subject: StIcon: only compute shadow pipeline when the texture is properly
49 allocated
50
51diff --git a/debian/patches/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch b/debian/patches/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch
52deleted file mode 100644
53index ff98dda..0000000
54--- a/debian/patches/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch
55+++ /dev/null
56@@ -1,48 +0,0 @@
57-From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
58-Date: Tue, 29 May 2018 02:00:04 +0200
59-Subject: authPrompt: Do not enable sensitivity if retries are disallowed
60-
61-Set the sensitivity of the UI according to the canRetry parameter and thus
62-if no more logins are allowed don't take any input.
63-
64-Fixes #311
65-
66-Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/311
67-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1777956
68-Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/116
69----
70- js/gdm/authPrompt.js | 4 ++--
71- js/gdm/util.js | 2 +-
72- 2 files changed, 3 insertions(+), 3 deletions(-)
73-
74-diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
75-index d9ec7ee..a0a4a21 100644
76---- a/js/gdm/authPrompt.js
77-+++ b/js/gdm/authPrompt.js
78-@@ -242,11 +242,11 @@ var AuthPrompt = new Lang.Class({
79- this.emit('prompted');
80- },
81-
82-- _onVerificationFailed() {
83-+ _onVerificationFailed(userVerifier, canRetry) {
84- this._queryingService = null;
85- this.clear();
86-
87-- this.updateSensitivity(true);
88-+ this.updateSensitivity(canRetry);
89- this.setActorInDefaultButtonWell(null);
90- this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED;
91- },
92-diff --git a/js/gdm/util.js b/js/gdm/util.js
93-index 261e1e4..0532ca8 100644
94---- a/js/gdm/util.js
95-+++ b/js/gdm/util.js
96-@@ -562,7 +562,7 @@ var ShellUserVerifier = new Lang.Class({
97- }
98- }
99-
100-- this.emit('verification-failed');
101-+ this.emit('verification-failed', canRetry);
102- },
103-
104- _onConversationStopped(client, serviceName) {
105diff --git a/debian/patches/authPrompt-Unset-preemptiveAnswer-on-reset.patch b/debian/patches/authPrompt-Unset-preemptiveAnswer-on-reset.patch
106deleted file mode 100644
107index 11f88d2..0000000
108--- a/debian/patches/authPrompt-Unset-preemptiveAnswer-on-reset.patch
109+++ /dev/null
110@@ -1,29 +0,0 @@
111-From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
112-Date: Tue, 29 May 2018 01:51:00 +0200
113-Subject: authPrompt: Unset preemptiveAnswer on reset
114-
115-When we get a reset signal the preemptiveAnswer should be also unset or it will
116-be used next time the user authPrompt will be activated, even without any further
117-user interaction.
118-
119-Fixes #311
120-
121-Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/311
122-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1777956
123-Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/116
124----
125- js/gdm/authPrompt.js | 1 +
126- 1 file changed, 1 insertion(+)
127-
128-diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
129-index 481cd3a..d9ec7ee 100644
130---- a/js/gdm/authPrompt.js
131-+++ b/js/gdm/authPrompt.js
132-@@ -439,6 +439,7 @@ var AuthPrompt = new Lang.Class({
133- this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
134- this.cancelButton.reactive = true;
135- this.nextButton.label = _("Next");
136-+ this._preemptiveAnswer = null;
137-
138- if (this._userVerifier)
139- this._userVerifier.cancel();
140diff --git a/debian/patches/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch b/debian/patches/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch
141deleted file mode 100644
142index 24a2edd..0000000
143--- a/debian/patches/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch
144+++ /dev/null
145@@ -1,37 +0,0 @@
146-From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
147-Date: Tue, 29 May 2018 02:10:09 +0200
148-Subject: gdm, util: Always allow to retry login in unlock mode
149-
150-When in lockscreen mode there's no point of resetting the auth login as there's
151-no welcome screen, and that would just cause the UI to freeze, with no reason.
152-This could have been useful if we were stopping the user to login for a given
153-time after ALLOWED_FAILURES attempts, but this is not the case yet.
154-
155-Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/311
156-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1777956
157-Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/116
158----
159- js/gdm/util.js | 7 ++++---
160- 1 file changed, 4 insertions(+), 3 deletions(-)
161-
162-diff --git a/js/gdm/util.js b/js/gdm/util.js
163-index 0532ca8..105a320 100644
164---- a/js/gdm/util.js
165-+++ b/js/gdm/util.js
166-@@ -534,12 +534,13 @@ var ShellUserVerifier = new Lang.Class({
167- _verificationFailed(retry) {
168- // For Not Listed / enterprise logins, immediately reset
169- // the dialog
170-- // Otherwise, we allow ALLOWED_FAILURES attempts. After that, we
171-- // go back to the welcome screen.
172-+ // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts.
173-+ // After that, we go back to the welcome screen.
174-
175- this._failCounter++;
176- let canRetry = retry && this._userName &&
177-- this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY);
178-+ (this._reauthOnly ||
179-+ this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY));
180-
181- if (canRetry) {
182- if (!this.hasPendingMessages) {
183diff --git a/debian/patches/ibus-set-content-type-no-holdKeyboard.patch b/debian/patches/ibus-set-content-type-no-holdKeyboard.patch
184deleted file mode 100644
185index f0f4823..0000000
186--- a/debian/patches/ibus-set-content-type-no-holdKeyboard.patch
187+++ /dev/null
188@@ -1,71 +0,0 @@
189-From 551e827841626cd8084daa2210b3bf60e5be96be Mon Sep 17 00:00:00 2001
190-From: Takao Fujiwara <tfujiwar@redhat.com>
191-Date: Fri, 31 Aug 2018 20:22:23 +0900
192-Subject: [PATCH] keyboard: Do not call KeyboardManager.holdKeyboard() with
193- set-content-type
194-
195-When gnome-shell receives the signal of 'set-content-type' from ibus,
196-gnome-shell calls KeyboardManager.holdKeyboard() and
197-KeyboardManager.releaseKeyboard() and the functions change the current
198-input focus in GNOME Xorg and it could result in closing a popup window
199-which has a password entry by focusing on the entry.
200-The solution is to stop to call the APIs on 'set-content-type' signal.
201-
202-Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/140
203-Bug-Upstream: https://gitlab.gnome.org/GNOME/gnome-shell/issues/391
204-Bug-Ubuntu: https://launchpad.net/bugs/1765304
205----
206- js/ui/status/keyboard.js | 18 ++++++++++++++++--
207- 1 file changed, 16 insertions(+), 2 deletions(-)
208-
209-diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
210-index 6d031d88c..980019cd4 100644
211---- a/js/ui/status/keyboard.js
212-+++ b/js/ui/status/keyboard.js
213-@@ -360,11 +360,14 @@ var InputSourceManager = new Lang.Class({
214- this._settings.connect('per-window-changed', this._sourcesPerWindowChanged.bind(this));
215- this._sourcesPerWindowChanged();
216- this._disableIBus = false;
217-+ this._reloading = false;
218- },
219-
220- reload() {
221-+ this._reloading = true;
222- this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions);
223- this._inputSourcesChanged();
224-+ this._reloading = false;
225- },
226-
227- _ibusReadyCallback(im, ready) {
228-@@ -458,7 +461,15 @@ var InputSourceManager = new Lang.Class({
229- },
230-
231- activateInputSource(is, interactive) {
232-- KeyboardManager.holdKeyboard();
233-+ // The focus changes during holdKeyboard/releaseKeyboard may trick
234-+ // the client into hiding UI containing the currently focused entry.
235-+ // So holdKeyboard/releaseKeyboard are not called when
236-+ // 'set-content-type' signal is received.
237-+ // E.g. Focusing on a password entry in a popup in Xorg Firefox
238-+ // will emit 'set-content-type' signal.
239-+ // https://gitlab.gnome.org/GNOME/gnome-shell/issues/391
240-+ if (!this._reloading)
241-+ KeyboardManager.holdKeyboard();
242- this._keyboardManager.apply(is.xkbId);
243-
244- // All the "xkb:..." IBus engines simply "echo" back symbols,
245-@@ -473,7 +484,10 @@ var InputSourceManager = new Lang.Class({
246- else
247- engine = 'xkb:us::eng';
248-
249-- this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
250-+ if (!this._reloading)
251-+ this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
252-+ else
253-+ this._ibusManager.setEngine(engine);
254- this._currentInputSourceChanged(is);
255-
256- if (interactive)
257---
258-2.18.1
259-
260diff --git a/debian/patches/js-fix-invalid-access-errors.patch b/debian/patches/js-fix-invalid-access-errors.patch
261index a272d79..782ee1f 100644
262--- a/debian/patches/js-fix-invalid-access-errors.patch
263+++ b/debian/patches/js-fix-invalid-access-errors.patch
264@@ -1,5 +1,5 @@
265 From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
266-Date: Mon, 4 Dec 2017 19:41:50 -0600
267+Date: Tue, 5 Dec 2017 02:41:50 +0100
268 Subject: js: fix invalid-access errors
269
270 tweener: Save handlers on target and remove them on destroy
271@@ -24,92 +24,16 @@ Remove duplicated handler on 'destroy' and just use a generic one.
272
273 https://bugzilla.gnome.org/show_bug.cgi?id=791233
274
275-automountManager: remove allowAutorun expire timeout on volume removal
276-
277-If the volume is removed before AUTORUN_EXPIRE_TIMEOUT_SECS seconds, we can stop
278-the timeout earlier as there's nothing to unset, while the volume instance
279-won't be valid anymore.
280-
281-https://bugzilla.gnome.org/show_bug.cgi?id=791233
282-
283-messageList: stop syncing if closeButton has been destroyed
284-
285-The _sync function for Message only updates the close button visibility,
286-so we can safely stop doing that if the close button get get destroyed earlier
287-(as it happens when clicking on it).
288-
289-https://bugzilla.gnome.org/show_bug.cgi?id=791233
290-
291-workspaceThumbnail: Don't keep stale clones in list
292-
293-If a clone gets destroyed before the corresponding MetaWindow is
294-removed from the workspace, we will still find it in the list of
295-clones and try to destroy it again. Avoid the resulting warnings
296-by updating the list of clones immediately when a clone is destroyed.
297-
298-https://bugzilla.gnome.org/show_bug.cgi?id=791233
299-
300-workspace: Don't keep stale clones in list
301-
302-If a clone gets destroyed before the corresponding MetaWindow is
303-removed from the workspace, we will still find it in the list of
304-clones and try to destroy it again. Avoid the resulting warnings
305-by updating the list of clones immediately when a clone is destroyed.
306-
307-https://bugzilla.gnome.org/show_bug.cgi?id=791233
308-
309 Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=791233
310 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1747566
311 Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/4
312 ---
313- js/ui/calendar.js | 2 ++
314- js/ui/components/automountManager.js | 6 ++++
315- js/ui/dnd.js | 65 +++++++++++++++++++++---------------
316- js/ui/messageList.js | 3 +-
317- js/ui/tweener.js | 63 ++++++++++++++++++++++++++--------
318- 5 files changed, 99 insertions(+), 40 deletions(-)
319+ js/ui/dnd.js | 65 +++++++++++++++++++++++++++++++++-----------------------
320+ js/ui/tweener.js | 63 ++++++++++++++++++++++++++++++++++++++++++------------
321+ 2 files changed, 89 insertions(+), 39 deletions(-)
322
323-diff --git a/js/ui/calendar.js b/js/ui/calendar.js
324-index 651aac6..fd133cc 100644
325---- a/js/ui/calendar.js
326-+++ b/js/ui/calendar.js
327-@@ -802,6 +802,8 @@ var NotificationMessage = new Lang.Class({
328- },
329-
330- _onDestroy() {
331-+ this.parent();
332-+
333- if (this._updatedId)
334- this.notification.disconnect(this._updatedId);
335- this._updatedId = 0;
336-diff --git a/js/ui/components/automountManager.js b/js/ui/components/automountManager.js
337-index 2d8f3f8..a6cd857 100644
338---- a/js/ui/components/automountManager.js
339-+++ b/js/ui/components/automountManager.js
340-@@ -210,6 +210,10 @@ var AutomountManager = new Lang.Class({
341- },
342-
343- _onVolumeRemoved(monitor, volume) {
344-+ if (volume._allowAutorunExpireId && volume._allowAutorunExpireId > 0) {
345-+ Mainloop.source_remove(volume._allowAutorunExpireId);
346-+ delete volume._allowAutorunExpireId;
347-+ }
348- this._volumeQueue =
349- this._volumeQueue.filter(element => (element != volume));
350- },
351-@@ -234,8 +238,10 @@ var AutomountManager = new Lang.Class({
352- _allowAutorunExpire(volume) {
353- let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, () => {
354- volume.allowAutorun = false;
355-+ delete volume._allowAutorunExpireId;
356- return GLib.SOURCE_REMOVE;
357- });
358-+ volume._allowAutorunExpireId = id;
359- GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun');
360- }
361- });
362 diff --git a/js/ui/dnd.js b/js/ui/dnd.js
363-index a38607c..431c60d 100644
364+index ec1ba1d..9e961a1 100644
365 --- a/js/ui/dnd.js
366 +++ b/js/ui/dnd.js
367 @@ -27,6 +27,12 @@ var DragMotionResult = {
368@@ -205,7 +129,7 @@ index a38607c..431c60d 100644
369 this._dragOrigOpacity = this._dragActor.opacity;
370 if (this._dragActorOpacity != undefined)
371 this._dragActor.opacity = this._dragActorOpacity;
372-@@ -500,7 +515,7 @@ var _Draggable = new Lang.Class({
373+@@ -518,7 +533,7 @@ var _Draggable = new Lang.Class({
374 event.get_time())) {
375 // If it accepted the drop without taking the actor,
376 // handle it ourselves.
377@@ -214,7 +138,7 @@ index a38607c..431c60d 100644
378 if (this._restoreOnSuccess) {
379 this._restoreDragActor(event.get_time());
380 return true;
381-@@ -508,7 +523,7 @@ var _Draggable = new Lang.Class({
382+@@ -526,7 +541,7 @@ var _Draggable = new Lang.Class({
383 this._dragActor.destroy();
384 }
385
386@@ -223,7 +147,7 @@ index a38607c..431c60d 100644
387 global.screen.set_cursor(Meta.Cursor.DEFAULT);
388 this.emit('drag-end', event.get_time(), true);
389 this._dragComplete();
390-@@ -557,20 +572,22 @@ var _Draggable = new Lang.Class({
391+@@ -575,20 +590,22 @@ var _Draggable = new Lang.Class({
392
393 _cancelDrag(eventTime) {
394 this.emit('drag-cancelled', eventTime);
395@@ -250,7 +174,7 @@ index a38607c..431c60d 100644
396 this._animateDragEnd(eventTime,
397 { x: snapBackX,
398 y: snapBackY,
399-@@ -581,7 +598,7 @@ var _Draggable = new Lang.Class({
400+@@ -599,7 +616,7 @@ var _Draggable = new Lang.Class({
401 },
402
403 _restoreDragActor(eventTime) {
404@@ -259,7 +183,7 @@ index a38607c..431c60d 100644
405 let [restoreX, restoreY, restoreScale] = this._getRestoreLocation();
406
407 // fade the actor back in at its original location
408-@@ -596,12 +613,6 @@ var _Draggable = new Lang.Class({
409+@@ -614,12 +631,6 @@ var _Draggable = new Lang.Class({
410 _animateDragEnd(eventTime, params) {
411 this._animationInProgress = true;
412
413@@ -272,7 +196,7 @@ index a38607c..431c60d 100644
414 params['opacity'] = this._dragOrigOpacity;
415 params['transition'] = 'easeOutQuad';
416 params['onComplete'] = this._onAnimationComplete;
417-@@ -624,9 +635,6 @@ var _Draggable = new Lang.Class({
418+@@ -642,9 +653,6 @@ var _Draggable = new Lang.Class({
419 },
420
421 _onAnimationComplete(dragActor, eventTime) {
422@@ -282,7 +206,7 @@ index a38607c..431c60d 100644
423 if (this._dragOrigParent) {
424 Main.uiGroup.remove_child(this._dragActor);
425 this._dragOrigParent.add_actor(this._dragActor);
426-@@ -641,7 +649,7 @@ var _Draggable = new Lang.Class({
427+@@ -659,7 +667,7 @@ var _Draggable = new Lang.Class({
428 },
429
430 _dragComplete() {
431@@ -291,7 +215,7 @@ index a38607c..431c60d 100644
432 Shell.util_set_hidden_from_pick(this._dragActor, false);
433
434 this._ungrabEvents();
435-@@ -652,7 +660,12 @@ var _Draggable = new Lang.Class({
436+@@ -670,7 +678,12 @@ var _Draggable = new Lang.Class({
437 this._updateHoverId = 0;
438 }
439
440@@ -305,20 +229,6 @@ index a38607c..431c60d 100644
441 currentDraggable = null;
442 }
443 });
444-diff --git a/js/ui/messageList.js b/js/ui/messageList.js
445-index aff201e..2d397c1 100644
446---- a/js/ui/messageList.js
447-+++ b/js/ui/messageList.js
448-@@ -362,7 +362,8 @@ var Message = new Lang.Class({
449- this.setBody(body);
450-
451- this._closeButton.connect('clicked', this.close.bind(this));
452-- this.actor.connect('notify::hover', this._sync.bind(this));
453-+ let actorHoverId = this.actor.connect('notify::hover', this._sync.bind(this));
454-+ this._closeButton.connect('destroy', this.actor.disconnect.bind(this.actor, actorHoverId));
455- this.actor.connect('clicked', this._onClicked.bind(this));
456- this.actor.connect('destroy', this._onDestroy.bind(this));
457- this._sync();
458 diff --git a/js/ui/tweener.js b/js/ui/tweener.js
459 index 1a85e2f..22818ba 100644
460 --- a/js/ui/tweener.js
461diff --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
462index 1402949..8d15dd2 100644
463--- a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
464+++ b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
465@@ -1,5 +1,5 @@
466 From: Daniel van Vugt <daniel.van.vugt@canonical.com>
467-Date: Fri, 6 Apr 2018 05:26:58 -0500
468+Date: Fri, 6 Apr 2018 12:26:58 +0200
469 Subject: js/ui: Choose some actors to cache on the GPU
470
471 Adds a wrapper function to flag actors that are good candidates for
472@@ -64,10 +64,10 @@ index 47f718a..602646a 100644
473 this._container.connect('get-preferred-height', this._getPreferredHeight.bind(this));
474 this._container.connect('allocate', this._allocate.bind(this));
475 diff --git a/js/ui/dash.js b/js/ui/dash.js
476-index 5ee2476..14864f1 100644
477+index d75af65..4d3fe73 100644
478 --- a/js/ui/dash.js
479 +++ b/js/ui/dash.js
480-@@ -402,6 +402,7 @@ var Dash = new Lang.Class({
481+@@ -404,6 +404,7 @@ var Dash = new Lang.Class({
482 clip_to_allocation: true });
483 this._box._delegate = this;
484 this._container.add_actor(this._box);
485@@ -96,10 +96,10 @@ index cfa192d..89db963 100644
486 this.contentLayout = new St.BoxLayout({ vertical: true,
487 style_class: "modal-dialog-content-box" });
488 diff --git a/js/ui/main.js b/js/ui/main.js
489-index d86cf9e..5277cf7 100644
490+index 2c54bb6..baca1c2 100644
491 --- a/js/ui/main.js
492 +++ b/js/ui/main.js
493-@@ -716,3 +716,19 @@ function showRestartMessage(message) {
494+@@ -719,3 +719,19 @@ function showRestartMessage(message) {
495 let restartMessage = new RestartMessage(message);
496 restartMessage.open();
497 }
498@@ -120,7 +120,7 @@ index d86cf9e..5277cf7 100644
499 + actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
500 +}
501 diff --git a/js/ui/panel.js b/js/ui/panel.js
502-index 2f59324..2237ead 100644
503+index ef14ddf..a76916b 100644
504 --- a/js/ui/panel.js
505 +++ b/js/ui/panel.js
506 @@ -772,6 +772,7 @@ var Panel = new Lang.Class({
507diff --git a/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch b/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch
508new file mode 100644
509index 0000000..a694dce
510--- /dev/null
511+++ b/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch
512@@ -0,0 +1,38 @@
513+From: Carlos Garnacho <carlosg@gnome.org>
514+Date: Mon, 17 Sep 2018 21:04:48 +0200
515+Subject: keyboard: Filter redundant FocusTracker::position-changed signals
516+
517+Just emit the signal if it did actually change.
518+
519+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812735
520+Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/239
521+---
522+ js/ui/keyboard.js | 8 ++++++++
523+ 1 file changed, 8 insertions(+)
524+
525+diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
526+index 4413846..4a923ad 100644
527+--- a/js/ui/keyboard.js
528++++ b/js/ui/keyboard.js
529+@@ -491,6 +491,7 @@ var FocusTracker = new Lang.Class({
530+ _init() {
531+ this._currentWindow = null;
532+ this._currentWindowPositionId = 0;
533++ this._rect = null;
534+
535+ global.screen.get_display().connect('notify::focus-window', () => {
536+ this._setCurrentWindow(global.screen.get_display().focus_window);
537+@@ -539,6 +540,13 @@ var FocusTracker = new Lang.Class({
538+ rect.y -= frameRect.y;
539+ }
540+
541++ if (this._rect &&
542++ this._rect.x == rect.x &&
543++ this._rect.y == rect.y &&
544++ this._rect.width == rect.width &&
545++ this._rect.height == rect.height)
546++ return;
547++
548+ this._rect = rect;
549+ this.emit('position-changed');
550+ },
551diff --git a/debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch b/debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch
552new file mode 100644
553index 0000000..4869778
554--- /dev/null
555+++ b/debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch
556@@ -0,0 +1,65 @@
557+From: Carlos Garnacho <carlosg@gnome.org>
558+Date: Tue, 18 Sep 2018 12:54:29 +0200
559+Subject: keyboard: Listen to IbusPanelService::focus-in/out to track focus
560+ changes
561+
562+In X11 there's no input panel state requests, so restore the previous behavior
563+that focused entries would always toggle the OSK on there.
564+
565+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812735
566+Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/239
567+---
568+ js/misc/ibusManager.js | 5 +++++
569+ js/ui/keyboard.js | 16 ++++++++++++++++
570+ 2 files changed, 21 insertions(+)
571+
572+diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js
573+index ad2e0fc..33ad877 100644
574+--- a/js/misc/ibusManager.js
575++++ b/js/misc/ibusManager.js
576+@@ -119,6 +119,11 @@ var IBusManager = new Lang.Class({
577+ let cursorLocation = { x, y, width: w, height: h };
578+ this.emit('set-cursor-location', cursorLocation);
579+ });
580++ this._panelService.connect('focus-in', (panel, path) => {
581++ if (!GLib.str_has_suffix(path, '/InputContext_1'))
582++ this.emit ('focus-in');
583++ });
584++ this._panelService.connect('focus-out', () => { this.emit('focus-out'); });
585+
586+ try {
587+ // IBus versions older than 1.5.10 have a bug which
588+diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
589+index 4a923ad..7dba1a8 100644
590+--- a/js/ui/keyboard.js
591++++ b/js/ui/keyboard.js
592+@@ -512,6 +512,12 @@ var FocusTracker = new Lang.Class({
593+
594+ this._setCurrentRect(rect);
595+ });
596++ this._ibusManager.connect('focus-in', () => {
597++ this.emit('focus-changed', true);
598++ });
599++ this._ibusManager.connect('focus-out', () => {
600++ this.emit('focus-changed', false);
601++ });
602+ },
603+
604+ get currentWindow() {
605+@@ -594,6 +600,16 @@ var Keyboard = new Lang.Class({
606+ this._animFocusedWindow = null;
607+ this._oskFocusWindow = null;
608+ });
609++ this._focusTracker.connect('focus-changed', (tracker, focused) => {
610++ // Valid only for X11
611++ if (Meta.is_wayland_compositor())
612++ return;
613++
614++ if (focused)
615++ this.show(Main.layoutManager.focusIndex);
616++ else
617++ this.hide();
618++ });
619+
620+ Meta.get_backend().connect('last-device-changed',
621+ (backend, deviceId) => {
622diff --git a/debian/patches/optional-hot-corner.patch b/debian/patches/optional-hot-corner.patch
623index e6a8dab..aa2e9b0 100644
624--- a/debian/patches/optional-hot-corner.patch
625+++ b/debian/patches/optional-hot-corner.patch
626@@ -33,10 +33,10 @@ index 63a1903..8ec1d26 100644
627 <default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
628 <summary>List of desktop file IDs for favorite applications</summary>
629 diff --git a/js/ui/layout.js b/js/ui/layout.js
630-index 6f81039..3d53bd4 100644
631+index e615e56..fa21ef8 100644
632 --- a/js/ui/layout.js
633 +++ b/js/ui/layout.js
634-@@ -268,6 +268,9 @@ var LayoutManager = new Lang.Class({
635+@@ -269,6 +269,9 @@ var LayoutManager = new Lang.Class({
636 this._backgroundGroup.lower_bottom();
637 this._bgManagers = [];
638
639@@ -46,7 +46,7 @@ index 6f81039..3d53bd4 100644
640 // Need to update struts on new workspaces when they are added
641 global.screen.connect('notify::n-workspaces',
642 this._queueUpdateRegions.bind(this));
643-@@ -364,6 +367,11 @@ var LayoutManager = new Lang.Class({
644+@@ -365,6 +368,11 @@ var LayoutManager = new Lang.Class({
645 });
646 this.hotCorners = [];
647
648diff --git a/debian/patches/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch b/debian/patches/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch
649deleted file mode 100644
650index 5690583..0000000
651--- a/debian/patches/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch
652+++ /dev/null
653@@ -1,44 +0,0 @@
654-From: Andrea Azzarone <andrea.azzarone@canonical.com>
655-Date: Thu, 21 Jun 2018 16:40:43 +0000
656-Subject: popupMenu: Don't handle key presses directly if there are modifiers
657-
658-Key events involved in a keyboard shortcut are not completely consumed by
659-Mutter. That means that if the popupMenu is bound to a shortcut (e.g.
660-Alt<Space>) and the user keeps the keys pressed, the same key-event will be
661-delivered to the popupMenu. We can workaround this issue filtering out all the
662-events where a a modifier is down (except capslock).
663-
664-Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/372
665-
666-(cherry picked from commit 2e90c5fa4b35ebe26c694223966834ee949cfce3)
667-
668-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1784671
669-Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/372
670-Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/gnome-shell/commit/445eed40
671----
672- js/ui/popupMenu.js | 11 ++++++++++-
673- 1 file changed, 10 insertions(+), 1 deletion(-)
674-
675-diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
676-index 83194d7..f449d6e 100644
677---- a/js/ui/popupMenu.js
678-+++ b/js/ui/popupMenu.js
679-@@ -141,8 +141,17 @@ var PopupBaseMenuItem = new Lang.Class({
680- },
681-
682- _onKeyPressEvent(actor, event) {
683-- let symbol = event.get_key_symbol();
684-+ let state = event.get_state();
685-
686-+ // if user has a modifier down (except capslock)
687-+ // then don't handle the key press here
688-+ state &= ~Clutter.ModifierType.LOCK_MASK;
689-+ state &= Clutter.ModifierType.MODIFIER_MASK;
690-+
691-+ if (state)
692-+ return Clutter.EVENT_PROPAGATE;
693-+
694-+ let symbol = event.get_key_symbol();
695- if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
696- this.activate(event);
697- return Clutter.EVENT_STOP;
698diff --git a/debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch b/debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch
699new file mode 100644
700index 0000000..d74b23c
701--- /dev/null
702+++ b/debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch
703@@ -0,0 +1,212 @@
704+From: =?utf-8?q?Jo=C3=A3o_Paulo_Rechi_Vita?= <jprvita@endlessm.com>
705+Date: Fri, 2 Nov 2018 21:51:33 +0100
706+Subject: power: Label the PENDING_CHARGE state as "Not Charging"
707+
708+The pending-charge state means AC power is on but the battery is not
709+being charged. This can happen because its charge is above a certain
710+threshold, to avoid short charging cycles and prolong the battery's
711+life, or because the PSU is not powerful enough to charge the batteries.
712+
713+Instead of lying to the user about something being estimated, we should
714+simply tell the truth and set the label to "Not Charging".
715+
716+Closes: #701.
717+
718+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1745032
719+Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/701
720+Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/52c59ac0dd7ddbe064
721+---
722+ js/ui/status/power.js | 4 +++-
723+ po/ca.po | 4 ++++
724+ po/de.po | 4 ++++
725+ po/el.po | 4 ++++
726+ po/eo.po | 4 ++++
727+ po/es.po | 4 ++++
728+ po/fur.po | 4 ++++
729+ po/it.po | 4 ++++
730+ po/ja.po | 4 ++++
731+ po/sl.po | 4 ++++
732+ po/sv.po | 4 ++++
733+ po/tr.po | 4 ++++
734+ 12 files changed, 47 insertions(+), 1 deletion(-)
735+
736+diff --git a/js/ui/status/power.js b/js/ui/status/power.js
737+index a2bfd75..bfd0de5 100644
738+--- a/js/ui/status/power.js
739++++ b/js/ui/status/power.js
740+@@ -79,7 +79,9 @@ var Indicator = new Lang.Class({
741+ seconds = this._proxy.TimeToFull;
742+ else if (this._proxy.State == UPower.DeviceState.DISCHARGING)
743+ seconds = this._proxy.TimeToEmpty;
744+- // state is one of PENDING_CHARGING, PENDING_DISCHARGING
745++ else if (this._proxy.State == UPower.DeviceState.PENDING_CHARGE)
746++ return _("Not Charging");
747++ // state is PENDING_DISCHARGE
748+ else
749+ return _("Estimating…");
750+
751+diff --git a/po/ca.po b/po/ca.po
752+index 5858f87..0bd69fd 100644
753+--- a/po/ca.po
754++++ b/po/ca.po
755+@@ -1922,6 +1922,10 @@ msgstr "Paràmetres d'energia"
756+ msgid "Fully Charged"
757+ msgstr "Totalment carregada"
758+
759++#: js/ui/status/power.js:74
760++msgid "Not Charging"
761++msgstr ""
762++
763+ #. 0 is reported when UPower does not have enough data
764+ #. to estimate battery life
765+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
766+diff --git a/po/de.po b/po/de.po
767+index bb83a6e..5565f9e 100644
768+--- a/po/de.po
769++++ b/po/de.po
770+@@ -1935,6 +1935,10 @@ msgstr "Energieeinstellungen"
771+ msgid "Fully Charged"
772+ msgstr "Vollständig geladen"
773+
774++#: js/ui/status/power.js:74
775++msgid "Not Charging"
776++msgstr "Lädt nicht"
777++
778+ #. 0 is reported when UPower does not have enough data
779+ #. to estimate battery life
780+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
781+diff --git a/po/el.po b/po/el.po
782+index c822608..2061c24 100644
783+--- a/po/el.po
784++++ b/po/el.po
785+@@ -1795,6 +1795,10 @@ msgstr "Ρυθμίσεις τροφοδοσίας"
786+ msgid "Fully Charged"
787+ msgstr "Πλήρως φορτισμένη"
788+
789++#: js/ui/status/power.js:74
790++msgid "Not Charging"
791++msgstr "Δεν φορτίζεται"
792++
793+ #. 0 is reported when UPower does not have enough data
794+ #. to estimate battery life
795+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
796+diff --git a/po/eo.po b/po/eo.po
797+index 4ee0b5e..1d7278b 100644
798+--- a/po/eo.po
799++++ b/po/eo.po
800+@@ -1527,6 +1527,10 @@ msgstr "Energiagordoj"
801+ msgid "Fully Charged"
802+ msgstr "Plene ŝargita"
803+
804++#: js/ui/status/power.js:74
805++msgid "Not Charging"
806++msgstr "Ne ŝargante"
807++
808+ #. 0 is reported when UPower does not have enough data
809+ #. to estimate battery life
810+ #: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
811+diff --git a/po/es.po b/po/es.po
812+index e2c935c..28dd56c 100644
813+--- a/po/es.po
814++++ b/po/es.po
815+@@ -1914,6 +1914,10 @@ msgstr "Configuración de energía"
816+ msgid "Fully Charged"
817+ msgstr "Cargada completamente"
818+
819++#: js/ui/status/power.js:74
820++msgid "Not Charging"
821++msgstr "No está cargando"
822++
823+ #. 0 is reported when UPower does not have enough data
824+ #. to estimate battery life
825+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
826+diff --git a/po/fur.po b/po/fur.po
827+index f416ed0..6e485a8 100644
828+--- a/po/fur.po
829++++ b/po/fur.po
830+@@ -1910,6 +1910,10 @@ msgstr "Impostazions di alimentazion"
831+ msgid "Fully Charged"
832+ msgstr "Cjarie"
833+
834++#: js/ui/status/power.js:74
835++msgid "Not Charging"
836++msgstr "Nol sta cjariant"
837++
838+ #. 0 is reported when UPower does not have enough data
839+ #. to estimate battery life
840+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
841+diff --git a/po/it.po b/po/it.po
842+index ab18794..bcc2438 100644
843+--- a/po/it.po
844++++ b/po/it.po
845+@@ -1931,6 +1931,10 @@ msgstr "Impostazioni alimentazione"
846+ msgid "Fully Charged"
847+ msgstr "Carica"
848+
849++#: js/ui/status/power.js:74
850++msgid "Not Charging"
851++msgstr "Non in carica"
852++
853+ #. 0 is reported when UPower does not have enough data
854+ #. to estimate battery life
855+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
856+diff --git a/po/ja.po b/po/ja.po
857+index 0264e97..e6ef9a6 100644
858+--- a/po/ja.po
859++++ b/po/ja.po
860+@@ -1800,6 +1800,10 @@ msgstr "電源設定"
861+ msgid "Fully Charged"
862+ msgstr "充電完了"
863+
864++#: js/ui/status/power.js:74
865++msgid "Not Charging"
866++msgstr "放電中"
867++
868+ #. 0 is reported when UPower does not have enough data
869+ #. to estimate battery life
870+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
871+diff --git a/po/sl.po b/po/sl.po
872+index b7e9798..75b7b62 100644
873+--- a/po/sl.po
874++++ b/po/sl.po
875+@@ -1937,6 +1937,10 @@ msgstr "Upravljanje napajanja"
876+ msgid "Fully Charged"
877+ msgstr "Polno napolnjeno"
878+
879++#: js/ui/status/power.js:74
880++msgid "Not Charging"
881++msgstr "Naprava se ne polni"
882++
883+ #. 0 is reported when UPower does not have enough data
884+ #. to estimate battery life
885+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
886+diff --git a/po/sv.po b/po/sv.po
887+index 5345657..edd66ff 100644
888+--- a/po/sv.po
889++++ b/po/sv.po
890+@@ -1899,6 +1899,10 @@ msgstr "Ströminställningar"
891+ msgid "Fully Charged"
892+ msgstr "Fulladdad"
893+
894++#: js/ui/status/power.js:74
895++msgid "Not Charging"
896++msgstr "Laddar inte"
897++
898+ #. 0 is reported when UPower does not have enough data
899+ #. to estimate battery life
900+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
901+diff --git a/po/tr.po b/po/tr.po
902+index 0304eb8..409362e 100644
903+--- a/po/tr.po
904++++ b/po/tr.po
905+@@ -1889,6 +1889,10 @@ msgstr "Güç Ayarları"
906+ msgid "Fully Charged"
907+ msgstr "Tümüyle Dolu"
908+
909++#: js/ui/status/power.js:74
910++msgid "Not Charging"
911++msgstr "Şarj Olmuyor"
912++
913+ #. 0 is reported when UPower does not have enough data
914+ #. to estimate battery life
915+ #: js/ui/status/power.js:84 js/ui/status/power.js:90
916diff --git a/debian/patches/series b/debian/patches/series
917index 50a4a68..072136d 100644
918--- a/debian/patches/series
919+++ b/debian/patches/series
920@@ -12,17 +12,12 @@ ubuntu_gdm_alternatives.patch
921 ubuntu_block_mode_extension_update.patch
922 volume-Add-back-sound-feedback-on-scroll.patch
923 workaround_crasher_fractional_scaling.patch
924-shell-ignore-invalid-window-monitor-index.patch
925 StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch
926 js-fix-invalid-access-errors.patch
927-workspace-fix-repositioned-windows-in-activities.patch
928 st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch
929 js-ui-Choose-some-actors-to-cache-on-the-GPU.patch
930-authPrompt-Unset-preemptiveAnswer-on-reset.patch
931-authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch
932-gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch
933-popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch
934-st-button-Ignore-pointer-emulated-touch-events.patch
935 st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch
936 st-scroll-view-Remove-scrollbars-references-on-dispose.patch
937-ibus-set-content-type-no-holdKeyboard.patch
938+keyboard-Filter-redundant-FocusTracker-position-changed-s.patch
939+keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch
940+power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch
941diff --git a/debian/patches/shell-ignore-invalid-window-monitor-index.patch b/debian/patches/shell-ignore-invalid-window-monitor-index.patch
942deleted file mode 100644
943index 4d223de..0000000
944--- a/debian/patches/shell-ignore-invalid-window-monitor-index.patch
945+++ /dev/null
946@@ -1,98 +0,0 @@
947-From: Sam Spilsbury <sam@endlessm.com>
948-Date: Wed, 11 Oct 2017 05:42:04 -0500
949-Subject: shell: ignore invalid window monitor index
950-
951-windowMenu: Check if monitorIndex is valid before using it
952-
953-Calling meta_window_get_monitor on an unmanaged window may return
954--1, so we need to check the return value.
955-
956-Fixes https://bugzilla.gnome.org/show_bug.cgi?id=788882
957-
958-keyboard: Handle case where keyboardMonitor is unset
959-
960-This may be the case where keyboardIndex is -1, which may be the
961-case where either the keyboard monitor hasn't been set yet, or
962-the keyboard is being unmanaged and meta_window_get_monitor
963-returns -1
964-
965-https://bugzilla.gnome.org/show_bug.cgi?id=788882
966-
967-layout: Remove focusMonitor, as it is unused
968-
969-It also uses focusIndex to determine which monitor to
970-return and may occassionally return undefined if focusIndex
971-was -1.
972-
973-https://bugzilla.gnome.org/show_bug.cgi?id=788882
974-
975-Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=788882
976-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1724439
977-Forwarded: yes
978----
979- js/ui/keyboard.js | 8 ++++++++
980- js/ui/layout.js | 4 ----
981- js/ui/windowMenu.js | 7 ++++---
982- 3 files changed, 12 insertions(+), 7 deletions(-)
983-
984-diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
985-index 5fcdf98..dd47676 100644
986---- a/js/ui/keyboard.js
987-+++ b/js/ui/keyboard.js
988-@@ -919,6 +919,12 @@ var Keyboard = new Lang.Class({
989- if (this.actor == null)
990- return;
991- let monitor = Main.layoutManager.keyboardMonitor;
992-+
993-+ // monitor may be null here if the underlying keyboard monitor
994-+ // index was still unset.
995-+ if (!monitor)
996-+ return;
997-+
998- let maxHeight = monitor.height / 3;
999- this.actor.width = monitor.width;
1000- this.actor.height = maxHeight;
1001-@@ -981,6 +987,8 @@ var Keyboard = new Lang.Class({
1002- if (!this._enabled)
1003- return;
1004-
1005-+
1006-+
1007- this._clearShowIdle();
1008- this._keyboardRequested = true;
1009-
1010-diff --git a/js/ui/layout.js b/js/ui/layout.js
1011-index 3d53bd4..cf0dad0 100644
1012---- a/js/ui/layout.js
1013-+++ b/js/ui/layout.js
1014-@@ -564,10 +564,6 @@ var LayoutManager = new Lang.Class({
1015- return i;
1016- },
1017-
1018-- get focusMonitor() {
1019-- return this.monitors[this.focusIndex];
1020-- },
1021--
1022- set keyboardIndex(v) {
1023- this._keyboardIndex = v;
1024- this._updateKeyboardBox();
1025-diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js
1026-index f0e564b..9bd7d19 100644
1027---- a/js/ui/windowMenu.js
1028-+++ b/js/ui/windowMenu.js
1029-@@ -128,11 +128,12 @@ var WindowMenu = new Lang.Class({
1030-
1031- let screen = global.screen;
1032- let nMonitors = screen.get_n_monitors();
1033-- if (nMonitors > 1) {
1034-+ let monitorIndex = window.get_monitor();
1035-+ // meta_window_get_monitor can return -1, so handle that case
1036-+ // appropriately.
1037-+ if (nMonitors > 1 && monitorIndex >= 0) {
1038- this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
1039-
1040-- let monitorIndex = window.get_monitor();
1041--
1042- let dir = Meta.ScreenDirection.UP;
1043- let upMonitorIndex =
1044- screen.get_monitor_neighbor_index(monitorIndex, dir);
1045diff --git a/debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch b/debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch
1046deleted file mode 100644
1047index 538bb17..0000000
1048--- a/debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch
1049+++ /dev/null
1050@@ -1,42 +0,0 @@
1051-From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
1052-Date: Thu, 25 Oct 2018 06:35:25 +0200
1053-Subject: st-button: Ignore pointer emulated touch events
1054-
1055-In X11, pointer emulated touch events are replicated with normal PRESS, RELEASE
1056-pair events which are generated by the server. Thus for a single tap we get:
1057- - TOUCH_BEGIN -> TOUCH_END, PRESS -> RELEASE
1058-
1059-This will cause st-button to send two "clicked" signals, instead of just one,
1060-breaking extensions (like dash-to-dock) that show buttons in the main stage
1061-which will be checked two times or that will receive the same signal two times.
1062-
1063-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1745888
1064-Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/272
1065----
1066- src/st/st-button.c | 7 +++++--
1067- 1 file changed, 5 insertions(+), 2 deletions(-)
1068-
1069-diff --git a/src/st/st-button.c b/src/st/st-button.c
1070-index 8f5c492..a3a7b24 100644
1071---- a/src/st/st-button.c
1072-+++ b/src/st/st-button.c
1073-@@ -248,14 +248,17 @@ st_button_touch_event (ClutterActor *actor,
1074- if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence)
1075- {
1076- clutter_input_device_sequence_grab (device, sequence, actor);
1077-- st_button_press (button, device, 0, sequence);
1078-+ if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event))
1079-+ st_button_press (button, device, 0, sequence);
1080- return CLUTTER_EVENT_STOP;
1081- }
1082- else if (event->type == CLUTTER_TOUCH_END &&
1083- priv->device == device &&
1084- priv->press_sequence == sequence)
1085- {
1086-- st_button_release (button, device, mask, 0, sequence);
1087-+ if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event))
1088-+ st_button_release (button, device, mask, 0, sequence);
1089-+
1090- clutter_input_device_sequence_ungrab (device, sequence);
1091- return CLUTTER_EVENT_STOP;
1092- }
1093diff --git a/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch b/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch
1094index caa3adc..3a7d44e 100644
1095--- a/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch
1096+++ b/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch
1097@@ -1,5 +1,5 @@
1098 From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
1099-Date: Wed, 29 Nov 2017 19:48:02 -0600
1100+Date: Thu, 30 Nov 2017 02:48:02 +0100
1101 Subject: st-texture-cache: Cancel sliced image loading on target actor
1102 destroy
1103
1104@@ -19,7 +19,7 @@ Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/5
1105 1 file changed, 26 insertions(+), 4 deletions(-)
1106
1107 diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c
1108-index 0c794a3..c39464e 100644
1109+index 6219071..fc81189 100644
1110 --- a/src/st/st-texture-cache.c
1111 +++ b/src/st/st-texture-cache.c
1112 @@ -1027,6 +1027,7 @@ typedef struct {
1113diff --git a/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch b/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch
1114index f6ea268..51c731d 100644
1115--- a/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch
1116+++ b/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch
1117@@ -1,5 +1,5 @@
1118 From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
1119-Date: Fri, 23 Feb 2018 16:58:22 -0600
1120+Date: Fri, 23 Feb 2018 23:58:22 +0100
1121 Subject: volume: Add back sound feedback on scroll
1122
1123 Commit 8d4855f1008 accidentally removed the volume change feedback
1124@@ -34,8 +34,8 @@ Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/53
1125 Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/51
1126 ---
1127 js/ui/slider.js | 2 --
1128- js/ui/status/volume.js | 19 ++++++++++++++++++-
1129- 2 files changed, 18 insertions(+), 3 deletions(-)
1130+ js/ui/status/volume.js | 20 +++++++++++++++++++-
1131+ 2 files changed, 19 insertions(+), 3 deletions(-)
1132
1133 diff --git a/js/ui/slider.js b/js/ui/slider.js
1134 index 9853929..30295b4 100644
1135@@ -52,18 +52,20 @@ index 9853929..30295b4 100644
1136 }
1137 return Clutter.EVENT_PROPAGATE;
1138 diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js
1139-index 65c4c42..c0f9cf3 100644
1140+index 65c4c42..de5f188 100644
1141 --- a/js/ui/status/volume.js
1142 +++ b/js/ui/status/volume.js
1143-@@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
1144+@@ -3,7 +3,9 @@
1145+ const Clutter = imports.gi.Clutter;
1146 const Lang = imports.lang;
1147 const Gio = imports.gi.Gio;
1148++const GLib = imports.gi.GLib;
1149 const Gvc = imports.gi.Gvc;
1150 +const Mainloop = imports.mainloop;
1151 const St = imports.gi.St;
1152 const Signals = imports.signals;
1153
1154-@@ -36,9 +37,16 @@ var StreamSlider = new Lang.Class({
1155+@@ -36,9 +38,16 @@ var StreamSlider = new Lang.Class({
1156
1157 this.item = new PopupMenu.PopupBaseMenuItem({ activate: false });
1158
1159@@ -81,7 +83,7 @@ index 65c4c42..c0f9cf3 100644
1160
1161 this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
1162 this.item.actor.add(this._icon);
1163-@@ -135,6 +143,7 @@ var StreamSlider = new Lang.Class({
1164+@@ -135,6 +144,7 @@ var StreamSlider = new Lang.Class({
1165
1166 let volume = value * this._get_control_max_volume();
1167 let prevMuted = this._stream.is_muted;
1168@@ -89,7 +91,7 @@ index 65c4c42..c0f9cf3 100644
1169 if (volume < 1) {
1170 this._stream.volume = 0;
1171 if (!prevMuted)
1172-@@ -145,6 +154,14 @@ var StreamSlider = new Lang.Class({
1173+@@ -145,6 +155,14 @@ var StreamSlider = new Lang.Class({
1174 this._stream.change_is_muted(false);
1175 }
1176 this._stream.push_volume();
1177diff --git a/debian/patches/workaround_crasher_fractional_scaling.patch b/debian/patches/workaround_crasher_fractional_scaling.patch
1178index 7c3636d..4b76dc0 100644
1179--- a/debian/patches/workaround_crasher_fractional_scaling.patch
1180+++ b/debian/patches/workaround_crasher_fractional_scaling.patch
1181@@ -12,10 +12,10 @@ Bug: https://bugzilla.gnome.org/show_bug.cgi?id=788316
1182 1 file changed, 1 insertion(+), 1 deletion(-)
1183
1184 diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c
1185-index 8942966..e57ca65 100644
1186+index 0637d97..7342c6c 100644
1187 --- a/src/st/st-theme-node-drawing.c
1188 +++ b/src/st/st-theme-node-drawing.c
1189-@@ -2505,7 +2505,7 @@ st_theme_node_paint (StThemeNode *node,
1190+@@ -2531,7 +2531,7 @@ st_theme_node_paint (StThemeNode *node,
1191 allocation.x2 = width;
1192 allocation.y2 = height;
1193
1194diff --git a/debian/patches/workspace-fix-repositioned-windows-in-activities.patch b/debian/patches/workspace-fix-repositioned-windows-in-activities.patch
1195deleted file mode 100644
1196index 7da103a..0000000
1197--- a/debian/patches/workspace-fix-repositioned-windows-in-activities.patch
1198+++ /dev/null
1199@@ -1,129 +0,0 @@
1200-From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
1201-Date: Fri, 19 Jan 2018 08:00:10 -0600
1202-Subject: workspace: fix repositioned windows in activities
1203-
1204-workspace: Recompute bounding box on window 'position-changed'
1205-
1206-We need to update the clone position if window size changed
1207-also, rename meta window 'size-changed' callback accordingly.
1208-
1209-https://bugzilla.gnome.org/show_bug.cgi?id=792681
1210-
1211-workspaceThumbnail: Sync clone position changes with actor
1212-
1213-We need to update the clone position if window actor (not the meta window)
1214-position changed.
1215-
1216-https://bugzilla.gnome.org/show_bug.cgi?id=792681
1217-
1218-Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=776588
1219-Bug-Ubuntu: https://bugs.launchpad.net/gnome-shell/+bug/1653153
1220-Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/8
1221----
1222- js/ui/workspace.js | 25 +++++++++++++------------
1223- js/ui/workspaceThumbnail.js | 7 +++----
1224- 2 files changed, 16 insertions(+), 16 deletions(-)
1225-
1226-diff --git a/js/ui/workspace.js b/js/ui/workspace.js
1227-index 8b56932..112c54e 100644
1228---- a/js/ui/workspace.js
1229-+++ b/js/ui/workspace.js
1230-@@ -137,8 +137,10 @@ var WindowClone = new Lang.Class({
1231- this._dragSlot = [0, 0, 0, 0];
1232- this._stackAbove = null;
1233-
1234-- this._windowClone._updateId = this.metaWindow.connect('size-changed',
1235-- this._onRealWindowSizeChanged.bind(this));
1236-+ this._windowClone._sizeChangedId = this.metaWindow.connect('size-changed',
1237-+ this._onMetaWindowSizeChanged.bind(this));
1238-+ this._windowClone._posChangedId = this.metaWindow.connect('position-changed',
1239-+ this._computeBoundingBox.bind(this));
1240- this._windowClone._destroyId =
1241- this.realWindow.connect('destroy', () => {
1242- // First destroy the clone and then destroy everything
1243-@@ -206,8 +208,7 @@ var WindowClone = new Lang.Class({
1244-
1245- addAttachedDialog(win) {
1246- this._doAddAttachedDialog(win, win.get_compositor_private());
1247-- this._computeBoundingBox();
1248-- this.emit('size-changed');
1249-+ this._onMetaWindowSizeChanged();
1250- },
1251-
1252- hasAttachedDialogs() {
1253-@@ -216,15 +217,14 @@ var WindowClone = new Lang.Class({
1254-
1255- _doAddAttachedDialog(metaWin, realWin) {
1256- let clone = new Clutter.Clone({ source: realWin });
1257-- clone._updateId = metaWin.connect('size-changed', () => {
1258-- this._computeBoundingBox();
1259-- this.emit('size-changed');
1260-- });
1261-+ clone._sizeChangedId = metaWin.connect('size-changed',
1262-+ this._onMetaWindowSizeChanged.bind(this));
1263-+ clone._posChangedId = metaWin.connect('position-changed',
1264-+ this._onMetaWindowSizeChanged.bind(this));
1265- clone._destroyId = realWin.connect('destroy', () => {
1266- clone.destroy();
1267-
1268-- this._computeBoundingBox();
1269-- this.emit('size-changed');
1270-+ this._onMetaWindowSizeChanged();
1271- });
1272- this.actor.add_child(clone);
1273- },
1274-@@ -321,12 +321,13 @@ var WindowClone = new Lang.Class({
1275- else
1276- realWindow = child.source;
1277-
1278-- realWindow.meta_window.disconnect(child._updateId);
1279-+ realWindow.meta_window.disconnect(child._sizeChangedId);
1280-+ realWindow.meta_window.disconnect(child._posChangedId);
1281- realWindow.disconnect(child._destroyId);
1282- });
1283- },
1284-
1285-- _onRealWindowSizeChanged() {
1286-+ _onMetaWindowSizeChanged() {
1287- this._computeBoundingBox();
1288- this.emit('size-changed');
1289- },
1290-diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js
1291-index 381169e..417296d 100644
1292---- a/js/ui/workspaceThumbnail.js
1293-+++ b/js/ui/workspaceThumbnail.js
1294-@@ -68,7 +68,7 @@ var WindowClone = new Lang.Class({
1295- this.realWindow = realWindow;
1296- this.metaWindow = realWindow.meta_window;
1297-
1298-- this.clone._updateId = this.metaWindow.connect('position-changed',
1299-+ this.clone._updateId = this.realWindow.connect('notify::position',
1300- this._onPositionChanged.bind(this));
1301- this.clone._destroyId = this.realWindow.connect('destroy', () => {
1302- // First destroy the clone and then destroy everything
1303-@@ -153,7 +153,7 @@ var WindowClone = new Lang.Class({
1304- let clone = new Clutter.Clone({ source: realDialog });
1305- this._updateDialogPosition(realDialog, clone);
1306-
1307-- clone._updateId = metaDialog.connect('position-changed', dialog => {
1308-+ clone._updateId = realDialog.connect('notify::position', dialog => {
1309- this._updateDialogPosition(dialog, clone);
1310- });
1311- clone._destroyId = realDialog.connect('destroy', () => {
1312-@@ -171,7 +171,6 @@ var WindowClone = new Lang.Class({
1313- },
1314-
1315- _onPositionChanged() {
1316-- let rect = this.metaWindow.get_frame_rect();
1317- this.actor.set_position(this.realWindow.x, this.realWindow.y);
1318- },
1319-
1320-@@ -179,7 +178,7 @@ var WindowClone = new Lang.Class({
1321- this.actor.get_children().forEach(child => {
1322- let realWindow = child.source;
1323-
1324-- realWindow.meta_window.disconnect(child._updateId);
1325-+ realWindow.disconnect(child._updateId);
1326- realWindow.disconnect(child._destroyId);
1327- });
1328- },
1329diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js
1330index 6452e49..ad2e0fc 100644
1331--- a/js/misc/ibusManager.js
1332+++ b/js/misc/ibusManager.js
1333@@ -205,7 +205,7 @@ var IBusManager = new Lang.Class({
1334 }
1335
1336 this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
1337- null, callback);
1338+ null, callback || null);
1339 },
1340
1341 preloadEngines(ids) {
1342diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
1343index 3fdaaac..421848b 100644
1344--- a/js/ui/messageTray.js
1345+++ b/js/ui/messageTray.js
1346@@ -1320,7 +1320,7 @@ var MessageTray = new Lang.Class({
1347 this._bannerBin.y = -this._banner.actor.height;
1348 this.actor.show();
1349
1350- Meta.disable_unredirect_for_display(global.display);
1351+ Meta.disable_unredirect_for_screen(global.screen);
1352 this._updateShowingNotification();
1353
1354 let [x, y, mods] = global.get_pointer();
1355@@ -1458,7 +1458,7 @@ var MessageTray = new Lang.Class({
1356
1357 this._pointerInNotification = false;
1358 this._notificationRemoved = false;
1359- Meta.enable_unredirect_for_display(global.display);
1360+ Meta.enable_unredirect_for_screen(global.screen);
1361
1362 this._banner.actor.destroy();
1363 this._banner = null;

Subscribers

People subscribed via source and target branches