diff --git a/scripts/valgrind.sh b/scripts/valgrind.sh new file mode 100755 index 0000000..684f14e --- /dev/null +++ b/scripts/valgrind.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +valgrind --leak-check=full --track-origins=yes ./build/bin/browser \ No newline at end of file diff --git a/src/mainwindow.cc b/src/mainwindow.cc index c00341c..5def985 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -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(); diff --git a/src/mainwindow.h b/src/mainwindow.h index f45f324..1cb76d0 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -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; diff --git a/src/qt-renderer.cc b/src/qt-renderer.cc index 23e092a..a28f917 100644 --- a/src/qt-renderer.cc +++ b/src/qt-renderer.cc @@ -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); diff --git a/src/qt-renderer.h b/src/qt-renderer.h index 487cd3b..51ed7f0 100644 --- a/src/qt-renderer.h +++ b/src/qt-renderer.h @@ -18,6 +18,7 @@ class QtRenderer : public RendererI { public: explicit QtRenderer(); + ~QtRenderer(); void setScene(Scene *scene) override; void setUnknownYet() override {}; // No implementation diff --git a/src/renderer-interface.h b/src/renderer-interface.h index 734cc9e..71c5175 100644 --- a/src/renderer-interface.h +++ b/src/renderer-interface.h @@ -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