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

Reply via email to