Marco Trevisan (Treviño) has proposed merging ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic-sru3 into ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic with ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic-touch-two-clicks-fix as a prerequisite.
Requested reviews: Ubuntu Desktop (ubuntu-desktop) Related bugs: Bug #1725312 in gnome-shell (Ubuntu): "gnome-shell crashed with SIGSEGV in st_widget_style_changed() from st_scroll_view_style_changed()" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1725312 Bug #1739931 in gnome-shell (Ubuntu): "Separator lines in shell popup menus are too faint to see" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1739931 Bug #1743058 in gnome-shell (Ubuntu): "Input field height changes slightly when entering in st password fields." https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1743058 Bug #1745888 in gnome-shell (Ubuntu): "Two instances of a program launch whenever you touch a favorites icon" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1745888 For more details, see: https://code.launchpad.net/~3v1n0/ubuntu/+source/gnome-shell/+git/gnome-shell/+merge/358010 -- Your team Ubuntu Desktop is requested to review the proposed merge of ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic-sru3 into ~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/bionic.
diff --git a/debian/changelog b/debian/changelog index c6ad925..c43929d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,16 +1,13 @@ gnome-shell (3.28.3-0ubuntu0.18.04.3) UNRELEASED; urgency=medium - * d/p/search-Cancel-search-provider-operations-on-clear.patch, - d/p/search-Ignore-search-provider-results-metas-if-search-is-.patch, - d/p/viewSelector-Cancel-search-on-overview-hidden.patch, - d/p/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch: - - Add support for cancelling remote search providers when the overlay - is closed (and actually stop searches when requested from UI, LP: #1756826) * debian/ubuntu.css: - use defined color for menu separators (LP: #1739931) - set StEntry minimun height to work properly with Ubuntu font (LP: #1743058) * debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch: - Don't emit two click events on touch under X11 (LP: #1745888) + * d/p/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch, + d/p/st-scroll-view-Remove-scrollbars-references-on-dispose.patch: + - Handle NULL scroll bars in st-scroll-view (LP: #1725312) -- Marco Trevisan (Treviño) <ma...@ubuntu.com> Wed, 03 Oct 2018 00:50:42 +0200 diff --git a/debian/patches/search-Cancel-search-provider-operations-on-clear.patch b/debian/patches/search-Cancel-search-provider-operations-on-clear.patch deleted file mode 100644 index 052ee8a..0000000 --- a/debian/patches/search-Cancel-search-provider-operations-on-clear.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Thu, 23 Aug 2018 18:14:38 +0200 -Subject: search: Cancel search provider operations on clear - -Ensure that the search provider operations (just getResultMetas requests in the -current implementation) in progress are properly cancelled when we clear the UI, -otherwise returned results might still be added when not needed. - -This is triggered for each provider by the SearchResults reset. - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/183 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1756826 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/205 ---- - js/ui/search.js | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/js/ui/search.js b/js/ui/search.js -index 1fb54b4..804be95 100644 ---- a/js/ui/search.js -+++ b/js/ui/search.js -@@ -192,6 +192,7 @@ var SearchResultsBase = new Lang.Class({ - }, - - clear() { -+ this._cancellable.cancel(); - for (let resultId in this._resultDisplays) - this._resultDisplays[resultId].actor.destroy(); - this._resultDisplays = {}; diff --git a/debian/patches/search-Ignore-search-provider-results-metas-if-search-is-.patch b/debian/patches/search-Ignore-search-provider-results-metas-if-search-is-.patch deleted file mode 100644 index 27645a5..0000000 --- a/debian/patches/search-Ignore-search-provider-results-metas-if-search-is-.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Thu, 30 Aug 2018 07:11:24 +0200 -Subject: search: Ignore search provider results metas if search is cancelled - -Call updateSearch callback with no results when the search provider has been -cancelled, without doing any logging. - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/183 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1756826 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/205 ---- - js/ui/search.js | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/js/ui/search.js b/js/ui/search.js -index 804be95..dd4bfad 100644 ---- a/js/ui/search.js -+++ b/js/ui/search.js -@@ -227,8 +227,9 @@ var SearchResultsBase = new Lang.Class({ - - this.provider.getResultMetas(metasNeeded, metas => { - if (metas.length != metasNeeded.length) { -- log('Wrong number of result metas returned by search provider ' + this.provider.id + -- ': expected ' + metasNeeded.length + ' but got ' + metas.length); -+ if (!this._cancellable.is_cancelled()) -+ log(`Wrong number of result metas returned by search provider ${this.provider.id}` + -+ `: expected ${metasNeeded.length} but got ${metas.length}`); - callback(false); - return; - } diff --git a/debian/patches/series b/debian/patches/series index 217740f..6a12345 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -22,8 +22,6 @@ 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 -viewSelector-Cancel-search-on-overview-hidden.patch -search-Cancel-search-provider-operations-on-clear.patch -search-Ignore-search-provider-results-metas-if-search-is-.patch st-button-Ignore-pointer-emulated-touch-events.patch -ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch +st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch +st-scroll-view-Remove-scrollbars-references-on-dispose.patch diff --git a/debian/patches/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch b/debian/patches/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch new file mode 100644 index 0000000..0c5e93d --- /dev/null +++ b/debian/patches/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch @@ -0,0 +1,38 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> +Date: Fri, 3 Aug 2018 18:51:24 +0200 +Subject: st/scroll-view: Handle the case where scrollbars are NULL + +The scrollbars actors in a scroll view can be NULL, in case they get removed +with a call to `clutter_actor_remove_child` on a scroll-view (and this is +implemented in st_scroll_view_remove). + +So, we should support the case where `priv->{h,v}scroll` are NULL, not to crash +in `st_widget_style_changed`. + +Fixes #467 + +Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/467 +BUG-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1725312 +Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/190 +--- + src/st/st-scroll-view.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/st/st-scroll-view.c b/src/st/st-scroll-view.c +index fc0db1c..a8b6d2e 100644 +--- a/src/st/st-scroll-view.c ++++ b/src/st/st-scroll-view.c +@@ -741,8 +741,11 @@ st_scroll_view_style_changed (StWidget *widget) + gdouble hfade_offset = st_theme_node_get_length (theme_node, "-st-hfade-offset"); + st_scroll_view_update_fade_effect (self, vfade_offset, hfade_offset); + +- st_widget_style_changed (ST_WIDGET (priv->hscroll)); +- st_widget_style_changed (ST_WIDGET (priv->vscroll)); ++ if (priv->hscroll) ++ st_widget_style_changed (ST_WIDGET (priv->hscroll)); ++ ++ if (priv->vscroll) ++ st_widget_style_changed (ST_WIDGET (priv->vscroll)); + + ST_WIDGET_CLASS (st_scroll_view_parent_class)->style_changed (widget); + } diff --git a/debian/patches/st-scroll-view-Remove-scrollbars-references-on-dispose.patch b/debian/patches/st-scroll-view-Remove-scrollbars-references-on-dispose.patch new file mode 100644 index 0000000..f5f49be --- /dev/null +++ b/debian/patches/st-scroll-view-Remove-scrollbars-references-on-dispose.patch @@ -0,0 +1,33 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> +Date: Fri, 3 Aug 2018 19:06:47 +0200 +Subject: st/scroll-view: Remove scrollbars references on dispose + +As we're destroying the scrollbars on destruction, we should remove any +reference of it, not to cause multiple-calls to disposal to unreference them +again. + +Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/467 +BUG-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1725312 +Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/190 +--- + src/st/st-scroll-view.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/src/st/st-scroll-view.c b/src/st/st-scroll-view.c +index a8b6d2e..cb38aef 100644 +--- a/src/st/st-scroll-view.c ++++ b/src/st/st-scroll-view.c +@@ -244,11 +244,8 @@ st_scroll_view_dispose (GObject *object) + priv->fade_effect = NULL; + } + +- if (priv->vscroll) +- clutter_actor_destroy (priv->vscroll); +- +- if (priv->hscroll) +- clutter_actor_destroy (priv->hscroll); ++ g_clear_pointer (&priv->vscroll, clutter_actor_destroy); ++ g_clear_pointer (&priv->hscroll, clutter_actor_destroy); + + /* For most reliable freeing of memory, an object with signals + * like StAdjustment should be explicitly disposed. Since we own diff --git a/debian/patches/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch b/debian/patches/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch deleted file mode 100644 index 94a1d42..0000000 --- a/debian/patches/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch +++ /dev/null @@ -1,167 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Thu, 23 Aug 2018 20:00:57 +0200 -Subject: search: call XUbuntuCancel method on providers when no data is - needed - -Add XUbuntuCancel method to search providers and call it when a search provider -is still doing operations. -Ignore the result when the method does not exist or is cancelled. - -This will allow to stop operations on providers. - -Fixes LP: #1756826 - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/183 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1756826 -Forwarded: not-needed ---- - data/org.gnome.ShellSearchProvider.xml | 6 ++++++ - data/org.gnome.ShellSearchProvider2.xml | 6 ++++++ - js/ui/remoteSearch.js | 15 +++++++++++++++ - js/ui/search.js | 34 +++++++++++++++++++++++++++++++++ - 4 files changed, 61 insertions(+) - -diff --git a/data/org.gnome.ShellSearchProvider.xml b/data/org.gnome.ShellSearchProvider.xml -index 78ad305..393cb01 100644 ---- a/data/org.gnome.ShellSearchProvider.xml -+++ b/data/org.gnome.ShellSearchProvider.xml -@@ -69,5 +69,11 @@ - <method name="ActivateResult"> - <arg type="s" name="identifier" direction="in" /> - </method> -+ -+ <!-- -+ XUbuntuCancel: -+ Cancel the current search operation -+ --> -+ <method name="XUbuntuCancel" /> - </interface> - </node> -diff --git a/data/org.gnome.ShellSearchProvider2.xml b/data/org.gnome.ShellSearchProvider2.xml -index 9502340..8141bc0 100644 ---- a/data/org.gnome.ShellSearchProvider2.xml -+++ b/data/org.gnome.ShellSearchProvider2.xml -@@ -83,5 +83,11 @@ - <arg type="as" name="terms" direction="in" /> - <arg type="u" name="timestamp" direction="in" /> - </method> -+ -+ <!-- -+ XUbuntuCancel: -+ Cancel the current search operation -+ --> -+ <method name="XUbuntuCancel" /> - </interface> - </node> -diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js -index c6c5a29..8de6148 100644 ---- a/js/ui/remoteSearch.js -+++ b/js/ui/remoteSearch.js -@@ -30,6 +30,7 @@ const SearchProviderIface = '<node> \ - <method name="ActivateResult"> \ - <arg type="s" direction="in" /> \ - </method> \ -+<method name="XUbuntuCancel" /> \ - </interface> \ - </node>'; - -@@ -57,6 +58,7 @@ const SearchProvider2Iface = '<node> \ - <arg type="as" direction="in" /> \ - <arg type="u" direction="in" /> \ - </method> \ -+<method name="XUbuntuCancel" /> \ - </interface> \ - </node>'; - -@@ -310,6 +312,19 @@ var RemoteSearchProvider = new Lang.Class({ - cancellable); - }, - -+ XUbuntuCancel(cancellable, callback) { -+ this.proxy.XUbuntuCancelRemote((results, error) => { -+ if (error && -+ !error.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD) && -+ !error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { -+ log('Received error from DBus search provider %s during XUbuntuCancel: %s'.format(this.id, String(error))); -+ } else if (callback && !error) { -+ callback(); -+ } -+ }, -+ cancellable); -+ }, -+ - activateResult(id) { - this.proxy.ActivateResultRemote(id); - }, -diff --git a/js/ui/search.js b/js/ui/search.js -index dd4bfad..629664e 100644 ---- a/js/ui/search.js -+++ b/js/ui/search.js -@@ -225,7 +225,9 @@ var SearchResultsBase = new Lang.Class({ - this._cancellable.cancel(); - this._cancellable.reset(); - -+ this.provider.resultsMetasInProgress = true; - this.provider.getResultMetas(metasNeeded, metas => { -+ this.provider.resultsMetasInProgress = this._cancellable.is_cancelled(); - if (metas.length != metasNeeded.length) { - if (!this._cancellable.is_cancelled()) - log(`Wrong number of result metas returned by search provider ${this.provider.id}` + -@@ -450,6 +452,10 @@ var SearchResults = new Lang.Class({ - - this._searchTimeoutId = 0; - this._cancellable = new Gio.Cancellable(); -+ this._searchCancelCancellable = new Gio.Cancellable(); -+ this._cancellable.connect(() => { -+ this._cancelSearchProviderRequest(); -+ }); - - this._registerProvider(new AppDisplay.AppSearchProvider()); - this._reloadRemoteProviders(); -@@ -491,11 +497,32 @@ var SearchResults = new Lang.Class({ - } - }, - -+ _cancelSearchProviderRequest() { -+ if (this._terms.length != 0 || this._searchCancelTimeoutId > 0) -+ return; -+ -+ this._searchCancelTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => { -+ this._providers.forEach(provider => { -+ if (provider.isRemoteProvider && -+ (provider.searchInProgress || provider.resultsMetasInProgress)) { -+ provider.XUbuntuCancel(this._searchCancelCancellable, () => { -+ provider.searchInProgress = false; -+ provider.resultsMetasInProgress = false; -+ }); -+ } -+ }); -+ -+ delete this._searchCancelTimeoutId; -+ return GLib.SOURCE_REMOVE; -+ }); -+ }, -+ - _reset() { - this._terms = []; - this._results = {}; - this._clearDisplay(); - this._clearSearchTimeout(); -+ this._cancelSearchProviderRequest(); - this._defaultResult = null; - this._startingSearch = false; - -@@ -562,6 +589,13 @@ var SearchResults = new Lang.Class({ - if (this._terms.length > 0) - isSubSearch = searchString.indexOf(previousSearchString) == 0; - -+ this._searchCancelCancellable.cancel(); -+ this._searchCancelCancellable.reset(); -+ if (this._searchCancelTimeoutId > 0) { -+ GLib.source_remove(this._searchCancelTimeoutId); -+ delete this._searchCancelTimeoutId; -+ } -+ - this._terms = terms; - this._isSubSearch = isSubSearch; - this._updateSearchProgress(); diff --git a/debian/patches/viewSelector-Cancel-search-on-overview-hidden.patch b/debian/patches/viewSelector-Cancel-search-on-overview-hidden.patch deleted file mode 100644 index 88ae73e..0000000 --- a/debian/patches/viewSelector-Cancel-search-on-overview-hidden.patch +++ /dev/null @@ -1,36 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <m...@3v1n0.net> -Date: Thu, 23 Aug 2018 16:11:10 +0200 -Subject: viewSelector: Cancel search on overview hidden - -Currently when the overview is hidden, any pending search is kept alive, not only -at remote search provider level (as per issue #183), but even the shell providers -proxies continue to get and process data. This happens even if this is not needed -anymore, while the UI reset is performed only next time that the overview is -shown (causing some more computation presentation time). - -In order to stop this to happen, when the overview is hidden, we have to unset -the search entry to an empty value as this would make SearchResults to have empty -terms list and that would make the proxies cancellable to be triggered (without -causing any further search to start). - -https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/205 - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/183 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1756826 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/205 ---- - js/ui/viewSelector.js | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js -index 91bc222..c46afc5 100644 ---- a/js/ui/viewSelector.js -+++ b/js/ui/viewSelector.js -@@ -311,6 +311,7 @@ var ViewSelector = new Lang.Class({ - }, - - hide() { -+ this.reset(); - this._workspacesDisplay.hide(); - }, -
-- ubuntu-desktop mailing list ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop