I ran it but couldn't reproduce the issue. The same component always takes 
over the entire screen. I obviously had to make changes to the code since 
the sample wasn't self contained.
On Thursday, October 8, 2020 at 1:37:29 PM UTC+3 P5music wrote:

> The issue is now closed because it was not even to be opened. It has some 
> code that reproduces the issue of this thread.
> Have you tested and reproduced the issue?
> Can you provide a solution for this thread?
>
> Il giorno sabato 3 ottobre 2020 alle 09:50:14 UTC+2 P5music ha scritto:
>
>> https://github.com/codenameone/CodenameOne/issues/3281
>>
>> Il giorno sabato 3 ottobre 2020 alle 06:53:07 UTC+2 Shai Almog ha scritto:
>>
>>> I have no idea. If you have a reproducible problem you can extract to a 
>>> test case I can run please file an issue and embed the test case in the 
>>> issue.
>>> I'll have a look.
>>> On Thursday, October 1, 2020 at 11:28:43 AM UTC+3 P5music wrote:
>>>
>>>> Sorry, but the problem arises only when the app starts in portrait 
>>>> mode, and then an orientation change occurs.
>>>> However, even if the problem does not arise when starting in landscape 
>>>> mode,
>>>> layout is set as TableLayout at startup in both cases (or even set 
>>>> every time the method above is called, in a different version). 
>>>> And whatever instruction I add to set the layout it is not changed, it 
>>>> stays BorderLayout.
>>>> Overriding setLayout shows that nothing strange is happening, but the 
>>>> layout is not set.
>>>> What is going on with that form?
>>>>
>>>>
>>>> Il giorno giovedì 1 ottobre 2020 alle 05:07:45 UTC+2 Shai Almog ha 
>>>> scritto:
>>>>
>>>>> So this must be the problem. 
>>>>> I guess border layout is what you use when in landscape and you don't 
>>>>> update it when moving to portrait. It's hard to tell but you can just 
>>>>> override form.setLayout() with a call to super. Then place a breakpoint 
>>>>> there to see who invokes it.
>>>>> On Wednesday, September 30, 2020 at 11:19:39 AM UTC+3 P5music wrote:
>>>>>
>>>>>> Forget the "not relevant" part, because conditions are not satisfied 
>>>>>> for it to be executed.
>>>>>>
>>>>>> What I experience is that
>>>>>> when the app starts in landscape mode (simulator was intentionally 
>>>>>> left in that state)
>>>>>> the user interface correctly displays just the master container at 
>>>>>> full screen (so the detail container is not added yet)
>>>>>> if I juggle with orientation changes the two modes correctly alternate
>>>>>>
>>>>>> but the app starts in portrait mode (simulator was intentionally left 
>>>>>> in that state)
>>>>>> when an orientation change occurs
>>>>>> and now the simulator is in landscape mode
>>>>>> (containers are removed)
>>>>>>
>>>>>> I see that the master detail TableLayout is not working because just 
>>>>>> the master container is at full screen.
>>>>>> if I juggle with orientation changes nothing changes.
>>>>>> Debug shows that the right code is executed at orientation change, 
>>>>>> that is
>>>>>>   if(isTablet() && !isPortrait() ) 
>>>>>> {
>>>>>> ...
>>>>>> }
>>>>>>
>>>>>> If I step into, I see that mainForm has BorderLayout and not 
>>>>>> TableLayout:
>>>>>> CallingForm[x=0 y=0 width=2048 height=1534 name=null, layout = 
>>>>>> BorderLayout, scrollableX = false, scrollableY = false, components = 
>>>>>> [Container, Toolbar], title = Label[x=0 y=47 width=1536 height=0 
>>>>>> name=null, 
>>>>>> text = , gap = 2], visible = true]
>>>>>>
>>>>>> but at startup this is executed (I tried also executing it every 
>>>>>> time, see commented lines) 
>>>>>> tl=new TableLayout(1,2);
>>>>>> mainForm.setLayout(tl);
>>>>>> mainForm.setScrollable(false);
>>>>>>
>>>>>> I see also 
>>>>>> Exception in thread "AWT-EventQueue-0" Failed to get location on 
>>>>>> screen:component must be showing on the screen to determine its location
>>>>>> in the console after the execution of the method.
>>>>>>
>>>>>> Il giorno mercoledì 30 settembre 2020 alle 05:23:37 UTC+2 Shai Almog 
>>>>>> ha scritto:
>>>>>>
>>>>>>> It's hard to tell from the code. The "not relevant here" code looks 
>>>>>>> very suspicious though.
>>>>>>>
>>>>>>> Did you try just stepping over this in the debugger with the 
>>>>>>> simulator? 
>>>>>>> I assume you reproduced it there so just step over the lines and see 
>>>>>>> what's going on. Are the components physically added but not visible?
>>>>>>> Are they added to the wrong location or not sized correctly?
>>>>>>>
>>>>>>> On Tuesday, September 29, 2020 at 12:07:50 PM UTC+3 P5music wrote:
>>>>>>>
>>>>>>>> My codename app has master/detail layout.
>>>>>>>> A TableLayout is used for that, in landscape mode.
>>>>>>>> It is used also in portrait mode with different proportions.
>>>>>>>>
>>>>>>>> If the app starts in landscape mode, the master and the detail are 
>>>>>>>> visible, and subsequent orientation changes are handled correctly and 
>>>>>>>> the 
>>>>>>>> user interface is succesfully reconstructed.
>>>>>>>>
>>>>>>>> If the app starts in portrait mode, only the master is visible by 
>>>>>>>> design (that's OK) but after the orientation change the user interface 
>>>>>>>> is 
>>>>>>>> not reconstructed completely
>>>>>>>> because
>>>>>>>> the master is just at full size, while the detail is not 
>>>>>>>> reconstructed.
>>>>>>>>
>>>>>>>> This is the code of a method that is called at startup and when 
>>>>>>>> orientation changes:
>>>>>>>>
>>>>>>>> private void setContainers()
>>>>>>>> {
>>>>>>>>     mainEditingContainer.remove();
>>>>>>>>
>>>>>>>> //these lines are to handle fab correctly
>>>>>>>>     if (fabBoundContainer!=null) fabBoundContainer.remove();
>>>>>>>>     if (fabFirstTime) 
>>>>>>>> {fabBoundContainer=fab.bindFabToContainer(itemListContainer);}
>>>>>>>>
>>>>>>>>
>>>>>>>> //mainForm.setLayout(BoxLayout.x()); not useful to reset the 
>>>>>>>> TableLayout
>>>>>>>>
>>>>>>>> //the issue is present also without these revalidations
>>>>>>>>     mainEditingContainer.revalidate();
>>>>>>>>     editingContainer.revalidate();
>>>>>>>>     fabBoundContainer.revalidate();   
>>>>>>>>     mainForm.revalidate();
>>>>>>>>
>>>>>>>>     if (isPortrait() && conditions)  //not relevant here
>>>>>>>>     {
>>>>>>>>         new 
>>>>>>>> EditingForm(appData,myData,mainForm,editingContainer,other 
>>>>>>>> parameters).show();
>>>>>>>>       }
>>>>>>>>
>>>>>>>>     if (isPortrait() && !(conditions)) { // only the master in this 
>>>>>>>> mode
>>>>>>>>         //tl=new TableLayout(1,2);         not useful
>>>>>>>>         //mainForm.setLayout(tl);         not useful
>>>>>>>>
>>>>>>>>         
>>>>>>>> mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int)
>>>>>>>>  
>>>>>>>> (1 * 100)), fabBoundContainer);
>>>>>>>>     }
>>>>>>>>
>>>>>>>>     if(isTablet() && !isPortrait() ) {    //master-detail in 
>>>>>>>> landscape mode
>>>>>>>>         //tl=new TableLayout(1,2);    not useful
>>>>>>>>         //mainForm.setLayout(tl);    not useful
>>>>>>>>         
>>>>>>>>         
>>>>>>>> mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int)
>>>>>>>>  
>>>>>>>> (leftContainerRatio * 100)), 
>>>>>>>> fabBoundContainer).add(mainEditingContainer);
>>>>>>>>     }
>>>>>>>>
>>>>>>>>     mainEditingContainer.revalidate();
>>>>>>>>     editingContainer.revalidate();
>>>>>>>>     fabBoundContainer.revalidate();
>>>>>>>>     mainForm.revalidate();
>>>>>>>>
>>>>>>>>     if (fabFirstTime) fabFirstTime=false;
>>>>>>>> }
>>>>>>>>
>>>>>>>> Some commented lines are with some tentative workaround but not 
>>>>>>>> successful.
>>>>>>>>
>>>>>>>> What's wrong? How can I achieve the complete reconstruction of UI 
>>>>>>>> in landscape mode, when the app is started in portrait and then 
>>>>>>>> rotates? 
>>>>>>>> I remind you that if the app starts in landscape mode, there are no 
>>>>>>>> issues at any subsequent device rotation (just a BrowserComponent is 
>>>>>>>> not 
>>>>>>>> resizing, this will be addressed separately).
>>>>>>>> Thanks in avance
>>>>>>>>
>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/35851e40-e7b0-4595-8022-4b27f65eaba7n%40googlegroups.com.

Reply via email to