mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-07 19:23:25 +00:00
Fix some memory leaks.
Memory leaks were caused by broken parent/child relations. Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
a27f67c026
commit
6cc65f5e1c
11 changed files with 18 additions and 15 deletions
|
@ -25,9 +25,9 @@
|
||||||
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false),
|
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false),
|
||||||
sortColumn(0), currentOrder(Qt::DescendingOrder), searchBox(new QLineEdit(this))
|
sortColumn(0), currentOrder(Qt::DescendingOrder), searchBox(new QLineEdit(this))
|
||||||
{
|
{
|
||||||
setItemDelegate(new DiveListDelegate );
|
setItemDelegate(new DiveListDelegate(this));
|
||||||
setUniformRowHeights(true);
|
setUniformRowHeights(true);
|
||||||
setItemDelegateForColumn(DiveTripModel::RATING, new StarWidgetsDelegate());
|
setItemDelegateForColumn(DiveTripModel::RATING, new StarWidgetsDelegate(this));
|
||||||
QSortFilterProxyModel *model = new QSortFilterProxyModel(this);
|
QSortFilterProxyModel *model = new QSortFilterProxyModel(this);
|
||||||
model->setSortRole(DiveTripModel::SORT_ROLE);
|
model->setSortRole(DiveTripModel::SORT_ROLE);
|
||||||
model->setFilterKeyColumn(-1); // filter all columns
|
model->setFilterKeyColumn(-1); // filter all columns
|
||||||
|
|
|
@ -960,7 +960,7 @@ DivePlannerWidget::DivePlannerWidget(QWidget* parent, Qt::WindowFlags f): QWidge
|
||||||
view->setColumnHidden(CylindersModel::START, true);
|
view->setColumnHidden(CylindersModel::START, true);
|
||||||
view->setColumnHidden(CylindersModel::END, true);
|
view->setColumnHidden(CylindersModel::END, true);
|
||||||
view->setColumnHidden(CylindersModel::DEPTH, false);
|
view->setColumnHidden(CylindersModel::DEPTH, false);
|
||||||
view->setItemDelegateForColumn(CylindersModel::TYPE, new TankInfoDelegate());
|
view->setItemDelegateForColumn(CylindersModel::TYPE, new TankInfoDelegate(this));
|
||||||
connect(ui.cylinderTableWidget, SIGNAL(addButtonClicked()), DivePlannerPointsModel::instance(), SLOT(addCylinder_clicked()));
|
connect(ui.cylinderTableWidget, SIGNAL(addButtonClicked()), DivePlannerPointsModel::instance(), SLOT(addCylinder_clicked()));
|
||||||
connect(ui.tableWidget, SIGNAL(addButtonClicked()), DivePlannerPointsModel::instance(), SLOT(addStop()));
|
connect(ui.tableWidget, SIGNAL(addButtonClicked()), DivePlannerPointsModel::instance(), SLOT(addStop()));
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ GlobeGPS::GlobeGPS(QWidget* parent) : MarbleWidget(parent), loadedDives(0), edit
|
||||||
|
|
||||||
setMinimumHeight(0);
|
setMinimumHeight(0);
|
||||||
setMinimumWidth(0);
|
setMinimumWidth(0);
|
||||||
fixZoomTimer = new QTimer();
|
fixZoomTimer = new QTimer(this);
|
||||||
connect(fixZoomTimer, SIGNAL(timeout()), this, SLOT(fixZoom()));
|
connect(fixZoomTimer, SIGNAL(timeout()), this, SLOT(fixZoom()));
|
||||||
fixZoomTimer->setSingleShot(true);
|
fixZoomTimer->setSingleShot(true);
|
||||||
installEventFilter(this);
|
installEventFilter(this);
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
|
||||||
MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
|
MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
|
||||||
weightModel(new WeightModel()),
|
weightModel(new WeightModel(this)),
|
||||||
cylindersModel(CylindersModel::instance()),
|
cylindersModel(CylindersModel::instance()),
|
||||||
editMode(NONE)
|
editMode(NONE)
|
||||||
{
|
{
|
||||||
|
@ -83,8 +83,8 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
|
||||||
connect(ui.cylinders->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editCylinderWidget(QModelIndex)));
|
connect(ui.cylinders->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editCylinderWidget(QModelIndex)));
|
||||||
connect(ui.weights->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editWeightWidget(QModelIndex)));
|
connect(ui.weights->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editWeightWidget(QModelIndex)));
|
||||||
|
|
||||||
ui.cylinders->view()->setItemDelegateForColumn(CylindersModel::TYPE, new TankInfoDelegate());
|
ui.cylinders->view()->setItemDelegateForColumn(CylindersModel::TYPE, new TankInfoDelegate(this));
|
||||||
ui.weights->view()->setItemDelegateForColumn(WeightModel::TYPE, new WSInfoDelegate());
|
ui.weights->view()->setItemDelegateForColumn(WeightModel::TYPE, new WSInfoDelegate(this));
|
||||||
ui.cylinders->view()->setColumnHidden(CylindersModel::DEPTH, true);
|
ui.cylinders->view()->setColumnHidden(CylindersModel::DEPTH, true);
|
||||||
completers.buddy = new QCompleter(BuddyCompletionModel::instance(), ui.buddy);
|
completers.buddy = new QCompleter(BuddyCompletionModel::instance(), ui.buddy);
|
||||||
completers.divemaster = new QCompleter(DiveMasterCompletionModel::instance(), ui.divemaster);
|
completers.divemaster = new QCompleter(DiveMasterCompletionModel::instance(), ui.divemaster);
|
||||||
|
|
|
@ -170,7 +170,10 @@ void MainWindow::on_actionClose_triggered()
|
||||||
/* clear the selection and the statistics */
|
/* clear the selection and the statistics */
|
||||||
selected_dive = -1;
|
selected_dive = -1;
|
||||||
|
|
||||||
existing_filename = NULL;
|
if (existing_filename) {
|
||||||
|
free((void *)existing_filename);
|
||||||
|
existing_filename = NULL;
|
||||||
|
}
|
||||||
cleanUpEmpty();
|
cleanUpEmpty();
|
||||||
mark_divelist_changed(false);
|
mark_divelist_changed(false);
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ class QPainter;
|
||||||
|
|
||||||
class DiveListDelegate : public QStyledItemDelegate{
|
class DiveListDelegate : public QStyledItemDelegate{
|
||||||
public:
|
public:
|
||||||
DiveListDelegate(){}
|
explicit DiveListDelegate(QObject *parent = 0): QStyledItemDelegate(parent){}
|
||||||
QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const;
|
QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ QFont defaultModelFont()
|
||||||
return font;
|
return font;
|
||||||
}
|
}
|
||||||
|
|
||||||
CleanerTableModel::CleanerTableModel(): QAbstractTableModel()
|
CleanerTableModel::CleanerTableModel(QObject *parent): QAbstractTableModel(parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ void CylindersModel::remove(const QModelIndex& index)
|
||||||
endRemoveRows();
|
endRemoveRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
WeightModel::WeightModel(QObject* parent): current(0), rows(0)
|
WeightModel::WeightModel(QObject* parent): CleanerTableModel(parent), current(0), rows(0)
|
||||||
{
|
{
|
||||||
//enum Column {REMOVE, TYPE, WEIGHT};
|
//enum Column {REMOVE, TYPE, WEIGHT};
|
||||||
setHeaderDataStrings(QStringList() << tr("") << tr("Type") << tr("Weight"));
|
setHeaderDataStrings(QStringList() << tr("") << tr("Type") << tr("Weight"));
|
||||||
|
|
|
@ -22,7 +22,7 @@ QFont defaultModelFont();
|
||||||
class CleanerTableModel : public QAbstractTableModel{
|
class CleanerTableModel : public QAbstractTableModel{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
CleanerTableModel();
|
explicit CleanerTableModel(QObject *parent = 0);
|
||||||
virtual int columnCount(const QModelIndex& parent = QModelIndex()) const;
|
virtual int columnCount(const QModelIndex& parent = QModelIndex()) const;
|
||||||
virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
|
virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -265,7 +265,7 @@ QTableView *PrintLayout::createProfileTable(ProfilePrintModel *model, const int
|
||||||
// resize
|
// resize
|
||||||
table->resize(tableW, profilePrintTableMaxH);
|
table->resize(tableW, profilePrintTableMaxH);
|
||||||
// hide the grid and set a stylesheet
|
// hide the grid and set a stylesheet
|
||||||
table->setItemDelegate(new ProfilePrintDelegate());
|
table->setItemDelegate(new ProfilePrintDelegate(this));
|
||||||
table->setShowGrid(false);
|
table->setShowGrid(false);
|
||||||
table->setStyleSheet(
|
table->setStyleSheet(
|
||||||
"QTableView { border: none }"
|
"QTableView { border: none }"
|
||||||
|
|
|
@ -60,7 +60,7 @@ ProfileGraphicsView::ProfileGraphicsView(QWidget* parent) : QGraphicsView(parent
|
||||||
rulerEnabled = false;
|
rulerEnabled = false;
|
||||||
gc.printer = false;
|
gc.printer = false;
|
||||||
fill_profile_color();
|
fill_profile_color();
|
||||||
setScene(new QGraphicsScene());
|
setScene(new QGraphicsScene(this));
|
||||||
|
|
||||||
scene()->installEventFilter(this);
|
scene()->installEventFilter(this);
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
TableView::TableView(QWidget *parent) : QWidget(parent)
|
TableView::TableView(QWidget *parent) : QWidget(parent)
|
||||||
{
|
{
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
ui.tableView->setItemDelegate(new DiveListDelegate);
|
ui.tableView->setItemDelegate(new DiveListDelegate(this));
|
||||||
/* There`s mostly a need for a Mac fix here too. */
|
/* There`s mostly a need for a Mac fix here too. */
|
||||||
if (qApp->style()->objectName() == "gtk+")
|
if (qApp->style()->objectName() == "gtk+")
|
||||||
ui.groupBox->layout()->setContentsMargins(0, 9, 0, 0);
|
ui.groupBox->layout()->setContentsMargins(0, 9, 0, 0);
|
||||||
|
|
Loading…
Add table
Reference in a new issue