Fix some memory leaks, not really causing any leaks really. but still

master
Melroy van den Berg 2020-11-22 00:46:22 +01:00
parent 7f76913183
commit 2f2384b8cb
6 changed files with 29 additions and 9 deletions

2
scripts/valgrind.sh Executable file
View File

@ -0,0 +1,2 @@
#!/usr/bin/env bash
valgrind --leak-check=full --track-origins=yes ./build/bin/browser

View File

@ -30,12 +30,12 @@ MainWindow::MainWindow()
resize(600, 400);
setWindowTitle("Browser");
QMenu *fileMenu = new QMenu("File");
fileMenu->addAction("Open...");
fileMenu->addAction("New...");
fileMenu->addAction("Exit");
QMenu fileMenu("File");
fileMenu.addAction("Open...");
fileMenu.addAction("New...");
fileMenu.addAction("Exit");
menuBar()->addMenu(fileMenu);
menuBar()->addMenu(&fileMenu);
QWidget *centralWidget = new QWidget;
setCentralWidget(centralWidget);
@ -58,6 +58,16 @@ MainWindow::MainWindow()
setupParser();
}
MainWindow::~MainWindow()
{
delete scene;
delete view;
delete textEdit;
delete parser;
delete renderer;
delete menuBar();
}
void MainWindow::setupParser()
{
parser = new Parser();

View File

@ -18,15 +18,16 @@ class MainWindow : public QMainWindow
public:
MainWindow();
~MainWindow();
void setOutputToTextEdit(const QString& text);
//private slots:
// void newFile();
private:
Scene *scene;
QGraphicsView *view;
QTextEdit *textEdit;
Scene *scene;
Parser *parser;
QtRenderer *renderer;

View File

@ -32,6 +32,11 @@ QtRenderer::QtRenderer():
font->setFamily(fontFamilty);
}
QtRenderer::~QtRenderer()
{
delete font;
}
void QtRenderer::setScene(Scene* scene)
{
this->scene = scene;
@ -213,11 +218,11 @@ QRectF const QtRenderer::drawText(const QString& text)
// We can still extend the QGraphicsSimpleTextItem class (or QAbstractGraphicsShapeItem) and override paint method.
// Or just use QPainter with a paint device (like QWidgets), to have maximal control.
QGraphicsSimpleTextItem *textItem = new QGraphicsSimpleTextItem(text);
//font->setBold(bold);
//font->setItalic(italic);
font->setBold(bold);
font->setItalic(italic);
if (headingLevel > 0) {
//font->setBold(true);
font->setBold(true);
switch(headingLevel) {
case 1:
font->setPixelSize(24);

View File

@ -18,6 +18,7 @@ class QtRenderer : public RendererI
{
public:
explicit QtRenderer();
~QtRenderer();
void setScene(Scene *scene) override;
void setUnknownYet() override {}; // No implementation

View File

@ -10,6 +10,7 @@ struct cmark_node;
class RendererI
{
public:
virtual ~RendererI() {};
// TODO: Combien those two sets to 1, create an abstract class for setting a scene in Qt and/or Imgui.
virtual void setScene(Scene *scene) = 0;// For Qt
virtual void setUnknownYet() = 0; // For Imgui