[gnome-shell] Fix showing small item previews



commit f7fff8364786f25cb5ee8de6cd470bd0dc9f19af
Author: Marina Zhurakhinskaya <marinaz redhat com>
Date:   Wed Jul 29 17:47:50 2009 -0400

    Fix showing small item previews
    
    Don't use a clone of an actor that's not part of the scene graph for the
    item previews. This patch fixes previews in the details pane for documents
    for which we don't have full previews and for applications.
    
    Use create_icon_texture() from AppInfo instead of looking up the file
    for gicon when creating an application icon for the details pane.

 js/ui/appDisplay.js     |   26 +++-----------------------
 js/ui/docDisplay.js     |    7 +++----
 js/ui/genericDisplay.js |   17 +++++------------
 3 files changed, 11 insertions(+), 39 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 2523769..a790e3f 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -68,29 +68,9 @@ AppDisplayItem.prototype = {
         return this._appInfo.create_icon_texture(GenericDisplay.ITEM_DISPLAY_ICON_SIZE);
     },
 
-    // Ensures the preview icon is created.
-    _ensurePreviewIconCreated : function() {
-        if (!this._showPreview || this._previewIcon)
-            return;
-
-        let gicon = this._appInfo.get_icon();
-        let previewIconPath = null;
-        if (gicon) {
-            let iconTheme = Gtk.IconTheme.get_default();
-            let previewIconInfo = iconTheme.lookup_by_gicon(gicon, GenericDisplay.PREVIEW_ICON_SIZE, 0);
-            if (previewIconInfo)
-                previewIconPath = previewIconInfo.get_filename();
-        }
-
-        if (previewIconPath) {
-            try {
-                this._previewIcon = new Clutter.Texture({ width: GenericDisplay.PREVIEW_ICON_SIZE, height: GenericDisplay.PREVIEW_ICON_SIZE});
-                this._previewIcon.set_from_file(previewIconPath);
-            } catch (e) {
-                // we can get an error here if the file path doesn't exist on the system
-                log('Error loading AppDisplayItem preview icon ' + e);
-            }
-        }
+    // Returns a preview icon for the item.
+    _createPreviewIcon : function() {
+        return this._appInfo.create_icon_texture(GenericDisplay.PREVIEW_ICON_SIZE);
     }
 };
 
diff --git a/js/ui/docDisplay.js b/js/ui/docDisplay.js
index 02886f7..fac319f 100644
--- a/js/ui/docDisplay.js
+++ b/js/ui/docDisplay.js
@@ -62,10 +62,9 @@ DocDisplayItem.prototype = {
         return this._docInfo.createIcon(GenericDisplay.ITEM_DISPLAY_ICON_SIZE);
     },
 
-    // Ensures the preview icon is created.
-    _ensurePreviewIconCreated : function() {
-        if (!this._previewIcon)
-            this._previewIcon = this._docInfo.createIcon(GenericDisplay.PREVIEW_ICON_SIZE);
+    // Returns a preview icon for the item.
+    _createPreviewIcon : function() {
+        return this._docInfo.createIcon(GenericDisplay.PREVIEW_ICON_SIZE);
     },
 
     // Creates and returns a large preview icon, but only if this._docInfo is an image file
diff --git a/js/ui/genericDisplay.js b/js/ui/genericDisplay.js
index 73a6557..3cec349 100644
--- a/js/ui/genericDisplay.js
+++ b/js/ui/genericDisplay.js
@@ -114,7 +114,6 @@ GenericDisplayItem.prototype = {
         this._name = null;
         this._description = null;
         this._icon = null;
-        this._previewIcon = null; 
 
         // An array of details description actors that we create over time for the item.
         // It is used for updating the description text inside the details actor when
@@ -210,12 +209,11 @@ GenericDisplayItem.prototype = {
 
         mainDetails.append(textDetails, Big.BoxPackFlags.EXPAND);
 
-        this._ensurePreviewIconCreated();
+        let previewIcon = this._createPreviewIcon();
         let largePreviewIcon = this._createLargePreviewIcon(availableWidth, Math.max(0, availableHeight - mainDetails.height - PREVIEW_BOX_SPACING));
 
-        if (this._previewIcon != null && largePreviewIcon == null) {
-            let previewIconClone = new Clutter.Clone({ source: this._previewIcon });
-            mainDetails.prepend(previewIconClone, Big.BoxPackFlags.NONE);
+        if (previewIcon != null && largePreviewIcon == null) {
+            mainDetails.prepend(previewIcon, Big.BoxPackFlags.NONE);
         }
 
         details.append(mainDetails, Big.BoxPackFlags.NONE);
@@ -265,11 +263,6 @@ GenericDisplayItem.prototype = {
             // and therefore should be responsible for distroying it
             this._icon.destroy();
             this._icon = null;
-        } 
-        // This ensures we'll create a new previewIcon next time we need it
-        if (this._previewIcon != null) {
-            this._previewIcon.destroy();
-            this._previewIcon = null;
         }
 
         this._icon = this._createIcon();
@@ -320,8 +313,8 @@ GenericDisplayItem.prototype = {
         throw new Error("Not implemented");
     },
 
-    // Ensures the preview icon is created.
-    _ensurePreviewIconCreated: function() {
+    // Returns a preview icon for the item.
+    _createPreviewIcon: function() {
         throw new Error("Not implemented");
     },
 



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