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 2019/11/13 07:33:27 UTC
[royale-asjs] 02/02: try a different virtual scrolling trick.
Should fix #554
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
commit 73457e254b9872c4d8921fffef9e027cbe2ad836
Author: Alex Harui <ah...@apache.org>
AuthorDate: Tue Nov 12 23:33:05 2019 -0800
try a different virtual scrolling trick. Should fix #554
---
.../beads/layouts/AdvancedDataGridLayout.as | 41 +++++++++-------------
1 file changed, 17 insertions(+), 24 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
index 6bf8694..2f2d660 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
@@ -63,10 +63,7 @@ package mx.controls.beads.layouts
}
COMPILE::JS
- protected var topSpacer:HTMLDivElement;
-
- COMPILE::JS
- protected var bottomSpacer:HTMLDivElement;
+ protected var spacer:HTMLDivElement;
COMPILE::JS
private var listening:Boolean;
@@ -108,6 +105,22 @@ package mx.controls.beads.layouts
var topSpacerHeight:Number = Math.floor(listArea.element.scrollTop / presentationModel.rowHeight)
* presentationModel.rowHeight;
}
+ var model:IDataGridModel = uiHost.model as IDataGridModel;
+ if (model.dataProvider && model.dataProvider.length)
+ {
+ var totalHeight:Number = model.dataProvider.length * presentationModel.rowHeight;
+ COMPILE::JS
+ {
+ if (!spacer)
+ {
+ spacer = document.createElement("div") as HTMLDivElement;
+ listArea.element.appendChild(spacer);
+ }
+ // the lists are "absolute" so they float over the spacer
+ spacer.style.height = totalHeight.toString() + "px";
+ topSpacerHeight = Math.min(topSpacerHeight, totalHeight - useHeight);
+ }
+ }
for (var i:int = 0; i < n; i++)
{
var columnList:UIBase = displayedColumns[i] as UIBase;
@@ -119,26 +132,6 @@ package mx.controls.beads.layouts
columnList.dispatchEvent(new Event("layoutNeeded"));
}
}
- var model:IDataGridModel = uiHost.model as IDataGridModel;
- if (model.dataProvider && model.dataProvider.length)
- {
- var totalHeight:Number = model.dataProvider.length * presentationModel.rowHeight;
- COMPILE::JS
- {
- if (!topSpacer)
- {
- topSpacer = document.createElement("div") as HTMLDivElement;
- listArea.element.insertBefore(topSpacer, (listArea as UIBase).internalChildren()[0]);
- }
- topSpacer.style.height = topSpacerHeight.toString() + "px";
- if (!bottomSpacer)
- {
- bottomSpacer = document.createElement("div") as HTMLDivElement;
- listArea.element.appendChild(bottomSpacer);
- }
- bottomSpacer.style.height = (totalHeight - useHeight - topSpacerHeight).toString() + "px";
- }
- }
}
return retval;
}