Ref T472, fixed expandAll/fullResizeToContents heap issue

* after updating the container update "expandAll" was called
* in onExpanded multiple "fullResizeToContents" occured, resulting in the healp issue below
* as it was a good idea anyway to reduce the slow "fullResizeToContents" anyway, so we are using a CDigestSignal
* this also solved the HEAP issue (for some reason I have NOT investigated)

HEAP[swiftdata.exe]: HEAP: Free Heap block 000001AB439BFFF0 modified at 000001AB439C00BC after it was freed
This commit is contained in:
Klaus Basan
2019-02-05 21:37:01 +01:00
committed by Mat Sutcliffe
parent ac7958367b
commit fe05c2287b
3 changed files with 25 additions and 24 deletions

View File

@@ -48,15 +48,21 @@ namespace BlackGui
this->categoryModel()->clear();
}
void CAircraftCategoryTreeView::fullResizeToContents()
{
m_dsFullResize.inputSignal();
}
void CAircraftCategoryTreeView::setColumns(const CColumns &columns)
{
if (this->categoryModel()) { this->categoryModel()->setColumns(columns); }
}
void CAircraftCategoryTreeView::fullResizeToContents()
void CAircraftCategoryTreeView::fullResizeToContentsImpl()
{
if (this->isEmpty()) { return; }
for (int c = 0; c < this->categoryModel()->columnCount(); c++)
const int cc = this->categoryModel()->columnCount();
for (int c = 0; c < cc; c++)
{
this->resizeColumnToContents(c);
}
@@ -105,7 +111,7 @@ namespace BlackGui
QMenu *menu = new QMenu(this); // menu
QAction *resize = new QAction(CIcons::resize16(), "Resize", this);
connect(resize, &QAction::triggered, this, &CAircraftCategoryTreeView::fullResizeToContents);
connect(resize, &QAction::triggered, this, &CAircraftCategoryTreeView::fullResizeToContentsImpl);
menu->addAction(resize);
menu->popup(this->viewport()->mapToGlobal(point));

View File

@@ -14,6 +14,7 @@
#include "blackgui/blackguiexport.h"
#include "blackmisc/aviation/aircraftcategorylist.h"
#include "blackmisc/digestsignal.h"
#include <QTreeView>
#include <QObject>
@@ -46,12 +47,12 @@ namespace BlackGui
//! Clear
void clear();
//! Set columns
void setColumns(const Models::CColumns &columns);
//! Resize all columns
void fullResizeToContents();
//! Set columns
void setColumns(const Models::CColumns &columns);
//! Empty data
bool isEmpty() const;
@@ -62,6 +63,9 @@ namespace BlackGui
//! Used model
BlackGui::Models::CAircraftCategoryTreeModel *categoryModel();
//! Resize all columns
void fullResizeToContentsImpl();
//! The selected object
BlackMisc::Aviation::CAircraftCategory selectedObject() const;
@@ -73,6 +77,8 @@ namespace BlackGui
//! Custom menu
void customMenu(const QPoint &point);
BlackMisc::CDigestSignal m_dsFullResize { this, &CAircraftCategoryTreeView::fullResizeToContentsImpl, 1000, 25 };
};
} // ns
} // ns