From b1d22d2058ccc0784860e333e96146708d169bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 17 Oct 2019 14:27:10 +0200 Subject: [PATCH] search: Drop SearchResultInterface again It adds a significant cost to AppIcons which are used - quite a log (depending on installed apps) - in preformance-sensitive contexts (spring animation) Just rely on duck typing and revert 91a5133116. https://gitlab.gnome.org/GNOME/gnome-shell/issues/1799 --- js/ui/appDisplay.js | 1 - js/ui/search.js | 17 +++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 5e20c0925..79c2f7e83 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -2045,7 +2045,6 @@ var AppFolderPopup = GObject.registerClass({ var AppIcon = GObject.registerClass({ GTypeName: 'AppDisplay_AppIcon', - Implements: [Search.SearchResultInterface], Signals: { 'menu-state-changed': { param_types: [GObject.TYPE_BOOLEAN] }, 'sync-tooltip': {}, diff --git a/js/ui/search.js b/js/ui/search.js index 0d31edb3c..3dab92b91 100644 --- a/js/ui/search.js +++ b/js/ui/search.js @@ -1,5 +1,5 @@ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- -/* exported SearchResultsView, SearchResultInterface */ +/* exported SearchResultsView */ const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; @@ -32,17 +32,8 @@ class MaxWidthBox extends St.BoxLayout { } }); -var SearchResultInterface = GObject.registerClass({ - Requires: [Clutter.Actor], -}, class SearchResultInterface extends GObject.Interface { - activate() { - throw new GObject.NotImplementedError('activate in %s'.format(this.constructor.name)); - } -}); - -var SearchResult = GObject.registerClass({ - Implements: [SearchResultInterface] -}, class SearchResult extends St.Button { +var SearchResult = GObject.registerClass( +class SearchResult extends St.Button { _init(provider, metaInfo, resultsView) { this.provider = provider; this.metaInfo = metaInfo; @@ -253,8 +244,6 @@ var SearchResultsBase = GObject.registerClass({ metasNeeded.forEach((resultId, i) => { let meta = metas[i]; let display = this._createResultDisplay(meta); - if (!(display instanceof SearchResultInterface)) - throw new Error(`${display} is not a valid search result`); display.connect('key-focus-in', this._keyFocusIn.bind(this)); this._resultDisplays[resultId] = display; });