You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2020/01/10 20:50:05 UTC

[royale-asjs] branch develop updated: handle column overflow based on horizontalScrollPolicy. Should fix #666

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

aharui 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 86aa474  handle column overflow based on horizontalScrollPolicy.  Should fix #666
86aa474 is described below

commit 86aa4748051c99301af350268c41be3d89ea977d
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Jan 10 12:49:01 2020 -0800

    handle column overflow based on horizontalScrollPolicy.  Should fix #666
---
 .../mx/controls/beads/DataGridColumnResizeBead.as  |  8 +++-
 .../mx/controls/beads/layouts/DataGridLayout.as    | 55 +++++++++++++++-------
 2 files changed, 43 insertions(+), 20 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as
index 2efdd99..8f0ea82 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as
@@ -21,6 +21,7 @@ package mx.controls.beads
     import mx.collections.ICollectionView;
     import mx.controls.AdvancedDataGrid;
     import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
+    import mx.core.ScrollPolicy;
     import mx.events.AdvancedDataGridEvent;
     
     import org.apache.royale.core.IBead;
@@ -342,8 +343,11 @@ package mx.controls.beads
             }
             columns[columnIndex].width += deltaWidth;
             columns[columnIndex].columnWidth += deltaWidth;
-            columns[columnIndex + 1].columnWidth -= deltaWidth;
-            columns[columnIndex + 1].width -= deltaWidth;
+            if (adg.horizontalScrollPolicy == ScrollPolicy.OFF)
+            {
+                columns[columnIndex + 1].columnWidth -= deltaWidth;
+                columns[columnIndex + 1].width -= deltaWidth;
+            }
             adg.dispatchEvent(new Event("layoutNeeded"));
             drawLines(null);
         }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as
index 05312a6..f39b42a 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as
@@ -27,6 +27,8 @@ package mx.controls.beads.layouts
     import org.apache.royale.html.beads.layouts.DataGridLayout;
     import mx.controls.dataGridClasses.DataGridColumn;
     import mx.controls.beads.DataGridView;
+    import mx.core.ScrollControlBase;
+    import mx.core.ScrollPolicy;
 	
     /**
      *  The DataGridLayout class.
@@ -91,30 +93,47 @@ package mx.controls.beads.layouts
                 return true;
             }
             
-            if (unspecifiedWidths > 0 && totalWidths > 0)
+            if ((uiHost as ScrollControlBase).horizontalScrollPolicy == ScrollPolicy.OFF)
             {
-                // some widths are specified, others are not, so fit the unspecified
-                // in the remaining space
-                var remainingSpace:Number = useWidth - totalWidths;
-                var proportionateShare:Number = remainingSpace / unspecifiedWidths;
-                for(i=0; i < view.visibleColumns.length; i++) {
-                    columnDef = view.visibleColumns[i] as DataGridColumn;
-                    if (!isNaN(columnDef.width))
-                        columnDef.columnWidth = columnDef.width;
-                    else
-                        columnDef.columnWidth = proportionateShare;
-                }                
-            }
-            else if (totalWidths > 0)
-            {
-                if (totalWidths != useWidth)
+                if (unspecifiedWidths > 0 && totalWidths > 0)
                 {
-                    var factor:Number = useWidth / totalWidths;
+                    // some widths are specified, others are not, so fit the unspecified
+                    // in the remaining space
+                    var remainingSpace:Number = useWidth - totalWidths;
+                    var proportionateShare:Number = remainingSpace / unspecifiedWidths;
                     for(i=0; i < view.visibleColumns.length; i++) {
                         columnDef = view.visibleColumns[i] as DataGridColumn;
-                        columnDef.columnWidth = columnDef.width * factor;
+                        if (!isNaN(columnDef.width))
+                            columnDef.columnWidth = columnDef.width;
+                        else
+                            columnDef.columnWidth = proportionateShare;
                     }                
                 }
+                else if (totalWidths > 0)
+                {
+                    if (totalWidths != useWidth)
+                    {
+                        var factor:Number = useWidth / totalWidths;
+                        for(i=0; i < view.visibleColumns.length; i++) {
+                            columnDef = view.visibleColumns[i] as DataGridColumn;
+                            columnDef.columnWidth = columnDef.width * factor;
+                        }                
+                    }
+                }
+            }
+            else
+            {
+                COMPILE::JS
+                {
+                   view.header.element.scrollLeft = view.listArea.element.scrollLeft;
+                }
+                for(i=0; i < view.visibleColumns.length; i++) {
+                    columnDef = view.visibleColumns[i] as DataGridColumn;
+                    if (!isNaN(columnDef.width))
+                        columnDef.columnWidth = 100; // hopefully won't get here
+                    else
+                        columnDef.columnWidth = columnDef.width;
+                }                
             }
             
             return super.layout();