Il 27/12/2014 11:04, Juha Manninen ha scritto:
On Fri, Dec 26, 2014 at 2:04 PM, Giuliano Colla
<giuliano.co...@fastwebnet.it> wrote:

The patch has no effect, but I suspect that the problem is elsewhere,
because in my tests the TabControl.Pages.Move() is never called.
That is not true.
It is called from TComponentPage.InsertVisiblePage for any existing
page that gets a new position index.
Just debug it if you don't believe.

You are right. I found out that it depends on the difference between the old and the new layout. It's not called with my layout, it's called with yours. With my layout, it happens that the move performed in CreatePagesFromUserOrder is already the good one. Just a coincidence.

You also wrote that you recreated the whole "modern" layout for your
palette setup.
It should not be needed. Non-existent components are skipped and you
should be able to import any configuration. If you get an error during
the import, then there is another bug.

It was just for testing purpose. I didn't get errors during the import of the "Modern" layout, I only had misplaced tabs with Qt. With my layout I didn't have misplaced tabs with the import, but I had when restoring the default. Just because of a slightly different order of tabs.

I start to suspect you have local changes in your code which cause the errors.

svn diff doesn't show anything strange, and the only problem is with Qt ws, and in a very specific condition: 1) a number of tabs are added in the first positions (0,1,2 in one of my tests)
2) some are skipped because they are already in place (3,4,5,6 )
3) a new tab should be inserted just after those skipped (index = 7) and goes instead before them ( at position 3). Everything tells that it goes to index 7, up to TQtTabWidgetset.insertTab(), but it shows at index 3! Then of course everything goes astray, because the tab index are out of sync.

I suspect that the problem arises from tab components being possibly shared by two widgets: I can see that at start, there are two InsertTab sequences: one with the number of visible tabs of the selected layout, and another one with all the tabs. It's possible that different widgetsets behave differently in this condition. My question is: is it necessary?

However I've found a simple workaround: with Qt ws, to remove the old tab before calling InsertVisiblePage. That way PageComponent is always nil, and everything works just fine.

If you agree, I can commit my change (it's really minimal) and you may check it.

Giuliano

--
Giuliano Colla

Project planning question: when it's 90% done, are we halfway or not yet?


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to