You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2012/07/27 22:28:35 UTC

svn commit: r1366523 - /pivot/branches/2.0.x/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java

Author: rwhitcomb
Date: Fri Jul 27 20:28:35 2012
New Revision: 1366523

URL: http://svn.apache.org/viewvc?rev=1366523&view=rev
Log:
Merging revision 1366521 from trunk to branches/2.0.x

PIVOT-860: CPU usage at 100% when displaying an Expander.

The TerraExpanderSkin.paint method was calling "setTitleBarColor" because of the
color change before and after the transition due to the enabled state changing.
This caused an infinite repaint loop that used 100% CPU and was exacerbating
a memory leak which would soon eat up all memory.

So, took out the set color in the paint method and implemented the
ComponentStateListener method "enabledChanged" which sets the title bar color
and avoids the infinite repaint loop.

Modified:
    pivot/branches/2.0.x/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java

Modified: pivot/branches/2.0.x/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java
URL: http://svn.apache.org/viewvc/pivot/branches/2.0.x/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java?rev=1366523&r1=1366522&r2=1366523&view=diff
==============================================================================
--- pivot/branches/2.0.x/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java (original)
+++ pivot/branches/2.0.x/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java Fri Jul 27 20:28:35 2012
@@ -285,6 +285,8 @@ public class TerraExpanderSkin extends E
 
         Expander expander = (Expander)component;
         expander.add(titleBarTablePane);
+        expander.getComponentStateListeners().add(this);
+        enabledChanged(expander);
 
         Image buttonData = expander.isExpanded() ? collapseImage : expandImage;
         shadeButton = new ShadeButton(buttonData);
@@ -467,13 +469,6 @@ public class TerraExpanderSkin extends E
 
         graphics.setPaint(borderColor);
         GraphicsUtilities.drawRect(graphics, 0, 0, width, height);
-
-        Expander expander = (Expander)TerraExpanderSkin.this.getComponent();
-        if (expander.isEnabled()) {
-            setTitleBarColor(shadeButtonColor);
-        } else {
-            setTitleBarColor(disabledShadeButtonColor);
-        }
     }
 
     public Font getTitleBarFont() {
@@ -659,6 +654,20 @@ public class TerraExpanderSkin extends E
         }
     }
 
+    // ComponentStateListener methods
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void enabledChanged(Component component) {
+        if (component.isEnabled()) {
+            setTitleBarColor(shadeButtonColor);
+        } else {
+            setTitleBarColor(disabledShadeButtonColor);
+        }
+    }
+
     // ExpanderListener methods
 
     /**