You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/04/25 00:30:48 UTC
git commit: [flex-sdk] [refs/heads/develop] - Accept Patch for
FLEX-33948
Repository: flex-sdk
Updated Branches:
refs/heads/develop 920ee2149 -> 4a1399919
Accept Patch for FLEX-33948
Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/4a139991
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/4a139991
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/4a139991
Branch: refs/heads/develop
Commit: 4a13999192e5ebb8ab9d435069e226f6b9f30759
Parents: 920ee21
Author: Alex Harui <ah...@apache.org>
Authored: Thu Apr 24 15:30:19 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Apr 24 15:30:19 2014 -0700
----------------------------------------------------------------------
.../supportClasses/DropDownListBase.as | 147 ++++++++++++++++++-
1 file changed, 140 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4a139991/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as b/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
index a2fe333..aaba442 100644
--- a/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
+++ b/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
@@ -29,7 +29,7 @@ import flash.events.MouseEvent;
import flash.geom.Point;
import mx.collections.IList;
-import mx.core.mx_internal;
+import mx.core.InteractionMode;
import mx.events.CollectionEvent;
import mx.events.FlexEvent;
@@ -37,8 +37,8 @@ import spark.components.List;
import spark.core.NavigationUnit;
import spark.events.DropDownEvent;
import spark.events.IndexChangeEvent;
-import spark.utils.LabelUtil;
+import mx.core.mx_internal;
use namespace mx_internal;
//--------------------------------------
@@ -437,11 +437,13 @@ public class DropDownListBase extends List
return;
_dropDownController = value;
-
+
_dropDownController.addEventListener(DropDownEvent.OPEN, dropDownController_openHandler);
_dropDownController.addEventListener(DropDownEvent.CLOSE, dropDownController_closeHandler);
- if (openButton)
+ _dropDownController.closeOnResize = _closeDropDownOnResize;
+
+ if (openButton)
_dropDownController.openButton = openButton;
if (dropDown)
_dropDownController.dropDown = dropDown;
@@ -467,7 +469,72 @@ public class DropDownListBase extends List
return false;
}
- //----------------------------------
+ //----------------------------------
+ // closeDropDownOnResize
+ //----------------------------------
+
+ /**
+ * @private
+ *
+ * cached value: getStyle("interactionMode") == InteractionMode.TOUCH
+ */
+ private var isTouchInteractionMode:Boolean = false;
+
+ /**
+ * @private
+ *
+ * do not know what default value for closeDropDownOnResize will be until styles have been applied,
+ * but user may set property before that. this flag indicates whether property has been explicitly set,
+ * and so will not need to be determined from css when stylesInitialized() or styleChanged() is called.
+ */
+ private var isCloseDropDownOnResizeExplicitlySet:Boolean = false;
+
+ /**
+ * @private
+ */
+ protected var _closeDropDownOnResize:Boolean = true;
+
+ [Inspectable(category="General", enumeration="true,false", defaultValue="true")]
+
+ /**
+ * When <code>true</code>, resizing the system manager
+ * closes the drop down.
+ * For mobile applications, this property is set
+ * to <code>false</code> so that the drop down stays open when the
+ * page orientation changes.
+ *
+ * @default true
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4.12
+ */
+ public function get closeDropDownOnResize():Boolean
+ {
+ return _closeDropDownOnResize;
+ }
+
+ /**
+ * @private
+ */
+ public function set closeDropDownOnResize(value:Boolean):void
+ {
+ setCloseDropDownOnResize(value, true);
+ }
+
+ /**
+ * @private
+ */
+ private function setCloseDropDownOnResize(value:Boolean, explicitlySet:Boolean):void
+ {
+ _closeDropDownOnResize = value;
+ isCloseDropDownOnResizeExplicitlySet ||= explicitlySet;
+ if (dropDownController)
+ dropDownController.closeOnResize = _closeDropDownOnResize;
+ }
+
+ //----------------------------------
// userProposedSelectedIndex
//----------------------------------
@@ -498,6 +565,69 @@ public class DropDownListBase extends List
//
//--------------------------------------------------------------------------
+ /**
+ * @private
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4.12
+ */
+ override public function stylesInitialized():void
+ {
+ super.stylesInitialized();
+ setInteractionMode();
+ }
+
+ /**
+ * @private
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4.12
+ */
+ override public function styleChanged(styleProp:String):void
+ {
+ super.styleChanged(styleProp);
+ if (!styleProp || styleProp == "styleName" || styleProp == "interactionMode")
+ setInteractionMode();
+ }
+
+ /**
+ * @private
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4.12
+ */
+ private function setInteractionMode():void
+ {
+ isTouchInteractionMode = getStyle("interactionMode") == InteractionMode.TOUCH;
+ if (!isCloseDropDownOnResizeExplicitlySet)
+ setCloseDropDownOnResize(!isTouchInteractionMode, false);
+ }
+
+ /**
+ * @private
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4.12
+ */
+ override public function setSelectedIndex(rowIndex:int, dispatchChangeEvent:Boolean = false, changeCaret:Boolean = true):void
+ {
+ super.setSelectedIndex(rowIndex, dispatchChangeEvent, changeCaret);
+ if (isTouchInteractionMode)
+ {
+ userProposedSelectedIndex = rowIndex;
+ closeDropDown(true);
+ }
+ }
+
+
/**
* @private
* Called by the initialize() method of UIComponent
@@ -738,8 +868,11 @@ public class DropDownListBase extends List
override protected function item_mouseDownHandler(event:MouseEvent):void
{
super.item_mouseDownHandler(event);
- userProposedSelectedIndex = selectedIndex;
- closeDropDown(true);
+ if (!isTouchInteractionMode)
+ {
+ userProposedSelectedIndex = selectedIndex;
+ closeDropDown(true);
+ }
}
/**