From 7723e59a724cdb391f9b70e6b4c5e0683908510e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 28 Feb 2011 20:36:52 +0100 Subject: [PATCH] search: Replace 'icon' property in metaInfo with a function Search results' meta info currently is expected to have an 'icon' property holding a Clutter.Texture of a fixed icon size. This property is used to implement the createIcon() function of BaseIcon, which is used to actually display the result, ignoring the size parameter due to the fixed icon size. Given that all available search providers create this property for the desired icon size using a function with the same signature, it appears logical to replace the fixed-sized 'icon' property with such a function, so that the icon size will be defined by the display actor rather than the search system. https://bugzilla.gnome.org/show_bug.cgi?id=643632 --- js/ui/appDisplay.js | 5 ++++- js/ui/docDisplay.js | 5 ++++- js/ui/placeDisplay.js | 5 ++++- js/ui/search.js | 7 +++---- js/ui/searchDisplay.js | 4 +--- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 364b637db..b9f4b1fb4 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -251,7 +251,10 @@ BaseAppSearchProvider.prototype = { return null; return { 'id': resultId, 'name': app.get_name(), - 'icon': app.create_icon_texture(Search.RESULT_ICON_SIZE)}; + 'createIcon': function(size) { + return app.create_icon_texture(size); + } + }; }, activateResult: function(id, params) { diff --git a/js/ui/docDisplay.js b/js/ui/docDisplay.js index 85bbdf978..26871728a 100644 --- a/js/ui/docDisplay.js +++ b/js/ui/docDisplay.js @@ -26,7 +26,10 @@ DocSearchProvider.prototype = { return null; return { 'id': resultId, 'name': docInfo.name, - 'icon': docInfo.createIcon(Search.RESULT_ICON_SIZE)}; + 'createIcon': function(size) { + return docInfo.createIcon(size); + } + }; }, activateResult: function(id, params) { diff --git a/js/ui/placeDisplay.js b/js/ui/placeDisplay.js index a44506e70..450a7ba2b 100644 --- a/js/ui/placeDisplay.js +++ b/js/ui/placeDisplay.js @@ -415,7 +415,10 @@ PlaceSearchProvider.prototype = { return null; return { 'id': resultId, 'name': placeInfo.name, - 'icon': placeInfo.iconFactory(Search.RESULT_ICON_SIZE) }; + 'createIcon': function(size) { + return placeInfo.iconFactory(size); + } + }; }, activateResult: function(id, params) { diff --git a/js/ui/search.js b/js/ui/search.js index fce586624..7e30fc000 100644 --- a/js/ui/search.js +++ b/js/ui/search.js @@ -15,8 +15,6 @@ const Main = imports.ui.main; const DISABLED_OPEN_SEARCH_PROVIDERS_KEY = 'disabled-open-search-providers'; -const RESULT_ICON_SIZE = 48; - // Not currently referenced by the search API, but // this enumeration can be useful for provider // implementations. @@ -165,8 +163,9 @@ SearchProvider.prototype = { * getResultInfo: * @id: Result identifier string * - * Return an object with 'id', 'name', (both strings) and 'icon' (Clutter.Texture) - * properties which describe the given search result. + * Return an object with 'id', 'name', (both strings) and 'createIcon' + * (function(size) returning a Clutter.Texture) properties which describe + * the given search result. */ getResultMeta: function(id) { throw new Error('Not implemented'); diff --git a/js/ui/searchDisplay.js b/js/ui/searchDisplay.js index 552737ec5..485620c82 100644 --- a/js/ui/searchDisplay.js +++ b/js/ui/searchDisplay.js @@ -36,9 +36,7 @@ SearchResult.prototype = { reactive: true, track_hover: true }); let icon = new IconGrid.BaseIcon(this.metaInfo['name'], - { createIcon: Lang.bind(this, function(size) { - return this.metaInfo['icon']; - })}); + { createIcon: this.metaInfo['createIcon'] }); content.set_child(icon.actor); } this._content = content;