[gnome-shell] [MessageTray] fix allocation in the title-too-long case



commit 828ad348ceb9f8d6dc9f24034e60983de1d5e5a7
Author: Dan Winship <danw gnome org>
Date:   Fri Sep 10 13:35:11 2010 -0400

    [MessageTray] fix allocation in the title-too-long case
    
    Previously we were hiding the banner label if the title was too long,
    but this causes queue_relayout() warnings. Instead, just set its
    opacity to 0.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=629308

 js/ui/messageTray.js |   16 +++++++---------
 1 files changed, 7 insertions(+), 9 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 04f35ef..d3be973 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -393,7 +393,7 @@ Notification.prototype = {
 
         let bannerFits = true;
         if (titleBox.x2 + this._spacing > availWidth) {
-            this._bannerLabel.hide();
+            this._bannerLabel.opacity = 0;
             bannerFits = false;
         } else {
             let bannerBox = new Clutter.ActorBox();
@@ -402,8 +402,13 @@ Notification.prototype = {
             bannerBox.x2 = Math.min(bannerBox.x1 + bannerNatW, availWidth);
             bannerBox.y2 = titleNatH;
             bannerFits = (bannerBox.x1 + bannerNatW <= availWidth);
-            this._bannerLabel.show();
             this._bannerLabel.allocate(bannerBox, flags);
+
+            // Make _bannerLabel visible if the entire notification
+            // fits on one line, or if the notification is currently
+            // unexpanded and only showing one line anyway.
+            if (!this.expanded || (bannerFits && this.actor.row_count == 1))
+                this._bannerLabel.opacity = 255;
         }
 
         // If the banner doesn't fully fit in the banner box, we possibly need to add the
@@ -418,13 +423,6 @@ Notification.prototype = {
                                             this._updated();
                                             return false;
                                         }));
-        else if (!this._contentArea && !this._actionArea)
-            // We need to set the opacity of the banner label to 255, in case it was
-            // previously 0 because the banner didn't fully fit before and the notification
-            // was in the expanded state. expand() will be called again if this._contentArea
-            // or this._actionArea will get re-populated with other elements, so the banner
-            // label opacity will be set to 0 if necessary.
-            this._bannerLabel.opacity = 255;
     },
 
     _updated: function() {



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