Marco Trevisan (Treviño) has proposed merging ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic into ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic with ~3v1n0/ubuntu/+source/gnome-shell:upstream/3.28.x as a prerequisite.
Requested reviews: Ubuntu Desktop (ubuntu-desktop) Related bugs: Bug #1745032 in linux (Ubuntu): "AC adapter status not detected on Asus ZenBook UX410UAK" https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1745032 Bug #1772677 in gnome-shell (Ubuntu): "gnome-shell filling up syslog with thousands/millions of entries with stack traces ending in osdWindow.js (lines 206/207 in bionic, lines 223/224 in cosmic)" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1772677 Bug #1811900 in mutter (Ubuntu): "SRU 3.28 latest git to bionic" https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1811900 Bug #1811908 in gnome-shell (Ubuntu): "gnome-shell: JS ERROR: ReferenceError: GLib is not defined" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1811908 Bug #1812266 in gnome-settings-daemon (Ubuntu): "Keyboard layout indicator does not indicate current layout (18.04 Bionic beaver)" https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1812266 Bug #1812735 in gnome-shell (Ubuntu): "Andyrock has to update this placeholder bug :)" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812735 For more details, see: https://code.launchpad.net/~3v1n0/ubuntu/+source/gnome-shell/+git/gnome-shell/+merge/362055 -- Your team Ubuntu Desktop is requested to review the proposed merge of ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic into ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic.
diff --git a/debian/changelog b/debian/changelog index 58f19e1..4e3a2d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,35 @@ +gnome-shell (3.28.3+git20190116-0ubuntu18.04.1) UNRELEASED; urgency=medium + + * New git snapshot release up to commit 24cdcc56d (LP: #1811900) + - Don't fill journal with osdWindow errors (LP: #1772677) + * d/p/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch, + d/p/authPrompt-Unset-preemptiveAnswer-on-reset.patch, + d/p/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch, + d/p/ibus-set-content-type-no-holdKeyboard.patch, + d/p/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch, + d/p/st-button-Ignore-pointer-emulated-touch-events.patch, + d/p/shell-ignore-invalid-window-monitor-index.patch, + d/p/workspace-fix-repositioned-windows-in-activities.patch: + - Removed patches applied upstream + * d/p/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch, + d/p/js-fix-invalid-access-errors.patch, + d/p/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch, + d/p/optional-hot-corner.patch, + d/p/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch, + d/p/workaround_crasher_fractional_scaling.patch: + - Refreshed as per upstream changes + * d/p/ibusManager-Don-t-pass-undefined-callback-to-ibus.patch: + - Fix missing icon in keyboard indicator (LP: #1812266) + * d/p/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch, + d/p/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch: + - Fix OSK activation on X11 (LP: #1812735) + * d/p/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch: + - Label the PENDING_CHARGE state as "Not Charging" (LP: #1745032) + * d/p/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch: + - Add missing include (LP: #1811908) + + -- Marco Trevisan (Treviño) <ma...@ubuntu.com> Tue, 22 Jan 2019 01:53:57 +0100 + gnome-shell (3.28.3-0ubuntu0.18.04.4) bionic; urgency=medium * debian/patches/ibus-set-content-type-no-holdKeyboard.patch: diff --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 index 96b2cf0..3264a5c 100644 --- 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 @@ -1,5 +1,5 @@ From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Wed, 18 Oct 2017 05:32:22 -0500 +Date: Wed, 18 Oct 2017 12:32:22 +0200 Subject: StIcon: only compute shadow pipeline when the texture is properly allocated diff --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 deleted file mode 100644 index ff98dda..0000000 --- a/debian/patches/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch +++ /dev/null @@ -1,48 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Tue, 29 May 2018 02:00:04 +0200 -Subject: authPrompt: Do not enable sensitivity if retries are disallowed - -Set the sensitivity of the UI according to the canRetry parameter and thus -if no more logins are allowed don't take any input. - -Fixes #311 - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/311 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1777956 -Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/116 ---- - js/gdm/authPrompt.js | 4 ++-- - js/gdm/util.js | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index d9ec7ee..a0a4a21 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -242,11 +242,11 @@ var AuthPrompt = new Lang.Class({ - this.emit('prompted'); - }, - -- _onVerificationFailed() { -+ _onVerificationFailed(userVerifier, canRetry) { - this._queryingService = null; - this.clear(); - -- this.updateSensitivity(true); -+ this.updateSensitivity(canRetry); - this.setActorInDefaultButtonWell(null); - this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; - }, -diff --git a/js/gdm/util.js b/js/gdm/util.js -index 261e1e4..0532ca8 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -562,7 +562,7 @@ var ShellUserVerifier = new Lang.Class({ - } - } - -- this.emit('verification-failed'); -+ this.emit('verification-failed', canRetry); - }, - - _onConversationStopped(client, serviceName) { diff --git a/debian/patches/authPrompt-Unset-preemptiveAnswer-on-reset.patch b/debian/patches/authPrompt-Unset-preemptiveAnswer-on-reset.patch deleted file mode 100644 index 11f88d2..0000000 --- a/debian/patches/authPrompt-Unset-preemptiveAnswer-on-reset.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Tue, 29 May 2018 01:51:00 +0200 -Subject: authPrompt: Unset preemptiveAnswer on reset - -When we get a reset signal the preemptiveAnswer should be also unset or it will -be used next time the user authPrompt will be activated, even without any further -user interaction. - -Fixes #311 - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/311 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1777956 -Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/116 ---- - js/gdm/authPrompt.js | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 481cd3a..d9ec7ee 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -439,6 +439,7 @@ var AuthPrompt = new Lang.Class({ - this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; - this.cancelButton.reactive = true; - this.nextButton.label = _("Next"); -+ this._preemptiveAnswer = null; - - if (this._userVerifier) - this._userVerifier.cancel(); diff --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 deleted file mode 100644 index 24a2edd..0000000 --- a/debian/patches/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch +++ /dev/null @@ -1,37 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Tue, 29 May 2018 02:10:09 +0200 -Subject: gdm, util: Always allow to retry login in unlock mode - -When in lockscreen mode there's no point of resetting the auth login as there's -no welcome screen, and that would just cause the UI to freeze, with no reason. -This could have been useful if we were stopping the user to login for a given -time after ALLOWED_FAILURES attempts, but this is not the case yet. - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/311 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1777956 -Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/116 ---- - js/gdm/util.js | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index 0532ca8..105a320 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -534,12 +534,13 @@ var ShellUserVerifier = new Lang.Class({ - _verificationFailed(retry) { - // For Not Listed / enterprise logins, immediately reset - // the dialog -- // Otherwise, we allow ALLOWED_FAILURES attempts. After that, we -- // go back to the welcome screen. -+ // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts. -+ // After that, we go back to the welcome screen. - - this._failCounter++; - let canRetry = retry && this._userName && -- this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY); -+ (this._reauthOnly || -+ this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY)); - - if (canRetry) { - if (!this.hasPendingMessages) { diff --git a/debian/patches/ibus-set-content-type-no-holdKeyboard.patch b/debian/patches/ibus-set-content-type-no-holdKeyboard.patch deleted file mode 100644 index f0f4823..0000000 --- a/debian/patches/ibus-set-content-type-no-holdKeyboard.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 551e827841626cd8084daa2210b3bf60e5be96be Mon Sep 17 00:00:00 2001 -From: Takao Fujiwara <tfuji...@redhat.com> -Date: Fri, 31 Aug 2018 20:22:23 +0900 -Subject: [PATCH] keyboard: Do not call KeyboardManager.holdKeyboard() with - set-content-type - -When gnome-shell receives the signal of 'set-content-type' from ibus, -gnome-shell calls KeyboardManager.holdKeyboard() and -KeyboardManager.releaseKeyboard() and the functions change the current -input focus in GNOME Xorg and it could result in closing a popup window -which has a password entry by focusing on the entry. -The solution is to stop to call the APIs on 'set-content-type' signal. - -Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/140 -Bug-Upstream: https://gitlab.gnome.org/GNOME/gnome-shell/issues/391 -Bug-Ubuntu: https://launchpad.net/bugs/1765304 ---- - js/ui/status/keyboard.js | 18 ++++++++++++++++-- - 1 file changed, 16 insertions(+), 2 deletions(-) - -diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js -index 6d031d88c..980019cd4 100644 ---- a/js/ui/status/keyboard.js -+++ b/js/ui/status/keyboard.js -@@ -360,11 +360,14 @@ var InputSourceManager = new Lang.Class({ - this._settings.connect('per-window-changed', this._sourcesPerWindowChanged.bind(this)); - this._sourcesPerWindowChanged(); - this._disableIBus = false; -+ this._reloading = false; - }, - - reload() { -+ this._reloading = true; - this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions); - this._inputSourcesChanged(); -+ this._reloading = false; - }, - - _ibusReadyCallback(im, ready) { -@@ -458,7 +461,15 @@ var InputSourceManager = new Lang.Class({ - }, - - activateInputSource(is, interactive) { -- KeyboardManager.holdKeyboard(); -+ // The focus changes during holdKeyboard/releaseKeyboard may trick -+ // the client into hiding UI containing the currently focused entry. -+ // So holdKeyboard/releaseKeyboard are not called when -+ // 'set-content-type' signal is received. -+ // E.g. Focusing on a password entry in a popup in Xorg Firefox -+ // will emit 'set-content-type' signal. -+ // https://gitlab.gnome.org/GNOME/gnome-shell/issues/391 -+ if (!this._reloading) -+ KeyboardManager.holdKeyboard(); - this._keyboardManager.apply(is.xkbId); - - // All the "xkb:..." IBus engines simply "echo" back symbols, -@@ -473,7 +484,10 @@ var InputSourceManager = new Lang.Class({ - else - engine = 'xkb:us::eng'; - -- this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard); -+ if (!this._reloading) -+ this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard); -+ else -+ this._ibusManager.setEngine(engine); - this._currentInputSourceChanged(is); - - if (interactive) --- -2.18.1 - diff --git a/debian/patches/ibusManager-Don-t-pass-undefined-callback-to-ibus.patch b/debian/patches/ibusManager-Don-t-pass-undefined-callback-to-ibus.patch new file mode 100644 index 0000000..6942e4f --- /dev/null +++ b/debian/patches/ibusManager-Don-t-pass-undefined-callback-to-ibus.patch @@ -0,0 +1,32 @@ +From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuell...@gnome.org> +Date: Thu, 15 Nov 2018 18:47:55 +0100 +Subject: ibusManager: Don't pass undefined callback to ibus + +Since commit 551e8278416, we don't always pass a callback parameter. +However passing it on as undefined to ibus doesn't work, as gjs doesn't +accept that as a valid callback value and throw an error. As a result, +we can end up with no layout selected in the keyboard menu and an "empty" +indicator. Fix this by explicitly passing null if no callback has been +provided. + +https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/293 + +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812266/ +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/74bb9e62492bacda3 +--- + js/misc/ibusManager.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js +index 6452e49..ad2e0fc 100644 +--- a/js/misc/ibusManager.js ++++ b/js/misc/ibusManager.js +@@ -205,7 +205,7 @@ var IBusManager = new Lang.Class({ + } + + this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME, +- null, callback); ++ null, callback || null); + }, + + preloadEngines(ids) { diff --git a/debian/patches/js-fix-invalid-access-errors.patch b/debian/patches/js-fix-invalid-access-errors.patch index a272d79..782ee1f 100644 --- a/debian/patches/js-fix-invalid-access-errors.patch +++ b/debian/patches/js-fix-invalid-access-errors.patch @@ -1,5 +1,5 @@ From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Mon, 4 Dec 2017 19:41:50 -0600 +Date: Tue, 5 Dec 2017 02:41:50 +0100 Subject: js: fix invalid-access errors tweener: Save handlers on target and remove them on destroy @@ -24,92 +24,16 @@ Remove duplicated handler on 'destroy' and just use a generic one. https://bugzilla.gnome.org/show_bug.cgi?id=791233 -automountManager: remove allowAutorun expire timeout on volume removal - -If the volume is removed before AUTORUN_EXPIRE_TIMEOUT_SECS seconds, we can stop -the timeout earlier as there's nothing to unset, while the volume instance -won't be valid anymore. - -https://bugzilla.gnome.org/show_bug.cgi?id=791233 - -messageList: stop syncing if closeButton has been destroyed - -The _sync function for Message only updates the close button visibility, -so we can safely stop doing that if the close button get get destroyed earlier -(as it happens when clicking on it). - -https://bugzilla.gnome.org/show_bug.cgi?id=791233 - -workspaceThumbnail: Don't keep stale clones in list - -If a clone gets destroyed before the corresponding MetaWindow is -removed from the workspace, we will still find it in the list of -clones and try to destroy it again. Avoid the resulting warnings -by updating the list of clones immediately when a clone is destroyed. - -https://bugzilla.gnome.org/show_bug.cgi?id=791233 - -workspace: Don't keep stale clones in list - -If a clone gets destroyed before the corresponding MetaWindow is -removed from the workspace, we will still find it in the list of -clones and try to destroy it again. Avoid the resulting warnings -by updating the list of clones immediately when a clone is destroyed. - -https://bugzilla.gnome.org/show_bug.cgi?id=791233 - Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=791233 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1747566 Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/4 --- - js/ui/calendar.js | 2 ++ - js/ui/components/automountManager.js | 6 ++++ - js/ui/dnd.js | 65 +++++++++++++++++++++--------------- - js/ui/messageList.js | 3 +- - js/ui/tweener.js | 63 ++++++++++++++++++++++++++-------- - 5 files changed, 99 insertions(+), 40 deletions(-) + js/ui/dnd.js | 65 +++++++++++++++++++++++++++++++++----------------------- + js/ui/tweener.js | 63 ++++++++++++++++++++++++++++++++++++++++++------------ + 2 files changed, 89 insertions(+), 39 deletions(-) -diff --git a/js/ui/calendar.js b/js/ui/calendar.js -index 651aac6..fd133cc 100644 ---- a/js/ui/calendar.js -+++ b/js/ui/calendar.js -@@ -802,6 +802,8 @@ var NotificationMessage = new Lang.Class({ - }, - - _onDestroy() { -+ this.parent(); -+ - if (this._updatedId) - this.notification.disconnect(this._updatedId); - this._updatedId = 0; -diff --git a/js/ui/components/automountManager.js b/js/ui/components/automountManager.js -index 2d8f3f8..a6cd857 100644 ---- a/js/ui/components/automountManager.js -+++ b/js/ui/components/automountManager.js -@@ -210,6 +210,10 @@ var AutomountManager = new Lang.Class({ - }, - - _onVolumeRemoved(monitor, volume) { -+ if (volume._allowAutorunExpireId && volume._allowAutorunExpireId > 0) { -+ Mainloop.source_remove(volume._allowAutorunExpireId); -+ delete volume._allowAutorunExpireId; -+ } - this._volumeQueue = - this._volumeQueue.filter(element => (element != volume)); - }, -@@ -234,8 +238,10 @@ var AutomountManager = new Lang.Class({ - _allowAutorunExpire(volume) { - let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, () => { - volume.allowAutorun = false; -+ delete volume._allowAutorunExpireId; - return GLib.SOURCE_REMOVE; - }); -+ volume._allowAutorunExpireId = id; - GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun'); - } - }); diff --git a/js/ui/dnd.js b/js/ui/dnd.js -index a38607c..431c60d 100644 +index ec1ba1d..9e961a1 100644 --- a/js/ui/dnd.js +++ b/js/ui/dnd.js @@ -27,6 +27,12 @@ var DragMotionResult = { @@ -205,7 +129,7 @@ index a38607c..431c60d 100644 this._dragOrigOpacity = this._dragActor.opacity; if (this._dragActorOpacity != undefined) this._dragActor.opacity = this._dragActorOpacity; -@@ -500,7 +515,7 @@ var _Draggable = new Lang.Class({ +@@ -518,7 +533,7 @@ var _Draggable = new Lang.Class({ event.get_time())) { // If it accepted the drop without taking the actor, // handle it ourselves. @@ -214,7 +138,7 @@ index a38607c..431c60d 100644 if (this._restoreOnSuccess) { this._restoreDragActor(event.get_time()); return true; -@@ -508,7 +523,7 @@ var _Draggable = new Lang.Class({ +@@ -526,7 +541,7 @@ var _Draggable = new Lang.Class({ this._dragActor.destroy(); } @@ -223,7 +147,7 @@ index a38607c..431c60d 100644 global.screen.set_cursor(Meta.Cursor.DEFAULT); this.emit('drag-end', event.get_time(), true); this._dragComplete(); -@@ -557,20 +572,22 @@ var _Draggable = new Lang.Class({ +@@ -575,20 +590,22 @@ var _Draggable = new Lang.Class({ _cancelDrag(eventTime) { this.emit('drag-cancelled', eventTime); @@ -250,7 +174,7 @@ index a38607c..431c60d 100644 this._animateDragEnd(eventTime, { x: snapBackX, y: snapBackY, -@@ -581,7 +598,7 @@ var _Draggable = new Lang.Class({ +@@ -599,7 +616,7 @@ var _Draggable = new Lang.Class({ }, _restoreDragActor(eventTime) { @@ -259,7 +183,7 @@ index a38607c..431c60d 100644 let [restoreX, restoreY, restoreScale] = this._getRestoreLocation(); // fade the actor back in at its original location -@@ -596,12 +613,6 @@ var _Draggable = new Lang.Class({ +@@ -614,12 +631,6 @@ var _Draggable = new Lang.Class({ _animateDragEnd(eventTime, params) { this._animationInProgress = true; @@ -272,7 +196,7 @@ index a38607c..431c60d 100644 params['opacity'] = this._dragOrigOpacity; params['transition'] = 'easeOutQuad'; params['onComplete'] = this._onAnimationComplete; -@@ -624,9 +635,6 @@ var _Draggable = new Lang.Class({ +@@ -642,9 +653,6 @@ var _Draggable = new Lang.Class({ }, _onAnimationComplete(dragActor, eventTime) { @@ -282,7 +206,7 @@ index a38607c..431c60d 100644 if (this._dragOrigParent) { Main.uiGroup.remove_child(this._dragActor); this._dragOrigParent.add_actor(this._dragActor); -@@ -641,7 +649,7 @@ var _Draggable = new Lang.Class({ +@@ -659,7 +667,7 @@ var _Draggable = new Lang.Class({ }, _dragComplete() { @@ -291,7 +215,7 @@ index a38607c..431c60d 100644 Shell.util_set_hidden_from_pick(this._dragActor, false); this._ungrabEvents(); -@@ -652,7 +660,12 @@ var _Draggable = new Lang.Class({ +@@ -670,7 +678,12 @@ var _Draggable = new Lang.Class({ this._updateHoverId = 0; } @@ -305,20 +229,6 @@ index a38607c..431c60d 100644 currentDraggable = null; } }); -diff --git a/js/ui/messageList.js b/js/ui/messageList.js -index aff201e..2d397c1 100644 ---- a/js/ui/messageList.js -+++ b/js/ui/messageList.js -@@ -362,7 +362,8 @@ var Message = new Lang.Class({ - this.setBody(body); - - this._closeButton.connect('clicked', this.close.bind(this)); -- this.actor.connect('notify::hover', this._sync.bind(this)); -+ let actorHoverId = this.actor.connect('notify::hover', this._sync.bind(this)); -+ this._closeButton.connect('destroy', this.actor.disconnect.bind(this.actor, actorHoverId)); - this.actor.connect('clicked', this._onClicked.bind(this)); - this.actor.connect('destroy', this._onDestroy.bind(this)); - this._sync(); diff --git a/js/ui/tweener.js b/js/ui/tweener.js index 1a85e2f..22818ba 100644 --- a/js/ui/tweener.js diff --git a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch index 1402949..8d15dd2 100644 --- a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch +++ b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch @@ -1,5 +1,5 @@ From: Daniel van Vugt <daniel.van.v...@canonical.com> -Date: Fri, 6 Apr 2018 05:26:58 -0500 +Date: Fri, 6 Apr 2018 12:26:58 +0200 Subject: js/ui: Choose some actors to cache on the GPU Adds a wrapper function to flag actors that are good candidates for @@ -64,10 +64,10 @@ index 47f718a..602646a 100644 this._container.connect('get-preferred-height', this._getPreferredHeight.bind(this)); this._container.connect('allocate', this._allocate.bind(this)); diff --git a/js/ui/dash.js b/js/ui/dash.js -index 5ee2476..14864f1 100644 +index d75af65..4d3fe73 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js -@@ -402,6 +402,7 @@ var Dash = new Lang.Class({ +@@ -404,6 +404,7 @@ var Dash = new Lang.Class({ clip_to_allocation: true }); this._box._delegate = this; this._container.add_actor(this._box); @@ -96,10 +96,10 @@ index cfa192d..89db963 100644 this.contentLayout = new St.BoxLayout({ vertical: true, style_class: "modal-dialog-content-box" }); diff --git a/js/ui/main.js b/js/ui/main.js -index d86cf9e..5277cf7 100644 +index 2c54bb6..baca1c2 100644 --- a/js/ui/main.js +++ b/js/ui/main.js -@@ -716,3 +716,19 @@ function showRestartMessage(message) { +@@ -719,3 +719,19 @@ function showRestartMessage(message) { let restartMessage = new RestartMessage(message); restartMessage.open(); } @@ -120,7 +120,7 @@ index d86cf9e..5277cf7 100644 + actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); +} diff --git a/js/ui/panel.js b/js/ui/panel.js -index 2f59324..2237ead 100644 +index ef14ddf..a76916b 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -772,6 +772,7 @@ var Panel = new Lang.Class({ diff --git a/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch b/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch new file mode 100644 index 0000000..a694dce --- /dev/null +++ b/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch @@ -0,0 +1,38 @@ +From: Carlos Garnacho <carl...@gnome.org> +Date: Mon, 17 Sep 2018 21:04:48 +0200 +Subject: keyboard: Filter redundant FocusTracker::position-changed signals + +Just emit the signal if it did actually change. + +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812735 +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/239 +--- + js/ui/keyboard.js | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js +index 4413846..4a923ad 100644 +--- a/js/ui/keyboard.js ++++ b/js/ui/keyboard.js +@@ -491,6 +491,7 @@ var FocusTracker = new Lang.Class({ + _init() { + this._currentWindow = null; + this._currentWindowPositionId = 0; ++ this._rect = null; + + global.screen.get_display().connect('notify::focus-window', () => { + this._setCurrentWindow(global.screen.get_display().focus_window); +@@ -539,6 +540,13 @@ var FocusTracker = new Lang.Class({ + rect.y -= frameRect.y; + } + ++ if (this._rect && ++ this._rect.x == rect.x && ++ this._rect.y == rect.y && ++ this._rect.width == rect.width && ++ this._rect.height == rect.height) ++ return; ++ + this._rect = rect; + this.emit('position-changed'); + }, diff --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 new file mode 100644 index 0000000..4869778 --- /dev/null +++ b/debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch @@ -0,0 +1,65 @@ +From: Carlos Garnacho <carl...@gnome.org> +Date: Tue, 18 Sep 2018 12:54:29 +0200 +Subject: keyboard: Listen to IbusPanelService::focus-in/out to track focus + changes + +In X11 there's no input panel state requests, so restore the previous behavior +that focused entries would always toggle the OSK on there. + +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812735 +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/239 +--- + js/misc/ibusManager.js | 5 +++++ + js/ui/keyboard.js | 16 ++++++++++++++++ + 2 files changed, 21 insertions(+) + +diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js +index ad2e0fc..33ad877 100644 +--- a/js/misc/ibusManager.js ++++ b/js/misc/ibusManager.js +@@ -119,6 +119,11 @@ var IBusManager = new Lang.Class({ + let cursorLocation = { x, y, width: w, height: h }; + this.emit('set-cursor-location', cursorLocation); + }); ++ this._panelService.connect('focus-in', (panel, path) => { ++ if (!GLib.str_has_suffix(path, '/InputContext_1')) ++ this.emit ('focus-in'); ++ }); ++ this._panelService.connect('focus-out', () => { this.emit('focus-out'); }); + + try { + // IBus versions older than 1.5.10 have a bug which +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js +index 4a923ad..7dba1a8 100644 +--- a/js/ui/keyboard.js ++++ b/js/ui/keyboard.js +@@ -512,6 +512,12 @@ var FocusTracker = new Lang.Class({ + + this._setCurrentRect(rect); + }); ++ this._ibusManager.connect('focus-in', () => { ++ this.emit('focus-changed', true); ++ }); ++ this._ibusManager.connect('focus-out', () => { ++ this.emit('focus-changed', false); ++ }); + }, + + get currentWindow() { +@@ -594,6 +600,16 @@ var Keyboard = new Lang.Class({ + this._animFocusedWindow = null; + this._oskFocusWindow = null; + }); ++ this._focusTracker.connect('focus-changed', (tracker, focused) => { ++ // Valid only for X11 ++ if (Meta.is_wayland_compositor()) ++ return; ++ ++ if (focused) ++ this.show(Main.layoutManager.focusIndex); ++ else ++ this.hide(); ++ }); + + Meta.get_backend().connect('last-device-changed', + (backend, deviceId) => { diff --git a/debian/patches/optional-hot-corner.patch b/debian/patches/optional-hot-corner.patch index e6a8dab..aa2e9b0 100644 --- a/debian/patches/optional-hot-corner.patch +++ b/debian/patches/optional-hot-corner.patch @@ -33,10 +33,10 @@ index 63a1903..8ec1d26 100644 <default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default> <summary>List of desktop file IDs for favorite applications</summary> diff --git a/js/ui/layout.js b/js/ui/layout.js -index 6f81039..3d53bd4 100644 +index e615e56..fa21ef8 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js -@@ -268,6 +268,9 @@ var LayoutManager = new Lang.Class({ +@@ -269,6 +269,9 @@ var LayoutManager = new Lang.Class({ this._backgroundGroup.lower_bottom(); this._bgManagers = []; @@ -46,7 +46,7 @@ index 6f81039..3d53bd4 100644 // Need to update struts on new workspaces when they are added global.screen.connect('notify::n-workspaces', this._queueUpdateRegions.bind(this)); -@@ -364,6 +367,11 @@ var LayoutManager = new Lang.Class({ +@@ -365,6 +368,11 @@ var LayoutManager = new Lang.Class({ }); this.hotCorners = []; diff --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 deleted file mode 100644 index 5690583..0000000 --- a/debian/patches/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Andrea Azzarone <andrea.azzar...@canonical.com> -Date: Thu, 21 Jun 2018 16:40:43 +0000 -Subject: popupMenu: Don't handle key presses directly if there are modifiers - -Key events involved in a keyboard shortcut are not completely consumed by -Mutter. That means that if the popupMenu is bound to a shortcut (e.g. -Alt<Space>) and the user keeps the keys pressed, the same key-event will be -delivered to the popupMenu. We can workaround this issue filtering out all the -events where a a modifier is down (except capslock). - -Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/372 - -(cherry picked from commit 2e90c5fa4b35ebe26c694223966834ee949cfce3) - -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1784671 -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/372 -Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/gnome-shell/commit/445eed40 ---- - js/ui/popupMenu.js | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js -index 83194d7..f449d6e 100644 ---- a/js/ui/popupMenu.js -+++ b/js/ui/popupMenu.js -@@ -141,8 +141,17 @@ var PopupBaseMenuItem = new Lang.Class({ - }, - - _onKeyPressEvent(actor, event) { -- let symbol = event.get_key_symbol(); -+ let state = event.get_state(); - -+ // if user has a modifier down (except capslock) -+ // then don't handle the key press here -+ state &= ~Clutter.ModifierType.LOCK_MASK; -+ state &= Clutter.ModifierType.MODIFIER_MASK; -+ -+ if (state) -+ return Clutter.EVENT_PROPAGATE; -+ -+ let symbol = event.get_key_symbol(); - if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) { - this.activate(event); - return Clutter.EVENT_STOP; diff --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 new file mode 100644 index 0000000..dda7a0e --- /dev/null +++ b/debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch @@ -0,0 +1,36 @@ +From: =?utf-8?q?Jo=C3=A3o_Paulo_Rechi_Vita?= <jprv...@endlessm.com> +Date: Fri, 2 Nov 2018 13:51:33 -0700 +Subject: power: Label the PENDING_CHARGE state as "Not Charging" + +The pending-charge state means AC power is on but the battery is not +being charged. This can happen because its charge is above a certain +threshold, to avoid short charging cycles and prolong the battery's +life, or because the PSU is not powerful enough to charge the batteries. + +Instead of lying to the user about something being estimated, we should +simply tell the truth and set the label to "Not Charging". + +Closes: #701. + +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1745032 +Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/701 +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/52c59ac0dd7ddbe064 +--- + js/ui/status/power.js | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/js/ui/status/power.js b/js/ui/status/power.js +index a2bfd75..bfd0de5 100644 +--- a/js/ui/status/power.js ++++ b/js/ui/status/power.js +@@ -79,7 +79,9 @@ var Indicator = new Lang.Class({ + seconds = this._proxy.TimeToFull; + else if (this._proxy.State == UPower.DeviceState.DISCHARGING) + seconds = this._proxy.TimeToEmpty; +- // state is one of PENDING_CHARGING, PENDING_DISCHARGING ++ else if (this._proxy.State == UPower.DeviceState.PENDING_CHARGE) ++ return _("Not Charging"); ++ // state is PENDING_DISCHARGE + else + return _("Estimating…"); + diff --git a/debian/patches/series b/debian/patches/series index 50a4a68..ecbfbcc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -12,17 +12,13 @@ ubuntu_gdm_alternatives.patch ubuntu_block_mode_extension_update.patch volume-Add-back-sound-feedback-on-scroll.patch workaround_crasher_fractional_scaling.patch -shell-ignore-invalid-window-monitor-index.patch StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch js-fix-invalid-access-errors.patch -workspace-fix-repositioned-windows-in-activities.patch st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch js-ui-Choose-some-actors-to-cache-on-the-GPU.patch -authPrompt-Unset-preemptiveAnswer-on-reset.patch -authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch -gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch -popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch -st-button-Ignore-pointer-emulated-touch-events.patch st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch st-scroll-view-Remove-scrollbars-references-on-dispose.patch -ibus-set-content-type-no-holdKeyboard.patch +ibusManager-Don-t-pass-undefined-callback-to-ibus.patch +keyboard-Filter-redundant-FocusTracker-position-changed-s.patch +keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch +power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch diff --git a/debian/patches/shell-ignore-invalid-window-monitor-index.patch b/debian/patches/shell-ignore-invalid-window-monitor-index.patch deleted file mode 100644 index 4d223de..0000000 --- a/debian/patches/shell-ignore-invalid-window-monitor-index.patch +++ /dev/null @@ -1,98 +0,0 @@ -From: Sam Spilsbury <s...@endlessm.com> -Date: Wed, 11 Oct 2017 05:42:04 -0500 -Subject: shell: ignore invalid window monitor index - -windowMenu: Check if monitorIndex is valid before using it - -Calling meta_window_get_monitor on an unmanaged window may return --1, so we need to check the return value. - -Fixes https://bugzilla.gnome.org/show_bug.cgi?id=788882 - -keyboard: Handle case where keyboardMonitor is unset - -This may be the case where keyboardIndex is -1, which may be the -case where either the keyboard monitor hasn't been set yet, or -the keyboard is being unmanaged and meta_window_get_monitor -returns -1 - -https://bugzilla.gnome.org/show_bug.cgi?id=788882 - -layout: Remove focusMonitor, as it is unused - -It also uses focusIndex to determine which monitor to -return and may occassionally return undefined if focusIndex -was -1. - -https://bugzilla.gnome.org/show_bug.cgi?id=788882 - -Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=788882 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1724439 -Forwarded: yes ---- - js/ui/keyboard.js | 8 ++++++++ - js/ui/layout.js | 4 ---- - js/ui/windowMenu.js | 7 ++++--- - 3 files changed, 12 insertions(+), 7 deletions(-) - -diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js -index 5fcdf98..dd47676 100644 ---- a/js/ui/keyboard.js -+++ b/js/ui/keyboard.js -@@ -919,6 +919,12 @@ var Keyboard = new Lang.Class({ - if (this.actor == null) - return; - let monitor = Main.layoutManager.keyboardMonitor; -+ -+ // monitor may be null here if the underlying keyboard monitor -+ // index was still unset. -+ if (!monitor) -+ return; -+ - let maxHeight = monitor.height / 3; - this.actor.width = monitor.width; - this.actor.height = maxHeight; -@@ -981,6 +987,8 @@ var Keyboard = new Lang.Class({ - if (!this._enabled) - return; - -+ -+ - this._clearShowIdle(); - this._keyboardRequested = true; - -diff --git a/js/ui/layout.js b/js/ui/layout.js -index 3d53bd4..cf0dad0 100644 ---- a/js/ui/layout.js -+++ b/js/ui/layout.js -@@ -564,10 +564,6 @@ var LayoutManager = new Lang.Class({ - return i; - }, - -- get focusMonitor() { -- return this.monitors[this.focusIndex]; -- }, -- - set keyboardIndex(v) { - this._keyboardIndex = v; - this._updateKeyboardBox(); -diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js -index f0e564b..9bd7d19 100644 ---- a/js/ui/windowMenu.js -+++ b/js/ui/windowMenu.js -@@ -128,11 +128,12 @@ var WindowMenu = new Lang.Class({ - - let screen = global.screen; - let nMonitors = screen.get_n_monitors(); -- if (nMonitors > 1) { -+ let monitorIndex = window.get_monitor(); -+ // meta_window_get_monitor can return -1, so handle that case -+ // appropriately. -+ if (nMonitors > 1 && monitorIndex >= 0) { - this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); - -- let monitorIndex = window.get_monitor(); -- - let dir = Meta.ScreenDirection.UP; - let upMonitorIndex = - screen.get_monitor_neighbor_index(monitorIndex, dir); diff --git a/debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch b/debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch deleted file mode 100644 index 538bb17..0000000 --- a/debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Thu, 25 Oct 2018 06:35:25 +0200 -Subject: st-button: Ignore pointer emulated touch events - -In X11, pointer emulated touch events are replicated with normal PRESS, RELEASE -pair events which are generated by the server. Thus for a single tap we get: - - TOUCH_BEGIN -> TOUCH_END, PRESS -> RELEASE - -This will cause st-button to send two "clicked" signals, instead of just one, -breaking extensions (like dash-to-dock) that show buttons in the main stage -which will be checked two times or that will receive the same signal two times. - -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1745888 -Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/272 ---- - src/st/st-button.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/st/st-button.c b/src/st/st-button.c -index 8f5c492..a3a7b24 100644 ---- a/src/st/st-button.c -+++ b/src/st/st-button.c -@@ -248,14 +248,17 @@ st_button_touch_event (ClutterActor *actor, - if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence) - { - clutter_input_device_sequence_grab (device, sequence, actor); -- st_button_press (button, device, 0, sequence); -+ if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event)) -+ st_button_press (button, device, 0, sequence); - return CLUTTER_EVENT_STOP; - } - else if (event->type == CLUTTER_TOUCH_END && - priv->device == device && - priv->press_sequence == sequence) - { -- st_button_release (button, device, mask, 0, sequence); -+ if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event)) -+ st_button_release (button, device, mask, 0, sequence); -+ - clutter_input_device_sequence_ungrab (device, sequence); - return CLUTTER_EVENT_STOP; - } diff --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 index caa3adc..3a7d44e 100644 --- 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 @@ -1,5 +1,5 @@ From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Wed, 29 Nov 2017 19:48:02 -0600 +Date: Thu, 30 Nov 2017 02:48:02 +0100 Subject: st-texture-cache: Cancel sliced image loading on target actor destroy @@ -19,7 +19,7 @@ Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/5 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c -index 0c794a3..c39464e 100644 +index 6219071..fc81189 100644 --- a/src/st/st-texture-cache.c +++ b/src/st/st-texture-cache.c @@ -1027,6 +1027,7 @@ typedef struct { diff --git a/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch b/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch index f6ea268..51c731d 100644 --- a/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch +++ b/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch @@ -1,5 +1,5 @@ From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuell...@gnome.org> -Date: Fri, 23 Feb 2018 16:58:22 -0600 +Date: Fri, 23 Feb 2018 23:58:22 +0100 Subject: volume: Add back sound feedback on scroll Commit 8d4855f1008 accidentally removed the volume change feedback @@ -34,8 +34,8 @@ Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/53 Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/51 --- js/ui/slider.js | 2 -- - js/ui/status/volume.js | 19 ++++++++++++++++++- - 2 files changed, 18 insertions(+), 3 deletions(-) + js/ui/status/volume.js | 20 +++++++++++++++++++- + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/js/ui/slider.js b/js/ui/slider.js index 9853929..30295b4 100644 @@ -52,18 +52,20 @@ index 9853929..30295b4 100644 } return Clutter.EVENT_PROPAGATE; diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js -index 65c4c42..c0f9cf3 100644 +index 65c4c42..de5f188 100644 --- a/js/ui/status/volume.js +++ b/js/ui/status/volume.js -@@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter; +@@ -3,7 +3,9 @@ + const Clutter = imports.gi.Clutter; const Lang = imports.lang; const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; const Gvc = imports.gi.Gvc; +const Mainloop = imports.mainloop; const St = imports.gi.St; const Signals = imports.signals; -@@ -36,9 +37,16 @@ var StreamSlider = new Lang.Class({ +@@ -36,9 +38,16 @@ var StreamSlider = new Lang.Class({ this.item = new PopupMenu.PopupBaseMenuItem({ activate: false }); @@ -81,7 +83,7 @@ index 65c4c42..c0f9cf3 100644 this._icon = new St.Icon({ style_class: 'popup-menu-icon' }); this.item.actor.add(this._icon); -@@ -135,6 +143,7 @@ var StreamSlider = new Lang.Class({ +@@ -135,6 +144,7 @@ var StreamSlider = new Lang.Class({ let volume = value * this._get_control_max_volume(); let prevMuted = this._stream.is_muted; @@ -89,7 +91,7 @@ index 65c4c42..c0f9cf3 100644 if (volume < 1) { this._stream.volume = 0; if (!prevMuted) -@@ -145,6 +154,14 @@ var StreamSlider = new Lang.Class({ +@@ -145,6 +155,14 @@ var StreamSlider = new Lang.Class({ this._stream.change_is_muted(false); } this._stream.push_volume(); diff --git a/debian/patches/workaround_crasher_fractional_scaling.patch b/debian/patches/workaround_crasher_fractional_scaling.patch index 7c3636d..4b76dc0 100644 --- a/debian/patches/workaround_crasher_fractional_scaling.patch +++ b/debian/patches/workaround_crasher_fractional_scaling.patch @@ -12,10 +12,10 @@ Bug: https://bugzilla.gnome.org/show_bug.cgi?id=788316 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c -index 8942966..e57ca65 100644 +index 0637d97..7342c6c 100644 --- a/src/st/st-theme-node-drawing.c +++ b/src/st/st-theme-node-drawing.c -@@ -2505,7 +2505,7 @@ st_theme_node_paint (StThemeNode *node, +@@ -2531,7 +2531,7 @@ st_theme_node_paint (StThemeNode *node, allocation.x2 = width; allocation.y2 = height; diff --git a/debian/patches/workspace-fix-repositioned-windows-in-activities.patch b/debian/patches/workspace-fix-repositioned-windows-in-activities.patch deleted file mode 100644 index 7da103a..0000000 --- a/debian/patches/workspace-fix-repositioned-windows-in-activities.patch +++ /dev/null @@ -1,129 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Fri, 19 Jan 2018 08:00:10 -0600 -Subject: workspace: fix repositioned windows in activities - -workspace: Recompute bounding box on window 'position-changed' - -We need to update the clone position if window size changed -also, rename meta window 'size-changed' callback accordingly. - -https://bugzilla.gnome.org/show_bug.cgi?id=792681 - -workspaceThumbnail: Sync clone position changes with actor - -We need to update the clone position if window actor (not the meta window) -position changed. - -https://bugzilla.gnome.org/show_bug.cgi?id=792681 - -Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=776588 -Bug-Ubuntu: https://bugs.launchpad.net/gnome-shell/+bug/1653153 -Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/8 ---- - js/ui/workspace.js | 25 +++++++++++++------------ - js/ui/workspaceThumbnail.js | 7 +++---- - 2 files changed, 16 insertions(+), 16 deletions(-) - -diff --git a/js/ui/workspace.js b/js/ui/workspace.js -index 8b56932..112c54e 100644 ---- a/js/ui/workspace.js -+++ b/js/ui/workspace.js -@@ -137,8 +137,10 @@ var WindowClone = new Lang.Class({ - this._dragSlot = [0, 0, 0, 0]; - this._stackAbove = null; - -- this._windowClone._updateId = this.metaWindow.connect('size-changed', -- this._onRealWindowSizeChanged.bind(this)); -+ this._windowClone._sizeChangedId = this.metaWindow.connect('size-changed', -+ this._onMetaWindowSizeChanged.bind(this)); -+ this._windowClone._posChangedId = this.metaWindow.connect('position-changed', -+ this._computeBoundingBox.bind(this)); - this._windowClone._destroyId = - this.realWindow.connect('destroy', () => { - // First destroy the clone and then destroy everything -@@ -206,8 +208,7 @@ var WindowClone = new Lang.Class({ - - addAttachedDialog(win) { - this._doAddAttachedDialog(win, win.get_compositor_private()); -- this._computeBoundingBox(); -- this.emit('size-changed'); -+ this._onMetaWindowSizeChanged(); - }, - - hasAttachedDialogs() { -@@ -216,15 +217,14 @@ var WindowClone = new Lang.Class({ - - _doAddAttachedDialog(metaWin, realWin) { - let clone = new Clutter.Clone({ source: realWin }); -- clone._updateId = metaWin.connect('size-changed', () => { -- this._computeBoundingBox(); -- this.emit('size-changed'); -- }); -+ clone._sizeChangedId = metaWin.connect('size-changed', -+ this._onMetaWindowSizeChanged.bind(this)); -+ clone._posChangedId = metaWin.connect('position-changed', -+ this._onMetaWindowSizeChanged.bind(this)); - clone._destroyId = realWin.connect('destroy', () => { - clone.destroy(); - -- this._computeBoundingBox(); -- this.emit('size-changed'); -+ this._onMetaWindowSizeChanged(); - }); - this.actor.add_child(clone); - }, -@@ -321,12 +321,13 @@ var WindowClone = new Lang.Class({ - else - realWindow = child.source; - -- realWindow.meta_window.disconnect(child._updateId); -+ realWindow.meta_window.disconnect(child._sizeChangedId); -+ realWindow.meta_window.disconnect(child._posChangedId); - realWindow.disconnect(child._destroyId); - }); - }, - -- _onRealWindowSizeChanged() { -+ _onMetaWindowSizeChanged() { - this._computeBoundingBox(); - this.emit('size-changed'); - }, -diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js -index 381169e..417296d 100644 ---- a/js/ui/workspaceThumbnail.js -+++ b/js/ui/workspaceThumbnail.js -@@ -68,7 +68,7 @@ var WindowClone = new Lang.Class({ - this.realWindow = realWindow; - this.metaWindow = realWindow.meta_window; - -- this.clone._updateId = this.metaWindow.connect('position-changed', -+ this.clone._updateId = this.realWindow.connect('notify::position', - this._onPositionChanged.bind(this)); - this.clone._destroyId = this.realWindow.connect('destroy', () => { - // First destroy the clone and then destroy everything -@@ -153,7 +153,7 @@ var WindowClone = new Lang.Class({ - let clone = new Clutter.Clone({ source: realDialog }); - this._updateDialogPosition(realDialog, clone); - -- clone._updateId = metaDialog.connect('position-changed', dialog => { -+ clone._updateId = realDialog.connect('notify::position', dialog => { - this._updateDialogPosition(dialog, clone); - }); - clone._destroyId = realDialog.connect('destroy', () => { -@@ -171,7 +171,6 @@ var WindowClone = new Lang.Class({ - }, - - _onPositionChanged() { -- let rect = this.metaWindow.get_frame_rect(); - this.actor.set_position(this.realWindow.x, this.realWindow.y); - }, - -@@ -179,7 +178,7 @@ var WindowClone = new Lang.Class({ - this.actor.get_children().forEach(child => { - let realWindow = child.source; - -- realWindow.meta_window.disconnect(child._updateId); -+ realWindow.disconnect(child._updateId); - realWindow.disconnect(child._destroyId); - }); - },
-- ubuntu-desktop mailing list ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop