ScrollBar should defer some of its calculations when styles change to a 
lifecycle method so things that affect measurement have a chance to be measured.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/9c5f91e5
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/9c5f91e5
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/9c5f91e5

Branch: refs/heads/master
Commit: 9c5f91e5f25459c34b420c8596bb80adc5441498
Parents: 05833f8
Author: Alex Harui <aha...@apache.org>
Authored: Thu Sep 5 09:52:36 2013 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Thu Oct 10 23:18:37 2013 -0700

----------------------------------------------------------------------
 .../spark/src/spark/components/VScrollBar.as    | 25 +++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/9c5f91e5/frameworks/projects/spark/src/spark/components/VScrollBar.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/VScrollBar.as 
b/frameworks/projects/spark/src/spark/components/VScrollBar.as
index 144a420..a8afadb 100644
--- a/frameworks/projects/spark/src/spark/components/VScrollBar.as
+++ b/frameworks/projects/spark/src/spark/components/VScrollBar.as
@@ -158,6 +158,8 @@ public class VScrollBar extends ScrollBarBase
     //
     
//--------------------------------------------------------------------------
 
+       private var maxAndPageSizeInvalid:Boolean = false;
+       
     private function updateMaximumAndPageSize():void
     {
         var vsp:Number = viewport.verticalScrollPosition;
@@ -523,11 +525,28 @@ public class VScrollBar extends ScrollBarBase
         if (allStyles || styleName == "interactionMode")
         {
             if (viewport)
-                updateMaximumAndPageSize();
+                       {
+                               // Some of the information needed
+                               // is calculated in measure() on a child
+                               maxAndPageSizeInvalid = true;
+                               invalidateSize();
+                       }
         }
     }
-    
-    
+
+       /**
+        *  @private 
+        */
+       override protected function measure():void
+       {
+               super.measure();
+               if (maxAndPageSizeInvalid)
+               {
+                       maxAndPageSizeInvalid = false;
+                       updateMaximumAndPageSize();
+               }
+       }
+       
     /**
      *  @private
      *  Scroll vertically by event.delta "steps".  This listener is added to 
both the scrollbar 

Reply via email to