You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2018/09/14 07:15:26 UTC
[royale-asjs] branch develop updated: Better fix for Menu
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 84fa0dc Better fix for Menu
84fa0dc is described below
commit 84fa0dcf14f508acf99216a4982bd792e974c301
Author: Harbs <ha...@in-tools.com>
AuthorDate: Fri Sep 14 10:15:15 2018 +0300
Better fix for Menu
---
.../controllers/ItemRendererMouseController.as | 33 ++++++++++++++++++++--
.../beads/controllers/MenuBarMouseController.as | 21 ++++++++++++++
.../controllers/MenuSelectionMouseController.as | 23 ++++++++++++++-
3 files changed, 73 insertions(+), 4 deletions(-)
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
index 6073264..db7fee9 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
@@ -91,7 +91,8 @@ COMPILE::JS {
goog.events.listen(element, goog.events.EventType.MOUSEOVER, this.handleMouseOver);
goog.events.listen(element, goog.events.EventType.MOUSEOUT, this.handleMouseOut);
goog.events.listen(element, goog.events.EventType.MOUSEDOWN, this.handleMouseDown);
- goog.events.listen(element, goog.events.EventType.CLICK, this.handleMouseUp);
+ goog.events.listen(element, goog.events.EventType.CLICK, this.handleMouseClick);
+ goog.events.listen(element, goog.events.EventType.MOUSEUP, this.handleMouseUp);
}
}
@@ -172,6 +173,13 @@ COMPILE::JS {
{
target.down = true;
target.hovered = false;
+
+ var newEvent:ItemClickedEvent = new ItemClickedEvent("itemMouseDown");
+ newEvent.data = target.data;
+ newEvent.multipleSelection = event.shiftKey;
+ newEvent.index = target.index;
+
+ target.dispatchEvent(newEvent);
}
}
@@ -200,7 +208,7 @@ COMPILE::JS {
* @royaleemitcoercion org.apache.royale.core.ISelectableItemRenderer
*/
COMPILE::JS
- protected function handleMouseUp(event:BrowserEvent):void
+ protected function handleMouseClick(event:BrowserEvent):void
{
var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
if (target)
@@ -213,6 +221,25 @@ COMPILE::JS {
target.dispatchEvent(newEvent);
}
}
-
+
+ /**
+ * @private
+ * @royaleemitcoercion org.apache.royale.core.ISelectableItemRenderer
+ */
+ COMPILE::JS
+ protected function handleMouseUp(event:BrowserEvent):void
+ {
+ var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
+ if (target)
+ {
+ var newEvent:ItemClickedEvent = new ItemClickedEvent("itemMouseUp");
+ newEvent.data = target.data;
+ newEvent.multipleSelection = event.shiftKey;
+ newEvent.index = target.index;
+
+ target.dispatchEvent(newEvent);
+ }
+ }
+
}
}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
index a2f34b9..70e06b1 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
@@ -26,6 +26,8 @@ package org.apache.royale.html.beads.controllers
import org.apache.royale.core.UIBase;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.events.ItemAddedEvent;
+ import org.apache.royale.events.ItemRemovedEvent;
import org.apache.royale.events.ItemClickedEvent;
import org.apache.royale.html.Menu;
import org.apache.royale.html.MenuBar;
@@ -72,6 +74,25 @@ package org.apache.royale.html.beads.controllers
_strand = value;
super.strand = value;
}
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ */
+ override protected function handleItemAdded(event:ItemAddedEvent):void
+ {
+ IEventDispatcher(event.item).addEventListener("itemMouseDown", selectedHandler);
+ IEventDispatcher(event.item).addEventListener("itemRollOver", rolloverHandler);
+ IEventDispatcher(event.item).addEventListener("itemRollOut", rolloutHandler);
+ }
+
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ */
+ override protected function handleItemRemoved(event:ItemRemovedEvent):void
+ {
+ IEventDispatcher(event.item).removeEventListener("itemMouseDown", selectedHandler);
+ IEventDispatcher(event.item).removeEventListener("itemRollOver", rolloverHandler);
+ IEventDispatcher(event.item).removeEventListener("itemRollOut", rolloutHandler);
+ }
/**
* Called when an item in the MenuBar is selected; it produces an IMenu below
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
index 6a09a52..61e933c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
@@ -25,6 +25,8 @@ package org.apache.royale.html.beads.controllers
import org.apache.royale.core.UIBase;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.events.ItemAddedEvent;
+ import org.apache.royale.events.ItemRemovedEvent;
import org.apache.royale.events.ItemClickedEvent;
import org.apache.royale.events.MouseEvent;
import org.apache.royale.html.beads.models.MenuModel;
@@ -84,6 +86,25 @@ package org.apache.royale.html.beads.controllers
window.addEventListener('mouseup', hideMenu_internal, false);
}
}
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ */
+ override protected function handleItemAdded(event:ItemAddedEvent):void
+ {
+ IEventDispatcher(event.item).addEventListener("itemMouseUp", selectedHandler);
+ IEventDispatcher(event.item).addEventListener("itemRollOver", rolloverHandler);
+ IEventDispatcher(event.item).addEventListener("itemRollOut", rolloutHandler);
+ }
+
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ */
+ override protected function handleItemRemoved(event:ItemRemovedEvent):void
+ {
+ IEventDispatcher(event.item).removeEventListener("itemMouseUp", selectedHandler);
+ IEventDispatcher(event.item).removeEventListener("itemRollOver", rolloverHandler);
+ IEventDispatcher(event.item).removeEventListener("itemRollOut", rolloutHandler);
+ }
/**
* Listen for selections made on the component and translate them into change events.
@@ -218,7 +239,7 @@ package org.apache.royale.html.beads.controllers
target = target.parentNode as HTMLElement;
}
- setTimeout(hideOpenMenus);
+ hideOpenMenus();
}
}
}
\ No newline at end of file