I think we need to sometimes let it go and just make changes to our
original code. In our Jewel application we are preserving around 30% of
code of ported Flex app, by our choice. The rest is just rewritten. Even in
that rewritten code when I'm seeing some UI, layout issue - I don't waste
huge amount of time if I can simply make it work by one line of CSS.

It just allows you to move forward. I know it is hard sometimes convince
the client to make the changes, but our job as a power users of this
framework is educate also that Royale won't provide 100% conversion.
Changes in the old code is in many cases inevitable.

Thanks,
Piotr

pt., 5 cze 2020 o 11:36 Greg Dove <greg.d...@gmail.com> napisał(a):

>
> thanks Serkan -  you are right - I did not see that explanation earlier
> (just the screencaptures) which is why I asked my extra question.
>
> It sounds like it could be similar to what I was addressing, but I don't
> have a 'universal' solution (and possibly not even a 'good' selective
> solution, which is why I am keen for extra eyes on it), but it might be
> useful as-is, or possibly give Alex, you or anyone else some other
> approaches to consider. I am happy to collaborate on an approach once we
> settle on one that makes sense for all of us.
>
>
> On Fri, Jun 5, 2020 at 2:29 PM serkan <ser...@likyateknoloji.com> wrote:
>
>>
>> I am not sure but I guess mail not sent to the list Greg :)
>>
>> My application heavily use states to manage visual layout Greg. Alex is
>> working on the issues one by one as open an issue.
>>
>> They are mostly with percentage based.
>>
>> e.g.
>>
>> <jobdetail:JobAllDetailPanel includeIn="jobDetailState" id="allJobDetail"
>> height="100%"/>
>>
>> This component is the one et the center with name "İş Tüm Detay Formu"
>> which is very ugly displayed in Royale.
>>
>> Some fix works at first like menu bar but as you can see when resize, it
>> is broken again :)
>>
>> Thank
>> Serkan
>>
>> 4.06.2020 13:08 tarihinde Greg Dove yazdı:
>>
>>
>> Thanks Serkan,
>>
>> Do you think you are seeing the same type of issue I described? Are any
>> of those controls being added either via states or via code at runtime into
>> containers that have percentage based dimensions?
>>
>> I think that the changes I have won't break anyone's existing layouts,
>> but I am not sure yet if I should push them as is to develop or not,
>> because this is the first time I looked at emulation layout stuff.
>> I do see improvements for the issues I have been facing, but there still
>> might be more things that need attention, or I may not be addressing things
>> in the right way.
>>
>> @aharui : when you get to see this, what do you think? Would you have
>> time to take a look at this? And do you think I can push what I have to
>> develop or should it go in a branch?
>> (I can monkey patch my client project so we can use these 'fixes' for
>> local progress in the interim if I need to).
>>
>>
>>
>>
>>
>>
>> On Thu, Jun 4, 2020 at 8:52 PM serkan <ser...@likyateknoloji.com> wrote:
>>
>>> Hi Greg,
>>>
>>> Yes I am.
>>>
>>> Here is my case :
>>> Flex:
>>>
>>>
>>>
>>> Emulation :
>>>
>>>
>>>
>>> Thanks,
>>> Serkan
>>>
>>> 4.06.2020 11:12 tarihinde Greg Dove yazdı:
>>>
>>> Hi,
>>>
>>> Just wondered if anyone else is dealing with layout issues in Flex
>>> emulation. I have some layout issues that are slowing my progress on a
>>> project, and I'd like to resolve them as quickly as I can.
>>>
>>> In particular, I see issues with BoxLayout-based containers which have
>>> percentWidth or percentHeight set. These don't get determined as having
>>> width or height 'SizedToContent' when performing layout, but in many
>>> situations they behave in a similar way (they can change their size based
>>> on their content in terms of layout rules applied by the parent container).
>>> This is because in Flex, percentages are not simply a percentage of their
>>> parent, but they follow something perhaps a little closer to flexbox layout
>>> rules for all the percentWidth or percentHeight siblings (managed by their
>>> parent's layout). In other words, they are also related to the measured
>>> size of their content if the parent needs to manage them (I'm not sure how
>>> best to describe this, but I think that sort of captures it). They can
>>> expand beyond their percent allocation or contract below it depending on
>>> their measured sizes.
>>> I think the layouts work downward for this, but changes in the children
>>> don't seem to trigger the parent layout.
>>>
>>> An example might be
>>> <mx:HBox id='addThingsToMe' width='50%' />
>>>
>>> If you have the above at the application level (where the application has
>>> vertical layout) and keep adding buttons (for example) to the HBox via a UI
>>> test button that adds a new Button to that on each click, then it should
>>> expand horizontally greater than 50% width when the volume of buttons
>>> exceeds its nominal 50% width. It is definitely easier to see this if you
>>> add a border to the container.
>>>
>>> I have been working on this, and made progress, but the approach I am using
>>> feels a bit patchwork, and just wondered whether others are seeing anything
>>> like this, and/or how it has been addressed elsewhere....
>>>
>>> Here's a summary of some of the things I have been trying, which do yield
>>> improvements, but don't really solve the problem completely:
>>>
>>> 1. added extra listener for 'childrenRemoved' in BoxLayout strand setter.
>>>
>>> 2. Created a new mx 'ContainerView' class
>>> (mx.containers.beads.ContainerView extends
>>> org.apache.royale.html.beads.ContainerView)
>>> This has the following in it:
>>>
>>> private var widthBefore:Number = -1
>>> private var heightBefore:Number = -1;
>>> private var sizeChangedBeforeLayout:Boolean;
>>>
>>> COMPILE::JS
>>> override public function beforeLayout():Boolean
>>> {
>>> var container:Container = host as Container;
>>>
>>> sizeChangedBeforeLayout = (widthBefore != container.width || heightBefore
>>> != container.height);
>>> widthBefore = container.width;
>>> heightBefore = container.height;
>>> return super.beforeLayout();
>>> }
>>>
>>>     COMPILE::JS
>>>     override public function afterLayout():void
>>>     {
>>>         var container:Container = host as Container;
>>> //size might change during layout
>>> var sizeChangedDuringLayout:Boolean = !sizeChangedBeforeLayout &&
>>> (widthBefore != container.width || heightBefore != container.height);
>>> if (sizeChangedDuringLayout) {
>>> //prepare for next time
>>> widthBefore = container.width;
>>> heightBefore = container.height;
>>> }
>>> var requestParentLayout:Boolean = sizeChangedBeforeLayout
>>> || sizeChangedDuringLayout
>>>           || (!isNaN(container.percentWidth) && container.width <
>>> container.measuredWidth) || (!isNaN(container.percentHeight) &&
>>> container.height < container.measuredHeight);
>>>         if (requestParentLayout && container.parent is Container) {
>>> trace('requesting parent layout of ',(container as
>>> Object).ROYALE_CLASS_INFO.names[0].qName );
>>>             (container.parent as Container).layoutNeeded();
>>>         }
>>>     }
>>>
>>> That is pretty much it, and it is being used as a replacement in my local
>>> MXRoyale css for Container:
>>>
>>>  /*IBeadView:
>>> ClassReference("org.apache.royale.html.beads.ContainerView");*/
>>> IBeadView: ClassReference("mx.containers.beads.ContainerView");
>>>
>>> I'm not saying this is right, but it does help quite a bit with what I am
>>> facing.
>>>
>>> In addition to BoxLayout in general, I have been working on the
>>> Grid/GridRow/GridItem layouts which are more specific in terms of layout
>>> changes needed, but also can have similar problems.
>>>
>>>
>>> Although I am seeing improvements with what I have done so far, I'm not
>>> really satisfied with it, and I am keen for input/discussion (or
>>> collaboration). I have been pursuing what I would mostly describe as a
>>> 'workaround' approach, so would welcome any thoughts on how best to tackle
>>> this.
>>> I think there is something missing because of the way Flex does layouts vs.
>>> the way Royale does it, but I can't describe it fully yet. Perhaps things
>>> are only currently envisaged to work with mxml declarative content onto
>>> display and not so much with dynamic updates. But I think state-based
>>> changes could have similar effects for some of these things if they happen
>>> inside containers that have their own percent dimensions.
>>>
>>>
>>> Thanks,
>>> Greg
>>>
>>>
>>>
>>>
>>

-- 

Piotr Zarzycki

Patreon: *https://www.patreon.com/piotrzarzycki
<https://www.patreon.com/piotrzarzycki>*

Reply via email to