[gnome-shell] search: Replace 'icon' property in metaInfo with a function



commit 7723e59a724cdb391f9b70e6b4c5e0683908510e
Author: Florian Müllner <fmuellner gnome org>
Date:   Mon Feb 28 20:36:52 2011 +0100

    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 364b637..b9f4b1f 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 85bbdf9..2687172 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 a44506e..450a7ba 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 fce5866..7e30fc0 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 552737e..485620c 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]