Skip to content

Commit 4ec3d30

Browse files
Fixed #729 ?
1 parent 1023760 commit 4ec3d30

1 file changed

Lines changed: 19 additions & 20 deletions

File tree

qtgui/exe/src/DmsMainWindow.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1999,17 +1999,6 @@ void AnyTreeItemStateHasChanged(ClientHandle clientHandle, const TreeItem* self,
19991999
// TODO: remove self from any representation to avoid accessing it's dangling pointer
20002000
break;
20012001
case NC_Creating:
2002-
assert(IsMainThread());
2003-
if (!s_TreeViewRefreshPending)
2004-
{
2005-
s_TreeViewRefreshPending = true;
2006-
QTimer::singleShot(0, mainWindow->m_treeview, [mainWindow]()
2007-
{
2008-
s_TreeViewRefreshPending = false;
2009-
mainWindow->m_treeview->update();
2010-
}
2011-
);
2012-
}
20132002
break;
20142003
case CC_CreateMdiChild:
20152004
{
@@ -2028,17 +2017,27 @@ void AnyTreeItemStateHasChanged(ClientHandle clientHandle, const TreeItem* self,
20282017
assert(IsMainThread());
20292018
mainWindow->showStatisticsDirectly(self);
20302019
}
2031-
// MainWindow could have been destroyed
2032-
if (s_CurrMainWindow)
2020+
2021+
// this actually only invalidates any drawn area and causes repaint later, but time anyway to avoid too many repaints
2022+
if (!s_TreeViewRefreshPending)
20332023
{
2034-
assert(s_CurrMainWindow == mainWindow);
2035-
auto tv = mainWindow->m_treeview;
2036-
if (IsMainThread())
2037-
tv->update(); // this actually only invalidates any drawn area and causes repaint later
2038-
else
2039-
QTimer::singleShot(0, tv, [tv]() { tv->update(); });
2040-
mainWindow->m_detail_pages->onTreeItemStateChange();
2024+
s_TreeViewRefreshPending = true;
2025+
QTimer::singleShot(1000, []()
2026+
{
2027+
// MainWindow could have been destroyed
2028+
if (!s_CurrMainWindow)
2029+
return;
2030+
2031+
s_TreeViewRefreshPending = false;
2032+
auto tv = s_CurrMainWindow->m_treeview;
2033+
if (tv)
2034+
tv->update();
2035+
}
2036+
);
20412037
}
2038+
2039+
if (s_CurrMainWindow && self == s_CurrMainWindow->getCurrentTreeItem())
2040+
s_CurrMainWindow->m_detail_pages->onTreeItemStateChange();
20422041
}
20432042

20442043
#include "waiter.h"

0 commit comments

Comments
 (0)