This is an automated email from the ASF dual-hosted git repository.

hiedra pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new bae2b992fc Take into consideration the existence of the vertical 
scroll bar to include its width in the layout calculations.
bae2b992fc is described below

commit bae2b992fc13cd365b5a0148f5828fe68256a1e0
Author: mjesteve <[email protected]>
AuthorDate: Wed May 18 12:29:04 2022 +0200

    Take into consideration the existence of the vertical scroll bar to include 
its width in the layout calculations.
---
 .../jewel/beads/layouts/TileHorizontalLayout.as    | 27 ++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/TileHorizontalLayout.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/TileHorizontalLayout.as
index d44b695604..53c8d555e2 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/TileHorizontalLayout.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/TileHorizontalLayout.as
@@ -29,6 +29,8 @@ package org.apache.royale.jewel.beads.layouts
        import org.apache.royale.core.layout.EdgeData;
        import org.apache.royale.core.layout.ILayoutStyleProperties;
        import org.apache.royale.events.Event;
+       import org.apache.royale.utils.OSUtils;
+       import org.apache.royale.utils.observeElementSize;
 
        /**
         *  The TileHorizontalLayout class bead sizes and positions the 
elements it manages into rows and columns.
@@ -74,6 +76,16 @@ package org.apache.royale.jewel.beads.layouts
 
                        hostComponent.replaceClass("tile");
                        hostComponent.dispatchEvent(new Event("layoutNeeded"));
+                       
+                       COMPILE::JS{
+                               //OSUtils.getOS() == OSUtils.MAC_OS || 
OSUtils.getOS() == OSUtils.IOS_OS ??
+                       var isMac:Boolean = OSUtils.getOS() == OSUtils.MAC_OS;
+                               if(!isMac)
+                                       
observeElementSize(hostComponent.element, observedChangeSize);
+                               else
+                                       // TODO - To be tested (scroll - 
mouseenter - ...?)
+                       hostComponent.element.addEventListener('mouseenter', 
observedChangeSize);                
+            }
                }
 
                private var _columnCount:int = -1;
@@ -267,6 +279,15 @@ package org.apache.royale.jewel.beads.layouts
             }
                }
 
+               private var _oldScrollWidth:Number;
+               private function observedChangeSize(event:Event):void
+               {
+                       COMPILE::JS{
+                           if(_oldScrollWidth != 
hostComponent.element.scrollWidth)
+                                   updateLayout();
+            }
+               }
+
                private function updateLayout():void
                {
                        layout();
@@ -429,7 +450,13 @@ package org.apache.royale.jewel.beads.layouts
                                // trace("  -- calculate useWidth & useHeight");
                                var borderMetrics:EdgeData = 
(ValuesManager.valuesImpl as 
IBorderPaddingMarginValuesImpl).getBorderMetrics(host);
                                var adjustedHostWidth:Number = 
Math.floor(host.width - borderMetrics.left - borderMetrics.right);
+                               if (hostComponent.containsClass("scroll")){
+                    //Reserve some room for VScrollbar
+                                       _oldScrollWidth = 
hostComponent.element.scrollWidth;
+                    adjustedHostWidth -= _oldScrollWidth;
+                               }
                                // trace(" - adjustedWidth", adjustedHostWidth);
+                               
                                var adjustedHostHeight:Number = 
Math.floor(host.height - borderMetrics.top - borderMetrics.bottom);
                                // trace(" - adjustedHeight", 
adjustedHostHeight);
 

Reply via email to