This is an automated email from the ASF dual-hosted git repository.
harbs 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 533b74f Cleaned up VScrollViewport
533b74f is described below
commit 533b74fcd09cfa9d27c045659906f04571a3d190
Author: Harbs <[email protected]>
AuthorDate: Mon Feb 19 00:40:37 2018 +0200
Cleaned up VScrollViewport
Added HScrollViewport
---
.../Basic/src/main/resources/basic-manifest.xml | 1 +
.../{VScrollViewport.as => HScrollViewport.as} | 150 +++++++++------------
.../royale/html/supportClasses/VScrollViewport.as | 24 +---
3 files changed, 70 insertions(+), 105 deletions(-)
diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index 80af44d..4d3fe78 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -139,6 +139,7 @@
<component id="ImageAndTextButtonView"
class="org.apache.royale.html.beads.ImageAndTextButtonView" />
-->
<component id="ScrollingViewport"
class="org.apache.royale.html.supportClasses.ScrollingViewport" />
+ <component id="HScrollViewport"
class="org.apache.royale.html.supportClasses.HScrollViewport" />
<component id="VScrollViewport"
class="org.apache.royale.html.supportClasses.VScrollViewport" />
<component id="ClippingViewport"
class="org.apache.royale.html.supportClasses.Viewport" lookupOnly="true" />
<component id="Viewport"
class="org.apache.royale.html.supportClasses.Viewport" />
diff --git
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/VScrollViewport.as
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/HScrollViewport.as
similarity index 60%
copy from
frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/VScrollViewport.as
copy to
frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/HScrollViewport.as
index 704cbce..b11d397 100644
---
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/VScrollViewport.as
+++
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/HScrollViewport.as
@@ -42,16 +42,16 @@ package org.apache.royale.html.supportClasses
import org.apache.royale.geom.Rectangle;
/**
- * The VScrollViewport extends the ScrollingViewport class and limts
scrolling
+ * The HScrollViewport extends the ScrollingViewport class and limts
scrolling
* to only vertical scroll bars.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.0
+ * @productversion Royale 0.9.2
*/
COMPILE::JS
- public class VScrollViewport extends ScrollingViewport
+ public class HScrollViewport extends ScrollingViewport
{
/**
* Constructor
@@ -59,19 +59,19 @@ package org.apache.royale.html.supportClasses
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.0
+ * @productversion Royale 0.9.2
*/
- public function VScrollViewport()
+ public function HScrollViewport()
{
super();
}
- // These shuould be disabled for VScroll
- override public function get horizontalScrollPosition():Number
+ // These shuould be disabled for HScroll
+ override public function get verticalScrollPosition():Number
{
return 0;
}
- override public function set
horizontalScrollPosition(value:Number):void
+ override public function set
verticalScrollPosition(value:Number):void
{
// Do nothing
}
@@ -84,32 +84,16 @@ package org.apache.royale.html.supportClasses
super.strand = value;
if (contentView == null) {
(value as UIBase).element.style.overflow =
"hidden";
- (value as UIBase).element.style.overflowY =
"auto";
+ (value as UIBase).element.style.overflowX =
"auto";
} else {
(contentView as UIBase).element.style.overflow
= "hidden";
- (contentView as UIBase).element.style.overflowY
= "auto";
+ (contentView as UIBase).element.style.overflowX
= "auto";
}
- }
-
- /**
- * @copy org.apache.royale.core.IViewport
- */
- override public function
layoutViewportBeforeContentLayout(width:Number, height:Number):void
- {
- // does nothing for the JS platform
- }
-
- /**
- * @copy org.apache.royale.core.IViewport
- */
- override public function
layoutViewportAfterContentLayout(contentSize:Size):void
- {
- // does nothing for the JS platform
- }
+ }
}
COMPILE::SWF
- public class VScrollViewport extends ScrollingViewport
+ public class HScrollViewport extends ScrollingViewport
{
/**
* Constructor
@@ -119,7 +103,7 @@ package org.apache.royale.html.supportClasses
* @playerversion AIR 2.6
* @productversion Royale 0.0
*/
- public function VScrollViewport()
+ public function HScrollViewport()
{
super();
}
@@ -138,16 +122,13 @@ package org.apache.royale.html.supportClasses
return _horizontalScroller;
}
- private var _verticalScrollPosition:Number = 0;
-
override public function get verticalScrollPosition():Number
{
- return _verticalScrollPosition;
+ return 0;
}
override public function set verticalScrollPosition(value:Number):void
{
- _verticalScrollPosition = value;
- handleVerticalScrollChange();
+ //do nothing
}
private var _horizontalScrollPosition:Number = 0;
@@ -158,9 +139,9 @@ package org.apache.royale.html.supportClasses
}
override public function set
horizontalScrollPosition(value:Number):void
{
- // Do nothing
- // _horizontalScrollPosition = value;
- // handleHorizontalScrollChange();
+ _horizontalScrollPosition = value;
+ dispatchEvent(new Event("horizontalScrollPositionChanged"));
+ handleHorizontalScrollChange();
}
private var viewportWidth:Number;
@@ -182,9 +163,7 @@ package org.apache.royale.html.supportClasses
override public function
layoutViewportAfterContentLayout(contentSize:Size):void
{
var host:UIBase = UIBase(_strand);
-
- var hadV:Boolean = _verticalScroller != null &&
_verticalScroller.visible;
-
+
var hostWidth:Number = host.width;
var hostHeight:Number = host.height;
@@ -193,80 +172,81 @@ package org.apache.royale.html.supportClasses
hostWidth -= borderMetrics.left + borderMetrics.right;
hostHeight -= borderMetrics.top + borderMetrics.bottom;
- var needV:Boolean = contentSize.height > viewportHeight;
+ var needH:Boolean = contentSize.width > viewportWidth;
// if sized to content, the container should stretch to
fit, making the original
// viewport dimensions obsolete and scrollbars
unnecessary.
// This might not work for the flexible child.
- if (host.isHeightSizedToContent())
- needV = false;
+ if (host.isWidthSizedToContent())
+ needH = false;
- if (needV)
+ if (needH)
{
- if (_verticalScroller == null) {
- _verticalScroller =
createVerticalScrollBar();
- (_strand as
IContainer).strandChildren.addElement(_verticalScroller);
+ if (_horizontalScroller == null) {
+ _horizontalScroller =
createHorizontalScrollBar();
+ (_strand as
IContainer).strandChildren.addElement(_horizontalScroller);
}
}
- if (needV)
+ if (needH)
{
- _verticalScroller.visible = true;
- _verticalScroller.x = UIBase(_strand).width -
borderMetrics.right - _verticalScroller.width;
- _verticalScroller.y = borderMetrics.top;
- _verticalScroller.setHeight(hostHeight, false);
+ _horizontalScroller.visible = true;
+ _horizontalScroller.x = 0;
+ _horizontalScroller.y = UIBase(_strand).height
- borderMetrics.bottom - _horizontalScroller.height;
+ _horizontalScroller.setWidth(hostWidth, false);
- ScrollBarModel(_verticalScroller.model).maximum
= contentSize.height;
-
ScrollBarModel(_verticalScroller.model).pageSize = contentArea.height;
-
ScrollBarModel(_verticalScroller.model).pageStepSize = contentArea.height;
+
ScrollBarModel(_horizontalScroller.model).maximum = contentSize.width;
+
ScrollBarModel(_horizontalScroller.model).pageSize = contentArea.width;
+
ScrollBarModel(_horizontalScroller.model).pageStepSize = contentArea.width;
- if (contentSize.height > contentArea.height &&
- (contentSize.height -
contentArea.height) < _verticalScrollPosition)
- _verticalScrollPosition =
contentSize.height - contentArea.height;
- }
- else if (_verticalScroller) {
- _verticalScroller.visible = false;
+ if (contentSize.width > contentArea.width &&
+ (contentSize.width - contentArea.width)
< _horizontalScrollPosition)
+ _horizontalScrollPosition =
contentSize.width - contentArea.width;
+ }
+ else if (_horizontalScroller) {
+ _horizontalScroller.visible = false;
}
- var rect:flash.geom.Rectangle = new
flash.geom.Rectangle(_horizontalScrollPosition, _verticalScrollPosition,
- (_verticalScroller != null &&
_verticalScroller.visible) ? _verticalScroller.x : hostWidth,
- hostHeight);
+ var rect:flash.geom.Rectangle = new
flash.geom.Rectangle(_horizontalScrollPosition, 0,
+ hostWidth,
+ (_horizontalScroller != null &&
_horizontalScroller.visible) ? _horizontalScroller.y : hostHeight);
contentArea.scrollRect = rect;
}
- private function createVerticalScrollBar():ScrollBar
+ private function createHorizontalScrollBar():ScrollBar
{
- var vsbm:ScrollBarModel = new ScrollBarModel();
- vsbm.minimum = 0;
- vsbm.snapInterval = 1;
- vsbm.stepSize = 1;
- vsbm.value = 0;
-
- var vsb:VScrollBar;
- vsb = new VScrollBar();
- vsb.model = vsbm;
- vsb.visible = false;
-
- vsb.addEventListener("scroll",handleVerticalScroll);
- return vsb;
+ var hsbm:ScrollBarModel = new ScrollBarModel();
+ hsbm.minimum = 0;
+ hsbm.snapInterval = 1;
+ hsbm.stepSize = 1;
+ hsbm.value = 0;
+
+ var hsb:HScrollBar;
+ hsb = new HScrollBar();
+ hsb.model = hsbm;
+ hsb.visible = false;
+
+ hsb.addEventListener("scroll",handleHorizontalScroll);
+ return hsb;
}
- private function handleVerticalScroll(event:Event):void
+ private function handleHorizontalScroll(event:Event):void
{
var host:UIBase = UIBase(_strand);
- var vpos:Number =
ScrollBarModel(_verticalScroller.model).value;
+ var hpos:Number =
ScrollBarModel(_horizontalScroller.model).value;
var rect:flash.geom.Rectangle = contentArea.scrollRect;
- rect.y = vpos;
+ rect.x = hpos;
contentArea.scrollRect = rect;
- _verticalScrollPosition = vpos;
+ _horizontalScrollPosition = hpos;
+ dispatchEvent(new Event("horizontalScrollPositionChanged"));
}
- private function handleVerticalScrollChange():void
+ private function handleHorizontalScrollChange():void
{
- if (_verticalScroller) {
- ScrollBarModel(_verticalScroller.model).value =
verticalScrollPosition;
+ if (_horizontalScroller) {
+ ScrollBarModel(_horizontalScroller.model).value
= horizontalScrollPosition;
}
}
diff --git
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/VScrollViewport.as
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/VScrollViewport.as
index 704cbce..a2d6001 100644
---
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/VScrollViewport.as
+++
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/VScrollViewport.as
@@ -48,7 +48,7 @@ package org.apache.royale.html.supportClasses
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.0
+ * @productversion Royale 0.9.2
*/
COMPILE::JS
public class VScrollViewport extends ScrollingViewport
@@ -59,7 +59,7 @@ package org.apache.royale.html.supportClasses
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.0
+ * @productversion Royale 0.9.2
*/
public function VScrollViewport()
{
@@ -89,23 +89,7 @@ package org.apache.royale.html.supportClasses
(contentView as UIBase).element.style.overflow
= "hidden";
(contentView as UIBase).element.style.overflowY
= "auto";
}
- }
-
- /**
- * @copy org.apache.royale.core.IViewport
- */
- override public function
layoutViewportBeforeContentLayout(width:Number, height:Number):void
- {
- // does nothing for the JS platform
- }
-
- /**
- * @copy org.apache.royale.core.IViewport
- */
- override public function
layoutViewportAfterContentLayout(contentSize:Size):void
- {
- // does nothing for the JS platform
- }
+ }
}
COMPILE::SWF
@@ -117,7 +101,7 @@ package org.apache.royale.html.supportClasses
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.0
+ * @productversion Royale 0.9.2
*/
public function VScrollViewport()
{
--
To stop receiving notification emails like this one, please contact
[email protected].