I’m not sure that viewChanged is the best event to be dispatching here.

It turns out that viewChanged is dispatched in two unrelated cases:
1. When the IViewManagerView is assigned to the ViewManagerBase.
2. When the current view is set by the IViewManagerView.

The way it is, it’s currently difficult to differentiate between the two cases.

It feels like the correct event to be dispatching for case 2 is 
“currentViewChanged” or “activeViewChanged” or “selectedViewChanged”.

Thoughts?

Harbs

> On Nov 27, 2017, at 1:17 PM, ha...@apache.org wrote:
> 
> 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 6711a8d  Fixed event dispatching on tba view change
> 6711a8d is described below
> 
> commit 6711a8d137ecca2d4dfaa48f1c0689282157df47
> Author: Harbs <ha...@in-tools.com>
> AuthorDate: Mon Nov 27 13:17:42 2017 +0200
> 
>    Fixed event dispatching on tba view change
> 
>    Removed an extra layoutNeeded
>    Dispatch viewChanged
> ---
> .../org/apache/royale/mobile/beads/TabbedViewManagerView.as      | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git 
> a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
>  
> b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
> index 64c7b80..bef33ee 100644
> --- 
> a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
> +++ 
> b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
> @@ -104,6 +104,11 @@ package org.apache.royale.mobile.beads
>               
>               private var _currentView:IViewManagerView;
>               
> +             /**
> +              * @royaleignorecoercion org.apache.royale.core.UIBase
> +              * @royaleignorecoercion 
> org.apache.royale.mobile.IViewManagerView
> +              * @royaleignorecoercion org.apache.royale.mobile.IViewManager
> +              */
>               protected function showViewByIndex(index:int):void
>               {
>                       var model:ViewManagerModel = 
> _strand.getBeadByType(IBeadModel) as ViewManagerModel;
> @@ -117,9 +122,8 @@ package org.apache.royale.mobile.beads
>                       
>                       COMPILE::JS {
>                               if (_currentView) {
> -                                     
> UIBase(_currentView).element.style["flex-grow"] = "1";
> +                                     (_currentView as 
> UIBase).element.style["flex-grow"] = "1";
>                               }
> -                             getHost().dispatchEvent(new 
> Event("layoutNeeded"));
>                       }
>                       COMPILE::SWF {
>                               if (UIBase(_currentView).style == null) {
> @@ -131,6 +135,7 @@ package org.apache.royale.mobile.beads
>                       
>                       // Now that the view has changed, refresh the layout on 
> this component.
>                       getHost().dispatchEvent(new Event("layoutNeeded"));
> +                     getHost().dispatchEvent(new Event("viewChanged"));
>               }
>               protected function 
> insertCurrentView(view:IViewManagerView):void{
>                       getHost().addElementAt(view,(navigationBar ? 1 : 0));
> 
> -- 
> To stop receiving notification emails like this one, please contact
> ['"comm...@royale.apache.org" <comm...@royale.apache.org>'].

Reply via email to