You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by pe...@apache.org on 2018/01/31 15:38:54 UTC

[royale-asjs] branch develop updated: Fixed positioning and display of drop indicator for SWF platform.

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

pent 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 d2434b4  Fixed positioning and display of drop indicator for SWF platform.
d2434b4 is described below

commit d2434b4ab9309db17705e45ab7dd76f4697f057c
Author: Peter Ent <pe...@apache.org>
AuthorDate: Wed Jan 31 10:41:28 2018 -0500

    Fixed positioning and display of drop indicator for SWF platform.
---
 .../royale/html/beads/DataGridDrawingLayerBead.as  | 35 ++++++++--------------
 .../html/beads/DataGridWithDrawingLayerLayout.as   | 19 +++++-------
 .../apache/royale/html/beads/IDrawingLayerBead.as  |  3 +-
 .../html/beads/SingleSelectionDropTargetBead.as    |  6 +---
 .../royale/org/apache/royale/express/DataGrid.as   | 14 ++++-----
 5 files changed, 28 insertions(+), 49 deletions(-)

diff --git a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridDrawingLayerBead.as b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridDrawingLayerBead.as
index d498a29..9b7e5fc 100644
--- a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridDrawingLayerBead.as
+++ b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridDrawingLayerBead.as
@@ -24,9 +24,11 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.UIBase;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
-	import org.apache.royale.html.beads.IDataGridView;
 	import org.apache.royale.html.beads.IDrawingLayerBead;
 	
+	COMPILE::SWF {
+		import org.apache.royale.html.beads.SolidBackgroundBead;
+	}
     
 	/**
 	 *  DataGridDrawingLayerBead places a graphic space into the DataGrid that is
@@ -61,8 +63,15 @@ package org.apache.royale.html.beads
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			
-			IEventDispatcher(_strand).addEventListener("beadsAdded", handleBeadsAdded);
+						
+			_layer = new UIBase();
+			_layer.className = "DataGridDrawingLayer";
+			COMPILE::JS {
+				_layer.element.style.position = "absolute";
+				_layer.element.style['pointer-events'] = 'none';
+				_layer.element.style['overflow'] = 'hidden';
+			}
+			UIBase(_strand).addElement(_layer);
 		}
 		
 		private var _layer:UIBase;
@@ -79,25 +88,5 @@ package org.apache.royale.html.beads
 		{
 			return _layer;
 		}
-		
-		/**
-		 * @private
-		 */
-		private function handleBeadsAdded(event:Event):void
-		{
-			var view:IDataGridView = UIBase(_strand).view as IDataGridView;
-			if (view != null) {
-				_layer = new UIBase();
-				_layer.className = "DataGridDrawingLayer";
-				COMPILE::JS {
-					_layer.element.style.position = "absolute";
-					_layer.element.style['pointer-events'] = 'none';
-					_layer.element.style['overflow'] = 'hidden';
-				}
-				UIBase(_strand).addElement(_layer);
-			}
-			// else: this is an error as this bead cannot be used with anything but
-			// a DataGrid.
-		}
 	}
 }
diff --git a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridWithDrawingLayerLayout.as b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridWithDrawingLayerLayout.as
index 4f3232c..355dd57 100644
--- a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridWithDrawingLayerLayout.as
+++ b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/DataGridWithDrawingLayerLayout.as
@@ -68,8 +68,6 @@ package org.apache.royale.html.beads
 		{
 			super.strand = value;
 			_strand = value;
-			
-			_strand.addBead(new DataGridDrawingLayerBead());
 		}
 
 		/**
@@ -77,25 +75,21 @@ package org.apache.royale.html.beads
 		 */
 		override public function layout():Boolean
 		{
-			// If there is a drawing layer, remove it so the super.layout function
-			// will not include it.
+			// Get the drawing layer, if there is one, so it can be positioned at the
+			// top of the z-order and sized properly.
 			var layerBead:IDrawingLayerBead = _strand.getBeadByType(IDrawingLayerBead) as IDrawingLayerBead;
-			if (layerBead != null && layerBead.layer == null) {
-				UIBase(_strand).dispatchEvent(new Event("beadsAdded"));
-			}
-//			if (layerBead != null && layerBead.layer != null) {
-//				UIBase(_strand).removeElement(layerBead.layer);
-//			}
 
 			// Run the actual layout
 			var result:Boolean = super.layout();
 
 			// Put the drawing layer back, sizing it to fit over the listArea.
-			if (layerBead != null && layerBead.layer != null) {
-//				UIBase(_strand).addElement(layerBead.layer);
+			if (result && layerBead != null && layerBead.layer != null) {
 				
 				var view:IDataGridView = UIBase(_strand).view as IDataGridView;
 				var listArea:UIBase = view.listArea;
+				
+				UIBase(_strand).removeElement(layerBead.layer);
+				UIBase(_strand).addElement(layerBead.layer); // always keep it on top
 
 				var layerX:Number = listArea.x;
 				var layerY:Number = listArea.y;
@@ -117,6 +111,7 @@ package org.apache.royale.html.beads
 				layerBead.layer.setWidthAndHeight(useWidth, useHeight, true);
 
 			}
+			
 			return result;
 		}
 	}
diff --git a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/IDrawingLayerBead.as b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/IDrawingLayerBead.as
index 2ce1fdf..1b8a092 100644
--- a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/IDrawingLayerBead.as
+++ b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/IDrawingLayerBead.as
@@ -19,6 +19,7 @@
 package org.apache.royale.html.beads
 {
 	import org.apache.royale.core.UIBase;
+	import org.apache.royale.core.IBead;
 	
     
 	/**
@@ -30,7 +31,7 @@ package org.apache.royale.html.beads
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.8
 	 */
-	public interface IDrawingLayerBead
+	public interface IDrawingLayerBead extends IBead
 	{
 		/**
 		 * Returns the component to use as the actual drawing surface.
diff --git a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDropTargetBead.as b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDropTargetBead.as
index 2f159e2..2ee627b 100644
--- a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDropTargetBead.as
+++ b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDropTargetBead.as
@@ -266,10 +266,6 @@ package org.apache.royale.html.beads
 				return;
 			}
 
-			var pt0:Point;
-			var pt1:Point;
-			var pt2:Point;
-
 			var startHere:Object = event.relatedObject;
 			while( !(startHere is IItemRenderer) && startHere != null) {
 				startHere = startHere.parent;
@@ -386,7 +382,7 @@ package org.apache.royale.html.beads
 			var pt2:Point;
 
 			if (dropDirection == "horizontal") {
-				pt0 = new Point(0, item.y);
+				pt0 = new Point(0, item.y+item.height);
 				pt1 = PointUtils.localToGlobal(pt0, item.parent);
 				pt2 = PointUtils.globalToLocal(pt1, indicatorParent);
 				_dropIndicator.x = 0;
diff --git a/frameworks/projects/Express/src/main/royale/org/apache/royale/express/DataGrid.as b/frameworks/projects/Express/src/main/royale/org/apache/royale/express/DataGrid.as
index b052184..5162890 100644
--- a/frameworks/projects/Express/src/main/royale/org/apache/royale/express/DataGrid.as
+++ b/frameworks/projects/Express/src/main/royale/org/apache/royale/express/DataGrid.as
@@ -21,12 +21,12 @@ package org.apache.royale.express
 	import org.apache.royale.core.IBeadLayout;
 	import org.apache.royale.core.IDataProviderNotifier;
 	import org.apache.royale.html.DataGrid;
-	import org.apache.royale.html.beads.SingleSelectionDragSourceBead;
+	import org.apache.royale.html.beads.DataGridDrawingLayerBead;
+	import org.apache.royale.html.beads.DataGridWithDrawingLayerLayout;
 	import org.apache.royale.html.beads.SingleSelectionDragImageBead;
-	import org.apache.royale.html.beads.SingleSelectionDropTargetBead;
+	import org.apache.royale.html.beads.SingleSelectionDragSourceBead;
 	import org.apache.royale.html.beads.SingleSelectionDropIndicatorBead;
-	import org.apache.royale.html.beads.DataGridWithDrawingLayerLayout;
-	import org.apache.royale.html.beads.DataGridDrawingLayerBead;
+	import org.apache.royale.html.beads.SingleSelectionDropTargetBead;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 
 	/**
@@ -63,11 +63,8 @@ package org.apache.royale.express
 				dataNotifier = loadBeadFromValuesManager(IDataProviderNotifier, "iDataProviderNotifier", this) as IDataProviderNotifier;
 			}
 			super.addedToParent();
-			if(getBeadByType(IBeadLayout) is DataGridWithDrawingLayerLayout)
-			{
-				addBead(new DataGridDrawingLayerBead());
-			}
 		}
+		
 		public var dataNotifier:IDataProviderNotifier;
 
 		private var _dragEnabled:Boolean = false;
@@ -115,6 +112,7 @@ package org.apache.royale.express
 			_dropEnabled = value;
 			if(value)
 			{
+				addBead(new DataGridDrawingLayerBead());
 				addBead(new SingleSelectionDropTargetBead());
 				addBead(new SingleSelectionDropIndicatorBead());
 			}

-- 
To stop receiving notification emails like this one, please contact
pent@apache.org.