githubuser0xFFFF/Qt-Advanced-Docking-System

Random crush when calling restoreState

vlomov opened this issue · 1 comments

patch.txt
try apply this to AutoHideExample mainwindow.cpp, compile and run. Click Run!!! button on toolbar
MSVC 19
Qt 6.6.2
Release

You should not call restoreState() multiple times without giving the ui the possibility to update its state. I do not consider this a bug. If you split the update into two separate update actions, it works perfectly:

    auto * action = new QAction("Run!!!");
    action->connect(action, &QAction::triggered,
                    [this]() {
		DockManager->restoreState(
			{   R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 1"><Widget Name="Table 1" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 2" Closed="0" Size="100"/></SideBar></Container></QtAdvancedDockingSystem>)"});
		//DockManager->restoreState(
			//{   R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 2"><Widget Name="Table 2" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 1" Closed="0" Size="272"/></SideBar></Container></QtAdvancedDockingSystem>)"});
    });
    ui->toolBar->addAction(action);

    action = new QAction("Run2!!!");
    action->connect(action, &QAction::triggered,
                    [this]() {
		//DockManager->restoreState(
			//{   R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 1"><Widget Name="Table 1" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 2" Closed="0" Size="100"/></SideBar></Container></QtAdvancedDockingSystem>)"});
		DockManager->restoreState(
			{   R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 2"><Widget Name="Table 2" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 1" Closed="0" Size="272"/></SideBar></Container></QtAdvancedDockingSystem>)"});
    });
    ui->toolBar->addAction(action);